Detector de bordes Sobel vs Canny
Pasa una imagen de prueba por el pipeline completo de detección de bordes que hay detrás de la visión robótica — escala de grises, desenfoque gaussiano, gradientes de Sobel, supresión de no máximos, histéresis de Canny — y pasa el cursor sobre cualquier paso para inspeccionar las matemáticas detrás de un solo píxel.
por qué desenfocar primero, y por qué dos umbrales 🖖
Una derivada amplifica todo lo que se le dé, incluido el ruido — deriva una imagen bruta y cada fluctuación de un solo píxel parece un borde. Convolucionar primero con una gaussiana (paso 2) promedia ese ruido sin apenas afectar a los cambios de intensidad a gran escala que sí son bordes reales, por lo que todo detector de bordes práctico basado en gradientes suaviza antes de derivar. Los propios núcleos de Sobel son aproximaciones separables de las derivadas parciales ∂I/∂x y ∂I/∂y, ponderadas 1-2-1 a lo largo del eje perpendicular para sesgar la estimación hacia la fila o columna central. Un único umbral sobre la magnitud resultante fuerza una elección imposible: si se pone bajo, el ruido salpica la salida; si se pone alto, los bordes de bajo contraste se rompen en fragmentos discontinuos. La histéresis (paso 6) escapa de ese compromiso usando dos umbrales en lugar de uno — el umbral alto (T_high) encuentra bordes de los que está seguro, y el umbral bajo (T_low), aplicado solo a píxeles que ya tocan un borde fuerte, permite que un contorno real continúe a través de un tramo temporalmente tenue sin dejar que el ruido inicie un contorno propio. Esta es la misma idea de doble umbral usada en la segmentación por flood-fill y en los circuitos de disparador Schmitt, en cualquier sitio donde un único corte parpadearía.
Dos preguntas sobre una imagen 🖖
Sobel y Canny hacen preguntas distintas sobre la misma imagen. Sobel produce un mapa de gradiente: cada píxel recibe un número que indica cuán bruscamente cambia el brillo allí, así que los bordes salen gruesos y en escala de grises, como un resplandor suave. Canny toma ese mismo gradiente y fuerza una decisión: la supresión de no máximos conserva solo el píxel más brillante a lo ancho de cada cresta, adelgazando el resplandor hasta una nítida línea de un píxel, y luego lo etiqueta como borde o no. Alterna las pestañas Gradiente y Canny para ver cómo un mapa difuso se reduce a un contorno limpio.
Los bordes de Canny esconden un compromiso inherente 🖖
John Canny no llegó a una receta a base de tanteos. En su artículo de 1986 planteó la detección de bordes como una optimización con tres objetivos —detectar bordes reales, ubicarlos con precisión y responder una sola vez por borde— y la resolvió con el cálculo de variaciones; la solución resultó ser casi exactamente la primera derivada de una gaussiana. Lo que también demostró: detección y localización tiran en sentidos opuestos a medida que el desenfoque crece, así que una σ mayor encuentra bordes más tenues pero difumina su posición, y ninguna σ gana en ambas. Desliza σ y compruébalo.
Problemas de ejemplo
- Formas limpias - Formas geométricas: configuración predeterminada de Canny, mapa de bordes binario limpio
- Gradiente de tablero de ajedrez - Tablero de ajedrez: bordes escalón ideales, respuesta máxima de Sobel en las transiciones
- Pistas de circuito - Placa de circuito: un s bajo conserva las pistas finas de cobre en la salida de Canny
- Rostro suavizado - Rostro con s=2.5: un desenfoque fuerte elimina la textura y conserva los bordes estructurales