Haar(哈尔)特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。如下图: 对于图中A,B,D这类特征,特征数值计算公式为: v = ∑ 白 + ∑ 黑 v=\sum白 + \sum黑 v=∑白+∑黑,对于C,特征数值为: v = 2 ∗ ∑ 白 + ∑ 黑 v=2*\sum白 + \sum黑 v=2∗∑白+∑黑。通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。上图的特征模板称为“特征原型”,特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”,矩阵特征的值称为“特征值”。 矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模板类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。
积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。 位置 ( i , j ) (i, j) (i,j)处的值 i i ( i , j ) ii(i,j) ii(i,j)是原图像(i,j)左上角方向所有像素 f ( k , l ) f(k,l) f(k,l)的和: i i ( i , j ) = ∑ k ≤ i , l ≤ j f ( k , l ) i i ( i , j ) = ∑ k ≤ i , l ≤ j f ( k , l ) ii(i,j) = \sum_{k\leq i, l\leq j} f(k,l)ii(i,j)=\sum_{k\leq i, l\leq j} f(k,l) ii(i,j)=k≤i,l≤j∑f(k,l)ii(i,j)=k≤i,l≤j∑f(k,l) 积分图构建算法: s ( i , j ) s(i,j) s(i,j)表示行方向的累加和,初始化 s ( i , − 1 ) = 0 s(i,-1)=0 s(i,−1)=0; i i ( i , j ) ii(i,j) ii(i,j)表示一个积分图像,初始化 i i ( − 1 , j ) = 0 ii(-1,j)=0 ii(−1,j)=0; s ( i , j ) = s ( i , j − 1 ) + f ( i , j ) i i ( i , j ) = i i ( i − 1 , j ) + s ( i , j ) s(i,j) = s(i,j-1)+f(i,j) \\ ii(i,j) = ii(i-1,j) +s(i,j) s(i,j)=s(i,j−1)+f(i,j)ii(i,j)=ii(i−1,j)+s(i,j)
如上图: 区域A的像素值: i i ( 5 ) + i i ( 1 ) − i i ( 2 ) − i i ( 4 ) ii(5) + ii(1) - ii(2) - ii(4) ii(5)+ii(1)−ii(2)−ii(4) 区域B的像素值: i i ( 6 ) + i i ( 2 ) − i i ( 5 ) − i i ( 3 ) ii(6) + ii(2) - ii(5) - ii(3) ii(6)+ii(2)−ii(5)−ii(3) 所以,该矩阵特征的特征值为区域A的像素值减去区域B的像素值: i i ( 5 ) + i i ( 1 ) − i i ( 2 ) − i i ( 4 ) − [ i i ( 6 ) + i i ( 2 ) − i i ( 5 ) − i i ( 3 ) ] ii(5) + ii(1) - ii(2) - ii(4) - [ii(6) + ii(2) - ii(5) - ii(3)] ii(5)+ii(1)−ii(2)−ii(4)−[ii(6)+ii(2)−ii(5)−ii(3)]
计算检测窗口中图像的灰度值和灰度值平方和: s u m = ∑ i ( x , y ) s q s u m = ∑ i 2 ( x , y ) sum=\sum i(x,y) \\ sq_{sum} = \sum i^{2}(x,y) sum=∑i(x,y)sqsum=∑i2(x,y) 计算平均值: m e a n = s u m w ∗ h s q m e a n = s q s u m w ∗ h mean = \frac{sum}{w*h} \\ sq_{mean} = \frac{sq_{sum}}{w*h} mean=w∗hsumsqmean=w∗hsqsum 计算归一化因子: v a r N o r m F a c t o r = s q m e a n − m e a n 2 varNormFactor = \sqrt{sq_{mean} - mean^{2}} varNormFactor=sqmean−mean2 归一化特征值: n o r m V a l u e = f e a t u r e V a l u e v a r N o r m F a c t o r normValue = \frac{featureValue}{varNormFactor } normValue=varNormFactorfeatureValue 之后使用归一化的特征值normValue与阈值对比。
级联分类模型是树状结构: 其中每个stage都代表一级强分类器。当检测窗口通过所有的强分类器时才被认为是正样本,否则拒绝。
原图: 处理后的图像: