Explicar la Transformación de Hough


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

¿Puede alguien ayudarme a explicarme en un lenguaje más amigable?

Author: kmario23, 2011-01-17

4 answers

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 de 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 Canny edge es una opción frecuente. La imagen de borde resultante sirve como entrada al 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 y y. (El centro de la imagen se usa comúnmente como punto de referencia para este cambio de coordenadas.)

La transformada de Hough es esencialmente un histograma. Los píxeles de borde que se asignan a la misma theta y r se asumen para definir una línea en la imagen. Para calcular la frecuencia de ocurrencia, theta y r se discretizan (se dividen en un número de 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 parámetros N más frecuentes - o umbral los parámetros tales que cuenta más pequeño que algunos n se ignoran.

No estoy seguro de que esta respuesta sea mejor que las fuentes que originalmente presentado - ¿hay un punto en particular en el que estás atascado?

 34
Author: Throwback1986,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-09 00:22:28

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

introduzca la descripción de la imagen aquí

 109
Author: mlai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-24 15:18:42

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

Le das a la Hough transform 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 co-ordinate (1, 100) es parte de la línea, entonces que podría ser parte de una línea donde el gradiente ( m) = 0 e intercepción 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í sucesivamente. 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 (m y c) que podrían explicarlo. Así que pueden imaginar, si su línea tiene 1000 píxeles en ella, entonces la combinación correcta de m y c tendrá 1000 votos.

El la combinación de m y c que tiene más votos es lo que se devuelve como los parámetros para la línea.

 15
Author: Ray Hidayat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-17 04:18:24

Aquí hay otra perspectiva (una utilizada en el episodio piloto de the T. V show Numbers): Imagine que un rociador de césped con forma de fuente estaba en algún lugar en un césped antes, arrojando gotas de agua a su alrededor. Ahora el aspersor se ha ido, pero las gotas permanecen. Imagine convertir cada gota en su propio rociador, expulsando gotitas a su alrededor, en todas las direcciones porque la gota no sabe de qué dirección vino. Esto dispersará una gran cantidad de agua finamente alrededor de la tierra, excepto que habrá un lugar donde una gran cantidad de agua golpea de todas las gotas a la vez. Ese lugar es donde estaba el aspersor original.

La aplicación para (por ejemplo) la detección de líneas es similar. Cada punto en la imagen es una de las gotitas originales; cuando actúa como un aspersor, envía sus propias gotitas marcando todas las líneas que podrían estar pasando por ese punto. Lugares donde una gran cantidad de gotas secundarias de tierra representan los parámetros de una línea que pasa a través de un todo muchos puntos de imagen-VOILA! Línea detectado!

 1
Author: PMar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-23 14:04:51