前言
人脸检测是一种基于特定算法对任意输入的数字图像进行检索匹配以找到人脸的技术。本文提出的多人脸检测检测程序要求在一幅静态的彩色图像中识别出人脸的有无以及人脸的大小、位置和姿势。
利用色彩平衡判断算法和改进的色彩平衡算法对输入图像进行预处理。对人脸检测程序选用的色域空间和肤色模型进行了对比分析,选择了 YCbCr 作为色域空间,并提出了一种改进的高斯肤色模型算法。在 YCbCr 色域空间中使用改进的高斯肤色模型绘制了肤色概率图,利用自适应肤色阀值法将肤色概率图二值化得到肤色分割图。在此基础上基于联通域分析法实现了初步的人脸筛选。最后利用模板匹配法对人脸粗筛选的结果进行人脸精确定位。本文在 MATLAB 下实现了基于肤色特征法和模板匹配法的多人脸检测程序。
大纲
程序实现的关键算法
基于高光检测的色彩偏移判断算法
基于 “参考白” 改进的色彩平衡算法
改进的高斯肤色模型
自适应阀值肤色分割算法
基于二值图像八连通算法的肤色区域标记算法
基于像素点法的模板匹配算法
平均脸模板生成算法
人脸模板匹配算法
程序流程
人脸数据库
本次实验对测试图像的选择原则是选择彩色图像、多人脸、多姿态、多光照条件的数据库。经过对比,最终选取香港中文大学实验室公开的 CelebA 人脸数据库作为限制单人脸检测实验的测试集,选取 FDDB 人脸数据集作为多人脸和不同肤色人脸检测的测试集。
- CelebA 人脸数据库,包含 200K 张单人脸彩色图像
- FDDB 人脸数据库,包含 2845 张图片,总计 5000 张人脸,其多人脸彩色图像采集于各种新闻场景,跟现实生活场景很接近,而且图像包含不同人脸姿态、肤色、光照等条件的变化。
检测结果图
单人脸检测
多人脸检测
总结
由于本文的检测目标是多人脸彩色图像,对程序检测速度的要求较高,因此采用肤色特征法,利用肤色特征法的快速、低复杂度特性,提高多人脸检测程序的时间效率。然而单纯的肤色特征法检测人脸是相对脆弱的,对肤色样本和肤色模型的要求较高,而且容易受光照、背景、图像分辨率等因素的干扰,因此本文实现的多人脸检测程序将肤色特征法与平均脸模板匹配法结合起来,将经过肤色特征法粗筛选的人脸候选区域进一步通过平均脸的匹配实现人脸精确定位,既保证了低计算量,又满足了检测准确率的要求。
项目部署
多人脸检测主要文件及作用:
作用 | 文件名 | 备注 |
---|---|---|
数据集 | faces/ nonface/ textResult/ | 人脸正样本 非人脸负样本 测试结果集 |
主程序 | FaceDetection.m | 人脸检测程序入口,整合程序逻辑 |
建立高斯肤色模型 | CreateModel.m | 利用输入的皮肤样本建立高斯肤色模型 |
绘制肤色概率图 | GetLikelyHood.m | 得到肤色概率图 |
肤色分割 | SegmentAdaptive.m | 自适应阀值分割肤色区域 |
肤色区域标记 | LabelRegion.m | 绘制肤色区域标记图 |
欧拉数筛选 | EulerFilter.m | |
宽高比和总面积比筛选 | AspectFilter.m | |
模板匹配 | TemplateFilter.m | 平均脸模板匹配 |
绘制人脸矩形框 | Regionprops.m | 计算每个区域最小外接矩形并在原始图像上绘图 |
相关下载
开发 IDE:Matlab r2015b