从随机线段集中检测四边形形状

5

enter image description here

这张图片是Opencv 2.4.2的Hough变换输出结果。

请问您能否为我提供最佳算法以便从这些线段中检测出最佳四边形(不一定是矩形)?

即使有些角落会在图像边界之外,我仍然需要检测它们。

非常感谢。


你需要定义“最好”的标准。是最大的吗?如果是,是按周长还是面积?还是最轮廓清晰的?例如最小的间隙等。 - Hammer
1
一个很好的建设性问题,但是我对此一无所知 :( - Saw
好问题,我会非常感兴趣地等待答案! - tim
1个回答

2

在没有实际尝试过的情况下,我可以想象以下操作:

  1. 遍历所有线条并计算斜率。
  2. 按照它们的斜率对线条进行排序。
  3. 如果两条线的斜率大致相似,则它们是平行线或者是同一条有间隙的线(例如,在左侧的几乎垂直线)。要找出是哪种情况,需要计算它们将在 x 轴或 y 轴截取的位置。如果它们在同一个点截取,则表示它们是同一条线,应该合并成为一条线。否则,将它们放入一组(大致)平行线中。
  4. 将每组平行线与其他组进行比较,并计算它们是否相交(可能超出屏幕范围)。
  5. 使用某些应用程序相关标准来选择最佳结果。

此过程的运行时间非常依赖于检测到的线条数量以及平行线组的数量。您可以通过只考虑具有最小长度的线条、调整视为平行线的阈值等方式来略微改进此过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接