搜档网
当前位置:搜档网 › 基于MATLAB的人脸识别

基于MATLAB的人脸识别

基于MATLAB的人脸识别
基于MATLAB的人脸识别

图像识别

题目:基于MATLAB的人脸识别

院系:计算机科学与应用系

班级:

姓名:

学号:

日期:

目录

引言 (1)

1 人脸识别技术 (2)

1.1人脸识别的研究内容 (2)

1.1.1人脸检测(Face Detection) (2)

1.1.2人脸表征(Face Representation) (2)

1.2几种典型的人脸识别方法 (3)

1.2.1基于几何特征的人脸识别方法 (3)

1.2.2基于K-L变换的特征脸方法 (4)

1.2.3神经网络方法 (4)

1.2.4基于小波包的识别方法 (5)

1.2.5支持向量机的识别方法 (5)

2 人脸特征提取与识别 (5)

2.1利用PCA进行特征提取的经典算法——Eigenface算法 (6)

2.2 PCA人脸识别流程 (6)

2.3特征向量选取 (8)

2.4距离函数的选择 (9)

2.5 基于PCA的人脸识别 (9)

MATLAB人脸识别程序 (10)

3 MATLAB软件程序编写 (10)

3.1.创建图片数据库 (10)

3.2 主程序 (11)

3.3最终程序结果 (12)

4 心得与体会 (12)

参考文献 (13)

引言

随着社会的发展及技术的进步,社会各方面对快速高效的自动身份验证的需求可以说无处不在,并与日俱增。例如,某人是否是我国的居民,是否有权进入某安全系统,是否有权进行特定的交易等。尤其是自2001年美国“9.1l”恐怖袭击发生以来,如何在车站、机场等公共场所利用高科技手段,迅速而准确地发现并确认可疑分子成了目前世界各国在反恐斗争中普遍关注的问题。为此,各国都投入大量人力、物力研究发展各类识别技术,使得生物特征识别技术得到了极大的发展。生物特征识别技术主要包括:人脸识别、虹膜识别、指纹识别、步态识别、语音识别、笔迹识别、掌纹识别以及多生物特征融合识别等。人类通过视觉识别文字,感知外界信息。在客观世界中,有75%的信息量都来自视觉,因此让计算机或机器人具有视觉,是人工智能的重要环节。由于生物特征是人的内在属性,具有很强的稳定性和个体差异性,因此是身份验证最理想的依据。与虹膜、指纹、基因、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加直接、方便、友好,易于为用户所接受,并且通过人脸的表情、姿态分析,还能获得其它识别系统难以得到的一些信息。

人脸识别技术在国家重要机关及社会安防领域具有广泛用途。例如:公安系统的罪犯识别、信用卡验证、医学、档案管理、视频会议、人机交互系统等身份识别和各类卡持有人的身份验证。同其他人体生物特征(如:指纹、掌纹、虹膜、语音等)识别技术相比,人脸识别技术的隐性最好,人脸识别系统更直接、友好,是当今国际反恐和安防最重视的科技手段和攻关标志之一。虽然人类能毫不费力地识别出人脸及表情,但对人脸的机器自动识别确实一个难度极大的课题,它涉及到模式识别、图像处理及生理、心理学等诸多方面的知识。人脸识别技术的研究虽然己经取得了一定的可喜成果,但在实际应用中仍存在着许多严峻的问题。人脸的非刚体性、姿态、表情、发型以及化妆的多样性都给正确识别带来了困难,要让计算机像人一样方便地识别出大量的人脸,尚需不同科学研究领域的科学家共同不懈的努力。

1 人脸识别技术

人脸因人而异,绝无相同,即使一对双胞胎,其面部也一定存在着某方面的差异。虽然人类在表情、年龄或发型等发生巨大变化的情况下,可以毫不困难地由脸而识别出某一个人,但要建立一个能够完全自动进行人脸识别的系统却是非常困难的,它牵涉到模式识别、图像处理、计算机视觉、生理学、心理学以及认知科学等方面的诸多知识,并与基于其他生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。与指纹、视网膜、虹膜、基因、掌形等其他人体生物特征识别系统相比,人脸识别系统更加直接、友好,使用者无任何心理障碍,并且通过人脸的表情和姿态分析,还能获得其他识别系统难以得到的一些信息。20世纪90年代以来,随着需要的剧增,人脸识别技术成为一个热门的研究话题。

1.1人脸识别的研究内容

人脸识别(Face Recognition)是利用计算机对人脸图像进行特征提取和识别的模式识别技术。在二十世纪七十年代初,对人脸识别的研究涉及心理学神经科学。其直接目的是要搞清楚人是如何对人脸进行识别的。七十年代中期以后,开展了用数学、物理和技术的方法对人脸自动识别的研究。

人脸识别一般可描述为:给定静止图像或动态图像序列,利用已有的人脸图像数据库来确认图像中的一个或多个人。从广义上来说,计算机人脸识别的研究内容大概可以分为以下五个方面。

1.1.1人脸检测(Face Detection)

此过程包括人脸检测(Detection)、人脸定位(Location)和人脸跟踪(Tracking)。所谓人脸检测,就是给定任意图像,确定其中是否存在人脸,如果有,给出人脸的位置、大小等状态信息。人脸跟踪指在一纽连续静态图像所构成的动态视频中实时地检测人脸。人脸检测主要受到光照、噪声、姿念以及遮挡等因素的影响,人脸检测的结果直接关系到后面两个过程的准确性。近年来,人脸检测和跟踪开始成为独立的研究课题受到关注。

1.1.2人脸表征(Face Representation)

人脸表征就是提取人脸的特征,是将现实空间的图像映射到机器空间的过程。人脸的表示具有多样性和唯一性,这其实就是人脸共性和特性之间的关系问题:只有保持这种多样性和唯一性,才能保证人脸图像的准确描述和识别。

人脸图像信息数据量巨大,为提高检测和识别的运算速度以及提高图像传输和匹配检索速度,必须对图像进行数据压缩,降低向量维数,即用尽可能少的数据表示尽可能多的信息。人脸的表征在提取人脸特征的同时,也实现了对原始图像数据的降维。

1.2几种典型的人脸识别方法

对人脸识别方法的研究主要有两大方向:一是基于人脸图像局部特征的识别方法;二是基于人脸图像整体特征的识别方法。基于人脸图像局部特征的识别通常抽取人脸器官如眼睛、眉毛、鼻子和嘴等器官的位置,尺度以及彼此间的比率作为特征。进一步地可以用几何形状拟合人脸器官,从而以几何参数作为描述人脸的特征。由于此类方法通常要精确地抽取出位置、尺度、比率或几何参数作为描述人脸的特征,因此对人脸图像的表情变化比较敏感。同时,人脸器官分割的精确度也对人脸特征的提取有一定的影响。另外,该类方法并没有充分利用到人脸图像本身具有的获度信息,该方向已经不是人脸识别技术发展的主流方向。基于人脸图像整体特征的人脸识别方法由于不需要精确提取人脸图像中部件的具体信息,而且可以充分利用到人脸图像本身具有的灰度信息,因此可获得更好的识别性能。目前,绝大部分关于人脸识别方法的文章都是基于人脸图像整体特征的,主要有特征脸法、最佳鉴别向量集法,贝叶斯法,基予傅立叶不变特征法,弹性图匹配法,其他相关方法有线性子空间法,可变形模型法和神经网络法。这些方法中有的侧重于表述人脸图像的特征提取,如弹性图匹配法和傅立叶不变特征法;有的则侧重于分类,如最佳鉴别向量集法、贝叶斯法和神经网络法;而有的则侧重于人脸图像重构,如特征脸法和线性子空间法。所有这些基于人脸图像整体特征的人脸识别方法均取得了一定的识别性能。

1.2.1基于几何特征的人脸识别方法

基于几何特征的人脸识别方法主要源于人脸识别的初期研究阶段。这种方法是以人脸各个器官和几何关系为基础进行算法设计。对于不同人来说,脸上的各个器官,如眼睛、鼻子、嘴巴以及整个脸部的轮廓具有不同的形状、大小、相对位置和分布情况。

在基于几何特征的人脸识别方法中,可以用一个矢量来表示提取出来的几何参数。如果要获得一个准确、稳定和可靠的识别结果,就要求这些被选出的几何特征参数包含足够丰富的辨识人脸的信息,且能反映不同人脸之间的差别。也就是说对这些矢量要求具有较高的模式分类能力,同时还要有一定的稳健性,能够消除由于时间变迁、光照变化等其他干扰因素所带来的影响。具体来沈,这些几何参数一般包括人脸上两个指定特征点之间的欧式距离、边缘曲率、角度等等。

在实际应用过程中,基于几何特征的人脸识别方法存在着两个方面的问题:

(1)如何快速、准确地检测出入脸的重要标志点依然是一个没有很好解决的问题。脸上的重要标志点,如瞳孔、嘴巴和鼻子,它们在脸上的位置是进行脸部几何参数计算和测量的基准。

(2)脸部几何特征在人脸辨识中的有效性问题,即脸部几何特征能够提供多少可供识别的信息量。

虽然各人脸的器官在形状、大小及分布上各不相同,但是这种器官上的差异性更多是体现在某些细微的感觉意义上。例如眼睛显得比较小、鼻子显得比较宽,以及皮肤的纹理、颜色上的差异等等。显然,这些特征中的一部分是难以精确测量出来或者是不能用几何参数准确描述的。所以仅靠增加脸上几何参数的数目来提高人脸识别率是不太现实的。由于进一步改善测量精度是十分困难的,因而通过增加脸部几何参数的数量来改善识别率结果,其影响是极小的。因此,基于少量人脸几何特征进行大规模人脸辨识的可靠性是不容乐观的。

1.2.2基于K-L变换的特征脸方法

K-L变换是图像压缩的一种最优正交变换,人们将它应用于特征提取,形成了子空间法模式识别的基础。将K-L变换用于人脸识别,需要假设人脸处于低维的线性空间,不同人脸具有可分性。高维的图像空间经过K-L变换后得到一组新的正交基,保留其中重要的正交基从而形成了低维的人脸空间。

若将所有子空间的正交基排列成图像阵列,则正交基呈现人脸的形状,因此这些正交基也被称为特征脸。选择那些正交基形成的子空间则有不同的考虑,与较大特征值对应的一些正交基(也称主分量)能够表达人脸的大体形状,而具体细节需要那些小特征值对应的特征向量(也称次分量)来加以补充描述,因此低频成分用主分量表示,高频分量用次分量表示。采用主分量作为新的正交空间的正交基的方法称为主分量(Principal Component Analysis,简称PCA)方法。

K-L变换在90年代初受到了很大的重视,实际用于人脸识别取得了很好的效果,一般库德大小为100幅左右,识别率在70%-100%之间不等,这主要取决于人脸库图像的质量。

从压缩能量的角度来看,K-L变换是最优的,变换后的低维空间对于人脸有很好的表达能力,然而这并不等同于对不同人脸具有较好的判别能力。选择训练样本的散布矩阵作为K-L变换的生成矩阵,其最大特征向量反映了该样本集合的最大分布的方向,但这是图像统计方法,而不是人脸统计方法。它查找的是图像之间所有的差异,并根据这些差异来确定不同人脸间的距离,而不管这些差异是由于光线、发型或背景的改变引起的,还是属于人脸本身的内在差异,因此特征脸的方法用于人脸识别存在理论的缺陷。研究表明,特征连的方法随着光线、角度以及人脸的尺寸的引入而识别率急剧下降。主分量的方法使得变换后的表达能力最佳,次分量的方法考虑了高频的人脸区分能力,但是由于外在因素带来图像差异和人脸本身带来的差异对K-L变换而言是不加任何区分的,因此,如何选择正交基并不根本解决问题。改进的一个思路是针对干扰所在,对输入图像作规范化处理,包括输入图像的均值方差归一化,人脸尺寸归一化。另一种改进是考虑到局部人脸图像受到外在干扰相对较小的情况,除了计算特征脸之外,还利用K.L变换计算出特征眼、特征嘴等。将局部特征向量加权进行匹配得到一些好的效果。

总之,特征脸方法是一种简单、快速、使用的基于变换系数的算法,但由于它在本质上依赖于训练集合测试集图像的灰度相关性,而且要求测试图像与训练集比较接近,所以存在着很大局限。

1.2.3神经网络方法

人工神经网络是一种以大量的处理单元(神经元)为节点,处理单元之间实现加权值互连的拓扑结构。人工神经网络中的处理单元是人类大脑神经单元的简化。处理单元之间的互连则是轴突、树突这些信息传递路径的简化。根据不同的应用场合,现已研究出较多的神经元网络模型及其动态过程的算法。

人工神经元通常采用非线性的作用函数,当大量神经元连接成一个网络并动态运行时,则构成了一个非线性动力学系统。人工神经网络具有自组织性、高维性、模糊性、分布性和冗余性等等特点,较冯.诺依曼体系的计算机更适合模拟人类大脑的思维机理。但总的来说,由于人类对自身思维机理认识的不足,所以对人工神经元作了极度的简化,这种模拟表现为极其肤浅和简单。

很多脸部识别系统都采用了多层感知机作为人工神经网络的基本结构。多层感知机由

几层全互连的非线性神经组成。神经元之间有权值连接,权值包含了训练模式空间的特征。训练过程就是调整权值的过程,最常用的算法就是BP法则。

多层感知机的输入形式有很多种,最简单的就是将整个人脸图像作为输入层,也可以对人脸图像进行采样,然后用低分辨率图像作为输入层。

由此可以看出,人工神经网络有着与Eigenface方法非常相似的表达方法。

一般来说,BP算法的收敛速度非常缓慢,学习过程可能需要对整个训练集进行上千次反复迭代运算,这是神经网络实际应用的一个问题。此外,BP算法以误差梯度下降的方式达到极小值,但在实际应用中,容易陷入到局部极小中,无法得到全局最优解,这也是有待解决的一个问题。

1.2.4基于小波包的识别方法

基于小波包的面部识别方法首先对一幅人脸图像进行小波包分解。因为小波包分解得到的不同频带包含有不同的人脸信息,所以从每一个小波包中可以提取出不同的面部特征。对于小波包分解得到的离散逼近稀疏,Garcai进一步将它分解成三个部分,分别是边界区、上半部分和下半部分,然后就可以分别计算这三个区域的均值和方差,加上另外15个离散细节区域的方差,组成一个包含有21个分量的特征向量。小波包分解是一种多分辨率分析方法,能够提供良好的面部纹理描述,所以有利于提取面部特征。

1.2.5支持向量机的识别方法

支持向量机(SupportVectorMachine,SVM)起源于统计学习理论,它研究如何构造学习机,实现模式分类问题。其基本思想是通过非线性变换将输入空间变换到一个高维空间,在高维空间求取最优线性分类面,以解决那些线性不可分的分类问题。而这种非线性变换是通过定义适当的内积函数(即核函数)来实现的。SVM技术中核函数及其参数的选取难度较大。由于它基于结构风险最小化原理,而不是传统统计学的经验风险最小化,因而表现出很多优于已有方法的性能。由于SVM的训练需要大量的存储空间,非线性SVM分类器需要较多的支持向量,所以速度很慢。

2 人脸特征提取与识别

PCA方法将包含人脸的图像区域看作随机向量,因此可采用K-L变换得到正交K—L 基,对应其中较大特征值的基具有与人脸相似的形状,因此又被称为特征脸。利用这些基的线性组合可以描述、表达和逼近人脸图像,所以可进行人脸识别与合成。识别过程就是将人脸图像映射到由特征脸组成的子空间上,并比较其在特征脸空间中的位置。PCA方法认为图像的全局结构信息对于识别最重要,将图像看作一个矩阵,计算矩阵的特征值和对应特征向量进行识别。这种方法利用图像的总体信息,不从图像中提取出眼、嘴、鼻等几何特征,算法较简单且具有较高的识别率。

主成分分析法(PCA)是模式识别判别分析中最常用的一种线性映射方法,该方法是根据样本点在多维模式空间的位置分布,以样本点在空间中变化最大方向,即方差最大的方向,作为判别矢量来实现数据的特征提取与数据压缩的。从概率统计观点可知,一个随机变量的方差越大,该随机变量所包含的信息就越多,如当一个变量的方差为零时,该变量为一

常数,不含任何信息。

2.1利用PCA 进行特征提取的经典算法——Eigenface 算法

在利用PCA 进行特征提取的算法中,特征脸方法(Eigenface)是其中的一个经典算法。特征脸方法是从主成分分析导出的一种人脸识别和描述技术。特征脸方法就是将包含人脸的图像区域看作是一种随机向量,因此可以采用K-L 变换获得其正交K-L 基底。对应其中较大特征值的基底具有与人脸相似的形状,因此又称为特征脸。利用这些基底的线性组合可以描述、表达和逼近人脸图像,因此可以进行人脸识别与合成。识别过程就是将人脸图像映射到由特征脸张成的子空间上,比较其与己知人脸在特征空间中的位置,具体步骤如下:

(1)初始化,获得人脸图像的训练集并计算特征脸,定义为人脸空间,存储在模板库中,以便系统进行识别;

(2)输入新的人脸图像,将其映射到特征脸空间,得到一组关于该人脸的特征数据;

(3)通过检查图像与人脸空间的距离判断它是否是人脸;

(4)若为人脸,根据权值模式判断它是否为数据库中的某个人,并做出具体的操作。

2.2 PCA 人脸识别流程

完整的PCA 人脸识别应该包括以下四个步骤:人脸图像预处理;读入人脸库,训练成特征子空间;把训练图像和测试图像投影到上一步骤得到的子空间上;选择一定的距离函数进行识别。下面详细描述整个过程:

(1)读入人脸库

归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。设归一化后的图像是N ×N 的,按列相连就构成2N 维向量,可看作是2N 维空间中的一个点,可以通过K-L 变换用一个低维子空间描述这个图像。

(2)计算K-L 变换的生成矩阵,并求取图像的特征值和特征向量

假设人脸图像库中有N 幅人脸图像,用向量表示为N X X X ?,21,(向量维数设为L ),其人脸平均图像如式(2-1)所示:

∑==N i i ave X

N X 11 (2-1)

由此可得到每幅图像的均差,如式(2-2)所示:

ave i i X X X -=', N i ,,2,1?= (2-2) 这样可计算协方差矩阵,如式(2-3)所示:

T i N i i

X X N C )(1'1'

∑== (2-3)

计算矩阵C 的特征值k λ和对应特征向量k μ。

但是在实际计算中,矩阵C 的大小是22N N ?,即使对尺寸较小的图像计算量还是很大。为了减小运算量,现将每幅图像的均差形成一个矩阵,如式(2-4)所示:

],,[''2'1'N X X X X ,?= (2-4) 则式(2-3)可以写成式(2-5):

T X X N

C )(1''= (2-5) 因此,根据线性代数理论,将计算T X X )(''的特征值j λ和对应特征向量j Φ的问题转化为求'')(X X T 的特征值j λ和对应的特征向量'

j Φ的问题。'')(X X T 的大小仅为N ×N 远

远小于22N N ?,故简化了计算。在求出'

j Φ后,j Φ可以通过式(2-6)得到:

''1j j

j X ΦλΦ= (2-6) (3)把训练图像和测试图像投影到特征空间

由特征向量所形成的向量空间可表示人脸图像的主要特征信息,将人脸图像库中所有N 个图像的均差向此空间投影,得到各自的投影向量N Y Y Y ,,,21?,如式(2-7)和(2-8)所示:

N i y y y Y Mi i i T i ,,2,1],,,[)(21?=?= (2-7)

M j X y j T j ,,2,1,)(

'?==μμ (2-8) 对于待识别人脸图像I ,计算其与k 差的投影向量,如式(2-9)所示:

M j X I p ave i T j j ,,μ?=-=,2,1)()( (2-9) 再与人脸图像库中N 个人脸图像对应的投影向量N Y Y Y ,,,21?比较,按照一定的距离准则完成识别。

(4)比较测试图像和训练图像,确定待识别样本类别

这里可以采用多种不同的分类器进行分类:1L 范式、2L 范式、最小距离、角度以及Mahalanobis 距离等。

MATLAB 特征脸程序实现

m = mean(T,2); %求样本的平均向量

Train_Number = size(T,2);

%%%%计算每个样本与平均向量的差向量

A = [];

for i = 1 : Train_Number

temp = double(T(:,i)) - m; %计算训练集中每幅图像的均差 Ai = Ti - m

A = [A temp];

end

L = A'*A; %计算协方差矩阵

[V D] = eig(L); % 求特征向量和特征值

2.3特征向量选取

上面所创建的用于投影的特征脸子空间使用的是所有r 个非零的特征值对应的特征向量。虽然协方差矩阵C 最多有对应于非零特征值的N 个特征向量,且r ≤N ,但是通常情况下,r 仍然会太大,而根据应用的需求,并非所有的i μ,都有保留意义。而特征空间投影的计算速度是直接与创建子空间所用的特征向量的数目相关,若考虑到计算时间等因素,可以适当减去一些信息量少的特征向量,且去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。下面将讨论几种不同的特征值选择方法:

(1)标准的特征空间投影:所有r 个对应于非零特征值的特征向量均被用于创建特征脸子空间。但是该方法在r 值较大时,计算速度会较慢,且不利于分类。

(2)为进一步压缩特征向量和减小运算量,将特征值按大小顺序排序,忽略小特征值所对应的特征向量,即由下式得到U 。设r λλλ≥?≥≥21,r 为'X 的秩,r ≤N ,T M u u u U ],,,[21?=,则压缩后的特征向量集如式(2-10)所示:

T M u u u U ],,,[21?=,M

(3)保持前面的z —1个特征向量:将特征值按照降序排列,同时保留最前面的z 一1个特征向量,其中z 为训练图像的类别数。

(4)按照计算信息量来确定维数:不同于前面固定的丢弃一些特征向量,该方法采用保证剩余的特征向量所包含的信息与总的信息量相比大于一定的阈值e ,e 的值通常取为0.9,可依照式(2-11)计算:

∑∑===

k j j i j j i e 11λ

λ

(2-11)

MATLAB 分类和提取特征值程序实现

% 按照特征值>1来提取特征向量

L_eig_vec = [];

for i = 1 : size(V,2)

if( D(i,i)>1 )

L_eig_vec = [L_eig_vec V(:,i)];

end

end

%%%%%%%计算协方差矩阵的特征向量

% 降维

Eigenfaces = A * L_eig_vec; % A: centered image vectors

2.4距离函数的选择

图像被投影到特征空间中,剩下的任务就是如何判别这些图像的相似性。通常有两种方法来判别:一种是计算在N 维空间中图像间的距离,另一种是测量图像间的相似性。当测量距离时,我们希望距离尽可能地小,一般选择与测试图像最近的训练图像作为它的所属的类别。而测量相似性的时候,则希望图像尽可能地相似,也就是说具有最大的相似性的训练图像类别是测试图像所属的类别。在此介绍几种计算方法:

(1)1L 范式

将像素间的绝对值的差值相加,也称和范式。1L 范式距离公式如式(2-12)所示:

∑=-=k i i i y x y x L 11),( (2-12)

(2)2L 范式 将像素间的平方差异相加。也称为欧几里德距离。2L 范式距离公式如式(2-13)所示: ∑=-=

k i i i y x y x L 122)(),( (2-13) (3)最小距离

首先计算各类训练样本的平均值,接下来的距离比较和上面的2L 范式完全相同。这样分类时每类只需要比较一次,减少了计算量。样本x 与第i 类的距离定义如式(2-14)所示: )()()(i T i i x x x d μμ--= (2-14) 其中i μ为第i 类所有样本的平均值。

2.5 基于PCA 的人脸识别

基于PCA 算法的人脸识别过程由训练阶段和识别阶段两个阶段组成。在训练阶段,每个已知人脸X 映射到特征脸组成的子空间上,得到N 维向量),2,1(N i Y i ?=。

距离阈值c θ定义如式(2-15)所示: }max{21,k k

j j c Y Y -=θ (j,k=1,2,…,N ) (2-15)

在识别的时候,首先把待识别的图像映射到特征脸空间,得出向量P 及其与每个人脸集的距离i e (i=1,2,3,…,N ),采用欧式距离法进行人脸识别,分类规则为:

(1)若i e >c θ,则输入图像不是人脸图像;

(2)若i e c θ,则输入图像包含未知人脸;

(3)若i e

MATLAB 人脸识别程序

ProjectedImages = [];

Train_Number = size(Eigenfaces,2);

for i = 1 : Train_Number

temp = Eigenfaces'*A(:,i); % 将每个样本投影到特征空间

ProjectedImages = [ProjectedImages temp];

end

%%%%%%%%%%%从测试图片中提取PCA 特点

InputImage = imread(TestImage);

temp = InputImage(:,:,1);

[irow icol] = size(temp);

InImage = reshape(temp',irow*icol,1);

Difference = double(InImage)-m;

ProjectedTestImage = Eigenfaces'*Difference; % 将待测样本投影到特征空间

%%%%%%%按照欧式距离取最小的原则得出匹配的人脸

Euc_dist = [];

for i = 1 : Train_Number

q = ProjectedImages(:,i);

temp = ( norm( ProjectedTestImage - q ) )^2;

Euc_dist = [Euc_dist temp];

end

[Euc_dist_min , Recognized_index] = min(Euc_dist);

OutputName = strcat(int2str(Recognized_index),'.jpg');

3 MATLAB 软件程序编写

3.1.创建图片数据库

function T = CreateDatabase(TrainDatabasePath)

%%%%%%读取训练库路径,并统计样本个数

TrainFiles = dir(TrainDatabasePath);

Train_Number = 0;

for i = 1:size(TrainFiles,1)

if

not(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..')|strcmp(TrainFiles(i).name,'Thum bs.db'))

Train_Number = Train_Number + 1; % Number of all images in the training database end

end

%%%%%%%%将2维图像转化为一维向量

T = [];

for i = 1 : Train_Number

% I have chosen the name of each image in databases as a corresponding number. However, it is not mandatory!

str = int2str(i);

str = strcat('\',str,'.jpg');

str = strcat(TrainDatabasePath,str);

img = imread(str);

img = rgb2gray(img);

[irow icol] = size(img);

temp = reshape(img',irow*icol,1); % Reshaping 2D images into 1D image vectors

T = [T temp]; % 'T' grows after each turn

end

3.2 主程序

clear all

clc

close all

% You can customize and fix initial directory paths

TrainDatabasePath = uigetdir(strcat(matlabroot,'\work'), 'Select training database path' );%设置训练集路径

TestDatabasePath = uigetdir(strcat(matlabroot,'\work'), 'Select test database path');

prompt = {'Enter test image name (a number between 1 to 10):'};

dlg_title = 'Input of PCA-Based Face Recognition System';

num_lines= 1;

def = {'1'};

TestImage = inputdlg(prompt,dlg_title,num_lines,def);

TestImage = strcat(TestDatabasePath,'\',char(TestImage),'.jpg');

im = imread(TestImage);

T = CreateDatabase(TrainDatabasePath);

[m, A, Eigenfaces] = EigenfaceCore(T);

OutputName = Recognition(TestImage, m, A, Eigenfaces);

SelectedImage = strcat(TrainDatabasePath,'\',OutputName);

SelectedImage = imread(SelectedImage);

figure;

subplot(1,2,1);imshow(im);

title('Test Image');

subplot(1,2,2);imshow(SelectedImage);

title('Equivalent Image');

str = strcat('Matched image is : ',OutputName);

disp(str)

3.3最终程序结果

TrainDatabase里存放了20张图片,TestDatabase里存放了10张图片,所有图片格式和分辨率都相同。运行主程序时,先设置好TrainDatabase的路径,再设置好TestDatabase的路径,之后还会弹出你想要匹配的图片号(1-10),最终会显示出Test Image和在TrainDatabase里匹配出来Equivalent Image。如果所要匹配的图片和TrainDatabase里的图片相同,则匹配出来的图片则相同(如图4-5-1);如果所要匹配的图片在TrainDatabase里没有,则搜索出最为相近的图片(如图4-5-2)。

图4-5-1

图4-5-2

4 心得与体会

通过为期两周的MATLAB课程设计,使我对MA TLAB的基本指令的用法有了初步了解,将之前停留于书本上的知识转化为真正的实践,并通过不断调试和修改得以实现人脸识别的功能,内心是无比的欣喜和喜悦。

这期间认真学习了PCA等算法,从中体会到自己线性代数的基本知识已有些遗忘和不太扎实,将课本中未曾认真看过的知识再次夯实一下,使得自己在看这些算法时就不那么吃力。

总之,从这次课程设计中我学到了很多东西,如学习知识要在注重基础的前提下才能有更大的提高,否则就如空中楼阁,经不起推敲。

参考文献

1 黄文梅,熊佳林,杨勇编著.信号分析与处理——MATALB语言及应用.国防科技大学出版社,2000

2 钱同惠编著.数字信号处理.北京:机械工业出版社,2004

3 姚天任,江太辉编著.数字信号处理.第2版.武汉:武汉理工大学出版社,2000

4 谢平,林洪彬,王娜.信号处理原理及应用.机械工业出版社,2004

5 刘敏,魏玲.Matlab.通信仿真与应用.国防工业出版社,2005

6 楼顺天.基于Matlab7.x 的系统分析与设计.西安电子科技大学,2002

7孙洪.数字信号处理.电子工业出版社,2001

基于matlab的人脸识别源代码

function varargout = FR_Processed_histogram(varargin) %这种算法是基于直方图处理的方法 %The histogram of image is calculated and then bin formation is done on the %basis of mean of successive graylevels frequencies. The training is done on odd images of 40 subjects (200 images out of 400 images) %The results of the implemented algorithm is 99.75 (recognition fails on image number 4 of subject 17) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @FR_Processed_histogram_OpeningFcn.,.. 'gui_OutputFcn', @FR_Processed_histogram_OutputFcn.,.. 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

基于matlab程序实现人脸识别

基于m a t l a b程序实现 人脸识别 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

基于m a t l a b程序实现人脸识别 1.人脸识别流程 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显着不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。 人脸识别流程图 2.人脸识别程序 (1)人脸和非人脸区域分割程序 function result = skin(Y,Cb,Cr) %SKIN Summary of this function goes here % Detailed explanation goes here a=; b=; ecx=; ecy=; sita=; cx=; cy=; xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; %如果亮度大于230,则将长短轴同时扩大为原来的倍 if(Y>230) a=*a; b=*b; end %根据公式进行计算 Cb=double(Cb); Cr=double(Cr);

t=[(Cb-cx);(Cr-cy)]; temp=xishu*t; value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2; %大于1则不是肤色,返回0;否则为肤色,返回1 if value>1 result=0; else result=1; end end (2)人脸的确认程序 function eye = findeye(bImage,x,y,w,h) %FINDEYE Summary of this function goes here % Detailed explanation goes here part=zeros(h,w); %二值化 for i=y:(y+h) for j=x:(x+w) if bImage(i,j)==0 part(i-y+1,j-x+1)=255; else part(i-y+1,j-x+1)=0; end end end [L,num]=bwlabel(part,8); %如果区域中有两个以上的矩形则认为有眼睛 if num<2 eye=0;

人脸识别系统设计与仿真 基于matlab的(含matlab源程序)版权不归自己 交流使用

人脸识别系统设计与仿真基于matlab的(含matlab源程序) 交流使用参考后自行那个删除后果自负 目录 第一章绪论 (2) 1.1 研究背景 (2) 1.2 人脸图像识别的应用前景 (3) 1.3 本文研究的问题 (4) 1.4 识别系统构成 (5) 1.5 论文的内容及组织 (7) 第二章图像处理的Matlab实现 (8) 2.1 Matlab简介 (8) 2.2 数字图像处理及过程 (8) 2.2.1图像处理的基本操作 (8) 2.2.2图像类型的转换 (9) 2.2.3图像增强 (9) 2.2.4边缘检测 (10) 2.3图像处理功能的Matlab实现实例 (11) 2.4 本章小结 (15) 第三章人脸图像识别计算机系统 (16) 3.1 引言 (16) 3.2系统基本机构 (17)

3.3 人脸检测定位算法 (18) 3.4 人脸图像的预处理 (25) 3.4.1 仿真系统中实现的人脸图像预处理方法 (26) 第四章基于直方图的人脸识别实现 (29) 4.1识别理论 (29) 4.2 人脸识别的matlab实现 (29) 4.3 本章小结 (30) 第五章总结 (31) 致谢 (32) 参考文献 (33) 附录 (35)

第一章绪论 本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。 1.1 研究背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己

(完整word版)基于MATLAB的人脸识别

图像识别 题目:基于MATLAB的人脸识别 院系:计算机科学与应用系 班级: 姓名: 学号: 日期:

目录 引言 (1) 1 人脸识别技术 (2) 1.1人脸识别的研究内容 (2) 1.1.1人脸检测(Face Detection) (2)

1.1.2人脸表征(Face Representation) (2) 1.2几种典型的人脸识别方法 (3) 1.2.1基于几何特征的人脸识别方法 (3) 1.2.2基于K-L变换的特征脸方法 (4) 1.2.3神经网络方法 (4) 1.2.4基于小波包的识别方法 (5) 1.2.5支持向量机的识别方法 (5) 2 人脸特征提取与识别 (5) 2.1利用PCA进行特征提取的经典算法——Eigenface算法 (6) 2.2 PCA人脸识别流程 (6) 2.3特征向量选取 (8) 2.4距离函数的选择 (9) 2.5 基于PCA的人脸识别 (9) MATLAB人脸识别程序 (10) 3 MATLAB软件程序编写 (10) 3.1.创建图片数据库 (10) 3.2 主程序 (11) 3.3最终程序结果 (12) 4 心得与体会 (12) 参考文献 (13)

引言 随着社会的发展及技术的进步,社会各方面对快速高效的自动身份验证的需求可以说无处不在,并与日俱增。例如,某人是否是我国的居民,是否有权进入某安全系统,是否有权进行特定的交易等。尤其是自2001年美国“9.1l”恐怖袭击发生以来,如何在车站、机场等公共场所利用高科技手段,迅速而准确地发现并确认可疑分子成了目前世界各国在反恐斗争中普遍关注的问题。为此,各国都投入大量人力、物力研究发展各类识别技术,使得生物特征识别技术得到了极大的发展。生物特征识别技术主要包括:人脸识别、虹膜识别、指纹识别、步态识别、语音识别、笔迹识别、掌纹识别以及多生物特征融合识别等。人类通过视觉识别文字,感知外界信息。在客观世界中,有75%的信息量都来自视觉,因此让计算机或机器人具有视觉,是人工智能的重要环节。由于生物特征是人的内在属性,具有很强的稳定性和个体差异性,因此是身份验证最理想的依据。与虹膜、指纹、基因、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加直接、方便、友好,易于为用户所接受,并且通过人脸的表情、姿态分析,还能获得其它识别系统难以得到的一些信息。 人脸识别技术在国家重要机关及社会安防领域具有广泛用途。例如:公安系统的罪犯识别、信用卡验证、医学、档案管理、视频会议、人机交互系统等身份识别和各类卡持有人的身份验证。同其他人体生物特征(如:指纹、掌纹、虹膜、语音等)识别技术相比,人脸识别技术的隐性最好,人脸识别系统更直接、友好,是当今国际反恐和安防最重视的科技手段和攻关标志之一。虽然人类能毫不费力地识别出人脸及表情,但对人脸的机器自动识别确实一个难度极大的课题,它涉及到模式识别、图像处理及生理、心理学等诸多方面的知识。人脸识别技术的研究虽然己经取得了一定的可喜成果,但在实际应用中仍存在着许多严峻的问题。人脸的非刚体性、姿态、表情、发型以及化妆的多样性都给正确识别带来了困难,要让计算机像人一样方便地识别出大量的人脸,尚需不同科学研究领域的科学家共同不懈的努力。

基于matlab人脸识别技术 开题报告

毕业设计(论文)开题报告 毕业设计(论文)课题情况,根据所查阅的文献资料,每人撰写2500字以上的文献综述,文后应列出所查阅的文献资料。 基于matlab人脸识别技术的实现 文献综述 一、MATLAB概述 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。而在本文中主要用到的功能是图像处理功能。 二、BP神经网络概述 人工神经网络(Artificial Neural Net works,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model),它是一种模范动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 人工神经网络发展的主要历程有:20世纪50年代末,Rosenblatt提出的感知器模型和Widrow提出的自适应线性元件,出现了简单的线性分类器;1986年,Rumelhart和Mcllelland 提出了层网络“误差反向传播算法(BP)”,使有导师学习多层感知器网络(ML PN)模式分类器走向实用化,在此基础上又派生出若干前向网络,如径向基函数网络( RBFN)和函数链网络等;1982年,美国加州工学院的物理学家Hopfield提出的一种用于联想记忆和优化计算的反馈网络模型,由于引进了“能量函数” 的概念,使网络走向具体电路有了保证;20世纪70年代,Watanabe 提出了使用模式子空间的概念来设计不同类别对应的子空间,由不同类别聚类的子空间实现模式识别; Kohonen提出的自组织特征映射网络模型等都为神经网络模式识别理论提供了进一步的根据。 构成人工神经网络的三个基本要素是:神经元、络拓扑结构和网络的训练(学习)方法。神经元(节点)的作用是把若干输入加权求和,并对这种加权和进行非线性处理后输出。神经元的选择一般有以下特点:每个神经元都具有多个输入、个输出,具有闭值,采用非线性函数。 1、神经元

人脸识别MATLAB代码

1.色彩空间转换 function [r,g]=rgb_RGB(Ori_Face) R=Ori_Face(:,:,1); G=Ori_Face(:,:,2); B=Ori_Face(:,:,3); R1=im2double(R); % 将uint8型转换成double型G1=im2double(G); B1=im2double(B); RGB=R1+G1+B1; row=size(Ori_Face,1); % 行像素 column=size(Ori_Face,2); % 列像素 for i=1:row for j=1:column rr(i,j)=R1(i,j)/RGB(i,j); gg(i,j)=G1(i,j)/RGB(i,j); end end rrr=mean(rr); r=mean(rrr); ggg=mean(gg); g=mean(ggg); 2.均值和协方差 t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1); t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2); t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3); t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4); t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5); t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6); t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7); t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);

(完整版)基于matlab的人脸识别系统设计毕业设计

毕业设计 [论文] 题目:基于MATLAB的人脸识别系统设计 学院:电气与信息工程学院 专业:自动化 姓名:张迎

指导老师:曹延生 完成时间:2013.05.28

摘要 人脸识别是模式识别和图像处理等学科的一个研究热点,它广泛应用在身份验证、刑侦破案、视频监视、机器人智能化和医学等领域,具有广阔的应用价值和商用价值。人脸特征作为一种生物特征,与其他生物特征相比,具有有好、直接、方便等特点,因此使用人脸特征进行身份识别更易于被用户所接受。 人脸识别技术在过去的几十年得到了很大的发展,但由于人脸的非刚性、表情多变等因素,使得人脸识别技术在实际应用中面临着巨大的困难。本文针对近年来国内外相关学术论文及研究报告进行学习和分析的基础上,利用图像处理的matlab实现人脸识别方法,这种实现简单且识别准确率高,但其缺点是计算量大,当要识别较多人员时,该方法难以胜任。 利用MATLAB实现了一个集多种预处理方法于一体的通用的人脸图像预处理仿真系统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。 关键词:图像处理, Matlab, 人脸识别, 模式识别

ABSTRACT Human face recognition focuses on pattern recognition ,image processi ng andother subjects.It is widely used in authentication,investigation,video surveillance,intelligent robots,medicine and other areas.Facerecognition ha s wide application and business value.Facial feature asabiological character istic,compared with others is direct,friendly andconvenient.Facial featuree mployed in authentication are user-friendly. The technology of face recognition in the past few years obtained the v ery big development, but due to the face of nonrigid, expression and chang eablefactors, the face recognition technology in practical application are fa cing great difficulties. This paper aimed at home and abroad in recent year s the relevant papers and researchreports on study and on the basis of the a nalysis, some units within the data sensitivity places need to enter personne l to carry out limitation design and develop a set of identity verification ide ntification system, the system uses PCA face recognition method, therealiza tion is simple and the accuracy rate of recognition is high,but itsdrawback i s that a large amount of calculation, when to identify more staff,this metho d is difficult to do. The realization of a set of various pretreatment methods in one of the generic face image preprocessing simulation system based on MATLAB, the system is used as the image preprocessing module can be embedded in a face recognition system, and using the histogram matching gray image to realize the recognition of human face images to determine.

机器学习概述课程设计报告MATLAB人脸识别

机器学习概述课程设计 报告M A T L A B人脸识别 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

机器学习概述课程设计报告题目:MATLAB人脸识别系统 姓名:** 学号:** 专业:** 时间:2015/8/7

目录 一、课程设计的目的.......................................... 二、设计的内容与要求........................................ 三、详细设计................................................ 四、课程设计的总结.......................................... 五、参考文献................................................

一. 课程设计的目的 人脸识别作为一项新兴的科学研究项目,有着广泛的应用前景,而且随着计算机技术的更新发展,它的科学研究价值也越发凸显。经过几十年的研发探讨,世界各大研究结构的研发人员的不断努力下,人脸识别技术一已取得丰硕的成果,可在一定限制条件下完成人脸的自动识别。这些成果的取得更促进了人们对人脸识别这一课题的深入研究。 在电子商务飞速发展的今天,人脸识别系统的范畴一不足以涵括人脸识别的应用范围,在数字图像处理、视频领域、基于内容的检索等方面有着重要的应用价值。。 二.设计的内容及要求 1、选择KNN,聚类或SVM方法中的一种或其他机器学习方法的一种 进行课程设计 2、要求能完成具体的识别任务:如图像分割、语音识别、人脸识 别 3、要求识别的对象中有自己生活元素,比如图像中包括学校的图片或语音时本人的语音等。 三.详细设计 YCbCr空间——>灰度图像转换——>噪声消除——>图像填孔——>图像重构——>人脸区域确定——>边缘检测

人脸识别matlab程序

人脸识别 % FaceRec.m % PCA 人脸识别修订版,识别率88% % calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg')); % imshow(a); b=a(1:112*92); % b 是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上 到下,从左到右 b=double(b); allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数 据代表一张图片,其中M=200 end end samplemean=mean(allsamples); % 平均图片,1 × N for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M ×N 矩阵,xmean 每一行保存的数据是“每个图片数据-平均图片” end; % 获取特征值及特征向量 sigma=xmean*xmean'; % M * M 阶矩阵 [v d]=eig(sigma); d1=diag(d); % 按特征值大小以降序排列 dsort = flipud(d1); vsort = fliplr(v); %以下选择90%的能量 dsum = sum(dsort); dsum_extract = 0; p = 0; while( dsum_extract/dsum < 0.9) p = p + 1; dsum_extract = sum(dsort(1:p)); end

基于matlab的人脸识别技术

基于matlab 的人脸识别技术 论文 摘要:随着计算机技术的飞速发展,人脸识别技术逐渐发展壮大起来,并应用到众多领域。 人脸识别是指在人脸检测的基础上针对输入的人脸图像,通过特征提取与特征匹配,找出与人脸库中匹配的人脸图像,从而达到识别效果。当前主要采取的人脸识别方法有:基于几何特征的方法 ,基于模板的方法和基于模型的方法。 这些方法较适合于人脸信息的验证,即待识别者是否为预先指定的对象。不足之处在于,需要建立一个拥有庞大人脸信息的训练样本库,因此就降低了输出结果的时效性和准确性。在应用领域中存在局限性,不适于具有庞大人脸样本训练库的身份鉴别领域。鉴于种种不足,本文提出了一种基于可变人脸库的快速人脸识别方法,使人脸识别技术适用于更多的行业。网络信息化时代的一大特征就是身份的数字化和隐性化,如何准确鉴定一个人的身份,保护信息安全是当今信息化时代必须解决的一个关键社会问题。正在悄然兴起的人脸识别技术正好可以解决这一问题。 关键词:模式识别,K-L 变换,人脸识别,图像处理,matlab,图像增强,边缘检测,图像预处理,灰度直方图,特征提取 1.1识别系统构成 自动人脸识别系统具有如图所示的一半框架并完成相应功能的任务。 (1)人脸图像的获取:一般来说,图像的获取都是通过摄像头摄取,氮摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。 (2)人脸的检测:人脸检测的任务是判断静态图像中是否存在人脸。若存在人脸,给出其在图像中的坐标位置,人脸区域大小等信息。而人脸跟踪需要进一步输出所检测到的人脸位置,大小等状态随时间的连续变化情况。 (3)特征提取通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置(如眼睛,眉毛,鼻子,嘴巴等器官),同时还可以得到这些器官及其面部轮廓的形状信息的描述。 1.人脸特征提取的算法:K-L 变换是图像压缩中的一种最优正交变换,通过它可以把人脸样本从高维空间表示转换到低维空间表示,且由低维空恢复的人脸样本和原人脸样本具有最小的均方误差,从而可用人脸样本在低维空间的变换系数作为对人脸特征的描述。其中主元分析法(PCA )就是基于K-L 变换的一种比较流行的算法,它是统计学中分析数据的一种有效的方法,其目的是在数据间中找到一组向量以尽可能地解释数据的方差,将数据从原来的R 维空间将维投影到M 维空间(R>>M)并保存数据的主要信息,从而使数据更易于处理.按照K-L 变换识别算法流程.从人脸样本中提取面部特征.是人脸识别中重要步骤.其实质是一个从高维图像空间到低维数字空间的转换过程,可表示为:Y=T{x} 式中:x 表示原始数据,Y 表示为特征信息,T 表示映射 人脸样本特征提取算法如下:首先计算该库中所有样本的平均值(平均脸): ∑==p i n f P f 1 1 式中;P 表示照片数.f 表示每张照片的线性表示然后构建协方差矩阵: T T i p i i A A f f P C ?==∑=)'('11 式中:f f f i -='表示每张照片与样本平均值的差。A 表示差值形成的矩阵 接着,进行特征的提取:由于此协方差矩阵进行求解特征值和特征向量比较困难的,因此采用奇异值分解的方法得到特征矩阵。 i T i f U Y '=

基于MATLAB的人脸识别

基于MATLAB的人脸识别

————————————————————————————————作者: ————————————————————————————————日期:

图像识别 题目:基于MATLAB的人脸识别 院系:计算机科学与应用系 班级: 姓名: 学号: 日期:

设计题目基于MATLAB的人脸识别设 计技术参数 测试数据库图片10张训练数据库图片20张图片大小1024×768 特征向量提取阈值 1 设计要求综合运用本课程的理论知识,并利用MATLAB作为工具实现对人脸图片的预处理,运用PCA算法进行人脸特征提取,进而进行人脸匹配识别。 工作量 两周的课程设计时间,完成一份课程设计报告书,包括设计的任务书、基本原理、设计思路与设计的基本思想、设计体会以及相关的程序代码; 熟练掌握Matlab的使用。 工作计划第1-2天按要求查阅相关资料文献,确定人脸识别的总体设计思路; 第3-4天分析设计题目,理解人脸识别的原理同时寻求相关的实现算法;第5-8天编写程序代码,创建图片数据库,运用PCA算法进行特征提取并编写特征脸,上机进行调试; 第9-12天编写人脸识别程序,实现总体功能; 第13-14天整理思路,书写课程设计报告书。 参考资料1 黄文梅,熊佳林,杨勇编著.信号分析与处理——MATALB语言及应用.国防科技大学出版社,2000 2 钱同惠编著.数字信号处理.北京:机械工业出版社,2004 3 姚天任,江太辉编著.数字信号处理.第2版.武汉:武汉理工大学出版社,2000 4 谢平,林洪彬,王娜.信号处理原理及应用.机械工业出版社,2004 5刘敏,魏玲.Matlab.通信仿真与应用.国防工业出版社,2005 6 楼顺天.基于Matlab7.x 的系统分析与设计.西安电子科技大学,2002 7孙洪.数字信号处理.电子工业出版社,2001 目录 引言?错误!未定义书签。 1 人脸识别技术?错误!未定义书签。 1.1人脸识别的研究内容?错误!未定义书签。 1.1.1人脸检测(Face Detection)........... 错误!未定义书签。

matlab编程--基于肤色分割和匹配的人脸识别介绍

基于肤色分割和匹配的人脸识别 1.将RGB空间转换为YCbCr空间: 为了把人脸区域从非人脸区域分割出来,需要使用适合不同肤色和不同光照条件的可 靠的肤色模型。 常用的RGB 表示方法不适合于皮肤模型,在RGB 空间,三基色(r、g、b)不仅代表颜色,还表示了亮度。由于周围环境光照的改变,亮度可能使人脸的检测变得更加复杂, 在皮肤的分割过程中是不可靠的。为利用肤色在色度空间的聚类性,需要把颜色表达式中 的色度信息与亮度信息分开,将R、G、B 转换为色度与亮度分开的色彩表达空间可以达 到这个目的。颜色空间的转换常用的颜色模型主要有:YCrCb、HSV、YIQ等。在本文的实验中选用YCrCb 空间作为肤色分布统计的映射空间,该空间的优点是受亮度变化的影 响较小,而且是两维独立分布,能较好地限制肤色分布区域。 使用函数为:YCBCR = rgb2ycbcr(RGB); 2.将彩色图像转换为灰度图像,实验证明,不同的肤色具有相同的2D模型 G(m,V^2)。灰度值对应属于皮肤区域的可能性,同过设定门限,就可以转换为二值图 像,1,0分别表示皮肤和非皮肤区域。 皮肤颜色在ycbcr色度空间的分布范围为:100<=cb<=127,138<=cr<=170,可以将彩色图像转换为二值图像: f_cb=f(:,:,2); f_cr=f(:,:,3); f = (f_cb>=100) & (f_cb<=127) & (f_cr>=138) &(f_cr<=170) ; figure; imshow(f);

3.转换后不可避免出现了噪声,有背景的噪声影响,以及人的衣服和裤子引起的噪声点,使用开闭运算的方法消除噪声: se=strel('square',3); f=imopen(f,se); f=imclose(f,se); figure(2),imshow(f);

基于matlab程序实现人脸识别

1.人脸识别流程 基本原理 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。 流程图 人脸识别流程图 读入原始图像 将图像转化为YCbCr颜色空 间 利用肤色模型二值化图像并 作形态学处理 选取出二值图像中的白色区 域,度量区域属性,筛选后 得到所有矩形块 否 筛选特定区域(高度和宽度的比率 在(0.6~2)之间,眼睛特征) 是 存储人脸的矩形区域 特殊区域根据其他信息筛 选,标记最终的人脸区域

2.人脸识别程序 (1)人脸和非人脸区域分割程序 function result = skin(Y,Cb,Cr) %SKIN Summary of this function goes here % Detailed explanation goes here a=; b=; ecx=; ecy=; sita=; cx=; cy=; xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; %如果亮度大于230,则将长短轴同时扩大为原来的倍 if(Y>230) a=*a; b=*b; end %根据公式进行计算

Cb=double(Cb); Cr=double(Cr); t=[(Cb-cx);(Cr-cy)]; temp=xishu*t; value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2; %大于1则不是肤色,返回0;否则为肤色,返回1 if value>1 result=0; else result=1; end end (2)人脸的确认程序 function eye = findeye(bImage,x,y,w,h) %FINDEYE Summary of this function goes here % Detailed explanation goes here part=zeros(h,w); %二值化

人脸识别PCA算法matlab实现及详细步骤讲解

%FaceRec.m %PCA人脸识别修订版,识别率88% %calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg')); %imshow(a); b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上 到下,从左到右 b=double(b); allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数 据代表一张图片,其中M=200 end end samplemean=mean(allsamples);%平均图片,1×N for i=1:200xmean(i,:)=allsamples(i,:)-samplemean;%xmean是一个M×N矩阵,xmean 每一行保存的数据是“每个图片数据-平均图片” end; %获取特征值及特征向量 sigma=xmean*xmean';%M*M阶矩阵 [v d]=eig(sigma); d1=diag(d); %按特征值大小以降序排列 dsort=flipud(d1); vsort=fliplr(v); %以下选择90%的能量 dsum=sum(dsort); dsum_extract=0; p=0; while(dsum_extract/dsum<0.9) p=p+1; dsum_extract=sum(dsort(1:p)); end i=1; %(训练阶段)计算特征脸形成的坐标系 base=xmean'*vsort(:,1:p)*diag(dsort(1:p).^(-1/2)); %base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1) %详见《基于PCA的人脸识别算法研究》p31 %xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程 %while(i<=p&&dsort(i)>0) %base(:,i)=dsort(i)^(-1/2)*xmean'*vsort(:,i);%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1) %详见《基于PCA的人脸识别算法研究》p31 %i=i+1;%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特 征向量转换的过程 %end %以下两行add by gongxun将训练样本对坐标系上进行投影,得到一个M*p阶矩阵allcoor allcoor=allsamples*base;%allcoor里面是每张训练人脸图片在M*p子空间中的一个点,即在子空间中的组合系数, accu=0;%下面的人脸识别过程中就是利用这些组合系数来进行识别

基于matlab的简单人脸识别程序代码

基于matlab的简单人脸识别实例 简介 人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。人脸识别是一项热门的计算机技术研究领域,在生活中许多领域都有着重要应用。 内容 这里通过对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来做处理。进而得到人脸区域。 代码 % Bylyqmath % DLUT School of Mathematical Sciences % BLOG:https://www.sodocs.net/doc/ab13491878.html,/lyqmath clc; clear all; close all; % 载入图像 Img = imread('face.jpg'); if ndims(Img) == 3 I=rgb2gray(Img); else I = Img; end BW = im2bw(I, graythresh(I)); % 二值化 figure; subplot(2, 2, 1); imshow(Img); title('原图像', 'FontWeight', 'Bold'); subplot(2, 2, 2); imshow(Img); title('网格标记图像', 'FontWeight', 'Bold'); hold on; [xt, yt] = meshgrid(round(linspace(1, size(I, 1), 10)), ... round(linspace(1, size(I, 2), 10))); mesh(yt, xt, zeros(size(xt)), 'FaceColor', ... 'None', 'LineWidth', 3, ... 'EdgeColor', 'r'); subplot(2, 2, 3); imshow(BW); title('二值图像', 'FontWeight', 'Bold'); [n1, n2] = size(BW); r = floor(n1/10); % 分成10块,行 c = floor(n2/10); % 分成10块,列 x1 = 1; x2 = r; % 对应行初始化 s = r*c; % 块面积 for i = 1:10

基于MATLAB的人脸识别源程序

基于MATLA酌人脸识别源程序1?色彩空间转换function [r,g]=rgb_RGB(Ori_Face) R=0ri_Face(:,:,1); G=0ri_Face(:,:,2); B=Ori_Face(:,:,3); R1=im2double(R); % 将uint8 型转换成double型 G1=im2double(G); B1=im2double(B); RGB=R1+G1+B1; row=size(Ori_Face, 1); %行像素 column=size(Ori_Face,2); %列像素for i=1:row for j=1:column rr(i,j)=R1(i,j)/RGB(i,j); gg(i,j)=G1(i,j)/RGB(i,j); end

end rrr=mean(rr); r=mean(rrr); ggg=mean(gg); g=mean(ggg); 2?均值和协方差

皮肤库\2?jpg');[r2,g2]=rgb_RGB(t2); 皮肤库\3?jpg');[r3,g3]=rgb_RGB(t3); 皮肤库\4?jpg');[r4,g4]=rgb_RGB(t4); 皮肤库\5?jpg');[r5,g5]=rgb_RGB(t5); 皮肤库\6?jpg');[r6,g6]=rgb_RGB(t6); 皮肤库\7?jpg');[r7,g7]=rgb_RGB(t7); 皮肤库\8?jpg');[r8,g8]=rgb_RGB(t8); 皮肤库\9?jpg');[r9,g9]=rgb_RGB(t9); 皮肤库\10?jpg');[r10,g10]=rgb_RGB(t10); 皮肤库\11?jpg');[r11,g11]=rgb_RGB(t11); 皮肤库\12?jpg');[r12,g12]=rgb_RGB(t12); 皮肤库\13?jpg');[r13,g13]=rgb_RGB(t13); 皮肤库\14?jpg');[r14,g14]=rgb_RGB(t14); 皮肤库\15?jpg');[r15,g15]=rgb_RGB(t15); 皮肤库\16?jpg');[r16,g16]=rgb_RGB(t16); 皮肤库\17?jpg');[r17,g17]=rgb_RGB(t17); 皮肤库\18?jpg');[r18,g18]=rgb_RGB(t18); 皮肤库\19?jpg');[r19,g19]=rgb_RGB(t19); 皮肤库\20?jpg');[r20,g20]=rgb_RGB(t20); 皮肤库\21?jpg');[r21,g21]=rgb_RGB(t21);

(完整版)基于matlab的人脸识别系统设计与仿真毕业论文

佳木斯大学毕业论文 基于Matlab的人脸识别系统设计与仿真 学院信息电子技术 专业电子信息工程 班级11级1班 姓名杨雷 指导教师周经国 佳木斯大学 2015年6月10日

摘要 人脸识别即指利用分析比对人脸视觉特征信息从而达到身份鉴别效果的计算机技术。人脸识别是一项当下十分热门的计算机技术的研究领域,该项技术可以人脸明暗侦测,并且自动调整动态曝光补偿,同时对人脸追踪侦测,并自动调整影像放大;这项技术属于生物特征识别技术的一种,是利用生物体(一般指人)本身的生物特征从而达到区分生物体个体的目的。 人脸识别技术目前主要用做身份识别。由于视频监控的飞速普及,使这项应用迫切的需要一种能实现在用户非配合状态下、远距离的进行快速身份识别的技术,以求能在远距离之下快速识别人员身份,从而实现智能预警的功能。最佳的选择无疑是人脸识别技术。采用快速人脸检测识别技术可以从视频监控图象中实时捕获到人脸信息,并与人脸数据库中的已存信息进行实时比对,从而达到快速身份识别的效果。 报告利用MATLAB软件来实现人脸信息检测与识别,利用YCbCr空间以及灰度图像来实现人脸的边缘分割, 将真彩图像转换为灰度图像,并根据肤色在YCbCr色度空间上的分布范围,来设定门限阀值,从而实现人脸区域与非人脸区域的分割,通过图像处理等一系列的操作来剔除干扰因素,再通过长宽比和目标面积等方法在图像中定位出人脸区域,经试验,该方法能够排除面部表情、衣着背景、发型等干扰因素,从而定位出人脸区域。关键词:Matlab软件;灰度图像;边缘分割;人脸区域

Abstract Face recognition especially use comparative analysis face visual feature information for identification of computer technology. Face recognition is a hot research field computer technology, face detection, light and shade can be automatically adjusted dynamically exposure compensation, human face tracking detection, automatic adjustment of image magnification; It belongs to the biometric identification technology, it is of organisms (generally refers to a person) individual biological characteristics to distinguish between the organism itself. Face recognition is mainly used for identification. Because of the video monitoring is fast popularization, many of the video monitoring application is an urgent need to a long distance, the user not cooperate condition of rapid identification technology, in order . Face recognition technology is undoubtedly the best choice, the fast face detection technology to monitor in real-time video image search from face, and with real-time than face database, so as to realize rapid identification. Report using MATLAB software to realize face information detection and recognition, using YCbCr space and gray image to realize the face edge segmentation, the true color image is converted to a grayscale image, and according to the color of skin in YCbCr chroma space distribution, to set the threshold threshold, so as to realize the segmentation of face region with the face region,

相关主题