2015-11-05 44 views
1

我一直在研究opencv square样本的变体来检测矩形。它对于闭合的矩形工作正常,但我想知道我可以采用什么方法来检测具有开口的矩形,即缺角,线条太短。在OpenCV中检测不完整的矩形(缺失的边角/短边)

我执行了一些扩大,它弥补了小差距,但不是这些大的差距。

我考虑使用凸包或边界矩形来生成一个轮廓进行比较,但由于矩形的边缘是断开的,每个都会看作一个单独的轮廓。

我认为第一步是检测哪些线是候选形成一个完整的矩形,然后执行某种线外推。这seems promising,但我矩形的边缘不会完全水平或垂直。

我试图发现这个图像的三个最左边的矩形:

image

+0

这些是两个问题:1.检测不完美线条的线段。 2.组线段可能以矩形结束。 – Micka

+0

您是否有处理检测不完整线段的建议?我试过HoughLines/HoughLinesP,它似乎并不奏效,我认为它们的目标是更完美的线条。我目前的思路是分析点数和某种区域的轮廓,以arcLength比率来猜测矩形的哪个“部分”是 – muscovy

+0

,您可以尝试使用PCA的轮廓。但是对于连接的矩形拐角部分将会失败......我喜欢RANSAC方法,但是您必须自己实现它。 – Micka

回答

0

也许本文感兴趣? Rectangle Detection based on a Windowed Hough Transform

基本上,采取图像的霍夫线变换。在(θ,ρ)空间中与线条有关的地方,你会得到最大值。数值越大,线越长/越直。也许只是为了获得最佳线路而设置一个门槛。然后,我们试图寻找对它们是

1)平行的行:最大值出现在类似的2θ值

2)相似的长度:该最大值的值相似

3)正交于另一对线:θ值与其他对的θ值成90度

本文中还有一些细节,例如在滑动窗口中进行变换,然后使用错误度量来巩固多场比赛。