transformada que paul hough image-processing geometry computer-vision hough-transform pattern-recognition

image processing - paul - Explique la transformación de Hough



paul hough transform (4)

Aquí hay otra perspectiva (una utilizada en el episodio piloto de los números del programa de televisión): imagine que un rociador de césped tipo fuente se encontraba en algún lugar en el césped antes, proyectando gotas de agua sobre sí mismo. Ahora el aspersor se ha ido, pero las gotas permanecen. Imagine convertir cada gota en su propio rociador, proyectando gotitas sobre sí mismo, en todas las direcciones, porque la gota no sabe de qué dirección proviene. Esto dispersará una gran cantidad de agua en el suelo, excepto que habrá un lugar donde una gran cantidad de agua golpea todas las gotas a la vez. Ese lugar es donde estaba el rociador original.

La aplicación para (por ejemplo) detección de línea es similar. Cada punto en la imagen es una de las gotitas originales; cuando actúa como un rociador, envía sus propias gotas marcando todas las líneas que podrían estar pasando por ese punto. Los lugares donde una gran cantidad de gotas secundarias aterrizan representan los parámetros de una línea que pasa por una gran cantidad de puntos de imagen: ¡VOILA! Línea detectada

Solo estoy siendo aventurero y estoy dando mi primer paso hacia la visión por computadora. Intenté implementar la Transformación Hough por mi cuenta, pero no entiendo la imagen completa. Leí la entrada de la wikipedia, e incluso el "uso original de la transformación de la base para detectar líneas y curvas en imágenes" de Richard Duda y Peter Hart, pero no sirvió de nada.

¿Alguien puede ayudarme a explicarme en un lenguaje más amigable?


Aquí hay una explicación visual muy básica de cómo funciona una Transformada Hough para detectar líneas en una imagen:


Es más común pensar en una línea en coordenadas rectangulares, es decir, y = mx + b . Como dice el artículo de Wikipedia, una línea también se puede expresar en forma polar. La transformación Hough explota este cambio de representación (para líneas, de todos modos. La discusión también se puede aplicar a círculos, elipses, etc.).

El primer paso en la transformación de Hough es reducir la imagen a un conjunto de bordes. El detector de bordes Canny es una elección frecuente. La imagen de borde resultante sirve como entrada para el proceso Hough.

Para resumir, los píxeles "iluminados" en la imagen de borde se convierten a forma polar, es decir, su posición se representa utilizando una dirección theta y una distancia r - en lugar de x e y . (El centro de la imagen se usa comúnmente como el punto de referencia para este cambio de coordenadas).

La transformada de Hough es esencialmente un histograma. Se supone que la asignación de píxeles del borde al mismo theta y r define una línea en la imagen. Para calcular la frecuencia de ocurrencia, theta y r están discretizados (divididos en varios contenedores). Una vez que todos los píxeles de borde se han convertido a forma polar, los contenedores se analizan para determinar las líneas en la imagen original.

Es común buscar los N parámetros más frecuentes, o umbral, se ignoran los parámetros que cuentan menos que algunos n .

No estoy seguro de que esta respuesta sea mejor que la de las fuentes que presentó originalmente: ¿hay algún punto en particular en el que se encuentre atascado?


La transformada Hough es una forma de encontrar los valores más probables que representan una línea (o un círculo, u otras muchas cosas).

Le das a Hough la transformación de una imagen de una línea como entrada. Esta imagen contendrá dos tipos de píxeles: los que forman parte de la línea y los que forman parte del fondo.

Para cada píxel que forma parte de la línea, se calculan todas las combinaciones posibles de parámetros. Por ejemplo, si el píxel en la coordenada (1, 100) es parte de la línea, entonces eso podría ser parte de una línea donde el gradiente (m) = 0 y el intercepto y (c) = 100. También podría ser parte de m = 1, c = 99; o m = 2, c = 98; o m = 3, c = 97; y así. Puede resolver la ecuación de línea y = mx + c para encontrar todas las combinaciones posibles.

Cada píxel da un voto a cada uno de los parámetros (myc) que podrían explicarlo. Entonces, pueden imaginar, si su línea tiene 1000 píxeles, entonces la combinación correcta de myc tendrá 1000 votos.

La combinación de myc que tiene la mayor cantidad de votos es lo que se devuelve como los parámetros para la línea.