OpenCV猪的功能解释

时间:2017-07-07 13:31:53

标签: python opencv image-processing

我正在尝试计算视频的密集特征轨迹,如https://hal.inria.fr/hal-00725627/document。我正在尝试使用这样的openCV hog描述符:

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,我们为图像补丁的每个单元格创建一个直方图,然后在补丁上进行标准化。

我想要的是我的图像的每个(32,32)块的4个9bin直方图,应该从该贴片的(16,16)个细胞的直方图计算。因此,对于(480,640)图像,我期望最终的猪大小为40716。

<(>((32 * 32)/(16 * 16))* 9)*(((480-16 * 640-16)/(32 * 32)* 4))= 40716

((PatchSize / cell size)* numBins)* numPatches = hogSize

我也看到人们做这样的事情:

winStride = (8,8)
padding = (8,8)
locations = ((10,20),)
hist = hog.compute(image,winStride,padding,locations)

但是,我不明白location参数的作用,因为我不希望仅在一个位置计算HOG功能,而是计算我图像的所有(32,32)个补丁。

2 个答案:

答案 0 :(得分:1)

    cell_size = (16, 16)  # h x w in pixels
    block_size = (2, 2)  # h x w in cells
    nbins = 9  # number of orientation bins

    # winSize is the size of the image cropped to an multiple of the cell size
    # cell_size is the size of the cells of the img patch over which to calculate the histograms
    # block_size is the number of cells which fit in the patch
    hog = cv2.HOGDescriptor(_winSize=(img.shape[1] // cell_size[1] * cell_size[1],
                                      img.shape[0] // cell_size[0] * cell_size[0]),
                            _blockSize=(block_size[1] * cell_size[1],
                                        block_size[0] * cell_size[0]),
                            _blockStride=(cell_size[1], cell_size[0]),
                            _cellSize=(cell_size[1], cell_size[0]),
                            _nbins=nbins)


    self.hog = hog.compute(img)

答案 1 :(得分:0)

我们将图像分成mxn像素的单元格。比方说8x8。 因此,64x64图像将产生8x8像素的8x8单元格。

为了降低整体亮度效果,我们在特征计算中添加归一化停止。一个块包含几个单元格。我们不是对每个单元格进行标准化,而是跨块进行标准化。 32x32像素块将包含4x4 8x8像素单元。

窗口是我们计算特征描述符的图像的一部分。 假设你想在大图像中找到64x64像素的东西。然后,您将在图像上滑动64x64像素窗口并计算每个位置的特征描述符,然后使用该特征描述符找到最佳匹配位置...

这些都在文件中。只需阅读并进行实验,直到您理解为止。 如果您不能按照文档进行操作,请阅读源代码并查看逐行的内容。