HOG算法介绍
梯度方向直方图 (Histogram of Oriented Gradient, HOG) 是图像处理经典的特征提取算法。HOG 特征是直接将图像像素点的方向梯度作为图像特征,包括梯度大小和方向。通过计算图像局部区域的梯度直方图特征,然后将局部的特征串联起来,构成整幅图像的 HOG 特征,其原理图如图1所示。
HOG特征的实现步骤如下:
1.图像标准化。图像标准化如公式1所示, 表示图像(x,y)位置处的像素值,gamma表示压缩系数,通常取值为 0.5。
2. 计算梯度。在图像的(x,y)位置,计算图像梯度。包括水平方向的梯度和垂直方向的梯度,并据此计算每个像素位置的梯度方向值 。水平和垂直方向的梯度算子计算公式分别为:
水平方向:[-1 0 1]
垂直方向:[-1 0 1]T
根据两个方向的梯度算子,计算像素点(x,y)处的梯度。表示像素点(x,y)处像素值,水平方向梯度 、垂直方向梯度分别为
像素点(x,y)处的梯度幅值和梯度方向分别为
3.划分单元格。将图像分成多个单元格cell,给每个cell构建梯度方向直方图。梯度直方图的横坐标表示梯度方向,纵坐标表示对应梯度方向的幅值。
如图2所示为9通道示意图。梯度直方图的横坐标通常有9个直方图通道,是把梯度方向划分为9个方向块。梯度直方图的纵坐标表示对应梯度方向的幅值,梯度幅值与梯度大小有紧密联系。梯度幅值越大,对应该方向上的权值越大,则这个方向的纵坐标取值越大。
4. 划分区域。把细胞单元cell组合成大的区域block,区域内归一化梯度直方图。如图 3所示为3x3模式,一个block中有9个cell单元格,一个block的 HOG 特征是这 9个cell的特征串联而得到的。
5.收集 HOG 特征。将所有块中特征集合在一起,组成图像 HOG 特征。
实验介绍
使用如a所示的人物图像,使用MATLAB集成的HOG特征提取函数,可以得到如图所示b所示的特征,可以看出已经画出了图像的梯度方向图,图c为放大特征图像得到的结果。
以上通过一个简单的matlab函数就可以实现。
clc;
clear all;
close all;
img = imread('2.png');
[featureVector,hogVisualization] = extractHOGFeatures(img);
figure;
imshow(img);
hold on;
plot(hogVisualization);
.
评论(0)
您还未登录,请登录后发表或查看评论