【问题标题】:Detecting outliers in SURF or SIFT algorithm with OpenCV使用 OpenCV 检测 SURF 或 SIFT 算法中的异常值
【发布时间】:2011-08-09 10:18:37
【问题描述】:

哪种方法最适合比较两张图像并丢弃异常点?在 find_obj.cpp opencv 示例中,他们使用 FLANN,但不会丢弃异常值。

我见过一些方法,比如使用 Kmeans 或图表。

【问题讨论】:

  • 嗨,我知道这是一个非常古老的问题,但我也处于同样的情况。我可以知道您使用哪种算法来删除 SURF 算法中的异常值吗?

标签: image opencv sift surf feature-detection


【解决方案1】:

有一种相当可靠且有效的方法来拒绝噪声点并确定您的兴趣点之间的转换。通常用于拒绝异常值的算法称为 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)

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2012-04-07
    • 2016-02-13
    • 2014-08-24
    • 1970-01-01
    • 2018-02-25
    • 2014-03-19
    • 2011-11-26
    相关资源
    最近更新 更多