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

Zah*_*dar 5 opencv artificial-intelligence image-processing shapes hough-transform

在此输入图像描述

附加的图像是Opencv 2.4.2的Hough变换的输出

你能用最好的算法告诉我从这些线段中检测最好的四边形(不总是矩形)形状

即使某些角落位于图像边界之外,我仍然需要检测它们

非常感谢

Pat*_*son 2

在没有时间实际尝试的情况下,我可以想象这样的事情:

  1. 迭代所有线并计算斜率。
  2. 按斜率对线进行排序
  3. 如果两条线具有大致相似的斜率,则它们要么是平行的,要么是同一条线,其中有间隙(例如左侧几乎垂直的线)。要找出哪个,请计算它们与 x 轴或 y 轴相交的位置。如果它们在同一点截取,则它们是同一条线,应合并为一条线。如果不是,请将它们放在一组(大致)平行的线上。
  4. 将每组平行线与其他组进行比较,并计算它们是否相交(可能在屏幕外)。
  5. 应用一些依赖于应用程序的标准来选择最佳的。

其运行时间很大程度上取决于检测到的线的数量和平行线组的数量。您可以通过仅考虑最小长度的线、调整线被视为平行的阈值等来改进一点。