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

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

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

如果是这样,我们如何在RANSAC之前执行一项操作以消除异常值?

最佳答案

您对好结果的定义是什么? RANSAC是在点数和它们的精度之间进行权衡,因此没有统一的良好定义:如果其精度较差,您将拥有更多的惯常值,反之亦然。

您正在谈论的参数可能是离群值阈值,可能对其进行了微调,因此您的近似离群值太多或超精确离群值太少。现在,如果您预先过滤了异常值,则可以加快RANSAC的速度,但不太可能改善解决方案。最终,通过同构照相法的RANSAC速度归结为选择4个内点的可能性,当它们的比例较高时,收敛速度更快。

在应用RANSAC之前,对异常值进行分类的其他方法是查看更简单的约束条件,例如点的排序,直线仍为直线,cross-ratio和同形变换的其他不变量。最后,您可能需要使用诸如线之类的高级功能来计算单应性。注意,在齐次坐标中,将点转换为p2 = H * p1时,直线转换为l2 = H-t * l1。实际上,这可以提高精度(因为线是宏特征,并且比关注点的噪声少),而直线则可以通过霍夫变换来检测。

10-01 19:25