使用OpenCV检测SURF或SIFT算法中的异常值

4

哪种方法是比较两个图像并且去除异常点的最佳方法?在find_obj.cpp opencv示例中,他们使用了FLANN,但没有去除异常点。

我看到过一些方法,比如使用Kmeans或图形方法。


嗨,我知道这是一个非常老的问题,但我也处于同样的情况。请问您使用了哪个算法来去除SURF算法中的异常值? - alwaysLearn
1个回答

2
有一种相当可靠和高效的方法既可以拒绝嘈杂的点,也可以确定您感兴趣的点之间的变换。通常用于拒绝异常值的算法称为RANSAC(http://en.wikipedia.org/wiki/RANSAC),用于确定变换的算法有几种形式,但最新的技术水平是以五点算法为基础的,并且可以在此处找到: 这里 -- 可以在此处找到MATLAB实现:这里。请注意,即使您不关心两个图像之间的确切旋转,您仍需要确定变换——这就是如何识别异常值的方式。
不幸的是,我不知道是否有成熟的实现将这两种方法组合起来;您可能需要自己完成一些工作来实现RANSAC并将其与五点算法集成。
OpenCV有一个实现,它对您的任务来说可能过于复杂(这意味着它可以工作,但需要更多时间)。cv::findFundamentalMat是其中的一个函数( http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接