2009-09-03 32 views
7

(这是从this previous question的后续)。如何在OpenCV中测试线(Hough变换)的接近度

我能够成功地使用OpenCV/Hough变换来检测图片中的行(扫描文本);起初它会检测许多行(每行文本至少有一行),但通过试错法调整“阈值”参数,它现在只能检测“实际”行。

('阈值'参数取决于图像大小,如果需要处理不同分辨率的图像,这是一个问题,但这是另一回事)。

我的问题是,霍夫变换有时会检测到两条线,其中只有一条;这两条线非常接近,并且(明显)平行。

=>如何识别两条线几乎平行且彼此非常接近? (这样我可以只保留一个)。

+0

你有什么数据? – Janusz 2009-09-03 14:36:34

回答

8

如果您使用标准或多尺度霍夫,您将以极坐标中的线的rho和theta坐标结束。 Rho是到原点的距离,θ通常是检测线和Y轴之间的角度。没有在opencv中查看hough变换的细节,这在这些坐标系中是一条通用规则:当两条线几乎平行并且彼此非常接近时: - 它们的几乎相同且它们的rhos几乎相同 或 - 他们的泰晤士相距180度,他们的俄罗斯人彼此靠近彼此的负面

我希望这是有道理的。

+0

是的,你是绝对正确的;在发布我的问题后,我确实发现了这一点;实际上它在OpenCV中非常简单。谢谢! – Bambax 2009-10-20 08:39:09

+0

另外,如果将'分辨率'参数设置得更高,则找到更少的行;这是我实际需要的。 – Bambax 2009-10-20 08:40:44

+0

我们如何使用rho和theta参数设置'almost'关键字的阈值?例如,如果我想知道两条线是否近似平行,且它们之间的最大角度为0.5弧度(阈值= 0.5)。 – 2016-11-18 12:15:28

0

有趣的是θ是线和y轴之间的角度。

通常,ρ和θ值可视为从x轴到垂直于所讨论线的直线的角度。 rho就是这条垂直线的长度。因此,θ= 90和ρ= 20将意味着从原点向上20像素的水平线。 在Hough Transform question上显示一个很好的图像