一、基本HOG算法
HOG特征最早出现在SIFT算法中,由于其极强的图像特征描述能力,逐渐被人们熟知和广泛运用,其在目标检测方面表现尤为突出。
HOG特征提取过程
步骤一:遍历图像每个像素点,以其为中心取8*8像素领域作为网格(block)区域;
步骤二:将网格(block)区域平均分成4个大小相等的细胞单元(cell),每个细胞单元的大小是4*4个像素;
步骤三:计算所有细胞单元(cell)中的每个像素的梯度幅值和梯度方向,梯度算子使用中心算子[1,0,-1];
其中,H(x,y)为每个像素水平方向的梯度大小,V(x,y)为垂直方向的梯度大小。o(x,y)为像素(x,y)的梯度 方向,m(x,y)为它的梯度幅值。
步骤四:将梯度方向限定在(0,180°)内,平均分成8个区间,用有符号的8个方向表示。根据下图中的椭圆圈的 高斯加权范围将单元(cell)上所有相同梯度方向的像素点的梯度幅值加权累加,组成该单元的8维梯度方向直方图。
步骤五:计算得到细胞单元(cell)的8维梯度方向直方图,将一个网格(block)区域中4个细胞单元(cell)的梯度直方图连接起来,得到一个网格(block)区域的4*8=32维的梯度直方图特征。连接所有网格(block)区域的直方图特征,并采用L2-norm归一化,最终得到HOG特征。 一副大小为128*128的图像,可以分成16*16=256个无重叠网格区域,其HOG特征向量的长度为256*32=8192。
二、空间多尺度HOG模型
HOG算子是一种有效的形状描述子,但其有一个重要不足,即丢弃了局部特征之间的空间排列信息。空间多尺度HOG模型,能够很好地表述物体的形状和空间布局。
(1)逐层将128*128大小的原图像细化分为一系列不同尺度的网格(block)子区域。若细化为L层,则 l 层上有4^l 个子区域图像,每个子区域大小为128/2^l * 128/2^l(l=0,1,.....,L-1)。
(2)分别逐层计算每个网格(block)子区域的梯度直方图。梯度方向的方位仍设为(0,180°),量化区间数为k个。
(3)采用L2-norm归一化每一层各个网格(block)子区域的梯度方向直方图,按顺串接起来,得到整幅图像的空间多尺度HOG特征。若原图像分为L层,每一层有4^L个子区域,梯度方向直方图有k个区间,则串接后的特征向量的总长度为P: