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

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

本文介绍了使用OpenCV在SURF或SIFT算法中检测异常值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

哪种方法最适合比较两个图像并丢弃离群值?在find_obj.cpp opencv示例中,它们使用FLANN,但不要丢弃异常值.

Which method is the best to compare two images and discard outliers points? In find_obj.cpp opencv example, they use FLANN, but don't discard outliers.

我已经看到了一些使用Kmeans或图形的方法.

I have seen some methods like using Kmeans or graphs.

推荐答案

有一种相当可靠和有效的方法来拒绝嘈杂的点并确定您感兴趣的点之间的转换.通常用于拒绝离群值的算法称为RANSAC(http://en.wikipedia.org/wiki/RANSAC),用于确定转换的算法可以采用几种形式,但是最新的技术水平被称为五点算法,可以在此处 -在此处中可以找到MATLAB实现.请注意,即使您不关心两个图像之间的确切旋转,也需要确定转换-这是识别异常值的方法.

There is a fairly reliable and efficient way to both reject noisy points and determine the transformation between your points of interest. The algorithm that is usually used to reject outliers is known as RANSAC (http://en.wikipedia.org/wiki/RANSAC), and the algorithm used to determine the transformation can take several forms, but the most current state of the art is known as the five-point algorithm and can be found here -- a MATLAB implementation can be found here. Note that you do need to determine the transformation even if you don't care about the exact rotation between the two images -- this is how the outliers are identified.

不幸的是,我不知道这两种方法的成熟实现.您可能需要做一些自己的工作才能实现RANSAC并将其与五点算法集成.

Unfortunately I don't know of a mature implementation of both of those combined; you'll probably have to do some work of your own to implement RANSAC and integrate it with the five point algorithm.

OpenCV的实现对于您的任务来说是多余的(这意味着它可以工作,但是会花费比必要更多的时间),但是可以立即使用.感兴趣的功能称为cv :: findFundamentalMat(http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)

OpenCV has an implementation that is overkill for your task (meaning it will work but will take more time than necessary) but is ready to work out of the box. The function of interest is called cv::findFundamentalMat (http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)

这篇关于使用OpenCV在SURF或SIFT算法中检测异常值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 01:33