参考论文:histograms of oriented gradients for human detection
最近一门课上提到hog算法,从陌生到熟悉再到清楚,其实看文章写的很清楚,但是就是有一个点理解不了,纠结了很久,所以今天写出来给和我一样是初学者的用以参考,如果能够帮助到大家我也是开心哒~其实hog算法就是以梯度方向作直方图的方法,是一种经典的特征提取方法,这篇博文的脉络按照我读的文章的顺序来写吧。
1.对输入图像进行灰度变换,得到I(x,y)(其实这个地方可以看成是两种做法:第一种做法就是先将图像灰度化再进行伽马变换,最后求梯度的时候就直接求取梯度值;第二种方法就是直接进行伽马变换,在求取梯度的时候将rgb通道的最大值作为梯度。)
2.对图像进行伽马变换,主要作用是降低灰度级高的对比度,提升低亮度的对比度,取gamma=0.5,即I(x,y)=I(x,y).^gamma
3.求取图像的梯度,通过实验选取梯度算子,横向梯度算子为[-1 0 1],纵向梯度算子为[-1 0 1].^T(转置)
4.构建梯度直方图
(1)假设图像的尺寸为128*64,设block窗口在图像中移动的步幅为8,block窗口的尺寸为16*16,图像中有若干个block,一个block里面有2*2个细胞cell,如图所示:
(2)对于每一个细胞cell内的像素统计梯度直方图,梯度方向为统计值,梯度值大小G(x,y)为权值,将0-180°均分成9个梯度直方图通道,无正负区分。
(3)将图像中统计出来的梯度直方图拉成向量,一个block里面的向量维度为4*9,block数量为((128-8)/8)*((64-8)/8),则图像的向量维度为((128-8)/8)*((64-8)/8)*4*9=3780
5.SVM(支持向量机)对特征向量进行分类。