基于LBP算法的人脸特征提取与识别系统
项目介绍
本项目是一个在MATLAB环境下实现的轻量级人脸识别系统。系统采用局部二值模式(Local Binary Pattern, LBP)作为核心算法,通过提取人脸图像中的微观纹理特征并结合空间分布信息,实现对人脸身份的有效识别。该系统具有对单调光照变化不敏感、计算复杂度低且特征描述能力强的优点,适用于生物特征认证、安全监控及基础计算机视觉研究。
功能特性
- 自动生成模拟数据集:内置人脸特征模拟器,能够生成具有特定纹理模式、随机噪声及光照差异的样本数据,支持即时运行演示。
- 图像预处理:集成直方图均衡化(Histogram Equalization)技术,用于补偿环境光照影响,增强对比度。
- 分块LBP特征提取:将LBP纹理算子与空间分块策略结合,有效兼顾了图像的局部特征与全局空间位置信息。
- 统计特征融合:通过级联各子块的直方图特征,构建高维特征向量,全面描述人脸的细节差异。
- 相似度匹配识别:采用卡方距离(Chi-Square Distance)作为相似度度量标准,利用最近邻分类器实现快速身份识别。
- 全流程可视化:系统能够实时展示识别过程,包括原始图像显示、LBP特征图转化、样本匹配倾向曲线以及最终的识别报告。
系统要求
- MATLAB R2016b 或更高版本
- Image Processing Toolbox(图像处理工具箱)
- Statistics and Machine Learning Toolbox(统计与机器学习工具箱)
实现逻辑与功能流程
主控程序严格遵循以下识别流程:
- 参数初始化:定义系统规模(5类识别人群,每人6张照片),并设置识别参数,如128x128的统一图像尺寸、16x16的小块划分步长,以及LBP算子的半径(1)和采样点(8)。
- 样本库准备:通过内部算法模拟人脸基本轮廓(如圆形、椭圆及线条特征),并加入高斯随机噪声和亮度偏移,将其划分为训练集与测试集(4:2比例)。
- 特征库构建(训练):
* 逐一读取训练图片,通过直方图均衡化消除光照不均。
* 执行LBP编码,计算每个像素与其邻域的差异。
* 将LBP图分割为不重叠的子块,统计每个子块的频率直方图并合并为全局特征矩阵。
- 识别测试:
* 对待识别样本执行相同的特征提取链路。
* 计算待测特征与训练库中所有已知特征的卡方距离。
* 选取距离最小(相似度最高)的样本标签作为预测身份。
- 性能评估与展示:自动计算识别准确率,并弹窗展示识别报告,对比呈现原图、LBP纹理效果及匹配得分趋势。
关键函数与算法细节说明
1. LBP纹理特征编码算法
算法遍历图像中除边界外的每个像素,将其视为中心点。通过比较中心点与其8个邻域像素的灰度值,若邻域值大于或等于中心值则标记为1,否则为0。这8位二进制数按预设顺序排列并转化为十进制值(0-255),从而生成反映局部纹理结构的二进制描述符图。
2. 空间聚合直方图技术
为引入空间几何信息,图像被划分为多个16x16像素的正方形子块。针对每个子块单独计算其LBP分布直方图,并将每个直方图进行归一化处理。最后将所有子块的归一化直方图按空间顺序拼接成一个长向量,这种方法有效捕捉了五官轮廓的空间拓扑关系。
3. 卡方距离(Chi-Square Distance)度量
考虑到特征向量本质上是直方图概率分布,系统采用了比欧氏距离更适用于直方图比较的卡方距离。通过计算相同索引位频率差值的平方与频率之和的比值,放大微小差异对于识别的影响,增强分类器的判别力。
4. 模拟数据生成机制
系统内部实现了一个基于数学模型的图像生成器,利用meshgrid生成坐标系,在特定区域绘制代表面部特征的几何图案,并动态添加0.1比例的随机噪声和0.2比例的光照偏移,确保即使在没有外部数据集的情况下也能完整演示系统功能。
使用方法
- 启动MATLAB软件。
- 将当前工作目录切换至项目所在文件夹。
- 在命令行窗口直接运行主脚本。
- 程序将自动开始提取特征并在命令窗口输出训练与测试进度。
- 运行结束后,通过输出的“识别结果报表”查看准确率,并在弹出的图形窗口中观察具体的特征匹配细节。