Hay muchas posibilidades de detección de bordes, pero los 3 ejemplos que mencionas se dividen en 3 categorías distintas.
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]
- borde liso => mínimo o máximo local, dependiendo de la señal que sube o baja.
- 1 línea de píxeles => 0 en la línea misma, con extremos locales (de signo diferente) justo al lado. En 1D, es =[1−21]
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.
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).
- borde liso => 0 a lo largo del borde, extremos locales en el inicio / parada del borde.
- Línea de 1 píxel => un extremo "doble" en la línea, con extremos "normales" con un signo diferente justo al lado
El efecto de estos 2 en diferentes tipos de bordes se puede ver mejor visualmente:
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.