【问题标题】:What are the values of the SURF descriptor?SURF 描述符的值是什么?
【发布时间】:2017-07-20 05:45:28
【问题描述】:

我正在使用以下简单的行从图像中提取 SURF 描述符:

Ptr<DescriptorExtractor> descriptor = DescriptorExtractor::create("SURF");
    descriptor->compute(im1, kp, desc1);

现在,当我“观察”变量 desc1.data 时,它包含 0 到 255 范围内的整数值。

但是,当我使用代码调查值时:

for (int j=0;j<desc1.cols; j++){
            float a=desc1.at<float>(0,j);

它包含介于 -1 和 1 之间的值。这怎么可能? SURF 不应该返回像 SIFT 这样的整数值?

【问题讨论】:

    标签: opencv image-processing computer-vision


    【解决方案1】:

    我不确定 OpenCV 中会发生什么,但就论文而言,这就是 SURF 所做的。 SURF 描述符将一个小图像块划分为 4x4 子区域,并以巧妙的方式计算每个子区域上的小波响应。基本上它是一个 4 元组描述符 ,其中 dx, dy 是每个子区域中的小波响应。描述符是通过连接所有响应并对幅度进行归一化来构造的,这会产生一个 64 维的描述符。从描述中可以清楚地看出,归一化的 sum(dx) 和 sum(dy) 值将介于 -1 和 1 之间,而 sum(|dx|) 和 sum(|dy|) 将介于 0 到 1 之间。如果你看到128 维描述符,dx 和 |dx| 的总和对于 dx >= 0 和 dy

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 2012-04-16
    • 2016-03-16
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多