3

我正在使用 SIFT 特征检测器和描述符。我正在匹配两个图像之间的点。我正在使用findHomography()带有 RANSAC 方法的 OpenCV 功能。

当我阅读 RANSAC 算法时,据说调整 RANSAC 的阈值参数可以改善结果。但我不想硬编码任何参数。

我知道 RANSAC 正在消除比赛中的异常值。谁能告诉我在应用单应性之前用基本方法去除异常值(不是全部)是否可以改善单应性的结果?

如果是这样,我们如何在 RANSAC 之前应用操作来去除异常值?

4

2 回答 2

4

你对好的结果的定义是什么?RANSAC 是关于点数和精度之间的权衡,因此没有统一的好定义:如果它们的精度更差,你就会有更多的内点,反之亦然。

您正在谈论的参数可能是异常值阈值,它可能只是调整不当,因此您的近似内点太多或超精确内点太少。现在,如果您预先过滤异常值,您只会加快您的 RANSAC,但不太可能改进解决方案。最终,带有 Homography 的 RANSAC 的速度归结为选择 4 个内点的概率,当它们的比例越高,收敛越快。

在应用 RANSAC 之前对异常值进行排序的其他方法是查看更简单的约束,例如点的排序、直线仍然是直线、交叉比和其他 Homography 变换的不变量。最后,您可能希望使用更高级别的特征(例如线条)来计算单应性。请注意,在齐次坐标中,当点转换为 p2=H*p1 时,线将转换为 l2 = H -t * l1。这实际上可以提高准确度(因为线是宏观特征并且比兴趣点噪声小),而直线可以通过霍夫变换检测。

于 2015-02-05T01:30:10.700 回答
1

不,RANSAC 和相关算法的重点是去除异常值。

但是,可以通过避免定义有些随意的阈值的方式来改进算法。

Torr 的旧MLESAC 论文是一个很好的起点

于 2015-02-04T05:56:21.630 回答