【发布时间】:2011-07-17 13:57:56
【问题描述】:
如何在执行霍夫变换后检测线段而不是图像中的线?保存每个累加器箱的最小和最大坐标是否有意义或有更好的方法?
顺便说一句,我没有使用 OpenCV。
【问题讨论】:
标签: image-processing computer-vision
如何在执行霍夫变换后检测线段而不是图像中的线?保存每个累加器箱的最小和最大坐标是否有意义或有更好的方法?
顺便说一句,我没有使用 OpenCV。
【问题讨论】:
标签: image-processing computer-vision
我认为这张显示线条和线段的霍夫变换的图像将帮助您了解正在发生的事情:
【讨论】:
基本上,您必须准确跟踪哪些点对每个 Hough bin 进行了投票。您可以在填充垃圾箱之后(如在 Matlab 版本中)或在填充垃圾箱时执行此操作(更高效,但内存密集型可能对嵌入式平台不利)。从那里,您可以沿着线沿像素提取实际段,当相邻像素之间的差距太大时创建一个新段。
请参阅this partial description of the Matlab algorithm,了解有关如何提取对特定 Hough bin 有贡献的像素的更多信息,包括实际实现(链接到 hough_bin_pixels.m)。
【讨论】:
即使您不使用 OpencV,您也可以查看 HoughLinesP function 的代码,该代码返回线段。
是的,保存累加器箱的极端坐标是有意义的。
[编辑 2011-07-19] 如果您有多个线段与belisarius' example above 位于同一条线上,那么您将不得不做更多的工作,仅仅记住极端坐标是不够的。所以这取决于你的确切应用。
【讨论】:
Matlab 的 houghlines 函数可以完全满足您的需求。它基于霍夫变换提取线段。
http://www.mathworks.com/help/toolbox/images/ref/houghlines.html
如果两条单独的线段位于同一条线上,则无法保存霍夫箱的极端坐标。
【讨论】: