opencv中HOGDescriptor中计算特征的个数

1 创建HOG描述子

HOGDescriptor *descriptor=new HOGDescriptor(cvSize(40,80),//winSize

cvSize(10,20),//blockSize

cvSize(5,10),//blockStride

cvSize(5,5),//cellSize

9);//nbins

每个window中block的个数为(winSize - blockSize)/blockStride+ 1, 算得共有7*7=49 个block(注意有重叠)

每个block中cell的个数为blockSize/cellSize=2*4=8(无重叠)

每个cell中有9个bin

 因此每个window中bin的个数为49*8*9=3528

2 计算图片特征

vector<float>w;

descriptor->compute(cv::cvarrToMat(Img),// image

w, // hog feature

cvSize(10,20), //winStride

cvSize(0,0)); //paddingSize

 当设置padding为默认(0,0)时, 计算(imgSize - winSize) /windowStride +1 不一定为整数

在compute函数中可以看到:

padding.width =(int)alignSize(std::max(padding.width, 0), cacheStride.width);
padding.height = (int)alignSize(std::max(padding.height, 0), cacheStride.height);
即padding的大小会自动适应stride的值.

img的尺寸是96*160的, 对应了6.6 * 5, 经函数调整后变成7 * 5 =35

 因此96*160的图片, 共有35*3528=123480个特征向量

你可能感兴趣的:(opencv)