我想要计算视频的密集特征轨迹,如https://hal.inria.fr/hal-00725627/document。我想使用OpenCV的生猪的描述是这样的:OpenCV猪功能解释
winSize = (32,32)
blockSize = (32,32)
blockStride = (2,2)
cellSize = (2,2)
nbins = 9
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins)
hist = hog.compute(img)
然而,这返回大小的一个非常大的特征向量:(160563456,1)。
什么是窗口? (winSize) 什么是块? 什么是细胞? 该文档对解释每个参数是什么并不是特别有帮助。
从http://www.learnopencv.com/histogram-of-oriented-gradients/ 我看到要计算HOG,我们为图像修补程序的每个单元创建一个直方图,然后在该修补程序上进行归一化。
我想要的是4个9bin直方图我的图像的每一个(32,32),膏药,它应当从这个补丁(16,16)的细胞的直方图来计算。所以我期望一个最终的大小为40716的宏(480,640)图像。
(((32 * 32)/(16 * 16))* 9)*(((480-16 * 640-16)/(32 * 32)* 4))= 40716
( (PatchSize /细胞大小)* numBins)* numPatches = hogSize
我还看到有人在做这样的东西:
winStride = (8,8)
padding = (8,8)
locations = ((10,20),)
hist = hog.compute(image,winStride,padding,locations)
不过,我不明白的位置参数做,因为我也不是什么希望仅在一个位置计算HOG特征,但是需要计算我的图像的所有(32,32)块。
文档和链接的文档解释窗口,块和细胞。你为什么问这是什么?这些解释不清楚的是什么? – Piglet