对于这些之后用于分析的图像,唯一的约束是需要调整纵横比图像大小。在我们的例子中,需要调整纵横比为1:2,比如图像可以被调整为 100×200, 128×256, 或者 1000×2000,但是不能是 101×205。
原始图像大小是 720×475,我们截切出来 100×200 大小图像用来计算 HOG 特征描述子,然后重新调整大小到 64×128。现在我们就做完了计算 HOG 特征描述子准备工作。
步骤 2 : 计算梯度图像为了计算 HOG 特征描述子,我们第一步需要计算水平和垂直方向的梯度。我们通过下面的 Kernel / 核 来处理图像,很容易计算出梯度的直方图。
我们可以使用核大小为 1 的 OpenCv 的 Sobel 算子:
1 // C++ gradient calculation. 2 // Read image 3 Mat img = imread("bolt.png"); 4 img.convertTo(img, CV_32F, 1/255.0); 5 6 // Calculate gradients gx, gy 7 Mat gx, gy; 8 Sobel(img, gx, CV_32F, 1, 0, 1); 9 Sobel(img, gy, CV_32F, 0, 1, 1);