四边形形状查找算法

我想检测并完成所有可能的四边形形状,这些形状由随机分布的线段组成!

附件中的照片是一个例子,线条可能总是出现在非常不同的位置。

有谁能指出任何适合的算法吗?

  • 注意这些线段是使用opencv 2.4.2进行霍夫变换的输出

enter image description here

解决方案是检测预测黄色的四边形

enter image description here


回答:

在有11个线段的情况下,你有330种选择四条线段的方法。你可以确定每种组合形成四边形的可能性,并以此进行评分。

虽然霍夫变换可以检测到线以外的其他形状,但随着累加器空间需要超过两个维度,变得更难可视化。圆可以在三个维度(midX, midY, 半径)中找到,椭圆在四个维度(我认为)。我不确定你需要多少参数来建模一个四边形,我认为当维度超过三个时,霍夫变换的性能开始下降。累加器空间变得如此之大,以至于噪声比例显著增加。

这里有一个相关问题,可能对你有帮助的答案。

让我们知道你的进展如何!


编辑

我今天尝试解决这个问题,并将我的解决方案上传到了GitHub。这里的代码太多了,无法全部贴出。

这是一个显示输出的截图:

我采用的解决方案基本上是我在编辑前描述的。

  1. 查找所有四条线的组合
  2. 查找这些四条线的所有排列
  3. 评估这四条线形成四边形的可能性
  4. 选择最佳匹配

评估通过计算一个粗略的错误分数来进行。这是两种不同类型错误的总和:

  1. 每个角与90度的偏差(我使用了所有四个角的平方误差总和)
  2. 当线段在线段内相交时,很可能不是有效的角

第二种类型的错误可能需要更稳健的方式来确定。这是为了找到你样本数据集的解决方案所必需的。

我还没有尝试过其他数据集。它可能需要一些调整以使其更稳健。我尽量避免使用太多参数,以便它可以轻松调整到特定环境。例如,控制对遮挡的敏感性,如你在样本图像中看到的。

在我的笔记本电脑上,它大约在160毫秒内找到解决方案。然而,我还没有进行任何性能优化。我期望查找组合/排列的方法可以显著优化,如果你需要它接近实时运行,正如计算机视觉实验中经常遇到的情况。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注