哪种方法最好比较两个图像并丢弃异常点?在find_obj.cpp opencv示例中,它们使用FLANN,但不丢弃异常值。
我见过一些使用Kmeans或图表的方法。
答案 0 :(得分: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)<< p>