- O! i, u& J' z/ |; c" V! Y二、如何计算HOG特征向量% j- b% w$ e1 @- U# v' W
% Y* X$ l1 j& d" W1 P3 AStep1:图片预处理# n4 b; G2 n `& ^# `: j* \
+ v. r+ k" P j+ y f5 S3 X J: D
我们需要对图像进行预处理,并将宽高比降低到1:2,图像大小最好是64 x 128。这是因为我们将图像分成8 x 8和16 x 16小块来提取特征。具有指定的大小(64 x 128)将使我们的所有计算相当简单。事实上,这正是原始论文中使用的值。当然完整的图片可以是任意的尺寸。通常我们会在图片的不同位置分析多尺度图片块。唯一的要求就是图片块需要有固定的长宽比。比如:100×200, 128×256或者1000×2000都可以,但101×205就不满足要求# U# J% E: c7 g4 P- j0 v* t
! L( T! l( ?# V/ s回到我们的例子,让我们将大小为64x128作为目前的标准图像大小。以下是调整后的图像:% B0 p4 ~% d* ^
5 b" j7 F0 ?# U% o- H' i, q: F
9 ~4 V' f) l, d+ t
8 B' A2 v$ B- R, n. l$ Z我们对其求反函数就可以得到该像素点的梯度方向角度。* d* j' s# S) r t! c, R' Q- k
4 v! S9 z8 w! J# f0 b' m
Step3:将图像划分为一个一个cell,并绘制cell的梯度直方图 # ~% p2 R1 L4 g0 }$ j( U, ~- J+ U1 M' e% e; \; C
HOG特征描述子中创建的直方图不是为整个图像生成,而是将图像分割为8 × 8个单元格(cell),计算每个单元格的方向梯度直方图。通过这样做,我们得到了代表整个图像的小块的特征(或直方图)。我们当然可以把这个值从8 x 8换成16 x 16或者32 x 32。) S; c0 K8 C- F6 V
' r% \ q$ k7 X2 e8 w如果我们将图像划分为8 × 8个单元格并生成直方图,假设我们将直方图的角度分为9份,也就是说有9个bin,则每个单元格获得9 x 1矩阵。下面介绍如何划分bin的角度以及如何将计算好的梯度幅值加到每一个bin中。( q; L- N3 _3 P* H0 x( f
% o# j% |5 E! R" \3 U2 ^我们采用9个bin的直方图来统计这8 x 8个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,如下图所示,对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(因为有9个bin)。: U" v; W& N8 S, P ]* p
" `$ r5 e' @4 i Y' I& w
) A2 i f3 S; x+ G: [% z2 P
在我讲梯度直方图如何标准化之前,我们先来看看一个长度为3的向量如何标准化。 + [0 q4 s- O6 w1 _4 c( [$ @. s+ N- r
假设我们有一个RGB颜色向量[128, 64, 32]。这个向量的长度是1282+642+322−−−−−−−−−−−−−√ \sqrt{128^2 + 64^2 + 32^2} $ Q4 n5 k* k0 N
128 - }! b/ a" Z4 Q8 _+ e, n# X
2 5 Z+ I/ p! ?* k +64 7 E3 K' K3 K w7 h: G% F v& O2 1 |' s+ G# k$ X4 s8 ~ +32 ; n9 O! S8 }) f3 _ v0 K! \
2 " T: g0 w2 Z! c7 G! Z6 _$ N' @& Z; G' S. M. ?7 k
7 A& X8 `# D E' P0 e5 S/ F
=146.64。这也叫做向量的L2范数。将这个向量的所有元素除以向量长度146.64就可以得到一个标准化的向量[0.87, 0.43, 0.22]。# w3 Q; [1 z' g2 Z* X5 N2 o
1 [0 c3 o+ c' ]* m2 E现在我们知道如何标准化一个向量,你可能想到当计算HOG特征的时候你可以像之前标准化一个3×1向量一样去标准化9×1的直方图。这的确是个不错的想法,但是更好的做法是标准化一个更大的16×16的block。一个16×16的block包含4个直方图(每一个bin的大小为8 x 8),这4个直方图可以连接成一个36×1的向量,而且这个向量仍然可以像那个3×1的向量一样进行标准化。每次标准化后,整个窗口移动8(假设)个像素并再次计算得到一个36×1的标准化向量,就这样一直重复这个过程。8 }$ D, d3 x( d. C7 @8 a) j