浅析人脸检测之Haar分类器方法
人脸检测属于计算机视觉范畴,检测方法有两类:基于知识和基于统计。
harr分类器的方法是基于统计的范畴,其是Adaboost算法的一部分。
harr分类器 = haar-like特征 + 积分图 + AdaBosst + 级联;
Haar分类器算法的要点如下:
① 使用Haar-like特征做检测。
② 使用积分图(Integral Image)对Haar-like特征求值进行加速。
③ 使用AdaBoost算法训练区分人脸和非人脸的强分类器。
④ 使用筛选式级联把强分类器级联到一起,提高准确率。
Haar-like 特征
矩形特征对一些简单的图形结构,比如边缘、线段,比较敏感,但是其只能描述特定走向(水平、垂直、对角)的结构,因此比较粗略。脸部一些特征能够由矩形特征简单地描绘,例如,通常,眼睛要比脸颊颜色更深;鼻梁两侧要比鼻梁颜色要深;嘴巴要比周围颜色更深。
假设在人脸检测时我们需要有这么一个子窗口在待检测的图片窗口中不断的移位滑动,子窗口每到一个位置,就会计算出该区域的特征,然后用我们训练好的级联分类器对该特征进行筛选,一旦该特征通过了所有强分类器的筛选,则判定该区域为人脸。
下面是Viola牛们提出的Haar-like特征。
下面是Lienhart等牛们提出的Haar-like特征。
####白色区域和黑色区域可计算出haar特征,方法如下:
haar特征值 = 白色区域像素值(乘以权重)-黑色区域像素值(乘以权重)
特征矩形的选取要素:
- 选取的特征矩形必须满足其长宽比可以(s,t)整除(称之为(s,t)矩形)
- 对于 m×m 子窗口,我们只需要确定了矩形左上顶点 A(x1,y1) 和右下顶点(B(x2,y2),即可以确定一个矩形;
- 矩形的最小尺寸为s×t 或t×s, 最大尺寸为[m/s]·s×[m/t]·t 或[m/t]·t×[m/s]·s;其中[ ]为取整运算符。
- 在做特征计算时,要将一幅图片满足条件的所有特征全部计算出来。
特征矩形的选取步骤:
而实际上(s,t)条件描述的是特征矩形的特征,即不同的(s,t)实际上代表了不同的矩形特征模板:
一幅图片中的全部特征矩形数据量的计算(仅仅以上面五个模板为例):
以24*24大小的图片为例,计算总的特征数量:
下面列出不同的图片大小特征的总数量:
由此我们可以看出,随着照片像素的增加,其haar特征提取的所需的计算量翻倍增加,因此我们需要找到一个快速的计算方法来计算这些特征值,于是,特征图算法产生了。
特征图算法
下面介绍特征图算法。
通过上面的叙述我们发现,haar-like特征的计算量十分庞大,需要简化计算,而特征图正是一种简便的计算特征的方法,具体步骤如下:
- 用s(i,j)表示行方向的累加和,初始化s(i,-1)=0;
- 用ii(i,j)表示一个积分图像,初始化ii(-1,j)=0;
- 逐行扫描图像,计算每个像素(i,j)行方向的累加和s(i,j)和积分图像ii(i,j)的值:s(i,j)=s(i,j-1)+i(i,j)ii(i,j)=ii(i-1,j)+s(i,j)
- 扫描图像一遍,当到达图像右下角像素时,积分图像ii就构造好了。
- 对于积分图中任意矩形的像素计算,可以采用以下方法:记该图像中的四个顶点为abcd(左上角顶点为a,逆时针标记);对于目标矩形像素haar特征S = ii(a) + ii© - ii(b) - ii(d)(可以画图模拟)
积分图的思想当我第一次看的时候,发现这就是一个动态规划思想。只不过这个dp的状态转移方程不是特别明显。
####补充:关于中心环绕特征中倾斜矩形(45°旋角)特征值的快速计算方法(类似积分图): - 首先将该旋转矩形的最右侧的点(x,y)找出,定义RSAT(x,y)为该矩形的特征值;
- 由dp的思想可以得到其状态转移方程:RSAT(x,y) = RSAT(x-1,y-1)+RSAT(x-1,y+1)-RSAT(x-2,y)+I(x,y)+I(x-1,y) 其中I(x,y)为该像素点的像素值。