论⽂:HistogramsofOrientedGradientsforHumanDetec。。。
1.分割图像
因为HOG是⼀个局部特征,因此如果你对⼀⼤幅图⽚直接提取特征,是得不到好的效果的。原理很简单。从信息论⾓度讲,例如⼀幅
640*480的图像,⼤概有30万个像素点,也就是说原始数据有30万维特征,如果直接做HOG的话,就算按照360度,分成360个bin,也没有表⽰这么⼤⼀幅图像的能⼒。从特征⼯程的⾓度看,⼀般来说,只有图像区域⽐较⼩的情况,基于统计原理的直⽅图对于该区域才有表达能⼒,如果图像区域⽐较⼤,那么两个完全不同的图像的HOG特征,也可能很相似。但是如果区域较⼩,这种可能性就很⼩。最后,把图像分割成很多区块,然后对每个区块计算HOG特征,这也包含了⼏何(位置)特性。例如,正⾯的⼈脸,左上部分的图像区块提取的HOG特征⼀般是和眼睛的HOG特征符合的。
接下来说HOG的图像分割策略,⼀般来说有overlap和non-overlap两种,如下图所⽰。overlap指的是分割出的区块(patch)互相交叠,有重合的区域。non-overlap指的是区块不交叠,没有重合的区域。这两种策略各有各的好处。
述责述廉先说overlap,这种分割⽅式可以防⽌对⼀些物体的切割,还是以眼睛为例,如果分割的时候正好把眼睛从中间切割并且分到了两个patch 中,提取完HOG特征之后,这会影响接下来的分类效果,但是如果两个patch之间overlap,那么⾄少在⼀个patch会有完整的眼睛。overlap的缺点是计算量⼤,因为重叠区域的像素需要重复计算。
再说non-overlap,缺点就是上⾯提到的,有时会将⼀个连续的物体切割开,得到不太“好”的HOG特征,优点是计算量⼩,尤其是与Pyramid(⾦字塔)结合时,这个优点更为明显。
2.计算每个区块的⽅向梯度直⽅图
将图像分割后,接下来就要计算每个patch的⽅向梯度直⽅图。步骤如下:大米生虫子处理小诀窍
屏蔽广告A.利⽤任意⼀种梯度算⼦,例如:sobel,laplacian等,对该patch进⾏卷积,计算得到每个像素点处的梯度⽅向和幅值。具体公式如下:
凉拌八爪鱼
黄山旅游最佳时间
其中,Ix和Iy代表⽔平和垂直⽅向上的梯度值,M(x,y)代表梯度的幅度值,θ(x,y)代表梯度的⽅向。
篮球资料B.将360度(2*PI)根据需要分割成若⼲个bin,例如:分割成12个bin,每个bin包含30度,整个直⽅图包含12维,即12个bin。然后根据每个像素点的梯度⽅向,利⽤双线性内插法将其幅值累加到直⽅图中。
高考加分项目C.(可选)将图像分割成更⼤的Block,并利⽤该Block对其中的每个⼩patch进⾏颜⾊、亮度的归⼀化,这⼀步主要是⽤来去掉光照、阴影等影响的,对于光照影响不剧烈的图像,例如很⼩区域内的字母,数字图像,可以不做这⼀步。⽽且论⽂中也提及了,这⼀步的对于最终分类准确率的影响也不⼤。
回忆童年的作文
3.组成特征
将从每个patch中提取出的“⼩”HOG特征⾸尾相连,组合成⼀个⼤的⼀维向量,这就是最终的图像特征。可以将这个特征送到分类器中训练了。例如:有44=16个patch,每个patch提取12维的⼩HOG,那么最终特征的长度就是:1612=192维。
4.⼀些引申
与pyramid相结合,即PHOG。PHOG指的是,对同⼀幅图像进⾏不同尺度的分割,然后计算每个尺度中patch的⼩HOG,最后将他们连接成⼀个很长的⼀维向量,作为特征。例如:对⼀幅512512的图像先做33的分割,再做66的分割,最后做1212的分割。接下来对分割出的patch计算⼩HOG,假设为12个bin即12维。那么就有912+3612+14412=2268维。需要注意的是,在将这些不同尺度上获得的⼩HOG连接起来时,必须先对其做归⼀化,因为33尺度中的HOG任意⼀维的数值很可能⽐12*12尺度中任意⼀维的数值⼤很多,这是因为patch的⼤⼩不同造成的。PHOG相对于传统HOG的优点,是可以检测到不同尺度的特征,表达能⼒更强。缺点是数据量和计算量都⽐HOG⼤了不少。