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个特征向量