Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

edge

Encuentra bordes en la imagen de intensidad

Descripción

BW = edge(I) Devuelve una imagen binaria que contiene s donde la función encuentra bordes en la imagen de entrada y s en otro lugar.BW1I0 De forma predeterminada, utiliza el método de detección de bordes Sobel.edge

Opcionalmente, puede encontrar aristas usando una GPU (requiere).Parallel Computing Toolbox™ Para obtener más información, consulte.Procesamiento de imágenes en una GPU

ejemplo

BW = edge(I,method) detecta los bordes de la imagen utilizando el algoritmo de detección de bordes especificado por.Imethod

BW = edge(I,method,threshold) Devuelve todos los bordes que son más fuertes que.threshold

BW = edge(I,method,threshold,direction) Especifica la orientación de las aristas que se detectan. Los métodos Sobel y Prewitt pueden detectar aristas en dirección vertical, dirección horizontal o ambas. El método Roberts puede detectar bordes en ángulos de 45 ° desde horizontal, 135 ° desde horizontal, o ambos. Esta sintaxis solo es válida cuando es, o.method'Sobel''Prewitt''Roberts'

BW = edge(___,'nothinning') omite la fase de adelgazamiento de los bordes, lo que puede mejorar el rendimiento. Esta sintaxis solo es válida cuando es, o.method'Sobel''Prewitt''Roberts'

BW = edge(I,method,threshold,sigma) especifica, la desviación estándar del filtro.sigma Esta sintaxis solo es válida cuando es o.method'log''Canny'

BW = edge(I,method,threshold,h) detecta los bordes utilizando el método con un filtro, que usted especifica.'zerocross'h Esta sintaxis solo es válida cuando es.method'zerocross'

[BW,threshOut] = edge(___) también devuelve el valor de umbral.

[BW,threshOut,Gv,Gh] = edge(___) también devuelve las magnitudes de gradiente direccional. Para los métodos Sobel y Prewitt, y corresponden a los degradados verticales y horizontales.GvGh Para los métodos Roberts, y corresponden al gradiente en ángulos de 45 ° y 135 ° desde horizontal, respectivamente.GvGh Esta sintaxis solo es válida cuando es, o.method'Sobel''Prewitt''Roberts'

Ejemplos

contraer todo

Lea una imagen en escala de grises en el espacio de trabajo y mostrarla.

I = imread('circuit.tif'); imshow(I)

Encuentra los bordes usando el método Canny.

BW1 = edge(I,'Canny');

Buscar aristas mediante el método Prewitt.

BW2 = edge(I,'Prewitt');

Visualice ambos resultados en paralelo.

imshowpair(BW1,BW2,'montage')

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una imagen en escala de grises 2-D o imagen binaria 2-D.

Para el método, las imágenes de tipo de datos o deben normalizarse en el intervalo [0 1].'approxcanny'singledouble

Tipos de datos: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Método de detección de bordes, especificado como uno de los siguientes.

MétodoDescripción
'Sobel'

Busca aristas en aquellos puntos en los que el degradado de la imagen es máximo, utilizando la aproximación de Sobel a la derivada.I

'Prewitt'

Busca aristas en aquellos puntos en los que el degradado es máximo, utilizando la aproximación Prewitt a la derivada.I

'Roberts'Encuentra bordes en aquellos puntos donde el degradado es máximo, utilizando la aproximación de Roberts a la derivada.I
'log'Busca aristas buscando cruces cero después de filtrar con un filtro Laplaciano de gaussiano (LoG).I
'zerocross'Busca aristas buscando cruces cero después de filtrar con un filtro que especifique,Ih
'Canny'

Busca bordes buscando el maxima local del degradado.I La función calcula el degradado utilizando la derivada de un filtro gaussiano.edge Este método utiliza dos umbrales para detectar bordes fuertes y débiles, incluidos los bordes débiles en la salida si están conectados a bordes fuertes. Mediante el uso de dos umbrales, el método Canny es menos probable que los otros métodos para ser engañado por el ruido, y es más probable que detecte los verdaderos bordes débiles.

'approxcanny'

Encuentra bordes con una versión aproximada del algoritmo de detección de bordes Canny que proporciona un tiempo de ejecución más rápido a expensas de una detección menos precisa. Se espera que las imágenes de punto flotante se normalizan en el intervalo.[0 1]

Nota

Los métodos y no se admiten en una GPU.'Canny''approxcanny'

Umbral de sensibilidad, especificado como un escalar numérico para cualquiera, o un vector de 2 elementos para los métodos y. ignora todas las aristas que no son más fuertes que.method'Canny''approxcanny'edgethreshold Para obtener más información acerca de este parámetro, consulte.Algoritmo

  • Si no especifica, o si especifica una matriz vacía (), a continuación, elige el valor o valores automáticamente.threshold[]edge

  • Para los métodos y, si especifica el valor de umbral, la imagen de salida tiene contornos cerrados porque incluye todos los cruces de cero en la imagen de entrada.'log''zerocross'0

  • Los métodos y utilizan dos umbrales. ignora todos los bordes con la intensidad del borde por debajo del umbral inferior, y preserva todos los bordes con la intensidad del borde por encima del umbral más alto.'Canny''approxcanny'edge Puede especificar como un vector de 2 elementos del formulario con y valores en el intervalo [0 1].threshold[low high]lowhigh También puede especificar como un escalar numérico, que asigna al umbral superior.thresholdedge En este caso, se utiliza como el umbral inferior.edgethreshold*0.4

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Dirección de aristas para detectar, especificar como, o.'horizontal''vertical''both' El argumento sólo es válido cuando el is,, o.directionmethod'Sobel''Prewitt''Roberts'

Nota

Si selecciona el Roberts, entonces la dirección realmente detecta los bordes en un ángulo de 135 ° de horizontal, y la dirección detecta los bordes en un ángulo de 45 ° de horizontal.method'horizontal''vertical'

Tipos de datos: char | string

Filter, especificado como una matriz. El argumento solo es compatible con el método.h'zerocross'

Tipos de datos: double

Desviación estándar del filtro, especificada como un escalar. El argumento solo es compatible con los métodos y.sigma'Canny''log'

MétodoDescripción
'Canny'

Valor escalar que especifica la desviación estándar del filtro gaussiano. El valor predeterminado es. elige el tamaño del filtro automáticamente, en función de.sqrt(2)edgesigma

(Laplacian de Gausiana)'log'

Valor escalar que especifica la desviación estándar del Laplacian del filtro gaussiano. El valor predeterminado es.2 El tamaño del filtro es-por-, donde.nnn=ceil(sigma*3)*2+1

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen binaria de salida, devuelta como una matriz lógica del mismo tamaño que, con s donde la función encuentra los bordes en y s en otro lugar.I1I0

Valor de umbral utilizado en el cálculo, devuelto como un vector de 2 elementos para el, un vector vacío () para el método o un escalar numérico para todos los demás métodos de detección de bordes.'Canny'method[]'approxcanny'

Degradado vertical, devuelto como una matriz numérica del mismo tamaño que.I

Nota

Si selecciona el Roberts, a continuación, devuelve el degradado calculado en un ángulo de 45 ° de horizontal.methodedge

Degradado horizontal, devuelto como una matriz numérica del mismo tamaño que.I

Nota

Si selecciona el Roberts, a continuación, devuelve el degradado calculado en un ángulo de 135 ° de horizontal.methodedge

Algoritmos

  • Para los métodos de detección de borde de magnitud de degradado (Sobel, Prewitt, Roberts), se utiliza para establecer el umbral de la magnitud calculada del degradado.edgethreshold

  • Para los métodos de cruce cero, incluyendo Laplacian de gaussiano, utiliza como umbral para los cruces de cero.edgethreshold En otras palabras, un salto grande a través de cero es un borde, mientras que un pequeño salto no lo es.

  • El método Canny aplica dos umbrales al degradado: un umbral alto para la sensibilidad de borde bajo y un umbral bajo para la sensibilidad de borde alto. comienza con el resultado de baja sensibilidad y luego lo crece para incluir píxeles de borde conectados desde el resultado de alta sensibilidad.edge Esto ayuda a rellenar huecos en los bordes detectados.

  • En todos los casos, elige el umbral predeterminado de forma heurística, en función de los datos de entrada.edge La mejor manera de variar el umbral es ejecutarse una vez, capturando el umbral calculado como el segundo argumento de salida.edge A continuación, a partir del valor calculado por, ajuste el umbral más alto para detectar menos píxeles de borde o inferior para detectar más píxeles de borde.edge

Consideraciones de compatibilidad

expandir todo

El comportamiento cambió en R2011a

Referencias

[1] Canny, John, "A Computational Approach to Edge Detection," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAMI-8, No. 6, 1986, pp. 679-698.

[2] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 478-488.

[3] Parker, James R., Algorithms for Image Processing and Computer Vision, New York, John Wiley & Sons, Inc., 1997, pp. 23-29.

Capacidades ampliadas

Consulte también

| |

Introducido antes de R2006a