gpt4 book ai didi

image - 使用openCV在图像中实现SIFT

转载 作者:行者123 更新时间:2023-12-02 16:49:47 25 4
gpt4 key购买 nike

我尝试使用 openCV 实现 SIFT,我引用了这些链接 link1link2 .此外,我还阅读了 Lowe 撰写的关于 SIFT 的论文。我对link1和link2中的代码有一些问题。

  • cv::SiftFeatureDetector 检测器(0.05,5.0); cv::SiftDescriptorExtractor 提取器(3.0);

    我无法完全理解上述函数中的参数。如果我将第一个函数修改为 cv::SiftFeatureDetectordetector(0.05, 10.0); ,运行时出现OpenCV Error:Assertion failed =-1 %% actualNLayers<=nOctaveLayers>。

    另外,我没有实现SiftDescriptorExtractor extractor()中的参数。我知道关键点匹配中有一个距离比,但范围是 [0,1]。
  • 我想修改我用来匹配图片的方法,所以我需要提取描述符和每个关键点的主要方向。如何提取提取每个关键点的描述符和主导方向?

  • 非常感谢您的回复。

    最佳答案

    我的建议是,你应该在一开始就使用 SIFT 的默认参数。然后,如果您对结果不满意,可以尝试优化这些参数。

    Ptr<FeatureDetector> detector = new SIFT();;
    Ptr<DescriptorExtractor> extractor = new SIFT();

    您可以在此处找到有关 OpenCV 实现中的 SIFT 参数的有用信息: http://docs.opencv.org/modules/nonfree/doc/feature_detection.html

    计算关键点:
    vector<KeyPoint> keypoints;
    detector->detect(yourImage, keypoints);

    当您计算关键点时,它的方向会自动计算并与每个关键点的参数“角度”相关联。请在此处找到更多信息: http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html

    要计算关键点的描述符:
    Mat descriptors;
    extractor->compute(yourImage, keypoints, descriptors);

    作为 Mat 描述符的每一行描述一个描述符。

    如果您有任何问题,请告诉我!
    希望这可以帮助。

    关于image - 使用openCV在图像中实现SIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297706/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com