transformada teoria que paso hough funciona ejemplo como image-processing computer-vision hough-transform

image-processing - teoria - transformada de hough paso a paso



Detección de rectángulo con transformada Hough (4)

El enlace al documento al que se hace referencia no funciona, pero si utilizó la transformada estándar Hough, los cuatro puntos de intersección se expresarán en coordenadas cartesianas. De hecho, las cuatro líneas detectadas con la tranforma de Hough se expresarán usando la "parametrización normal":

rho = x cos(theta) + y sin(theta)

entonces tendrá cuatro pares (rho_i, theta_i) que identifique sus cuatro líneas. Después de verificar la ortogonalidad (por ejemplo, simplemente comparando los ángulos theta_i), resuelve el sistema de cuatro ecuaciones, cada uno de la forma:

rho_j = x cos(theta_j) + y sin(theta_j) rho_k = x cos(theta_k) + y sin(theta_k)

donde xey son las incógnitas que representan las coordenadas cartesianas del punto de intersección.

Estoy intentando implementar la detección de rectángulo usando la transformada Hough , basada en este documento .

Lo programé usando Matlab, pero después de la detección de pares paralelos y pares ortogonales, debo detectar la intersección de estos pares. Mi pregunta es sobre la calidad de la intersección de dos líneas en el espacio Hough.

Encontré los puntos de intersección resolviendo cuatro sistemas de ecuaciones. ¿Estos puntos de intersección se encuentran en el espacio de coordenadas cartesianas o polares?


La precisión del espacio Hough debería depender de dos factores principales.

El acumulador se asigna a Hough Space. Para recorrer el conjunto de acumuladores se requiere que el acumulador divida Hough Space en una cuadrícula discreta.

El segundo factor de precisión en Lineal Hough Space es la ubicación del origen en la imagen original. Busque por un momento lo que sucederá si hace un barrido de / theta para cualquier cambio dado en / rho. Cerca del origen, uno de estos barridos cubrirá muchos menos píxeles que un barrido cerca de los bordes de la imagen. Esto tiene la consecuencia de que cerca de los bordes de la imagen necesita una resolución / rho / theta mucho más alta en su acumulador para lograr el mismo nivel de precisión cuando se transforma nuevamente en cartesiano.

El problema con el aumento de la resolución, por supuesto, es que necesitará más poder de cómputo y memoria para aumentarlo. Además, si aumenta de manera uniforme la resolución del acumulador, habrá perdido la resolución cerca del origen donde no se necesita.

Algunas ideas para ayudar con esto.

  1. coloque el origen justo en el centro de la imagen. en lugar de usar la parte inferior natural izquierda o superior izquierda de una imagen en código.
  2. intente usar la imagen más cercana que pueda obtener en un cuadrado. cuanto más alargada sea una imagen para un área determinada, más pronunciada será la trampa de resolución en los bordes
  3. Intente dividir su imagen en 4/9/16, etc. diferentes acumuladores, cada uno con un origen en el centro de esa subimagen. Se requerirá un poco de sobrecarga para vincular los resultados de cada acumulador para la detección de rectángulo, pero debería ayudar a distribuir la resolución de manera más pareja.
  4. La solución final sería aumentar la resolución de forma lineal en función de la distancia desde el origen. esto se puede lograr usando el

(x-a)^2 + (y-b)^2 = /rho^2

circle equation where - x,y are the current pixel - a,b are your chosen origin - /rho is the radius once the radius is known adjust your accumulator resolution accordingly. You will have to keep track of the center of each /rho /theta bin. for transforming back to Cartesian


No soy un matemático. Estoy dispuesto a estar corregido ...
De Hough 2) ... cualquier línea en el plano xy se puede describir como p = x cos theta + y sin theta. En esta representación, p es la distancia normal y theta es el ángulo normal de una línea recta, ... En aplicaciones prácticas, los ángulos theta y las distancias p se cuantifican, y obtenemos una matriz C (p, theta) .
de las tablas de matemática estándar de CRC Geometría analítica, coordenadas polares en una sección de plano ... Tal par de números ordenados (r, theta) se denominan coordenadas polares del punto p. Líneas rectas: deje p = distancia de la línea desde O, w = ángulo en sentido antihorario desde OX hasta la perpendicular a través de O hasta la línea. Forma normal: r cos (theta - w) = p . De esto concluyo que los puntos se encuentran en el espacio de coordenadas polares.


Para aquellos de ustedes que se preguntan sobre el papel, es:

Detección de rectángulo basada en una Transformada de Hough Windowed por Cláudio Rosito Jung y Rodrigo Schramm.

Ahora, de acuerdo con el documento, los puntos de intersección se expresan como coordenadas polares, obviamente su implementación puede ser diferente (la única forma de decir es mostrarnos su código).

Asumiendo que está siendo consistente con su notación, sus picos deberían expresarse como:

A continuación, debe realizar el par de pico dado por la ecuación (3) en la sección 4.3 o

dónde representa el umbral angular correspondiente a líneas paralelas y es el umbral normalizado correspondiente a líneas de longitud similar.