Search code examples
image-processingphotoedge-detectiondistortionstraight-line-detection

Which straight line detection algorithms will still detect lines that have suffered a degree of lens distortion in photos?


I've found other questions on the topic of detecting straight lines in images which I will read up on.

But I'm aware that in many photos the real life straight lines end up curved.

I don't have to de-curve fish-eye distortion or anything extreme.

But I would like to handle a "typical" amount of curve distortion as though they are still straight lines.

Are there some algorithms or techniques that can handle this in a "good enough" manner?

Here's an old photo of mine of a book showing the kind of curved straight lines I had in mind. It's a good example for the curvature and lens distortion. (It may not be a good example generally due to the other lines in the background, but that's beside the point of the current question.)

Turkish Gabo


Solution

  • As it turns out, one of the most popular techniques used for straight line detection also exists in versions that work with curves.

    It's called the "Hough Transform".

    It was originally for detecting straight lines, but has been generalized to also work with curves and other arbitrary shapes. From the Wikipedia article:

    The classical Hough transform was concerned with the identification of lines in the image, but later the Hough transform has been extended to identifying positions of arbitrary shapes, most commonly circles or ellipses.

    There are even papers on the specific topic of using Hough transforms to deal with lens distortion: