【问题标题】:Get the SIFT descriptor for specified point using OpenCV使用 OpenCV 获取指定点的 SIFT 描述符
【发布时间】:2015-02-01 19:29:39
【问题描述】:

我想获得指定点的 SIFT 特征。这些点不是由 KeyPoint Detector 手动获取的。我的问题是:我只知道点的 位置,但不知道 sizeangle 值。我应该如何设置这个值?

这是我的代码:

int main()
{
    Mat img_object = imread("img/test.jpg", 0);

    SiftDescriptorExtractor extractor;
    Mat descriptors;
    std::vector<KeyPoint> keypoints;

    // set keypoint position and size: should I set 
    // size parameter to 32 for 32x32 patch?
    KeyPoint kp(50, 60, 32);
    keypoints.push_back(kp);

    extractor.compute( img_object, keypoints, descriptors );

    return 0;
}

对于 32x32 补丁,我是否应该将 KeyPoint 的大小参数设置为 32。这种实现合理吗?

【问题讨论】:

    标签: opencv computer-vision sift keypoint


    【解决方案1】:

    通常,关键点检测器在一个点周围的本地邻域上工作。这是 OpenCV 的 KeyPoint 类的 size 字段。 angle 字段是关键点的主要方向(这可以设置为 -1,注意)。

    OpenCV KeyPoint class

    Another reference here.

    【讨论】:

    • 将大小设置为 32 意味着:围绕一个点的 32x32 局部邻域补丁,对吧?
    • 我会这么说,是的。但这毫无意义,因为您标记的只是点而不是关键点。这将是一个问题,这些点在算法的下一阶段用于什么。
    • 感谢您的回答!在人脸中,这些点是人脸的标志点,将用于人脸对齐。
    • 是的,没错。我对这种技术很熟悉。如果它确实解决了您的问题,请考虑将答案标记为正确。
    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 2012-10-07
    • 1970-01-01
    • 2017-01-08
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多