调整渐变直方图的图像大小

时间:2015-06-07 14:33:45

标签: matlab opencv image-processing computer-vision image-resizing

我的图像大小为150像素高,188像素宽。我打算在这张图片上计算HOG。由于此描述符需要检测器窗口(图像)的大小为64x128,我应该将图像大小调整为64x128然后使用此描述符吗?像这样:

 Image<Gray, Byte> GrayFrame = new Image<Gray, Byte>(_TrainImg.Size);
 GrayFrame = GrayFrame.Resize(64, 128, INTER.CV_INTER_LINEAR);

我担心调整大小可能会改变原始渐变方向,具体取决于它是如何调整大小的,因为我们忽略了图像的宽高比?

顺便说一句,图像是破碎的,我不能再裁剪它了。这意味着这是裁剪后图像的大小,这是我的最终边界框。

1 个答案:

答案 0 :(得分:0)

不幸的是,缺少openCV HoGDescriptor文档。

在openCV中,您可以更改检测窗口,单元格大小,blockStride和块大小的值。

cv::HOGDescriptor hogDesc;

hogDesc.blockSize = cv::Size(2*binSize, 2*binSize);
hogDesc.blockStride = cv::Size(binSize, binSize);
hogDesc.cellSize = cv::Size(binSize, binSize);
hogDesc.winSize = cv::Size(imgWidth, imgHeight);

然后使用

提取特征
std::vector<float> descriptors;
std::vector<cv::Point> locations;
hogDesc.compute(img, descriptors, cv::Size(0,0), cv::Size(0,0), locations);

注意:

  1. 我想,winSize必须可以被blockSize整除,而blockSize可以被cellSize整除。
  2. 功能的大小取决于所有这些变量,因此请确保使用相同大小的图像,并且不要更改设置以免遇到麻烦。