【问题标题】:Why does opencv's HOG descriptor return so many values为什么opencv的HOG描述符会返回这么多值
【发布时间】:2014-04-17 21:31:54
【问题描述】:

我正在尝试使用 OpenCV 的 HOG 描述符,但从中计算出的特征向量似乎太长了。这是一个演示问题的 sn-p:

#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <stdlib.h>
#include <vector>

int main()
{
    cv::Mat image = cv::imread("1.jpg");
    std::vector<float> features;
    cv::HOGDescriptor hogdis;
    hogdis.compute(image, features);
    printf("HOG feature's length is %zu %zu\n", hogdis.getDescriptorSize(), features.size());
    return 0;
}

输出是

HOG feature's length is 3780 1606500

后一个值似乎很荒谬。图像1.jpg 的尺寸为 256x256x3,其像素比特征向量少得多。为什么 OpenCV 要用这么多值填充特征向量?如何获取 3780 长向量以提供给我的 SVM 训练器?

【问题讨论】:

    标签: c++ opencv computer-vision


    【解决方案1】:

    为什么 OpenCV 要用这么多值填充特征向量?

    hog 特征的大小由以下等式确定(并非仅取决于图像尺寸):

    size_hog_features = (size_t)nbins * ( blockSize.width/cellSize.width) 
                             * (blockSize.height/cellSize.height) * ((winSize.width 
                             - blockSize.width)/blockStride.width + 1) 
                             * ((winSize.height - blockSize.height)
                             / blockStride.height + 1);
    

    所以你得到这么长的HOG特征向量是很正常的。

    如何获取 3780 长向量以提供给我的 SVM 训练器?

    您可以在计算之前设置 HOG 特征的参数(即nbins, blockSize, cellSize, winSize),以获得所需大小的 HOG 特征。

    但是为什么 hogdis.getDescriptorSize() 和 features.size() 不一致呢?

    它们是不同的。 getDescriptorSize() 返回分类所需的系数数量。并且可以计算如下(参考here):

    HOG descriptor length = #Blocks * #CellsPerBlock * #BinsPerCell
    

    另一方面,features.size() 返回整个图像的所有 HOG 特征大小。

    要训练,你需要传入features

    【讨论】:

    • 但是为什么hogdis.getDescriptorSize()features.size()不一致呢?
    • 您提供的公式完全独立于图像大小。但是,当我尝试尺寸为 690x622 的图像时,特征向量有 18514440 个元素,与上面的 1606500 不同。此外,特征向量的元素数量超过像素总数是没有意义的,更不用说超过40倍了。
    • @C.R.不,你误解了公式。它确实取决于图像尺寸,例如给定相同的blockSize,您将拥有更多#Blocks 以获得更大的图像。
    • #BLOCKS 没有出现在size_hog_features 的公式中。
    • @herohuyongtao OpenCV HoG 描述符对图像大小是否不变?如果是,那么我想从 scikit-image 切换到 opencv。但如果不是,那么从与训练 HoG 分类器的训练样本不同大小的图像中检测对象的问题又如何呢?如这里:stackoverflow.com/questions/23824147/…
    猜你喜欢
    • 2016-11-09
    • 2017-03-21
    • 2013-03-10
    • 2011-08-25
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多