1

这是一个理论问题,但我想知道当图像中要检测多条线时如何随机选择点。在我迄今为止看到的大多数示例中,似乎只有一条线可以检测到,而且看起来很容易。但是,我不确定如何扩展它以检测具有更多点的多条线。

4

2 回答 2

6

我认为你是在一个基本的误解下运作的。RANSAC 只是一种将一些数据点稳健地划分为两类的算法:那些可以被给定的参数模型很好地预测,而那些不能。“良好预测”的属性以损失函数(“误差”)的形式表示,该损失函数取决于模型参数和数据点。

重读上一段,然后问自己:我有表达线条集合的参数模型吗?如果是,请继续安装它。但是,如果您的模型只能处理单行,则应首先将数据集分割成各自可能属于一行的部分,然后将 RANSAC 应用于每个部分。

在某些(简单的)情况下,可以迭代地进行:首先在单线模型上使用 RANSAC 来找到适合一条线的段数据,从数据集中删除它的段,然后迭代剩余的点。

于 2016-05-31T13:05:22.463 回答
0

正如 Francesco Callari 正确解释的那样,RANSAC 仅在您想要检测单个内部模型时才能正常工作。当然,简单的解决方案是使用“顺序”RANSAC,但这只有在您的线路是互斥的或者可以受到很好的约束时才真正起作用,这样 RANSAC 确实只适合一条线路而不是跨越多个线路非最优方式。为了解决这个问题,存在多种方法,例如基于能量的几何拟合方法或使用进化动力学迭代地确定好的候选者,仅举两例。

是 David F. Fouhey 对这个问题的一个很好的介绍。

于 2020-01-29T16:16:04.580 回答