图1
所谓的三线性插值指的是在(x,y,theta)这三个参数空间中进行插值,即x方向、y方向和梯度的角度空间,如图1所示,图中的象素点(x,y)在利用梯度幅值作为权重进行投票时,要根据该象素点距离其他格子中心的距离进行加权,同时该象素点的梯度方向也要在其相邻的区间内进行插值,用数学公式描述如下式所示。
图2 三线性插值示意图
三线性插值在具体实现中,可以利用LUT(look-up-table)来快速计算,若是采用积分直方图,则可以采用Wang等[Wang, 2009]提出的卷积三线性插值方法(Convoluted Trilinear Interpolation,CTI)快速计算,更多关于三线性插值的描述见[Pang, 2011]. 以下用一个简单的例子来说明。
设图2中所示象素点的梯度方向是85度,梯度幅值是100,该象素点距离格子中心的左、右、上、下的距离分别为2、6、2、6。首先考虑梯度方向上的插值,若每20度为一个区间,85介于70和90之间,到第三个和第四个区间中心的距离分别为15和5,因此若投票值为v,则投票到第三个区间的值是(5/20)*v=0.25v,投票到第四个区间的值是(1-1/4)*v=0.75v。接下来考虑在x和y方向上的插值,根据象素点距离各个格子中心的距离,可知在x方向上的权重分配系数为6/8、2/8,在y方向上的权重分配系数也为6/8、2/8。所以梯度幅值分配到第一个格子的值为100*6/8*6/8=56.25,分配到第二个格子的值为100*2/8*6/8=18.75,分配到第三个格子的值为100*6/8*2/8=18.75,分配到第四个格子的值为100*2/8*2/8=6.25。最后,根据梯度方向上的投票权重,可知:第一个格子的直方图第三个区间得到的投票值为56.25*0.25=14.0625,第一个格子的直方图第四个区间得到的投票值为56.26*0.75=42.1875;第二个格子的直方图第三个区间得到的投票值为18.75*0.25=4.6875,第二个格子的直方图第四个区间得到的投票值为18.75*0.75=14.0625;以此类推,可求出第三个和第四个格子的直方图特征。
参考文献
[Wang, 2009] X. Wang, X. Han, and S. Yan. A HOG-LBP human detector with partial occlusion handling [A]. In Proc. of ICCV[C], 2009.
[Pang, 2011] Y. Pang, Y. Yuan, X. Li, et al. Efficient HOG human detection [J]. Signal Processing, 2011, 91: 773-781.
Source Code
1. VLFeat中的HOG实现:http://www.vlfeat.org/overview/hog.html#tut.hog.basic