Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test proximity of lines (Hough transform) in OpenCV

(This is a follow-up from this previous question).

I was able to successfully use OpenCV / Hough transforms to detect lines in pictures (scanned text); at first it would detect many many lines (at least one line per line of text), but by adjusting the 'threshold' parameter via trial-and-error, it now only detects "real" lines.

(The 'threshold' parameter is dependant on image size, which is a bit of a problem if one has to deal with images of different resolutions, but that's another story).

My problem is that the Hough transform sometimes detects two lines where there is only one; those two lines are very near one another and (apparently) parallel.

=> How can I identify that two lines are almost parallel and very near one another? (so that I can keep only one).

like image 591
Bambax Avatar asked Sep 03 '09 08:09

Bambax


1 Answers

If you use the standard or multiscale hough, you will end up with the rho and theta coordinates of the lines in polar coordinates. Rho is the distance to the origin, and theta is normally the angle between the detected line and the Y axis. Without looking into the details of the hough transform in opencv, this is a general rule in those coordinates: two lines will be almost parallel and very near one another when: - their thetas are nearly identical AND their rhos are nearly identical OR - their thetas are near 180 degrees apart AND their rhos are near each other's negative

I hope that makes sense.

like image 141
David Van Hamme Avatar answered Oct 04 '22 03:10

David Van Hamme