Aprendí sobre varios algoritmos de detección de bordes, incluidos algoritmos como los métodos Sobel, Laplacian y Canny. Me parece que el detector de bordes más popular es un detector de bordes Canny, pero ¿hay casos en los que este no sea el algoritmo óptimo para usar? ¿Cómo puedo decidir qué algoritmo usar? ¡Gracias!
algorithms
image-processing
edge-detection
PearsonArtPhoto
fuente
fuente
Respuestas:
Hay muchas posibilidades de detección de bordes, pero los 3 ejemplos que mencionas se dividen en 3 categorías distintas.
Sobel
Esto se aproxima a una derivada de primer orden. Da extremos en las posiciones de gradiente, 0 donde no hay gradiente presente. En 1D, es =[−101]
Hay otras alternativas a Sobel, que tienen +/- las mismas características. En la página de Roberts Cross en Wikipedia, puede encontrar una comparación de algunos de ellos.
Laplace
Esto se aproxima a una derivada de segundo orden. Da 0 en las posiciones de gradiente y también 0 donde no hay gradiente presente. Da extremos donde comienza o se detiene un gradiente (más largo).
El efecto de estos 2 en diferentes tipos de bordes se puede ver mejor visualmente:
Astuto
Este no es un operador simple, sino un enfoque de varios pasos, que utiliza Sobel como uno de los pasos. Cuando Sobel y Laplace le dan un resultado en escala de grises / coma flotante, que necesita para su propio umbral, el algoritmo Canny tiene un umbral inteligente como uno de sus pasos, por lo que solo obtiene un resultado binario de sí / no. Además, en un borde liso, es probable que encuentre solo 1 línea en algún lugar en el medio del gradiente.
fuente
Mientras Sobel y Laplacian son simplemente filtros, Canny va más allá que eso de dos maneras.
Primero, hace una supresión no máxima que elimina el ruido producido por todo tipo de objetos y gradientes de color en una imagen. En segundo lugar, en realidad incluye un paso que le permite discernir entre diferentes direcciones de borde y llenar puntos faltantes de una línea.
En otras palabras, el detector de bordes Canny está en una clase completamente diferente de Sobel y Laplacian. Es mucho más inteligente porque incluye un montón de postprocesamiento, mientras que Sobel y Laplacian son simplemente salidas de filtro de paso alto seguidas de un umbral binario lineal.
fuente
Las dos decisiones más importantes al tratar de detectar bordes son, para mí, generalmente:
¿Puedo segmentar los objetos en su lugar y luego usar un operador morfológico para encontrar el borde de la imagen binaria (segmentada)? Con datos ruidosos, esto tiende a ser más robusto.
¿Qué filtro de suavizado de preservación de bordes debo usar para reducir el ruido de la imagen? Los filtros de borde se basan en la diferenciación, que sufrirá con datos ruidosos. La opción más simple es el filtro mediano, pero la difusión anisotrópica o los filtros de medios no locales ofrecerán un mejor rendimiento a costa de tener más parámetros para ajustar.
Para la detección de bordes en sí, no puedo pensar por una buena razón para no usar Canny.
fuente
Enfoque de SUSAN
Otro enfoque para la detección de bordes y esquinas es el enfoque SUSAN .
En este enfoque, en lugar de aproximaciones derivadas, se utiliza un enfoque de aproximación integral . Esto tiene la ventaja de no solo poder detectar bordes, sino también poder detectar "características bidimensionales" (es decir, esquinas).
Otra ventaja de un enfoque de aproximación integral es que el ruido tiende a tener menos efecto en los resultados.
fuente
Canny produce una imagen binaria y depende de umbrales dados externamente (que dependen de la imagen / aplicación).
Los filtros basados en convolución producen una imagen de "intensidad de borde". Esto es útil si el peso o la resistencia del borde es importante (por ejemplo, en la Transformación de Hough ponderada).
fuente