【图像处理系列】fhog特征

1. hog特征提取—9维特征向量

步骤1灰度化(将输入的RGB三通道图像转化为单通道图像);

步骤2采用gamma校正法对输入图像进行颜色空间的标准化,校正公式为:

I(x,y)=I(x,y)gamma

其中gamma=1/2,通过Gamma压缩处理,可以降低光照变化以及局部图像阴影的影响;

步骤3计算图像梯度,包括每个像素点的梯度值和梯度方向。x方向和y方向的卷积核分别为:

Gx=[1,0,1]Gy=[1,0,1]T

得到I(x,y)水平方向梯度Gx(x,y)(水平向右为正方向),垂直方向梯度Gy(x,y)(垂直向上为正方向),每个像素点的梯度G(x,y)和梯度方向α(x,y)分别为:
G(x,y)=Gx2+Gy2

α(x,y)=arctan(Gx(x,y)Gy(x,y))

步骤4构建9维hog特征向量:

将图像分成若干个“cell”,例如每个cell为4*4个像素。采用9个bin的直方图来统计这6*6个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,如下图所示:若某个像素的梯度方向是0-20度或180-200度,直方图第1个bin的计数就加一,这样,对cell内每个像素用梯度方向在直方图中进行加权投影(权值与梯度值相关,如该像素点梯度值为3,权值即为3),就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(即9个bin直方图)。


【图像处理系列】fhog特征

2. 归一化截断

通过归一化截断得到每个cell对应的36为特征向量。已知C(i,j)为第(i,j)个cell的9维特征向量,与其相邻的特征向量为:


[C(i1,j1)C(i1,j)C(i1.j+1)C(i,j1)C(i,j)C(i,j+1)C(i+1,j1)C(i+1,j)C(i+1,j+1)]

定义Nβ,γ为:

Nβ,γ=(||C(i,j)||2+||C(i+β,j)||2+||C(i+β,j+γ)||2+||C(i,j+γ)||2)1/2

则36维特征向量H(i,j)即为:


H(i,j)=(Min(N1,1(i,j),C(i,j))Min(N1,1(i,j),C(i,j))Min(N1,1(i,j),C(i,j))Min(N1,1(i,j),C(i,j)))

3. PCA降维

下图是36个主成分,前12个横条和竖条状的特征向量占据大部分,分别按行和按列求和,一共得到4+9=13维特征向量。


【图像处理系列】fhog特征

4. 计算有方向梯度,得到18维特征向量

上述1、2、3是假设梯度无方向,考虑有方向的梯度,那每个Cell就有360/20=18维hog特征,再由第2步得到4*18维特征,然后按行求和得到18维特征向量,此时不再进行列求和。故无向和有向一共31维向量。

5. fhog特征提取示意图

【图像处理系列】fhog特征


整幅图像划分为若干个Cell,得到特征图。

C++(OpenCV版)fhog特征提取代码https://github.com/ll1041327742/fhog

参考链接
【1】https://blog.****.net/zouxy09/article/details/7929348
【2】https://blog.****.net/sysu_yuhaibao/article/details/76599926
【3】原DPM论文《Object Detection with Discriminatively Trained Part Based Models》