2011-08-09 64 views
4

哪种方法最适合比较两个图像并丢弃异常值点?在find_obj.cpp opencv示例中,它们使用FLANN,但不要丢弃异常值。使用OpenCV检测SURF或SIFT算法中的异常值

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

+0

您好我知道这是很老的问题,但我也是在同情况。我可否知道你用什么算法去除SURF算法中的异常值? – alwaysLearn

回答

2

有一个相当可靠和有效的方法来拒绝噪点和确定您的兴趣点之间的转换。通常用于拒绝异常值的算法被称为RANSAC(http://en.wikipedia.org/wiki/RANSAC),用于确定转换的算法可以采用多种形式,但是最新的技术状态被称为五点算法,可以找到here - 可以找到一个MATLAB实现here。请注意,即使您不关心两幅图像之间的精确旋转,您也需要确定变换 - 这就是异常点的识别方式。

不幸的是,我不知道这两个组合的成熟实现;您可能必须自己做一些工作来实现RANSAC并将其与五点算法集成。

OpenCV有一个过度执行你的任务的实现(这意味着它会工作,但会花费更多的时间而不是必要的),但是可以开箱即用。感兴趣的功能称为CV :: findFundamentalMat(http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)