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