一、划分图像块
给定一个图像size为 64 * 128,我们按 16 * 16 划分为一个块(Block),然后再将这个block划分为四个 8*8 的Cell,如下图,蓝色为block,绿色为cell
二、计算图像梯度幅度和方向
-
1、首先先计算每个Cell的水平和垂直梯度
-
2、进一步计算图像梯度幅度和方向
-
3、方向设为无符号方向,即角度范围为 0° - 180°
三、创建每个Cell的直方图
-
1、为每个 8 * 8 的Cell 绘制直方图
-
2、每个直方图有9个数字类别,根据角度 0,20,… ,160° 划分
-
3、按每个梯度的方向值挑选数字类别
-
4、将该梯度对应的幅度值填入所选的数字类别
比如下图,蓝圈的方向值为 80°,则其对应的幅度值 2 放入 80 的类别里,红色的方向值 10 介于 0 和 20 之间,那么其幅度值 4 应按比例分别将一半放入0 和 20 两个类别
四、HOG可视化
-
1、16 * 16 归一化块用于归一化L2范数的直方图,这样可以避免光照影响
-
2、一个block有四个直方图,可以将这四个 9 * 1 直方图合成一个 36 * 1 的向量
-
3、block移动8个像素点,以此类推,计算所有block的向量
-
4、最终可以的到一个 3780 * 1 的 HOG 特征向量
-
5、绘制每个Cell的 9 * 1直方图到图像上,如下图所示的可视化
五、总结
参考:
Dalal, Triggs. Histograms of Oriented Gradients for Human Detection. CVPR, 2005