我认为你存在一个基本误解。RANSAC只是一种算法,用于将某些数据点鲁棒地分成两类:那些由给定参数模型良好预测的数据点和那些不能良好预测的数据点。"良好预测"的属性是通过一个损失函数("误差")来表达的,该损失函数取决于模型参数和数据点。请重新阅读上面的段落,然后问自己:我是否有一个表达一组线条的参数模型?如果是,请继续拟合它。但是,如果您的模型只能处理单个线条,则应首先将数据集分成可能属于每条线的部分,然后对每个部分应用RANSAC。在某些(简单)情况下,可以进行迭代:首先使用RANSAC在一个线条模型上找到一个大的数据段,使其适合一条线,然后从数据集中删除其段,并在剩余点上进行迭代。
RANSAC只在您想要检测单个内点模型时才能很好地工作,正如Francesco Callari所正确解释的那样。当然,简单的解决方案是使用“顺序”RANSAC,但如果您的线彼此排斥或可以很好地约束,以便RANSAC仅以非最优方式跨越一个线条而不是多个线条,则这只能真正起作用。为了解决这些问题,存在各种方法,例如基于能量的几何拟合方法或使用进化动力学来迭代确定良好的候选者等。这里有一个来自David F. Fouhey的关于该问题的不错介绍。