基于肤色模型的人脸检测系统
项目介绍
本项目是一款利用人体肤色在特定颜色空间(YCbCr)中的聚类特性而设计的人脸检测与定位系统。该系统能够从复杂的背景中提取出具有肤色特征的区域,并通过形态学处理和几何特征筛选,精准定位人脸位置。它具备良好的运算效率和抗光照干扰能力,适用于静态图像处理以及实时监控系统的预处理阶段。
功能特性
- 交互式图像读取:支持通过图形界面选择多种格式(JPG, PNG, BMP)的待处理图像,并设有备用测试机制。
- 自动光照补偿:集成简单参考白(Gray World)算法,有效降低环境光照对肤色检测的影响。
- 高效肤色分割:基于YCbCr色度空间进行阈值分割,剥离亮度干扰,实现肤色区域的快速定位。
- 深度形态学优化:综合运用开运算、闭运算、空洞填充和中值滤波,确保肤色区域的连通性并滤除细小噪声。
- 智能几何筛选:结合长宽比、面积占比和填充率等多维度几何判别条件,自动剔除背景中颜色相近的类肤色干扰物。
- 多重可视化输出:提供肤色遮罩对比图、原图检测框定位图以及最终的合成标注图像。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Image Processing Toolbox(图像处理工具箱)。
实现逻辑说明
系统按照以下流程逐层执行人脸检测任务:
- 图像获取与初始化:程序启动后调用文件选择对话框,获取用户指定的图像。若用户取消选择,则加载系统内置的示例图像。随后将图像数据转换为双精度浮点型以进行后续计算。
- 光照补偿预处理:计算图像R、G、B三个通道的平均灰度值,以此计算全局平均灰度。通过对各通道进行增益调整,使图像的色彩整体平衡,减少阴影或偏色带来的误检。
- 颜色空间投影:将RGB图像转换至YCbCr空间。在此空间中,肤色特征在Cb(蓝色差)和Cr(红色差)分量上表现出极强的聚类性。
- 肤色阈值分割:应用标准肤色范围(77 ≤ Cb ≤ 127 且 133 ≤ Cr ≤ 173)生成二值遮罩。满足该范围的像素点被标记为1(皮肤),其余为0(背景)。
- 组合形态学处理:
- 执行半径为2的磁盘形结构元素开运算,消除背景中的微小噪点。
- 对闭合区域内部进行孔洞填充,修复由于五官(如黑瞳、阴影)导致的肤色空洞。
- 使用半径为10的磁盘形结构元素进行闭运算,通过膨胀与腐蚀连接邻近的皮肤块。
- 最后通过5x5的中值滤波平滑边缘。
- 连通域统计:利用连通区域标记技术识别图像中所有独立的肤色区域,并计算每个区域的外接矩形、面积、填充率(Extent)和纵横比等统计特征。
- 目标逻辑判定:系统预设了一系列过滤准则:
- 最小面积:区域面积必须大于图像总像素的0.5%,防止误读细碎片。
- 纵横比:高度与宽度的比值需在0.8至2.5之间,符合人类面部的长椭圆特征。
- 填充率:区域面积与外接矩形面积的比值需大于0.3,排除过于细长或零散的干扰物。
- 结果标注与报告:在原图上绘制红色矩形框和黄色标签,同时在命令窗口实时输出图像分辨率、检测到的人脸总数及各目标的精确坐标信息。
关键实现细节
- YCbCr色度建模:该模型相比RGB模型能更好地分离亮度(Y)和色度信息,其肤色分布不受亮度强弱的线性干扰,是肤色检测的经典算法。
- 几何特征筛选公式:
- 纵横比(Ratio) = Height / Width
- 填充率(Extent) = Area / (Width * Height)
通过这两项指标,系统可以有效区分人脸与人体手臂、腿部或其他肤色相近的长条形物体。
- 合成输出:程序最后调用的对象标注功能将检测结果直接压入图像像素,生成可用于汇报或进一步存储的合成图,增强了系统的交互完成度。