1. 人脸检测
首先我们要搞清楚人脸检测中的一些概念.
人脸检测: 在一张图像中判断是否存在人脸并找出人脸所在的位置
人脸识别: 在人脸检测的基础上收集人脸数据集合进行处理保存信息,将输入人脸与保存的信息进行比对校验,得到是否为其中某个人脸
特征值: 以某种特定规则对输入源进行处理得到具有唯一性质量化的值,在人脸识别中特征值的提取有 HOG-方向梯度直方图 , HAAR-like特征 , LBP-局部二进制模式 三种方法.
分类器: 根据特征值界定输入事物是否属于已知某种类别的过滤条件组合,未知类别的算聚类器,弱分类器:分类器的正确率高于随机分类(50%),强分类器:能满足预期分类并且正确率很高的分类器.
Adaboost: 迭代算法,同一个训练集合下训练多个弱分类器,把弱分类器迭代组合成一个强分类器.
级联分类器: 将多个同类型的分类器联合起来进行推算整合以得到符合目标的最终分类器的方法.
分类器生成及使用
一个高准确率的级联分类器的主要生成步骤如下: 1.大量样本集合,特征值的提取 2.通过adaboost 训练多个弱分类器并迭代为强分类器 3.多层级联强分类器,得到最终的级联分类器 这些训练流程完成之后结果以xml的方式保存起来,就是分类器文件,opencv中包含了以上的实现,并且已经存放了许多已经训练好的不同类型的不同特征值提取生成的的级联分类器 Opencv中可以直接加载这些分类器文件,并且给出了便捷的API
CascadeClassifier 参数1:image–待检测图片,一般为灰度图像加快检测速度; 参数2:objects–被检测物体的矩形框向量组; 参数3:scaleFactor–表示在前后两次相继的扫描中,图像被缩放的比例,1.1即每次缩放10% 用于检测 参数4:minNeighbors–表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 minneighbors - 1 都会被排除。 如果minneighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框, 这种设定值一般用在用户自定义对检测结果的组合程序上(使用默认值即可)
参数5:flags–要么使用默认值,要么使用CVHAARDOCANNYPRUNING,如果设置为 CVHAARDOCANNYPRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域, 因为这些区域通常不会是人脸所在区域; 参数6、7:minSize和maxSize用来限制得到的目标区域的范围。