El operador de Canny ( detector de bordes de Canny , algoritmo de Canny ) en la disciplina de la visión artificial es el operador de detección de bordes de una imagen. Fue desarrollado en 1986 por John F. Canny y utiliza un algoritmo de varias etapas para detectar una amplia gama de bordes en las imágenes.
Canny estudió el problema matemático de obtener un filtro que sea óptimo en términos de selección, localización y minimización de respuestas múltiples de un borde. Demostró que el filtro deseado es la suma de cuatro exponenciales. También demostró que este filtro se puede aproximar bien mediante la primera derivada de la Gaussiana. Canny introdujo el concepto de supresión no máxima , lo que significa que los píxeles de borde son aquellos píxeles donde se alcanza el máximo local del gradiente en la dirección del vector de gradiente .
Aunque su trabajo se realizó en los primeros días de la visión por computadora, el detector de bordes Canny sigue siendo uno de los mejores detectores en la actualidad. Excepto en casos especiales, es difícil encontrar un detector que funcione sustancialmente mejor que el detector Canny.
El objetivo de Canny era desarrollar un algoritmo óptimo de detección de bordes que satisfaga tres criterios:
A partir de estos criterios se construyó luego la función objetivo del costo de los errores, minimizando cuál se encuentra el operador lineal “óptimo” para la convolución con la imagen.
El algoritmo del detector de bordes no se limita a calcular el gradiente de la imagen suavizada. Solo los puntos máximos del degradado de la imagen se dejan en el contorno del borde y no se eliminan los puntos máximos que se encuentran cerca del borde. Aquí, la información sobre la dirección del límite también se usa para eliminar puntos exactamente cerca del límite y no romper el límite en sí mismo cerca de los máximos locales del gradiente. Luego, los límites débiles se eliminan utilizando dos umbrales. El fragmento de borde se trata como un todo. Si el valor del gradiente en algún lugar del fragmento rastreado supera el umbral superior, este fragmento también sigue siendo el límite "permisible" en aquellos lugares donde el valor del gradiente cae por debajo de este umbral, hasta que cae por debajo del umbral inferior. Si no hay un solo punto en todo el fragmento con un valor mayor que el umbral superior, entonces se elimina. Esta histéresis reduce el número de discontinuidades en los límites de salida. La inclusión de la reducción de ruido en el algoritmo de Canny, por un lado, aumenta la estabilidad de los resultados y, por otro lado, aumenta los costos computacionales y conduce a la distorsión e incluso a la pérdida de los detalles de los límites. Entonces, por ejemplo, dicho algoritmo redondea las esquinas de los objetos y destruye los límites en los puntos de unión.
Suavizado. Desenfoca la imagen para eliminar el ruido. El operador de Canny utiliza un filtro que se puede aproximar bien a la primera derivada de la Gaussiana. = 1.4:
Buscando gradientes. Se marcan los bordes donde el degradado de la imagen adquiere su valor máximo. Pueden tener diferentes direcciones, por lo que el algoritmo de Canny usa cuatro filtros para detectar bordes horizontales, verticales y diagonales en una imagen borrosa.
El ángulo de dirección del vector gradiente se redondea y puede tomar los siguientes valores: 0, 45, 90, 135.
Supresión de no máximos. Solo los máximos locales están marcados como límites.
Filtrado de doble umbral. Los límites potenciales se definen mediante umbrales.
Trazar área de ambigüedad. Los bordes resultantes se determinan suprimiendo todos los bordes no asociados con los bordes definidos (fuertes).
Antes de usar el detector, es común convertir la imagen a escala de grises para reducir los costos computacionales. Esta etapa es típica para muchos métodos de procesamiento de imágenes.