2009-09-03 13 views
7

(Este es un seguimiento de this previous question).Cómo probar la proximidad de líneas (transformada Hough) en OpenCV

Pude utilizar con éxito las transformaciones OpenCV/Hough para detectar líneas en imágenes (texto escaneado); al principio detectaría muchas líneas (al menos una línea por línea de texto), pero al ajustar el parámetro 'umbral' mediante prueba y error, ahora solo detecta líneas "reales".

(El parámetro 'umbral' depende del tamaño de la imagen, que es un problema si se tienen que tratar con imágenes de diferentes resoluciones, pero esa es otra historia).

Mi problema es que la transformada Hough a veces detecta dos líneas donde solo hay una; esas dos líneas están muy cerca unas de otras y (aparentemente) paralelas.

=> ¿Cómo puedo identificar que dos líneas son casi paralelas y muy cercanas entre sí? (para que pueda mantener solo uno).

+0

¿Qué datos tiene de las líneas? – Janusz

Respuesta

8

Si usa el estándar o el de varias escalas, terminará con las coordenadas rho y theta de las líneas en coordenadas polares. Rho es la distancia al origen, y theta es normalmente el ángulo entre la línea detectada y el eje Y. Sin mirar los detalles de la transformada de hough en opencv, esta es una regla general en esas coordenadas: dos líneas serán casi paralelas y muy cercanas cuando: - sus thetas son casi idénticas Y sus rhos son casi idénticos O - sus thetas están cerca de 180 grados de diferencia Y sus rhos están cerca de los negativos

Espero que tenga sentido.

+0

Sí, tienes toda la razón; Lo descubrí después de publicar mi pregunta; de hecho, es muy sencillo en OpenCV. ¡Gracias! – Bambax

+0

Además, si se establece el parámetro 'resolución' más alto, se encuentran menos líneas; y esto es lo que necesitaba en realidad. – Bambax

+0

¿Cómo podemos establecer un umbral para la palabra clave 'casi' con los parámetros rho y theta? Por ejemplo, si quiero saber si dos líneas son casi paralelas con un ángulo máximo entre ellas de 0.5 radianes (umbral = 0.5). –

0

Es interesante que theta sea el ángulo entre la línea y el eje y.

Generalmente, los valores de rho y theta se visualizan como el ángulo desde el eje x hasta la línea perpendicular a la línea en cuestión. El rho es entonces la longitud de esta línea perpendicular. Por lo tanto, un theta = 90 y rho = 20 significaría una línea horizontal de 20 píxeles desde el origen. Se muestra una bonita imagen en Hough Transform question

Cuestiones relacionadas