前言
- 以前的人脸检测都是基于像素,基于统计学的概念进行研究。有了Haar之后,人脸检测分类器才出现,准确率也得到了提高。
- Haar分类器 = Haar-like小波特征 + 积分图方法 + AdaBoost +级联
- Haar分类器算法的要点如下:
- 使用Haar-like特征做检测。
- 使用积分图(Integral Image)对Haar-like特征求值进行加速。
- 使用AdaBoost算法训练区分人脸和非人脸的强分类器。
- 使用筛选式级联把强分类器级联到一起,提高准确率。
1. 理论
1.1 Haar-like特征
- 以上是Haar-like特征定义的特征结构。可以将它们理解成为一个窗口,这个窗口将在图像中做步长为1的滑动,最终遍历整个图像。
- 比较特殊的一点是,当一次遍历结束后,窗口将在宽度或长度上成比例的放大,再重复之前遍历的步骤,直到放大到最后一个比例后结束。
- Haar-like特征提取过程就是利用上面定义的窗口在图像中滑动,滑动到一个位置的时候,将窗口覆盖住的区域中的白色位置对应的像素值的和减去黑色位置对应的像素值的和,得到的一个数值就是haar特征中一个维度。
1.2 积分图
- 积分图的方法能快速计算Haar特征。
- 积分图是类似动态规划的方法,主要的思想是将图像从起点开始到各个点所形成的矩形区域像素之存在数组中,当要计算某个区域的像素和时可以直接从数组中索引,不需要重新计算这个区域的像素和,从而加快了计算。
分两步计算:
- 规定任意点的像素值(x,y)代表其左上角的所有像素的总值,见左图所示。
- 当求任意区域的像素和时,只要通过加减运算即可,见右图所示。
- 积分图就能快速计算Haar-like特征定义的特征结构,然而特征值往往分布范围很广,所以需要压缩特征值范围,使用“归一化”手段。之后使用归一化的特征值与阈值对比。
1.3 AdaBoost算法
整个Adaboost