HOG(histogram of oriented gradient) 是成名的特征描述方法,在检查行人的应用上收到很好的效果,所以学习一下。
图像的特征提取的一个基本前奏就是,先给分块,然后对每个分块进行处理。典型的hog的做法是将图像分成8*8像素的 cell,针对每个cell进行特征提取处理。首先是针对每个像素的x,y方向的梯度计算,也可说是一维卷积吧,x方向模板[-1 0 1],y方向模板为[1 0 -1]',转置一下表明是竖方向的算子。梯度计算的算式就是:
Gx = f(x+1 , y)- f(x-1, y); Gy = f(x, y+1) - f(x, y-1).
然后计算当前点的梯度幅值和方向: Gxy = sqrt(Gx^2 +G y^2); α = arctan(Gy/Gx);
角度α可以是180度以内也可以是360度以内的。
对于cell中每个像素,计算Gxy,和α。
接下来是对cell的直方图进行统计,一般将平面分成9个区间,按照角度,每个区间范围是2π/9。由于某个像素的梯度方向α可能不是2π/9的整数倍,需要进行线性插值操做出分解(一般叫投票),将对应的Gxy分到邻近的两个分量上去。对于2kπ/9方向(k=0---8),cell中所有像素对应的Gxy加到一起,形成一个2kπ/9方向的分量,从而一个cell形成了9个梯度方向直方图描述符。
剩下的就是一个图所有cell的hog串联形成一个整体描述符,就可以进行接下来的svm分类训练和识别了。
下面要说的,是我的瞎想啦^_^。
我们已经知道有各种各样的卷积模板,来进行不同方向的特征提取,那么如果针对一个cell,设计出9作用方向不同的卷积核,分别对图像进行处理,然后对每个卷积后的图像做某种特征计算,会得到什么鬼。。。HOG的作者做出了相当多的试验,最终证明HOG特征是最合适的行人检测的特征描述符,咱的瞎想。。今天天气,,,哈哈哈。。。好嘛,反正我是有不成熟的想法和疑问啦。