本篇博文基于MATLAB实现人脸识别,基于几何特征的算法,对人脸从图像采集、预处理、到特征点定位提取,校验通过;主要利用YCbCr肤色模型,通过连通分量提取算法定位人脸;对RGB图像通过形态学图像处理算法选定区域,再进行细化算法,找到其人脸坐标并提取出来;然后利用PCA与特征脸算法计算特征值完成识别。
拓展学习:https://download.csdn.net/download/m0_38106923/87720473
项目资源下载请参见:MATLAB实现人脸识别【图像处理实战】
实现步骤如下所示:
1)将训练集的每一个人脸图像都拉长一列,将他们组合在一起形成一个大矩阵A。假设每个人脸图像是MxM大小,那么拉成一列后每个人脸样本的维度就是d=M*N大小了。假设有N个人脸图像,那么样本矩阵A的维度就是d*N了。
2)将所有的N个人脸在对应维度上加起来,然后求个平均,就得到了一个“平均脸”。
3)将N个图像都减去那个平均脸图像,得到差值图像的数据矩阵Φ。
4)计算协方差矩阵C=ΦΦT。再对其进行特征值分解。就可以得到想要的特征向量(特征脸)了。
5)将训练集图像和测试集的图像都投影到这些特征向量上了,再对测试集的每个图像找到训练集中的最近邻或者k近邻啥的,进行分类即可。
对于步骤4,涉及到求特征值分解。如果人脸的特征维度d很大,例如256*256的人脸图像,d就是65536了。那么协方差矩阵C的维度就是d*d=65536x65536。对这个大矩阵求解特征值分解如果N不大的话,可以通过求解C’=ΦTΦ矩阵来获得同样的特征向量,计算相似性用的是欧氏距离。
打开示例程序,可选择静态图像识别或实时识别模式,如下图所示:
初次运行需要保存人脸数据到数据库,否则会弹出警告对话框,状态栏显示提示信息,如下图所示:
选择实时识别或静态图像识别,以静态图像为例打开采集到的人脸图像,保存到数据库即可进行识别。
实时模式下,在左侧相机栏和格式栏,选择相机及分辨率,如下图所示:
开始采集人脸图像,如下图所示:
点击抓拍保存人脸图像,将权限勾选框点选,并在文本输入框中输入名字,并点击保存,将人脸数据保存到数据库。此时左侧状态栏会显示保存的信息,如下图所示:
点击返回到识别页面,再次点击开始采集按钮,抓拍人脸图像,进行识别,结果如下图所示:
当数据库中有多个人脸数据时,会根据匹配准确率进行排序,点击上一条/下一条脸部数据匹配按钮可查看匹配准确率。如下图所示:
项目资源下载请参见: MATLAB实现人脸识别【图像处理实战】