La detección de bordes incluye una variedad de métodos matemáticos que apuntan a identificar bordes , definidos como curvas en una imagen digital en las que el brillo de la imagen cambia bruscamente o, más formalmente, tiene discontinuidades . El mismo problema de encontrar discontinuidades en señales unidimensionales se conoce como detección de pasos y el problema de encontrar discontinuidades de la señal a lo largo del tiempo se conoce como detección de cambios . La detección de bordes es una herramienta fundamental en el procesamiento de imágenes , la visión artificial y la visión por computadora , particularmente en las áreas de detección de características y extracción de características . [1]
El objetivo de detectar cambios bruscos en el brillo de una imagen es capturar eventos importantes y cambios en las propiedades del mundo. Se puede demostrar que, bajo supuestos bastante generales para un modelo de formación de imágenes, es probable que las discontinuidades en el brillo de la imagen correspondan a: [2] [3]
En el caso ideal, el resultado de aplicar un detector de bordes a una imagen puede conducir a un conjunto de curvas conectadas que indican los límites de los objetos, los límites de las marcas de la superficie, así como curvas que corresponden a discontinuidades en la orientación de la superficie. Por lo tanto, la aplicación de un algoritmo de detección de bordes a una imagen puede reducir significativamente la cantidad de datos a procesar y, por lo tanto, puede filtrar información que puede considerarse menos relevante, al tiempo que se conservan las propiedades estructurales importantes de una imagen. Si el paso de detección de bordes es exitoso, la tarea posterior de interpretación del contenido de información en la imagen original puede, por lo tanto, simplificarse sustancialmente. Sin embargo, no siempre es posible obtener dichos bordes ideales a partir de imágenes de la vida real de complejidad moderada.
Los bordes extraídos de imágenes no triviales a menudo se ven obstaculizados por la fragmentación , lo que significa que las curvas de los bordes no están conectadas, faltan segmentos de borde y aparecen bordes falsos que no corresponden a fenómenos interesantes en la imagen, lo que complica la tarea posterior de interpretación de los datos de la imagen. [4]
La detección de bordes es uno de los pasos fundamentales en el procesamiento de imágenes, análisis de imágenes, reconocimiento de patrones de imágenes y técnicas de visión artificial.
Los bordes extraídos de una imagen bidimensional de una escena tridimensional se pueden clasificar como dependientes del punto de vista o independientes del mismo. Un borde independiente del punto de vista generalmente refleja propiedades inherentes de los objetos tridimensionales, como las marcas y la forma de la superficie. Un borde dependiente del punto de vista puede cambiar a medida que cambia el punto de vista y generalmente refleja la geometría de la escena, como los objetos que se tapan entre sí.
Un borde típico podría ser, por ejemplo, el límite entre un bloque de color rojo y un bloque de color amarillo. Por el contrario, una línea (como la que se puede extraer con un detector de crestas ) puede ser una pequeña cantidad de píxeles de un color diferente sobre un fondo que, por lo demás, no cambia. Por lo tanto, en el caso de una línea, normalmente puede haber un borde a cada lado de la línea.
Aunque en cierta literatura se ha considerado la detección de aristas de paso ideales, las aristas obtenidas a partir de imágenes naturales no suelen ser en absoluto aristas de paso ideales, sino que suelen estar afectadas por uno o varios de los siguientes efectos:
Varios investigadores han utilizado un borde escalonado suavizado gaussiano (una función de error ) como la extensión más simple del modelo de borde escalonado ideal para modelar los efectos del desenfoque de bordes en aplicaciones prácticas. [4] [5] Por lo tanto, una imagen unidimensional que tiene exactamente un borde colocado en puede modelarse como:
En el lado izquierdo del borde, la intensidad es , y en el lado derecho del borde es . El parámetro de escala se denomina escala de desenfoque del borde. Lo ideal sería ajustar este parámetro de escala en función de la calidad de la imagen para evitar destruir los bordes verdaderos de la imagen. [ cita requerida ]
Fuera de imágenes con objetos simples o con iluminación bien controlada, la detección de bordes no es una tarea trivial, ya que puede ser difícil determinar qué umbral se debe utilizar para definir un borde entre dos píxeles. [4] Por ejemplo, en la siguiente señal unidimensional, la mayoría diría intuitivamente que hay un borde entre el cuarto y el quinto píxel:
Sin embargo, si la diferencia de intensidad entre el 4.º y el 5.º píxel fuera menor, no sería tan fácil decir que debería haber un borde en la región correspondiente. De manera similar, si las diferencias de intensidad entre los píxeles vecinos adyacentes fueran mayores, se podría argumentar que debería considerarse que existen más de un borde, o incluso ninguno.
Existen muchos métodos para la detección de bordes, pero la mayoría de ellos se pueden agrupar en dos categorías: los basados en búsqueda y los basados en cruces por cero . Los métodos basados en búsqueda detectan los bordes calculando primero una medida de la intensidad del borde, normalmente una expresión derivada de primer orden como la magnitud del gradiente, y luego buscando máximos direccionales locales de la magnitud del gradiente utilizando una estimación calculada de la orientación local del borde, normalmente la dirección del gradiente. Los métodos basados en cruces por cero buscan cruces por cero en una expresión derivada de segundo orden calculada a partir de la imagen para encontrar bordes, normalmente los cruces por cero del laplaciano o los cruces por cero de una expresión diferencial no lineal. Como paso de preprocesamiento para la detección de bordes, casi siempre se aplica una etapa de suavizado, normalmente suavizado gaussiano (véase también reducción de ruido ).
Los métodos de detección de bordes que se han publicado difieren principalmente en los tipos de filtros de suavizado que se aplican y en la forma en que se calculan las medidas de intensidad de los bordes. Como muchos métodos de detección de bordes se basan en el cálculo de gradientes de imágenes, también difieren en los tipos de filtros utilizados para calcular las estimaciones de gradientes en las direcciones x e y .
Se puede encontrar un estudio de varios métodos diferentes de detección de bordes en (Ziou y Tabbone 1998); [6] consulte también los artículos de la enciclopedia sobre detección de bordes en Encyclopedia of Mathematics [3] y Encyclopedia of Computer Science and Engineering. [7]
John Canny consideró el problema matemático de derivar un filtro de suavizado óptimo dados los criterios de detección, localización y minimización de respuestas múltiples a un único borde. [8] Demostró que el filtro óptimo dados estos supuestos es una suma de cuatro términos exponenciales. También demostró que este filtro puede aproximarse bien mediante derivadas de primer orden de gaussianas. Canny también introdujo la noción de supresión no máxima, lo que significa que dados los filtros de presuavizado, los puntos de borde se definen como puntos donde la magnitud del gradiente asume un máximo local en la dirección del gradiente. La búsqueda del cruce por cero de la 2.ª derivada a lo largo de la dirección del gradiente fue propuesta por primera vez por Haralick . [9] Se necesitaron menos de dos décadas para encontrar un significado variacional geométrico moderno para ese operador que lo vincula con el detector de bordes de Marr-Hildreth (cruce por cero del laplaciano). Esa observación fue presentada por Ron Kimmel y Alfred Bruckstein. [10]
Aunque su trabajo se realizó en los primeros días de la visión por computadora, el detector de bordes Canny (incluidas sus variaciones) sigue siendo un detector de bordes de última generación. [11] Los detectores de bordes que funcionan mejor que el Canny generalmente requieren tiempos de cálculo más largos o una mayor cantidad de parámetros.
Vladimir A. Kovalevsky [12] ha sugerido un enfoque bastante diferente. Utiliza un preprocesamiento de la imagen con el filtro Sigma [13] y con un filtro especial para la dilución de las rampas. Este método no utiliza el brillo de la imagen, sino solo las intensidades de los canales de color, lo que es importante para detectar un borde entre dos píxeles adyacentes de igual brillo pero diferentes colores. El método escanea la imagen dos veces: primero a lo largo de las líneas horizontales y segundo a lo largo de las columnas verticales. En cada línea horizontal se consideran seis píxeles adyacentes consecutivos y se calculan cinco diferencias de color entre cada dos píxeles adyacentes. Cada diferencia de color es la suma de las diferencias absolutas de las intensidades de los canales de color rojo, verde y azul de los píxeles adyacentes correspondientes. Si esta suma es mayor que un umbral dado, entonces el signo de la diferencia de color se establece igual al signo de la diferencia de las intensidades del verde. Si la diferencia del verde es cero, entonces el signo de la diferencia de color se establece igual al signo de la diferencia de las intensidades del rojo. Si, por el contrario, tanto la diferencia de color verde como la de color rojo son cero, entonces el signo de la diferencia de color se establece igual al signo de la diferencia de color azul, que en este caso no puede ser cero, ya que la suma es mayor que el umbral. Se especifican ciertas condiciones para los valores y signos de las cinco diferencias de color de tal manera que, si se cumplen las condiciones, se coloca un trazo vertical corto entre el tercero y el cuarto de los seis píxeles como etiqueta del borde. Se realizan cálculos similares para las columnas verticales. En este caso, se coloca un trazo horizontal corto entre el tercero y el cuarto de los seis píxeles siguientes. Los trazos verticales y horizontales (que son las celdas unidimensionales de un complejo de celdas abstracto correspondiente a la imagen) componen en su mayoría una secuencia conectada que representa el borde. Este método es robusto y muy rápido y, lo que es más importante, puede detectar bordes entre píxeles adyacentes de igual brillo si la diferencia de color entre estos píxeles es mayor que el umbral.
El detector Canny-Deriche se derivó de criterios matemáticos similares a los del detector de bordes Canny, aunque partiendo de un punto de vista discreto y luego conduciendo a un conjunto de filtros recursivos para suavizar imágenes en lugar de filtros exponenciales o filtros gaussianos. [14]
El detector de bordes diferenciales que se describe a continuación puede considerarse una reformulación del método de Canny desde el punto de vista de los invariantes diferenciales calculados a partir de una representación del espacio de escala, lo que conlleva una serie de ventajas tanto en términos de análisis teórico como de implementación de subpíxeles. En ese aspecto, se ha demostrado que el filtro Log Gabor es una buena opción para extraer límites en escenas naturales. [15]
Se pueden aplicar distintos operadores de gradiente para estimar los gradientes de la imagen a partir de la imagen de entrada o de una versión suavizada de la misma. El enfoque más simple es utilizar diferencias centrales:
correspondiente a la aplicación de las siguientes máscaras de filtro a los datos de la imagen:
El conocido y anterior operador Sobel se basa en los siguientes filtros:
Dadas tales estimaciones de derivadas de imagen de primer orden , la magnitud del gradiente se calcula entonces como:
Mientras que la orientación del gradiente se puede estimar como
Se han propuesto otros operadores de diferencia de primer orden para estimar el gradiente de la imagen: el operador de Prewitt , el operador de cruz de Roberts , el operador de Kayyali [16] y el operador de Frei-Chen.
Es posible ampliar la dimensión de los filtros para evitar el problema de reconocer los bordes en imágenes con baja relación señal/ruido . El coste de esta operación es la pérdida en términos de resolución. Algunos ejemplos son Extended Prewitt 7×7.
Una vez que hemos calculado una medida de la intensidad de los bordes (normalmente la magnitud del gradiente), la siguiente etapa es aplicar un umbral para decidir si hay bordes presentes o no en un punto de la imagen. Cuanto más bajo sea el umbral, más bordes se detectarán y el resultado será cada vez más susceptible al ruido y a la detección de bordes de características irrelevantes en la imagen. Por el contrario, un umbral alto puede pasar por alto bordes sutiles o dar como resultado bordes fragmentados.
Si el borde se aplica solo a la imagen de magnitud de gradiente, los bordes resultantes serán, en general, gruesos y será necesario algún tipo de posprocesamiento para adelgazar los bordes. Sin embargo, para los bordes detectados con supresión no máxima, las curvas de los bordes son delgadas por definición y los píxeles de los bordes se pueden vincular en un polígono de bordes mediante un procedimiento de vinculación de bordes (seguimiento de bordes). En una cuadrícula discreta, la etapa de supresión no máxima se puede implementar estimando la dirección del gradiente utilizando derivadas de primer orden, luego redondeando la dirección del gradiente a múltiplos de 45 grados y, finalmente, comparando los valores de la magnitud del gradiente en la dirección del gradiente estimada.
Un enfoque comúnmente utilizado para manejar el problema de los umbrales apropiados para la determinación del umbral es mediante el uso de la determinación del umbral con histéresis . Este método utiliza múltiples umbrales para encontrar los bordes. Comenzamos utilizando el umbral superior para encontrar el inicio de un borde. Una vez que tenemos un punto de inicio, trazamos la ruta del borde a través de la imagen píxel por píxel, marcando un borde siempre que estemos por encima del umbral inferior. Dejamos de marcar nuestro borde solo cuando el valor cae por debajo de nuestro umbral inferior. Este enfoque asume que es probable que los bordes estén en curvas continuas y nos permite seguir una sección tenue de un borde que hemos visto previamente, sin que esto signifique que cada píxel ruidoso en la imagen esté marcado como un borde. Sin embargo, aún tenemos el problema de elegir los parámetros de umbralización apropiados, y los valores de umbralización adecuados pueden variar a lo largo de la imagen.
El adelgazamiento de bordes es una técnica que se utiliza para eliminar los puntos espurios no deseados en los bordes de una imagen. Esta técnica se emplea después de que la imagen se haya filtrado para eliminar el ruido (utilizando un filtro de mediana, gaussiano, etc.), se haya aplicado el operador de bordes (como los descritos anteriormente, Canny o Sobel) para detectar los bordes y después de que los bordes se hayan suavizado utilizando un valor de umbral adecuado. Esto elimina todos los puntos no deseados y, si se aplica con cuidado, da como resultado elementos de borde de un píxel de grosor.
Ventajas:
Hay muchos algoritmos populares que se utilizan para hacer esto, uno de ellos se describe a continuación:
El número de pasadas en cada dirección debe elegirse según el nivel de precisión deseado.
Algunos operadores de detección de bordes se basan en derivadas de segundo orden de la intensidad. Esto captura esencialmente la tasa de cambio en el gradiente de intensidad. Por lo tanto, en el caso continuo ideal, la detección de cruces por cero en la derivada de segundo orden captura máximos locales en el gradiente.
El operador Marr-Hildreth inicial se basa en la detección de cruces por cero del operador laplaciano aplicado a una imagen suavizada por Gauss. Sin embargo, se puede demostrar que este operador también devolverá bordes falsos correspondientes a mínimos locales de la magnitud del gradiente. Además, este operador dará una localización deficiente en los bordes curvos. Por lo tanto, este operador es hoy principalmente de interés histórico.
Un enfoque de detección de bordes de segundo orden más refinado que detecta automáticamente los bordes con una precisión de subpíxeles, utiliza el siguiente enfoque diferencial para detectar cruces por cero de la derivada direccional de segundo orden en la dirección del gradiente:
Siguiendo la forma geométrica diferencial de expresar el requisito de supresión no máxima propuesto por Lindeberg, [4] [17] introduzcamos en cada punto de la imagen un sistema de coordenadas local , con la dirección paralela a la dirección del gradiente. Suponiendo que la imagen ha sido suavizada previamente mediante suavizado gaussiano y se ha calculado una representación en el espacio de escala a escala , podemos exigir que la magnitud del gradiente de la representación en el espacio de escala , que es igual a la derivada direccional de primer orden en la dirección , tenga su derivada direccional de primer orden en la dirección igual a cero.
mientras que la derivada direccional de segundo orden en la dirección de debe ser negativa, es decir,
Escrita como una expresión explícita en términos de derivadas parciales locales , esta definición de borde se puede expresar como las curvas de cruce por cero del invariante diferencial
que satisface una condición de signo en el siguiente invariante diferencial
donde denotan derivadas parciales calculadas a partir de una representación del espacio de escala obtenida al suavizar la imagen original con un núcleo gaussiano . De esta manera, los bordes se obtendrán automáticamente como curvas continuas con precisión de subpíxeles. El umbral de histéresis también se puede aplicar a estos segmentos de borde diferenciales y de subpíxeles.
En la práctica, las aproximaciones derivadas de primer orden se pueden calcular mediante diferencias centrales como se describió anteriormente, mientras que las derivadas de segundo orden se pueden calcular a partir de la representación del espacio de escala de acuerdo con:
correspondiente a las siguientes máscaras de filtro:
Las derivadas de orden superior para la condición de signo de tercer orden se pueden obtener de manera análoga.
Un desarrollo reciente en las técnicas de detección de bordes adopta un enfoque de dominio de frecuencia para encontrar ubicaciones de bordes. Los métodos de congruencia de fase (también conocidos como coherencia de fase) intentan encontrar ubicaciones en una imagen donde todas las sinusoides en el dominio de frecuencia están en fase. Estas ubicaciones generalmente corresponderán a la ubicación de un borde percibido, independientemente de si el borde está representado por un gran cambio en la intensidad en el dominio espacial. Un beneficio clave de esta técnica es que responde fuertemente a las bandas de Mach y evita los falsos positivos que se encuentran típicamente alrededor de los bordes del techo. Un borde de techo es una discontinuidad en la derivada de primer orden de un perfil de nivel de gris. [18]
La transformada de estiramiento de fase o PST es un enfoque computacional inspirado en la física para el procesamiento de señales e imágenes. Una de sus utilidades es la detección y clasificación de características. [19] [20] PST es un derivado de la investigación sobre la transformada de Fourier dispersiva de estiramiento temporal . PST transforma la imagen emulando la propagación a través de un medio difractivo con propiedad dispersiva 3D diseñada (índice de refracción). La operación se basa en la simetría del perfil de dispersión y se puede entender en términos de funciones propias dispersivas o modos de estiramiento. [21] PST realiza una funcionalidad similar a la microscopía de contraste de fase pero en imágenes digitales. PST también es aplicable a imágenes digitales, así como a datos temporales de series de tiempo.
Para aumentar la precisión de la detección de bordes, se han propuesto varias técnicas de subpíxeles, incluidos los métodos de ajuste de curvas, basados en momentos [22] [23] , reconstructivos y de efecto de área parcial [24] . Estos métodos tienen diferentes características. Los métodos de ajuste de curvas son computacionalmente simples pero se ven fácilmente afectados por el ruido. Los métodos basados en momentos utilizan un enfoque basado en integrales para reducir el efecto del ruido, pero pueden requerir más cálculos en algunos casos. Los métodos reconstructivos utilizan gradientes horizontales o verticales para construir una curva y encontrar el pico de la curva como el borde del subpíxel. Los métodos de efecto de área parcial se basan en la hipótesis de que cada valor de píxel depende del área a ambos lados del borde dentro de ese píxel, lo que produce una estimación individual precisa para cada píxel del borde. Se ha demostrado que ciertas variantes de la técnica basada en momentos son las más precisas para bordes aislados [23] .
El detector de bordes Marr-Hildreth [25] se distingue por su uso del operador Laplaciano de Gauss (LoG) para la detección de bordes en imágenes digitales. A diferencia de otros métodos de detección de bordes, el enfoque LoG combina el suavizado gaussiano con operaciones de segunda derivada, lo que permite la reducción de ruido y la mejora de los bordes de forma simultánea. La principal ventaja de este método radica en su capacidad para detectar bordes a varias escalas ajustando la desviación estándar del núcleo gaussiano, lo que permite la detección de detalles finos y transiciones más amplias. Además, la técnica aprovecha la detección de cruces por cero en la respuesta LoG para localizar bordes con precisión, lo que ofrece robustez frente al ruido y mantiene la continuidad de los bordes. Este enfoque es particularmente eficaz para detectar bordes con límites claros en imágenes al tiempo que minimiza los falsos positivos debido al ruido, lo que lo convierte en una herramienta valiosa en aplicaciones de visión artificial donde la localización precisa de los bordes es crucial.
Fuente: [26]
% Código MATLAB para prewitt% detección de borde del operadork = imread ( "logo.png" );k = rgb2gray ( k );k1 = doble ( k );p_msk =[ - 1 0 1 ; - 1 0 1 ; - 1 0 1 ]; kx = conv2 ( k1 , p_msk , 'mismo' ); ky = conv2 ( k1 , p_msk ' , 'mismo' ); ked = raíz cuadrada ( kx .^ 2 + ky .^ 2 ); % mostrar las imágenes.herramientaim ( k ,[]);% muestra la detección de bordes a lo largo del eje x.imtool ( abs ( kx ), []); % muestra la detección de bordes a lo largo del eje y.imtool ( abs ( ky ),[]);% muestra la detección de bordes completa.imtool ( abs ( ked ),[]);
Operador %Scharr -> detección de bordesk = imread ( "logo.png" );k = rgb2gray ( k );k1 = doble ( k );s_msk =[ - 3 0 3 ; - 10 0 10 ; - 3 0 3 ]; kx = conv2 ( k1 , s_msk , 'mismo' ); ky = conv2 ( k1 , s_msk ' , 'mismo' ); ked = raíz cuadrada ( kx .^ 2 + ky .^ 2 ); %mostrar las imágenes.herramientaim ( k ,[]);%muestra la detección de bordes a lo largo del eje x.imtool ( abs ( kx ), []); %muestra la detección de bordes a lo largo del eje y.imtool ( abs ( ky ),[]);%muestra la detección de bordes completa.imtool ( abs ( ked ),[]);
% Código MATLAB para el operador Sobel% detección de bordesk = imread ( "logo.png" );k = rgb2gray ( k );k1 = doble ( k );s_msk =[ - 1 0 1 ; - 2 0 2 ; - 1 0 1 ]; kx = conv2 ( k1 , s_msk , 'mismo' ); ky = conv2 ( k1 , s_msk ' , 'mismo' ); ked = raíz cuadrada ( kx .^ 2 + ky .^ 2 ); %mostrar las imágenes.herramientaim ( k ,[]);%muestra la detección de bordes a lo largo del eje x.imtool ( abs ( kx ), []); %muestra la detección de bordes a lo largo del eje y.imtool ( abs ( ky ),[]);%muestra la detección de bordes completa.imtool ( abs ( ked ),[]);
M. Gupta, SN Tazi, A. Jain y Deepika, "Detección de bordes mediante el algoritmo Firefly modificado", Computational Intelligence and Communication Networks (CICN) 2014 International Conference on, págs. 167-173, 14-16 de noviembre de 2014. Ver artículo Google Scholar