1.图像中的梯度
梯度是在一副图像中寻找边缘强度和方向的工具。梯度是用一阶微分来实现的。先看下图,梯度的表示。
梯度的大小是用如下公式表示的。
由于该公式下的计算会导致巨大的计算开销,在多数情况下,是使用绝对值来近似平方和平方根的计算。该操作如下所示:
梯度的方向由以下公式表示:
需要注意的是,任意一点(X,Y)处的一个边缘方向与该点处梯度向量的方向a(x,y)正交。如下图所示:
1.1与梯度相关的一阶微分
从图中我们可以看到,不管是灰度的突变区域,还是缓慢的过度区域,都能从一阶微分中的数值中表现。符号表示亮与暗之间的过度方向。总结一句,一阶微分的数值有无可以用来检测某个点是否存在一个边缘处。HOG就是利用了这个检测边缘特征的性质来做相关的检测。
2.为什么需要预处理
首先我们需要做什么预处理。一是灰度值的调节,二是降低噪声。其中一,一般是由于拍摄环境或者摄影设备使用不当,造成图像的过暴或者欠暴。
2.1伽马调节灰度值
通过伽马变换这种软变换来弥补图像过暴或者欠暴的问题。
2.2降噪的必要性
首先我们得明白导数对噪声是极其敏感的,通过以下图片来说明:
其中第一列除了第一幅图像外,均添加了高斯噪声。m表示均值,σ表示标准差。我们可以看到随着噪声的加大,边缘特性在一阶微分中的显得越来越不明显。边缘一般是连续的,且波动不大的。但是在噪声的干扰下,一阶微分的结果波动加剧,最严重的情况下,可以说提取不到一点边缘信息。
3.block中的拼接
可能都知道block在HOG中的作用,1个block包括了多个cell,而且还会在图像中滑动囊括cell。通过block的归一化处理,减少光照对图像过暴或欠暴的影响。
但是在cell形成block的过程中,本人将此过程想象成了简单的拼接,如下图所示
显示不是这样的,当然有相同的地方,那就是它们的幅值依旧是所在cell中得到的值,只需改动的是横轴的坐标。如下图所示:
所以众多的block可以形成一副的更多幅值的直方图。如下图标记处所示:
在形成HOG的特征描述子后,我们就可以得到中的众多的特征坐标,如上图标记处,就有4608个坐标。然后将这些数据交给SVM处理,分出多个超平面,不同的超平面对应着不同的特征。
参考资料:
1.Datawhale的计算机视觉基础
2.冈萨雷斯,数字图像处理(第三版)
3.HOG特征详解与行人检测