图像处理人脸识别报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一. 设计题目:人脸识别程序设计 (2)
二. 实习目的 (2)
三. 原理描述 (2)
四. 功能实现 (5)
五. 实现方法及调试 (5)
5.1 ImageDib类设计 (2)
5.2继承ImageDib类的FaceDetect类添加 (3)
5.3人脸检测模块实现 (3)
六. 题目运行结果 (20)
七. 参考文献 (21)
一. 设计题目:基于vc++的人脸识别
二. 实习目的
1.通过本次实习初步了解了解人脸识别技术的设计原理。
2.通过使用visual c++语言编写数字图像处理的一些算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力。
3.通过实习锻炼发现问题与解决问题的能力。
三. 原理描述
PCA算法的原理:
PCA(主成分分析)算法是人脸识别中比较新的一种算法,该算法的优点是识别率高,识别速度快。
1.1 PCA原理
令x为表示环境的m维随机向量。假设x均值为零,即:
E[x]=O.
令w表示为m维单位向量,x在其上投影。这个投影被定义为向量x和w 的内积,表示为:
而主成分分析的目的就是寻找一个权值向量w使得表达式E[y2]的值最大化:
根据线性代数的理论,可以知道满足式子值最大化的训应该满足下式:
即使得上述式子最大化的w是矩阵Cx的最大特征值所对应的特征向量。
1.2 主成分的求解步骤
在PCA中主要的是要求出使得方差最大的转化方向,其具体的求解步骤如下:
(1)构建关联矩阵:Cx=E[x*xT],Cx∈Pn*n.
在实际应用中,由于原始数据的数学期望不容易求解,我们可以利用下式来近似构造关联矩阵:
(其中x1,x2,…,xN,是各个原始灰度图像所有象素点对应的向量,N是原始图像的个数)
(2)先计算出Cx的各个特征值
(3)把特征值按大小排序
(4)计算出前m个特征值对应正交的特征向量构成w。
(5)将原始数据在特征向量w上进行投影,即可获得原始图像的主特征数据。
1.3 主成分的求解方法
通过上面的分析我们可以知道,对于主成分分析的问题最后转化为求解协方差矩阵的特征值和特征向量的问题,主成分的正交化分解的算法或求XXT特征值问题的算法常用的有雅可比方法和NIPALS方法。
2. Eigenface算法
在利用PCA进行特征提取的算法中,特征脸方法(Eigenface)是其中的一个经典算法。特征脸方法是从主成分分析导出的一种人脸识别和描述技术。特征脸方法就是将包含人脸的图像区域看作是一种随机向量,因此可以采用K-L变换获得其正交K-L基底。对应其中较大特征值的基底具有与人脸相似的形状,因此又称为特征脸。利用这些基底的线性组合可以描述、表达和逼近人脸图像,因此可以进行人脸识别与合成。识别过程就是将人脸图像映射到由特征脸构成的子空间上,比较其与己知人脸在特征空间中的位置,具体步骤如下:
(1)初始化,获得人脸图像的训练集并计算特征脸,定义为人脸空间,存储在模板库中,以便系统进行识别;
(2)输入新的人脸图像,将其映射到特征脸空间,得到一组关于该人脸的特征数据;
(3)通过检查图像与人脸空间的距离判断它是否是人脸;
(4)若为人脸,根据权值模式判断它是否为数据库中的某个人,并做出具体的操作。
2.1 计算特征脸
设人脸图像I(x,y)为二维N*N灰度图像,用N维向量R表示。人脸图像训练集为{Ri|i=1,…,M},其中M为训练集中图像总数,这M幅图像的平均向量为:
每个人脸Ri与平均人脸ψ的差值向量是:
训练图像的协方差矩阵可表示为:
C=AAT.
其中,A=[φ1,…φM].
特征脸有协方差矩阵C的正交特征向量组成。对于N*N人脸图像,协方差矩阵C的大小为N2*N2,对它求解特征值和特征向量是很困难的。一种取而代之的方法是令L=ATA.
即协方差矩阵的转置阵,则可以知道此矩阵是M*M(M是训练人脸的数量)的一个较小的矩阵。首先计算M*M矩阵L的特征向量vi(l=l,…,M),则矩阵C的特征向量ui(l=1,…,M)由差值图像φi(i=1,…,M)与vi(l=l,…,M)线性组合得到:U=[u1,…,uM]=[[ψ1,…,ψM]T][v1.…,vM]。实际上,m(m 四.功能实现 基于vc++利用数字图像模式识别技术实现对人脸的自动检测与特征点定位。整个识别过程包括人脸相似度计算、人脸轮廓提取、人脸定位、脸内轮廓提取。 一般来说,人脸识别系统包括图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入一般是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。 我们所设计的程序的特点是程序段简明易懂,程序运行成功率高,识别效果好。只要图片质量达到基本清晰度,本程序均可准确无误的将图片中的人脸区域框取出来,为后续的识别鉴别工作提供帮助。 五. 实现方法及调试 1.我们先用VC++建立1个.exe的MFC工作空间,通过对其配置和添加定义一个新的类ImageDib,使VC++能够对数字图像进行处理,使这个工作空间适应我们实现人脸识别程序的要求。 ImageDib.h程序代码: class ImageDib {public: //成员变量 unsigned char * m_pImgData; //图像数据指针 LPRGBQUAD m_lpColorTable; //图像颜色表指针 int m_nBitCount;//每像素占的位数