最近我检查了食谱中的RANSAC实现:http://wiki.scipy.org/Cookbook/RANSAC,但它似乎与RANSAC算法本身不一致。在
从图中可以看出,有些数据点与最佳模型相距甚远(见底部的点),为什么会被视为“RANSAC数据”,而其他一些离模型更近的点却不是?在
在我看来,这与RANSAC算法的主要思想相矛盾,RANSAC算法将预定义阈值区域内的所有点都视为内线。在
为什么在这个实现中不是这样,Python中还有其他RANSAC实现?
谢谢你的帮助!在
干杯,
亚历克赛
Tags:
不,这和兰萨克的想法并不矛盾。不过,这个情节有点误导人。在
绘制成蓝色十字的是样本点(
best_inlier_idxs
=maybeinliers
+alsoinliers
),其中一些(正是alsoinliers
中的点,即共识集)支持模型(maybemodel
),该模型适合于数据的随机样本(maybeinliers
)。这意味着alsoinliers
给出的所有点确实应该更接近maybemodel
,而不是不支持它的最近点。在但是,
maybemodel
拟合是而不是图中所示。显示的是bettermodel
(蓝线,“RANSAC拟合”),它是通过将模型参数拟合到best_inlier_idxs
(而不仅仅是maybeinliers
)中的所有点来获得的。在此外,}。在随机选择的样本
best_inlier_idxs
同时包含alsoinliers
和{maybeinliers
中可能有一些事实上不支持maybemodel
拟合的点(即它们不在阈值范围内)。这些点也显示为蓝色十字,即使它们比不在支持集中的其他点更远。在我稍微修改了绘图,以表明“RANSAC数据”中的最佳模型(
maybemodel
)和随机样本(maybeinliers
)。重要的是围绕一些十字的圆圈,这些圆圈强调了随机样本包含在RANSAC数据中的事实。在以下是修改后的绘图代码:
相关问题 更多 >
编程相关推荐