【问题标题】:Extracting line segments from a hough transform从霍夫变换中提取线段
【发布时间】:2011-07-17 13:57:56
【问题描述】:

如何在执行霍夫变换后检测线段而不是图像中的线?保存每个累加器箱的最小和最大坐标是否有意义或有更好的方法?

顺便说一句,我没有使用 OpenCV。

【问题讨论】:

    标签: image-processing computer-vision


    【解决方案1】:

    我认为这张显示线条和线段的霍夫变换的图像将帮助您了解正在发生的事情:

    【讨论】:

      【解决方案2】:

      基本上,您必须准确跟踪哪些点对每个 Hough bin 进行了投票。您可以在填充垃圾箱之后(如在 Matlab 版本中)或在填充垃圾箱时执行此操作(更高效,但内存密集型可能对嵌入式平台不利)。从那里,您可以沿着线沿像素提取实际段,当相邻像素之间的差距太大时创建一个新段。

      请参阅this partial description of the Matlab algorithm,了解有关如何提取对特定 Hough bin 有贡献的像素的更多信息,包括实际实现(链接到 hough_bin_pixels.m)。

      【讨论】:

        【解决方案3】:

        即使您不使用 OpencV,您也可以查看 HoughLinesP function 的代码,该代码返回线段。

        是的,保存累加器箱的极端坐标是有意义的。

        [编辑 2011-07-19] 如果您有多个线段与belisarius' example above 位于同一条线上,那么您将不得不做更多的工作,仅仅记住极端坐标是不够的。所以这取决于你的确切应用。

        【讨论】:

        • 我的死链接
        • 是的,像老鼠一样死了
        【解决方案4】:

        Matlab 的 houghlines 函数可以完全满足您的需求。它基于霍夫变换提取线段。

        http://www.mathworks.com/help/toolbox/images/ref/houghlines.html

        如果两条单独的线段位于同一条线上,则无法保存霍夫箱的极端坐标。

        【讨论】:

        • 我不能使用任何像 OpenCV 或 Matlab 这样的大包,因为我在嵌入式平台上。
        • 但是你可以看源码或者阅读算法描述。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多