目前在实际中应用的人脸检测方法多为基于Adaboost 学习算法的方法,这种检测方法最初由剑桥大学的两位大牛Pau l Viola 和Michael Jones[ViolaJones01]提出,并由另一位大牛英特尔公司的Rainer Lienhart[Lienhart02]对这一方法进行了改善。 这里,我先介绍ViolaJones 的人脸检测方法,然后再介绍Lienhart 的人脸检测算法。 我们可以发现,两种检测方法的大体框架是相同的,只是在Harr-like 特征的选取、计算以及AdaBoost的训练算法上有区别。 ViolaJones 人脸检测方法 ViolaJones 人脸检测方法是一种基于积分图、级联检测器和AdaBoost 算法的方法,方法框架可以分为以下三大部分: (1)使用Harr-like 特征表示人脸,使用“积分图”实现特征数值的快速计算; (2)使用Adaboost 算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; (3)将训练得到的若干强分类器串联组成一个级联结构的层叠分类器,级联结构能有效地提高分类器的检测速度。 一、Haar-like 矩形特征的特征值的快速计算方法 影响 AdaBoost 人脸检测训练算法速度很重要的两方面是特征选取和特征计算。选取的特征为矩特征为Haar 特征,计算的方法为积分图。 1、Haar-like 特征 Haar-like 特征最早是由Papageorgiou 等应用于人脸表示,Viola 和Jones 在此基础上,使用3 种类型 4种形式的特征。 3 种类型分别为:2-矩形特征、3-矩形特征、4-矩形特征。 Haar 特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。 特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。 对于图中的A, B 和D 这类特征,特征数值计算公式为:v=Sum 白-Sum 黑 而对于C 来说,计算公式如下:v=Sum 白-2*Sum 黑 之所以将黑色区域像素和乘以2,是为了使两种矩形区域中像素数目一致。 通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。 上图的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的称为“特征值”。 假设训练或检测窗口大小为W x H 个像素,w , h 分别为特征原型的长、宽,所示四种特征原型对应的w /h 分别为:2/1,1/2,3/1,2/2。 一个 haar-like 特征在24*24 像素图的子检测窗口中的矩形特征数量总计为134736 个。 2、积分图(Integral...