La transformada de Hough es una técnica de extracción de características que se utiliza en el análisis de imágenes , la visión por computadora y el procesamiento de imágenes digitales . [1] El propósito de la técnica es encontrar instancias imperfectas de objetos dentro de una cierta clase de formas mediante un procedimiento de votación. Este procedimiento de votación se lleva a cabo en un espacio de parámetros , a partir del cual se obtienen candidatos de objeto como máximos locales en un denominado espacio acumulador que es construido explícitamente por el algoritmo para calcular la transformada de Hough.
La transformada de Hough clásica se refería a la identificación de líneas en la imagen, pero más tarde la transformada de Hough se ha extendido para identificar posiciones de formas arbitrarias, más comúnmente círculos o elipses . La transformada de Hough, tal como se usa universalmente hoy en día, fue inventada por Richard Duda y Peter Hart en 1972, quienes la llamaron una "transformada de Hough generalizada" [2] después de la patente relacionada de 1962 de Paul Hough. [3] [4] La transformación fue popularizada en la comunidad de visión por computadora por Dana H. Ballard a través de un artículo de revista de 1981 titulado "Generalizando la transformada de Hough para detectar formas arbitrarias ".
Historia
Inicialmente se inventó para el análisis mecánico de fotografías de cámaras de burbujas (Hough, 1959).
La transformada de Hough fue patentada como Patente de Estados Unidos 3.069.654 en 1962 y asignada a la Comisión de Energía Atómica de Estados Unidos con el nombre "Método y Medios para Reconocer Patrones Complejos". Esta patente utiliza una parametrización pendiente-intersección para líneas rectas, lo que torpemente conduce a un espacio de transformación ilimitado ya que la pendiente puede llegar al infinito.
La parametrización rho-theta utilizada universalmente en la actualidad se describió por primera vez en
- Duda, RO; Hart, PE (enero de 1972). "Uso de la transformación de Hough para detectar líneas y curvas en imágenes" (PDF) . Comm. ACM . 15 : 11-15. doi : 10.1145 / 361237.361242 .
aunque ya era estándar para la transformación Radon desde al menos la década de 1930.
La variación de O'Gorman y Clowes se describe en
- O'Gorman, Frank; Clowes, MB (1976). "Encontrar bordes de imagen a través de la colinealidad de puntos característicos". IEEE Trans. Computación . 25 (4): 449–456. doi : 10.1109 / TC.1976.1674627 .
La historia de cómo se inventó la forma moderna de la transformada de Hough se da en
- Hart, PE (noviembre de 2009). "Cómo se inventó la transformación de Hough" (PDF) . Revista de procesamiento de señales IEEE . 26 (6): 18-22. doi : 10.1109 / msp.2009.934181 . S2CID 16245096 . Archivado desde el original (PDF) el 16 de mayo de 2018.
Teoría
En el análisis automatizado de imágenes digitales , a menudo surge un subproblema de detección de formas simples, como líneas rectas, círculos o elipses. En muchos casos , se puede utilizar un detector de bordes como etapa de preprocesamiento para obtener puntos de imagen o píxeles de imagen que se encuentran en la curva deseada en el espacio de la imagen. Sin embargo, debido a imperfecciones en los datos de la imagen o en el detector de bordes, es posible que falten puntos o píxeles en las curvas deseadas, así como desviaciones espaciales entre la línea / círculo / elipse ideal y los puntos de borde ruidosos, ya que se obtienen de la detector de bordes. Por estas razones, a menudo no es trivial agrupar las entidades de borde extraídas en un conjunto apropiado de líneas, círculos o elipses. El propósito de la transformada de Hough es abordar este problema haciendo posible realizar agrupaciones de puntos de borde en candidatos de objeto mediante la realización de un procedimiento de votación explícito sobre un conjunto de objetos de imagen parametrizados (Shapiro y Stockman, 304).
Detectando líneas
El caso más simple de la transformada de Hough es la detección de líneas rectas. En general, la línea recta y = mx + b se puede representar como un punto ( b , m ) en el espacio de parámetros. Sin embargo, las líneas verticales plantean un problema. Darían lugar a valores ilimitados del parámetro de pendiente m . Así, por razones computacionales, Duda y Hart [5] propusieron el uso de la forma normal de Hesse
- ,
dónde es la distancia desde el origen hasta el punto más cercano en la línea recta, y( theta ) es el ángulo entre el eje y la línea que conecta el origen con ese punto más cercano.
La intuición de esta forma, similar a la ecuación plana, es que cada vector en la línea debe ser perpendicular (ortogonal) a la línea recta de longitud. que viene del origen. Es fácil ver que el punto de intersección de la línea de función y la línea perpendicular que viene del origen está en. Entonces, para cualquier punto en la linea, el vector debe ser ortogonal al vector . Por lo tanto, lo obtenemos para cualquier punto. en la recta de función, la ecuación debe estar satisfecho. Por lo tanto,. Desde y , obtenemos . Desde, obtenemos la forma final de .
Por tanto, es posible asociar a cada línea de la imagen un par . LaEl plano a veces se denomina espacio de Hough para el conjunto de líneas rectas en dos dimensiones. Esta representación hace que la transformada de Hough sea conceptualmente muy cercana a la transformada bidimensional de Radon . De hecho, la transformada de Hough es matemáticamente equivalente a la transformada de Radon, pero las dos transformaciones tienen diferentes interpretaciones computacionales asociadas tradicionalmente con ellas. [6]
Dado un solo punto en el plano, entonces el conjunto de todas las líneas rectas que pasan por ese punto corresponde a una curva sinusoidal en el plano ( r, θ ), que es única para ese punto. Un conjunto de dos o más puntos que forman una línea recta producirá sinusoides que se cruzan en ( r, θ ) para esa línea. Por tanto, el problema de detectar puntos colineales se puede convertir en el problema de encontrar curvas concurrentes . [7]
Implementación
El algoritmo de transformada lineal de Hough estima los dos parámetros que definen una línea recta. El espacio de transformación tiene dos dimensiones, y cada punto en el espacio de transformación se usa como un acumulador para detectar o identificar una línea descrita por. Cada punto de los bordes detectados en la imagen contribuye a los acumuladores.
La dimensión del acumulador es igual al número de parámetros desconocidos, es decir, dos, considerando valores cuantificados de r y θ en el par (r, θ). Para cada píxel en (x, y) y su vecindad, el algoritmo de transformación de Hough determina si hay suficiente evidencia de una línea recta en ese píxel. Si es así, calculará los parámetros (r, θ) de esa línea y luego buscará el contenedor del acumulador en el que caen los parámetros e incrementará el valor de ese contenedor. Al encontrar los contenedores con los valores más altos, generalmente buscando los máximos locales en el espacio del acumulador, se pueden extraer las líneas más probables y leer sus definiciones geométricas (aproximadas). (Shapiro y Stockman, 304) La forma más sencilla de encontrar estos picos es aplicando algún tipo de umbral, pero otras técnicas pueden producir mejores resultados en diferentes circunstancias, determinando qué líneas se encuentran y cuántas. Dado que las líneas devueltas no contienen información sobre la longitud, a menudo es necesario, en el siguiente paso, encontrar qué partes de la imagen coinciden con qué líneas. Además, debido a errores de imperfección en el paso de detección de bordes, generalmente habrá errores en el espacio del acumulador, lo que puede hacer que no sea trivial encontrar los picos apropiados y, por lo tanto, las líneas adecuadas.
El resultado final de la transformada lineal de Hough es una matriz (matriz) bidimensional similar al acumulador: una dimensión de esta matriz es el ángulo cuantificado θ y la otra dimensión es la distancia cuantificada r. Cada elemento de la matriz tiene un valor igual a la suma de los puntos o píxeles que se posicionan en la línea representada por los parámetros cuantificados (r, θ). Entonces, el elemento con el valor más alto indica la línea recta que está más representada en la imagen de entrada. [8]
Ejemplos de
Ejemplo 1
Considere tres puntos de datos, que se muestran aquí como puntos negros.
- Para cada punto de datos, se trazan varias líneas que lo atraviesan, todas en diferentes ángulos. Estos se muestran aquí en diferentes colores.
- La transformada de Hough acumula contribuciones de todos los píxeles en el borde detectado. Para cada línea, existe una línea de apoyo que es perpendicular a ella y que se cruza con el origen . En cada caso, uno de estos se muestra como una flecha.
- Se calcula la longitud (es decir, la distancia perpendicular al origen) y el ángulo de cada línea de apoyo. Las longitudes y los ángulos se tabulan debajo de los diagramas.
De los cálculos, se puede ver que en cualquier caso la línea de soporte a 60 ° tiene una longitud similar. Por lo tanto, se entiende que las líneas correspondientes (las azules en la imagen de arriba) son muy similares. Por tanto, se puede suponer que todos los puntos se encuentran cerca de la línea azul.
Ejemplo 2
El siguiente es un ejemplo diferente que muestra los resultados de una transformación de Hough en una imagen ráster que contiene dos líneas gruesas.
Los resultados de esta transformación se almacenaron en una matriz. El valor de la celda representa el número de curvas a través de cualquier punto. Los valores de celda más altos se vuelven más brillantes. Los dos puntos claramente brillantes son los parámetros de Hough de las dos líneas. A partir de las posiciones de estos puntos, se pueden determinar el ángulo y la distancia desde el centro de la imagen de las dos líneas en la imagen de entrada.
Variaciones y ampliaciones
Usando la dirección del gradiente para reducir el número de votos
Una mejora sugerida por O'Gorman y Clowes se puede utilizar para detectar líneas si se tiene en cuenta que el gradiente local de la intensidad de la imagen será necesariamente ortogonal al borde. Dado que la detección de bordes generalmente implica calcular la magnitud del gradiente de intensidad , la dirección del gradiente se encuentra a menudo como un efecto secundario. Si un punto dado de coordenadas ( x, y ) está de hecho en una línea, entonces la dirección local del gradiente da el parámetro θ correspondiente a dicha línea, y el parámetro r se obtiene inmediatamente. (Shapiro y Stockman, 305) La dirección del gradiente se puede estimar dentro de los 20 °, lo que acorta la traza sinusoidal de los 180 ° completos a aproximadamente 45 °. Esto reduce el tiempo de cálculo y tiene el interesante efecto de reducir el número de votos inútiles, mejorando así la visibilidad de los picos correspondientes a líneas reales en la imagen.
Transformada de Hough basada en kernel (KHT)
Fernandes y Oliveira [9] sugirieron un esquema de votación mejorado para la transformada de Hough que permite que una implementación de software logre un rendimiento en tiempo real incluso en imágenes relativamente grandes (por ejemplo, 1280 × 960). La transformada de Hough basada en Kernel usa el mismoparametrización propuesta por Duda y Hart, pero opera en grupos de píxeles aproximadamente colineales. Para cada grupo, los votos se emiten utilizando un núcleo elíptico-gaussiano orientado que modela la incertidumbre asociada con la línea de mejor ajuste con respecto al grupo correspondiente. El enfoque no solo mejora significativamente el rendimiento del esquema de votación, sino que también produce un acumulador mucho más limpio y hace que la transformación sea más robusta a la detección de líneas espurias.
Transformada de Hough 3-D basada en kernel para detección de planos (3DKHT)
Limberger y Oliveira [10] sugirieron una técnica determinista para la detección de planos en nubes de puntos no organizadas cuyo costo es en el número de muestras, logrando un rendimiento en tiempo real para conjuntos de datos relativamente grandes (hasta puntos en una CPU de 3,4 GHz). Se basa en una estrategia de votación de transformación rápida de Hough para regiones planas, inspirada en la transformación de Hough basada en Kernel (KHT). Esta transformación de Hough 3D basada en Kernel (3DKHT) utiliza un algoritmo rápido y robusto para segmentar grupos de muestras aproximadamente coplanar, y emite votos para grupos individuales (en lugar de para muestras individuales) en un () acumulador esférico que utiliza un núcleo gaussiano trivariante. El enfoque es varios órdenes de magnitud más rápido que las técnicas existentes (no deterministas) para la detección de planos en nubes de puntos, como RHT y RANSAC , y escala mejor con el tamaño de los conjuntos de datos. Se puede utilizar con cualquier aplicación que requiera una detección rápida de características planas en grandes conjuntos de datos.
Hough transformada de curvas y su generalización para formas analíticas y no analíticas
Aunque la versión de la transformación descrita anteriormente se aplica solo para encontrar líneas rectas, se puede usar una transformación similar para encontrar cualquier forma que pueda ser representada por un conjunto de parámetros. Un círculo, por ejemplo, se puede transformar en un conjunto de tres parámetros, que representan su centro y radio, de modo que el espacio de Hough se vuelva tridimensional. Las elipses y curvas arbitrarias también se pueden encontrar de esta manera, al igual que cualquier forma se puede expresar fácilmente como un conjunto de parámetros.
Fernandes y Oliveira propusieron la generalización de la transformada de Hough para detectar formas analíticas en espacios con cualquier dimensionalidad. [11] A diferencia de otros enfoques basados en la transformada de Hough para formas analíticas, la técnica de Fernandes no depende de la forma que se quiera detectar ni del tipo de datos de entrada. La detección puede llevarse a un tipo de forma analítica cambiando el modelo de geometría asumido donde los datos han sido codificados (por ejemplo, espacio euclidiano , espacio proyectivo , geometría conforme , etc.), mientras que la formulación propuesta permanece sin cambios. Además, garantiza que las formas deseadas se representen con el menor número posible de parámetros, y permite la detección simultánea de diferentes tipos de formas que se ajustan mejor a un conjunto de entradas de entrada con diferentes dimensionalidades y diferentes definiciones geométricas (por ejemplo, la detección simultánea de planos y esferas que mejor se ajustan a un conjunto de puntos, líneas rectas y círculos).
Para formas más complicadas en el plano (es decir, formas que no se pueden representar analíticamente en algún espacio 2D), se utiliza la transformada de Hough generalizada [12] , que permite que una función vote por una posición, orientación y / o escala particular de la forma utilizando una tabla de búsqueda predefinida. La transformación de Hough acumula contribuciones de todos los píxeles en el borde detectado.
Proceso de detección de círculos
Modificar el algoritmo para detectar formas circulares en lugar de líneas es relativamente sencillo.
- Primero, creamos el espacio acumulador, que se compone de una celda para cada píxel. Inicialmente, cada celda se establece en 0.
- Para cada punto de borde (i, j) en la imagen, incremente todas las celdas que de acuerdo con la ecuación de un círculo podría ser el centro de un círculo. Estas celdas están representadas por la letra en la ecuación.
- Para cada valor posible de encontrado en el paso anterior, encuentre todos los valores posibles de que satisfacen la ecuación.
- Busque máximos locales en el espacio del acumulador. Estas celdas representan círculos que fueron detectados por el algoritmo.
Si no conocemos de antemano el radio del círculo que estamos tratando de localizar, podemos usar un espacio acumulador tridimensional para buscar círculos con un radio arbitrario. Naturalmente, esto es más caro computacionalmente.
Este método también puede detectar círculos que están parcialmente fuera del espacio del acumulador, siempre que haya suficiente área del círculo dentro de él.
Detección de objetos 3D (aviones y cilindros)
La transformación de Hough también se puede utilizar para la detección de objetos 3D en datos de rango o nubes de puntos 3D . La extensión de la transformada clásica de Hough para la detección de planos es bastante sencilla. Un plano está representado por su ecuación explícita para lo cual podemos utilizar un espacio 3D Hough correspondiente a , y . Esta extensión adolece de los mismos problemas que su contraparte 2D, es decir, se pueden detectar de forma fiable planos cercanos a la horizontal, mientras que el rendimiento se deteriora a medida que la dirección plana se vuelve vertical y amplificar el ruido en los datos). Esta formulación del plano se ha utilizado para la detección de planos en las nubes de puntos adquiridas a partir del escaneo láser aerotransportado [13] y funciona muy bien porque en ese dominio todos los planos son casi horizontales.
Para la detección de planos generalizados mediante la transformada de Hough, el plano se puede parametrizar mediante su vector normal (usando coordenadas esféricas) y su distancia desde el origen resultando en un espacio tridimensional de Hough. Esto da como resultado que cada punto de los datos de entrada vote por una superficie sinusoidal en el espacio de Hough. La intersección de estas superficies sinusoidales indica la presencia de un plano. [14] Un enfoque más general para más de 3 dimensiones requiere que la heurística de búsqueda siga siendo factible. [15]
La transformada de Hough también se ha utilizado para encontrar objetos cilíndricos en nubes de puntos utilizando un enfoque de dos pasos. El primer paso encuentra la orientación del cilindro y el segundo paso encuentra la posición y el radio. [dieciséis]
Usar características ponderadas
Un detalle de variación común. Es decir, encontrar los contenedores con el recuento más alto en una etapa se puede usar para restringir el rango de valores buscados en la siguiente.
Espacio de parámetros cuidadosamente elegido
Un espacio de parámetros de alta dimensión para la transformada de Hough no solo es lento, sino que si se implementa sin previsión, puede invadir fácilmente la memoria disponible. Incluso si el entorno de programación permite la asignación de una matriz más grande que el espacio de memoria disponible a través de la memoria virtual, el número de intercambios de página requeridos para esto será muy exigente porque la matriz de acumuladores se utiliza de manera aleatoria y rara vez se detiene en la memoria contigua. ya que salta de un índice a otro.
Considere la tarea de encontrar elipses en una imagen de 800x600. Suponiendo que los radios de las elipses están orientados a lo largo de los ejes principales, el espacio de parámetros es de cuatro dimensiones. (x, y) define el centro de la elipse, y ayb denotan los dos radios. Al permitir que el centro esté en cualquier lugar de la imagen, se agrega la restricción 0
Es poco probable que un programa así concebido pueda asignar suficiente memoria. Esto no significa que el problema no pueda resolverse, solo que se encontrarán nuevas formas de restringir el tamaño de la matriz de acumuladores, lo que lo hace factible. Por ejemplo:
- Si es razonable suponer que las elipses están contenidas por completo dentro de la imagen, se puede reducir el rango de los radios. Lo más grande que pueden ser los radios es si el centro de la elipse está en el centro de la imagen, lo que permite que los bordes de la elipse se estiren hacia los bordes. En este caso extremo, los radios solo pueden ser la mitad de la magnitud del tamaño de la imagen orientada en la misma dirección. Reducir el rango de ayb de esta manera reduce la matriz de acumuladores a 57 mil millones de valores.
- El intercambio de precisión por espacio en la estimación de la transformada de Hough acumula contribuciones de todos los píxeles en el borde detectado. La transformada de Hough acumula contribuciones de todos los píxeles en el borde detectado. El centro: si se predice que el centro estará fuera de 3 en los ejes x e y, esto reduce el tamaño de la matriz de acumuladores a aproximadamente 6 mil millones de valores.
- Intercambie precisión por espacio en la estimación de los radios: si se estima que los radios están desviados en 5, se produce una reducción adicional del tamaño de la matriz de acumuladores, en aproximadamente 256 millones de valores.
- Recorta la imagen en áreas de interés. Esto depende de la imagen y, por lo tanto, es impredecible, pero imagine un caso en el que todos los bordes de interés de una imagen se encuentran en el cuadrante superior izquierdo de esa imagen. La matriz de acumuladores se puede reducir aún más en este caso restringiendo los 4 parámetros por un factor de 2, para un factor de reducción total de 16.
Al aplicar solo las tres primeras de estas restricciones al ejemplo mencionado, el tamaño de la matriz de acumuladores se reduce en casi un factor de 1000, reduciéndolo a un tamaño que es mucho más probable que quepa en la memoria de una computadora moderna.
Algoritmo de detección de elipse eficiente
Yonghong Xie y Qiang Ji brindan una forma eficiente de implementar la transformación de Hough para la detección de elipse al superar los problemas de memoria. [17] Como se discutió en el algoritmo (en la página 2 del documento), este enfoque usa solo un acumulador unidimensional (para el eje menor) para detectar elipses en la imagen. La complejidad es O (N 3 ) en el número de puntos distintos de cero en la imagen.
Limitaciones
La transformación de Hough solo es eficiente si una gran cantidad de votos cae en el contenedor correcto, de modo que el contenedor se pueda detectar fácilmente en medio del ruido de fondo. Esto significa que la papelera no debe ser demasiado pequeña, de lo contrario algunos votos caerán en las papeleras vecinas, reduciendo así la visibilidad de la papelera principal. [18]
Además, cuando el número de parámetros es grande (es decir, cuando estamos usando la transformada de Hough con típicamente más de tres parámetros), el número promedio de votos emitidos en un solo contenedor es muy bajo, y esos contenedores corresponden a una cifra real en la imagen no necesariamente parecen tener un número de votos mucho mayor que sus vecinos. La complejidad aumenta a un ritmo de con cada parámetro adicional, donde es el tamaño del espacio de la imagen y es el número de parámetros. (Shapiro y Stockman, 310) Por lo tanto, la transformada de Hough debe usarse con mucho cuidado para detectar cualquier cosa que no sean líneas o círculos.
Finalmente, gran parte de la eficiencia de la transformada de Hough depende de la calidad de los datos de entrada: los bordes deben detectarse bien para que la transformada de Hough sea eficiente. El uso de la transformada de Hough en imágenes ruidosas es un asunto muy delicado y, en general, se debe utilizar antes una etapa de eliminación de ruido. En el caso de que la imagen esté corrompida por el moteado, como es el caso de las imágenes de radar, a veces se prefiere la transformada de radón para detectar líneas, ya que atenúa el ruido mediante la suma.
Ver también
- Transformada de Hough generalizada
- Transformada de Hough aleatoria
- Transformada de radón
- Transformada de Fourier
Referencias
- ^ Shapiro, Linda y Stockman, George. "Visión por computadora", Prentice-Hall, Inc. 2001
- ^ Duda, RO y PE Hart, "Uso de la transformación de Hough para detectar líneas y curvas en imágenes", Comm. ACM, vol. 15 , págs. 11-15 (enero de 1972)
- ^ Hough, Método de PVC y medios para reconocer patrones complejos, Patente de Estados Unidos 3.069.654, 18 de diciembre de 1962
- ^ PVC Hough, Análisis de máquina de imágenes de cámara de burbujas , Proc. En t. Conf. Aceleradores e instrumentación de alta energía, 1959
- ^ Richard O. Duda y Peter E. Hart (abril de 1971). "Uso de la transformación de Hough para detectar líneas y curvas en imágenes" (PDF) . Centro de Inteligencia Artificial .Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
- ^ CiteSeerX: una breve introducción a las transformaciones de Radon y Hough y cómo se relacionan entre sí
- ^ "Transformación de Hough" .
- ^ Jensen, Jeppe. "Transformación de Hough para líneas rectas" (PDF) . Archivado desde el original (PDF) el 26 de abril de 2012 . Consultado el 16 de diciembre de 2011 .
- ^ Fernandes, LAF; Oliveira, MM (2008). "Detección de línea en tiempo real a través de un esquema mejorado de votación por transformación Hough". Reconocimiento de patrones . 41 (1): 299–314. doi : 10.1016 / j.patcog.2007.04.003 .
- ^ Limberger, FA; Oliveira, MM (2015). "Detección en tiempo real de regiones planas en nubes de puntos no organizadas" (PDF) . Reconocimiento de patrones . 48 (6): 2043-2053. doi : 10.1016 / j.patcog.2014.12.020 . hdl : 10183/97001 .
- ^ Fernandes, LAF; Oliveira, MM (2012). "Un marco general para la detección del subespacio en datos multidimensionales desordenados". Reconocimiento de patrones . 45 (9): 3566–3579. doi : 10.1016 / j.patcog.2012.02.033 .
- ^ Ballard, DH (1981). "Generalizando la Houghtransform para detectar formas bitrarias". Reconocimiento de patrones . 13 (2): 111-122. doi : 10.1016 / 0031-3203 (81) 90009-1 . hdl : 1802/13802 .
- ^ Vosselman, G., Dijkman, S: " Reconstrucción del modelo de edificio 3D a partir de nubes puntuales y planos de tierra ", Archivos internacionales de la fotogrametría, la teledetección y las ciencias de la información espacial, vol 34, parte 3 / W4, 22-24 de octubre de 2001 , Annapolis, MA, EE. UU., Págs. 37-44.
- ^ Tahir Rabbani: "Reconstrucción automática de instalaciones industriales - Uso de imágenes y nubes de puntos", página 43-44, Publicaciones sobre Geodesia 62, Delft, 2006. ISBN 978-90-6132-297-9 http://www.ncg.knaw.nl/Publicaties/Geodesy/62Rabbani.html
- ^ Achtert, Elke; Böhm, Christian; David, Jörn; Kröger, Peer; Zimek, Arthur (2008). "Agrupación de correlación global basada en la transformada de Hough". Análisis estadístico y minería de datos . 1 (3): 111–127. doi : 10.1002 / sam.10012 .
- ^ Tahir Rabbani y Frank van den Heuvel, " Transformada eficiente de hough para la detección automática de cilindros en nubes de puntos " en Actas de la XI Conferencia Anual de la Escuela Avanzada de Computación e Imágenes (ASCI '05), Países Bajos, junio de 2005.
- ^ Yonghong Xie; Qiang Ji (2002). "Un nuevo método de detección de elipse eficiente". Reconocimiento de objetos apoyado por la interacción del usuario para robots de servicio . 2 . págs. 957–960. CiteSeerX 10.1.1.1.8792 . doi : 10.1109 / ICPR.2002.1048464 . ISBN 978-0-7695-1695-0.
- ^ "Transformaciones de imagen - Transformación de Hough" . Homepages.inf.ed.ac.uk . Consultado el 17 de agosto de 2009 .
enlaces externos
- hough_transform.cpp - código C ++ - ejemplo de biblioteca CImg ( biblioteca de código abierto, código fuente C ++ , imágenes en escala de grises )
- Demostración interactiva sobre los conceptos básicos de la transformación de Hough
- https://web.archive.org/web/20070827233423/http://www.rob.cs.tu-bs.de/content/04-teaching/06-interactive/Hough.html - Applet de Java + Fuente para el aprendizaje la transformación de Hough en forma pendiente-intersección
- https://web.archive.org/web/20070827191440/http://www.rob.cs.tu-bs.de/content/04-teaching/06-interactive/HNF.html - Applet de Java + Fuente para el aprendizaje la Transformación de Hough en forma normal
- http://www.sydlogan.com/deskew.html - Enderezar imágenes usando la transformación Hough ( imágenes en escala de grises , código fuente C ++ )
- https://web.archive.org/web/20070922090216/http://imaging.gmse.net/articledeskew.html - Enderezar imágenes usando la transformación Hough ( código fuente de Visual Basic )
- http://www.mitov.com/products/visionlab : biblioteca gratuita de Delphi , C ++ y .NET para fines educativos que contiene componentes de transformación Hough de línea, círculo y segmento de línea.
- Tarsha-Kurdi, F., Landes, T., Grussenmeyer, P., 2007a. Hough-transform y algoritmos RANSAC extendidos para la detección automática de planos de techos de edificios en 3D a partir de datos Lidar. Procedimientos ISPRS. Taller de escaneo láser. Espoo, Finlandia, 12 al 14 de septiembre de 2007.
- En contiene implementaciones de código abierto de la transformación de Hough lineal y circular en C ++
- http://www.vision.ime.usp.br/~edelgado/defesa/code/hough.html Hough-transform para la detección de elipse, implementado en C.
- scikit-image Hough-transform para línea, círculo y elipse, implementado en Python.
- [1] Transformada de Hough basada en el filtrado de ondículas, para detectar un círculo de un radio particular. (Código de Matlab.)
- Hough transform para líneas usando MATLAB
- Hough transform para círculos en MATLAB
- KHT : código fuente de C ++.
- 3DKHT : código fuente y conjuntos de datos de C ++.