基于KL变换的人脸识别

合集下载

人脸识别系统的原理与发展

人脸识别系统的原理与发展

人脸识别系统的原理与发展一、引言人脸识别系统以人脸识别技术为核心,是一项新兴的生物识别技术,是当今国际科技领域攻关的高精尖技术。

它广泛采用区域特征分析算法,融合了计算机图像处理技术与生物统计学原理于一体,利用计算机图像处理技术从视频中提取人像特征点,利用生物统计学的原理进行分析建立数学模型,具有广阔的发展前景。

2012年4月,铁路部门宣布车站安检区域将安装用于身份识别的高科技安检系统人脸识别系统;可以对人脸明暗侦测,自动调整动态曝光补偿,人脸追踪侦测,自动调整影像放大;二、概述人脸识别系统概述广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。

生物特征识别技术所研究的生物特征包括脸、指纹、手掌纹、虹膜、视网膜、声音(语音)、体形、个人习惯(例如敲击键盘的力度和频率、签字)等,相应的识别技术就有人脸识别、指纹识别、掌纹识别、虹膜识别、视网膜识别、语音识别(用语音识别可以进行身份识别,也可以进行语音内容的识别,只有前者属于生物特征识别技术)、体形识别、键盘敲击识别、签字识别等。

人脸识别系统功能模块人脸捕获与跟踪功能:人脸捕获是指在一幅图像或视频流的一帧中检测出人像并将人像从背景中分离出来,并自动地将其保存。

人像跟踪是指利用人像捕获技术,当指定的人像在摄像头拍摄的范围内移动时自动地对其进行跟踪。

人脸识别比对:人脸识别分核实式和搜索式二种比对模式。

核实式是对指将捕获得到的人像或是指定的人像与数据库中已登记的某一对像作比对核实确定其是否为同一人。

搜索式的比对是指,从数据库中已登记的所有人像中搜索查找是否有指定的人像存在。

人脸的建模与检索:可以将登记入库的人像数据进行建模提取人脸的特征,并将其生成人脸模板(人脸特征文件)保存到数据库中。

在进行人脸搜索时(搜索式),将指定的人像进行建模,再将其与数据库中的所有人的模板相比对识别,最终将根据所比对的相似值列出最相似的人员列表。

实验二 利用K-L变换法进行人脸识别

实验二 利用K-L变换法进行人脸识别

实验二利用K-L变换法进行人脸识别
一、实验目的
主分量分析是一种有效的通过线性变换来降低特征维数的方法,也称为Karhunen-Loeve变换(K-L变换)。

此变换是一种基于目标统计特性的最佳正交变换,它的最佳性体现在变换后产生的新的分量正交或不相关。

编写利用K-L变换进行人脸识别的程序,体会K-L变换的基本思路,掌握K-L变换的性质,理解利用该方法进行人脸识别的原理。

二、实验要求
1、编写用K-L变换法进行人脸识别的程序,对标准图像库进行人脸识别实验。

ORL_faces图像库中有40组人脸图像,每组内的10幅图像取自同一个人,部分人脸图像如下图所示。

利用每组中的前5幅人脸图像(共200幅)作为训练样本,生成人脸识别的分类器,显示“平均脸”图像和“特征脸”图像。

用剩下的200幅图像作为测试样本,输出识别结果,检测识别率。

2、(选做)对自建图像库进行人脸识别实验,利用每组中的前5幅人脸图像作为训练样本,生成人脸识别的分类器,显示“平均脸”图像和“特征脸”图像。

用剩下的图像作为测试样本,输出识别结果,检测识别率。

三、实验报告要求
1、写出自己编写的程序(不用全抄下来,只写要求编写的部分即可)。

2、回答下列问题:
(1)K-L变换的特殊性体现在哪里?
(2)为什么利用K-L变换可以进行人脸识别?(3)如何理解“特征脸”?
(4)何谓“主分量”?。

人脸识别主要算法原理

人脸识别主要算法原理

人脸识别主要算法原理主流的人脸识别技术基本上可以归结为三类,即:基于几何特征的方法、基于模板的方法和基于模型的方法。

1. 基于几何特征的方法是最早、最传统的方法,通常需要和其他算法结合才能有比较好的效果;2. 基于模板的方法可以分为基于相关匹配的方法、特征脸方法、线性判别分析方法、奇异值分解方法、神经网络方法、动态连接匹配方法等。

3. 基于模型的方法则有基于隐马尔柯夫模型,主动形状模型和主动外观模型的方法等。

1. 基于几何特征的方法人脸由眼睛、鼻子、嘴巴、下巴等部件构成,正因为这些部件的形状、大小和结构上的各种差异才使得世界上每个人脸千差万别,因此对这些部件的形状和结构关系的几何描述,可以做为人脸识别的重要特征。

几何特征最早是用于人脸侧面轮廓的描述与识别,首先根据侧面轮廓曲线确定若干显著点,并由这些显著点导出一组用于识别的特征度量如距离、角度等。

Jia 等由正面灰度图中线附近的积分投影模拟侧面轮廓图是一种很有新意的方法。

采用几何特征进行正面人脸识别一般是通过提取人眼、口、鼻等重要特征点的位置和眼睛等重要器官的几何形状作为分类特征,但Roder对几何特征提取的精确性进行了实验性的研究,结果不容乐观。

可变形模板法可以视为几何特征方法的一种改进,其基本思想是:设计一个参数可调的器官模型(即可变形模板),定义一个能量函数,通过调整模型参数使能量函数最小化,此时的模型参数即做为该器官的几何特征。

这种方法思想很好,但是存在两个问题,一是能量函数中各种代价的加权系数只能由经验确定,难以推广,二是能量函数优化过程十分耗时,难以实际应用。

基于参数的人脸表示可以实现对人脸显著特征的一个高效描述,但它需要大量的前处理和精细的参数选择。

同时,采用一般几何特征只描述了部件的基本形状与结构关系,忽略了局部细微特征,造成部分信息的丢失,更适合于做粗分类,而且目前已有的特征点检测技术在精确率上还远不能满足要求,计算量也较大。

2. 局部特征分析方法(Local Face Analysis)主元子空间的表示是紧凑的,特征维数大大降低,但它是非局部化的,其核函数的支集扩展在整个坐标空间中,同时它是非拓扑的,某个轴投影后临近的点与原图像空间中点的临近性没有任何关系,而局部性和拓扑性对模式分析和分割是理想的特性,似乎这更符合神经信息处理的机制,因此寻找具有这种特性的表达十分重要。

基于静态灰度图像人脸识别算法的功图诊断方法研究

基于静态灰度图像人脸识别算法的功图诊断方法研究

基于静态灰度图像人脸识别算法的功图诊断方法研究作者:段泽英赵美刚张新政游莉来源:《中国管理信息化》2014年第03期[摘要] 油井示功图是判断泵工作状况好坏的一个重要依据。

目前,新疆油田数据库中已存有大量功图数据,并且经过专家审查分析后将解释成果数据入库管理,为我们后续的数据挖掘提供了宝贵的数据资源。

本文基于静态灰度图像人脸识别算法,对油井示功图诊断、分析进行应用研究,研究成果表明,利用灰度图像人脸识别算法可以有效辅助油田生产业务人员、管理人员快速、准确诊断油井示功图,及时采取措施,对提高单井生产时率有重要意义,同时也为智能新疆油田建设单井问题诊断应用研究提供了必要的技术支持。

[关键词] 智能油田;静态灰度图像;人脸识别算法;示功图;解释;参数判断doi : 10 . 3969 / j . issn . 1673 - 0194 . 2014 . 03. 019[中图分类号] F270.7;TP312 [文献标识码] A [文章编号] 1673 - 0194(2014)03- 0038- 041 引言目前,新疆油田数据库中已存有大量的功图数据和功图解释成果数据,这些数据是由功图仪现场测试、专家分析确认后入库的功图数据和解释成果数据,具有重要的参考价值。

为了减轻油田生产业务人员、管理人员重复解释功图的工作量,提高功图诊断的时效性,本文介绍灰度图像人脸识别算法的应用研究。

2 实测油井示功图常规分析方法所谓理论示功图是比较规则的平行四边形,而实测功图由于多种因素的影响(如:砂、蜡、气、黏度),图形变化很复杂,各不相同。

因此,要正确地分析抽油井的生产情况,必须全面掌握油井动态、静态资料以及设备的状况,结合示功图的变化找出油井的主要问题,采取适当的措施,提高油井产量和泵效。

传统分析示功图的方法是将示功图分割成4块,进行分析对比,找出泵工作不正常的原因,提出解决问题的措施。

即:左上角主要分析游动凡尔的问题,缺损为凡尔关闭不及时,多一块为出砂并卡泵现象;右上角主要分析光杆在上死点时活塞与工作筒的配合情况;右下角主要分析泵充满程度及气体影响情况;左下角主要分析光杆在下死点出现的问题,如:固定凡尔的漏失情况等。

人脸识别发展史

人脸识别发展史

1 人脸识别研究的发展状况1.1 发展历史早在1888年和1920年Galton就在《Nature》上发表过两篇关于利用人脸进行身份识别的论文。

真正意义上的自动人脸识别的研究开始于二十世纪六十年代中后期 1965年Chen 和Bledsoe的报告是最早的关于自动人脸识别的文献。

1965到1990年之间是人脸识别研究的初级阶段 这一阶段的研究主要集中在基于几何结构特征的人脸识别方法 Geometric feature based 。

该阶段的研究基本没有得到实际的应用。

1991年到1997年间是人脸识别研究非常活跃的重要时期。

出现了著名的特征脸方法Eigenface 该方法由麻省理工学院的Turk和Pentland提出 之后有许多基于该方法的研究。

Brunelli和Poggio在1992年对基于结构特征的方法和基于模板匹配的方法进行了实验对比 并给出了后者优于前者的明确结论。

该时期内 美国国防部资助的FERET FacE Recognition technology Test 项目资助多项人脸识别研究 创建了著名的FERET人脸图像数据库。

该项目极大地促进了人脸识别算法的改进以及算法的实用化。

1998年至今 研究者开始针对非理想条件下的人脸识别进行研究。

光照、姿势等问题成为研究热点。

出现了基于3D模型的人脸建模与识别方法。

在商业化的应用方面 美国国防部在2000年和2002年组织了针对人脸识别商业系统的评测FRVT Face Recognition Vendor Test) 比较领先的系统提供商有Cognitec, Identix和Eyematic。

1.2 主要公共数据库人脸数据库对于人脸识别算法的研究是不可缺少的 而公共人脸图像数据库的建立方便不同研究者之间的交流学习 并有助于不同算法的比较 下面列举常用的人脸图像数据库。

FERET人脸数据库 是FERET项目创建的人脸数据库 该库包含14,051幅多姿态、不同光照条件的灰度人脸图像 是人脸识别领域应用最广泛的人脸数据库之一。

人脸识别主要算法原理

人脸识别主要算法原理

人脸识别主要算法原理主流的人脸识别技术基本上可以归结为三类,即:基于几何特征的方法、基于模板的方法和基于模型的方法。

1.基于几何特征的方法是最早、最传统的方法,通常需要和其他算法结合才能有比较好的效果;2.基于模板的方法可以分为基于相关匹配的方法、特征脸方法、线性判别分析方法、奇异值分解方法、神经网络方法、动态连接匹配方法等。

3.基于模型的方法则有基于隐马尔柯夫模型,主动形状模型和主动外观模型的方法等。

1.基于几何特征的方法人脸由眼睛、鼻子、嘴巴、下巴等部件构成,正因为这些部件的形状、大小和结构上的各种差异才使得世界上每个人脸千差万别,因此对这些部件的形状和结构关系的几何描述,可以做为人脸识别的重要特征。

几何特征最早是用于人脸侧面轮廓的描述与识别,首先根据侧面轮廓曲线确定若干显著点,并由这些显著点导出一组用于识别的特征度量如距离、角度等。

Jia等由正面灰度图中线附近的积分投影模拟侧面轮廓图是一种很有新意的方法。

采用几何特征进行正面人脸识别一般是通过提取人眼、口、鼻等重要特征点的位置和眼睛等重要器官的几何形状作为分类特征,但Roder对几何特征提取的精确性进行了实验性的研究,结果不容乐观。

可变形模板法可以视为几何特征方法的一种改进,其基本思想是:设计一个参数可调的器官模型(即可变形模板),定义一个能量函数,通过调整模型参数使能量函数最小化,此时的模型参数即做为该器官的几何特征。

这种方法思想很好,但是存在两个问题,一是能量函数中各种代价的加权系数只能由经验确定,难以推广,二是能量函数优化过程十分耗时,难以实际应用。

基于参数的人脸表示可以实现对人脸显著特征的一个高效描述,但它需要大量的前处理和精细的参数选择。

同时,采用一般几何特征只描述了部件的基本形状与结构关系,忽略了局部细微特征,造成部分信息的丢失,更适合于做粗分类,而且目前已有的特征点检测技术在精确率上还远不能满足要求,计算量也较大。

2.局部特征分析方法(Local Face Analysis)主元子空间的表示是紧凑的,特征维数大大降低,但它是非局部化的,其核函数的支集扩展在整个坐标空间中,同时它是非拓扑的,某个轴投影后临近的点与原图像空间中点的临近性没有任何关系,而局部性和拓扑性对模式分析和分割是理想的特性,似乎这更符合神经信息处理的机制,因此寻找具有这种特性的表达十分重要。

K-L变换的一些典型应用

K-L变换的一些典型应用

K-L变换的性质。

归结起来,它消除了各分量之间的相关性,因而用它来描述事物时,可以减少描述量的冗余性,做到用最经济有效的方法描述事物。

下面结合一些应用实例来说明如何运用K-L变换的这一性质。

1.降维与压缩以人脸图象这个例子看,K-L变换的降维效果是十分明显的。

对一幅人脸图象,如果它由M行与N到象素组成,则原始的特征空间维数就应为M×N。

而如果在K-L变换以及只用到30个基,那么维数就降至30,由此可见降维的效果是极其明显的。

另一方面降维与数据压缩又是紧密联系在一起的。

譬如原训练样本集的数量为V,而现采用30个基,每个基实质上是一幅图象,再加上每幅图象的描述参数(式(补4-3)中的C),数据量是大大降低,尤其是图象数很大时,压缩量是十分明显的。

2.构造参数模型使用K-L变换不仅仅起到降维与压缩数据的作用,更重要的是每个描述量都有明确的意义,因而改变某一个参数就可让图象按所需要的方向变化。

在没有使用K-L变换的原数据集中对图象的描述量是每个象素的灰度值,而弧立地改变某个象素的灰度值是没有意义的。

而在使用K-L变换后,每个描述量都有其各自的作用。

因此通过改变这些参数的值就可实现对模型的有效描述,这在图象生成中是很有用的。

因此利用K-L变换构造出可控制的,连续可调的参数模型在人脸识别与人脸图象重构采方面的应用是十分有效的。

3.人脸识别利用K-L变换进行人脸图象识别是一个著名的方法。

其原理十分简单,首先搜集要识别的人的人脸图象,建立人脸图象库,然后利用K-L变换确定相应的人脸基图象,再反过来用这些基图象对人脸图象库中的有人脸图象进行K-L变换,从而得到每幅图象的参数向量(试问用哪个公式?)并将每幅图的参数向量存起来。

在识别时,先对一张所输入的脸图象进行必要的规范化,再进行K-L变换分析,得到其参数向量。

将这个参数向量与库中每幅图的参数向量进行比较,找到最相似的参数向量,也就等于找到最相似的人脸,从而认为所输入的人脸图象就是库内该人的一张人脸, 完成了识别过程。

人脸识别的方法

人脸识别的方法

人脸识别技术的基本方法人脸识别的方法很多,主要的人脸识别方法有:(1)几何特征的人脸识别方法:几何特征可以是眼、鼻、嘴等的形状和它们之间的几何关系(如相互之间的距离)。

这些算法识别速度快,需要的内存小,但识别率较低。

(2)基于特征脸(PCA)的人脸识别方法:特征脸方法是基于KL变换的人脸识别方法,KL变换是图像压缩的一种最优正交变换。

高维的图像空间经过KL 变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。

如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法的基本思想。

这些方法需要较多的训练样本,而且完全是基于图像灰度的统计特性的。

目前有一些改进型的特征脸方法。

(3)神经网络的人脸识别方法:神经网络的输入可以是降低分辨率的人脸图像、局部区域的自相关函数、局部纹理的二阶矩等。

这类方法同样需要较多的样本进行训练,而在许多应用中,样本数量是很有限的。

(4)弹性图匹配的人脸识别方法:弹性图匹配法在二维的空间中定义了一种对于通常的人脸变形具有一定的不变性的距离,并采用属性拓扑图来代表人脸,拓扑图的任一顶点均包含一特征向量,用来记录人脸在该顶点位置附近的信息。

该方法结合了灰度特性和几何因素,在比对时可以允许图像存在弹性形变,在克服表情变化对识别的影响方面收到了较好的效果,同时对于单个人也不再需要多个样本进行训练。

(5)线段Hausdorff 距离(LHD) 的人脸识别方法:心理学的研究表明,人类在识别轮廓图(比如漫画)的速度和准确度上丝毫不比识别灰度图差。

LHD是基于从人脸灰度图像中提取出来的线段图的,它定义的是两个线段集之间的距离,与众不同的是,LHD并不建立不同线段集之间线段的一一对应关系,因此它更能适应线段图之间的微小变化。

实验结果表明,LHD在不同光照条件下和不同姿态情况下都有非常出色的表现,但是它在大表情的情况下识别效果不好。

基于KL变换和PCA人脸识别方法[方案]

基于KL变换和PCA人脸识别方法[方案]

目录基于KL变换和PCA人脸识别方法 (2)摘要 (2)KL变换和PCA人脸识别方法.......... 错误!未定义书签。

1 简介 (3)2 KL变换和PCA分析 (3)2.1 KL变换原理............................................... 错误!未定义书签。

2.2 主成分分析法(PCA)............................. 错误!未定义书签。

2.3 人脸识别中PCA算法步骤及流程............... 错误!未定义书签。

3 实验及结果分析............................................ 错误!未定义书签。

4 总结 ............................................................. 错误!未定义书签。

5 展望 ............................................................. 错误!未定义书签。

参考文献 .......................... 错误!未定义书签。

基于KL变换和PCA人脸识别方法作者:摘要生物特征识别技术使用了人体本身所固有的生物特征,与传统的身份识别方法完全不同,具有更高的安全性、可靠性、和有效性,越来越受到人们的重视。

人脸识别技术作为生物特征识别技术的重要组成部分,在近三十年里得到了广泛的关注和研究,已经成为计算机视觉、模式识别领域的研究热点。

人脸识别在公共安全、证件验证、门禁系统、视频监视等领域中都有着广泛的应用前景。

本文是在人脸数据库的基础上做人脸特征提取和识别研究,主要内容如下:(1)介绍主成分分析法(PCA)、K-L变换,并利用特征脸方法实现了人脸识别。

(2)给出了基于matlab环境的编程及实验结果,并对结果进行分析。

关键词:人脸识别,特征脸,K-L变换,主成分分析1 简介我们希望将图像原特征做某种正交变换,获得的数据都是原数据的线性组合,从新数据中选出少数几个,使其尽可能多地反映各类模式之间的差异,又尽可能相互独立,一个常用的方法就是主成分分析(PCA)。

基于KL变换的人脸识别报告

基于KL变换的人脸识别报告

模式识别大作业班级:09030901题目:基于KL变换的人脸识别姓名:黎照学号:2009302320姓名:陈升富学号:2009302313姓名:益琛学号:2009302311日期:2012/4/25【摘要】本次实验论述了K_L变换在人脸识别中的应用,主要介绍人脸识别过程中的每个环节,整个过程包括人脸图像的采集、预处理、特征提取到训练和识别。

一、基本要求从网上下载人脸图像,构建人脸训练数据库和测试数据库,采用K-L变换进行特征脸提取,并实现人脸识别。

通过K-L变换在人脸识别中的应用,加深对所学内容的理解和感性认识。

二、主要思想基于特征脸的人脸识别方法是基于K-L变换的人脸识别方法,K-L变换是图像压缩的一种最优正交变换。

高维的图像空间经过K-L变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以转成低维线性空间。

如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法的基本思想三、 实验原理1、K-L 变换设n 维随机向量()12,,...,Tnx x x x =其均值向量E x u ⎡⎤=⎢⎥⎣⎦,相关矩阵xTE R xx =⎡⎤⎣⎦,协方差矩阵()()Tx E C x u x u →→→→→=--⎡⎤⎢⎥⎣⎦,x 经正交变换后产生向量()12,,...,T ny y y y =。

设有标准正交变换矩阵T ,(即 T'T=I )1212'()'(,)'n n y T x t t t x y y y ===,'i i y t x = (1,2,)i n =11(')ni i i x T y T y y t -====∑ (称为x 的K-L 展开式)取前m项为x 的估计值1ˆmi i i x y t ==∑ 1m n ≤<其均方误差为2T ˆˆ()()()m E x x x x ε⎡⎤=--⎣⎦2'11[][]n ni i i i m i m E y E y y =+=+==∑∑ 2()m ε211[][]nn ii ii m i m E yE y y =+=+'==∑∑11()nniiix ii m i m t E xx tt R t =+=+'''==∑∑在T‘T=I 的约束条件下,要使均方误差21ˆˆ()[()'()]'min nix ii m m E x xx x t R tε=+=--=→∑为此设定准则函数11'('1)n ni x i i i i i m i m J t R t t t λ=+=+=--∑∑由 0iJt ∂=∂得()0x i i R I t λ-= 1,...,i m n =+,即x i i i R t t λ= 1,...,i m n =+表明: λi 是x R 的特征值,而i t 是相应的特征向量。

人脸算法公式

人脸算法公式

人脸算法公式
人脸识别算法涉及多个步骤和公式,但具体公式取决于所使用的算法。

以下是其中两种常用的人脸识别算法及其相关公式:
1. 主成分分析(PCA,也被称为特征脸方法):
PCA是一种以较少数量的特征对样本进行描述以达到降低特征空间维数的
方法,其基础是Karhunen-Loeve展开式,简称KL展开式。

具体来说,对于一个输入的测试样本x,可以求出它与平均脸之间的偏差y = x - x’,y在特征脸空间的投影可以表示为系数向量z = W(T)y,z就是KL变换的展开系数向量。

2. Gabor小波变换+图形匹配:
Gabor滤波器将Gaussian网络函数限制为一个平面波的形状,并且在滤波器设计中有优先方位和频率的选择,表现为对线条边缘反应敏感。

这种方法精确抽取面部特征点以及基于Gabor引擎的匹配算法,具有较好的准确性,能够排除由于面部姿态、表情、发型、眼镜、照明环境等带来的变化。

请注意,以上仅为简要介绍,并无法涵盖所有的人脸识别算法公式。

在实际应用中,建议根据具体需求和场景选择适合的算法,并深入学习相关算法和公式。

科技文献作业

科技文献作业

关于“人脸识别”的科技文献检索人脸是人体最重要的生物表征之一,具有很强的独立性和差异性,人们往往通过面容来识别被观察者的身份。

因此,如何有效地实现计算机的自动人脸检测与识别,成为现代科技发展的一项重要研究课题,其在视频监控、身份验证、门禁系统、人机交互等领域都有着广泛的应用前景。

本文针对人脸检测与识别问题,基于OpenCV运用VC++2008设计了人脸检测与识别系统。

该系统在实现过程中,综合运用了色彩平衡、光照补偿、肤色检测、Adaboost算法、膨胀、腐蚀、平滑和PCA算法,可以有效地进行人脸检测与识别,并且能够动态维护人脸数据库,以供人脸识别之用。

实验结果表明,该系统识别速度较快,人脸检测与识别率较高。

本系统实现人脸检测与识别主要分为四个过程:(1)进行图像预处理。

针对图像可能出现过亮或者过暗问题,先后运用色彩平衡和光照补偿消除色彩偏差的影响;(2)基于肤色进行人脸粗检测。

根据人脸肤色在YCbCr色彩空间呈现的聚类特性,在YCbCr色彩空间内建立了肤色模型并以此对图像进行肤色分割,提取出候选人脸区域。

对得到的粗检图像进行膨胀腐蚀和平滑操作,消除图像中的毛刺和噪声点;(3)基于Adaboost算法进行人脸细检测。

加载OpenCV 中基于特征积分图的分类器构造级联分类器,对肤色分割后的候选人脸区域运用Adaboost算法进行人脸的细检测,分离出各个图像中的人脸区域;(4)根据系统中维护的人脸数据库,运用一维PCA算法实现人脸样本的分类识别。

实际测试结果表明,对于正面人脸,在光照变化的情况下,在进行人脸检测及识别的时候,能够取得较理想的结果。

【Abstract】 With the development of computer science, as a kind of biometric technology, face detection and recognition gets more and more attentions. Face detection and recognition has become one of the most active topics for computer vision and pattern recognition.In this thesis, a face detection and recognition system is developed under OpenCV with VC++2008 concerning face detection and recognition problems.According to the process of face detection and recognition, a series of techniques are involved which include color balance, light compensation, skin detection, Adaboost algorithm, dilation, erosion, smoothing algorithm and PCA algorithm.In this system, in order to assist face recognition, a method of updating the face database dynamically is adopted. The final test results turn out that the system can detect and recognize faces fast and precisely.The system is mainly composed of four parts:The first part is image preprocessing, considering that the image could be too bright or too dark and the iamges may be influenced by color deviation, color balance and light compensation are used to deal with the two problems respectively.The second part is skin detection, the picture processed is transformed into YCbCr color space due to the clustering features of skin under it, and by doing so,the skin area is separated while the rest pixels filled with green which could reduce the computing pressure in the following steps.In addition, dilation and erosion are used to erase the burrs and noises in the images.The third step is to detect faces in the image which is got from the procedures of the two steps above and the transition from YCbCr to gray with Adaboost algorithm.The final step is to recognize the test face with one-dimension PCA algorithm with the assistance of dynamical face database maintained by the system.After examined by the practical pictures,the system has shown satisfying results while detecting and recognizing frontal faces.摘要本文综述了人脸识别理论的研究现状,根据人脸自动识别技术发展的时间进行了分类,分析和比较各种识别方法优缺点,讨论了其中的关键技术及发展前景。

人脸识别可能用到的代码

人脸识别可能用到的代码

人脸识别可能用到的代码: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:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=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);t9=imread('D:\matlab\皮肤库\9.jpg');[r9,g9]=rgb_RGB(t9);t10=imread('D:\matlab\皮肤库\10.jpg');[r10,g10]=rgb_RGB(t10);t11=imread('D:\matlab\皮肤库\11.jpg');[r11,g11]=rgb_RGB(t11);t12=imread('D:\matlab\皮肤库\12.jpg');[r12,g12]=rgb_RGB(t12);t13=imread('D:\matlab\皮肤库\13.jpg');[r13,g13]=rgb_RGB(t13);t14=imread('D:\matlab\皮肤库\14.jpg');[r14,g14]=rgb_RGB(t14);t15=imread('D:\matlab\皮肤库\15.jpg');[r15,g15]=rgb_RGB(t15);t16=imread('D:\matlab\皮肤库\16.jpg');[r16,g16]=rgb_RGB(t16);t17=imread('D:\matlab\皮肤库\17.jpg');[r17,g17]=rgb_RGB(t17);t18=imread('D:\matlab\皮肤库\18.jpg');[r18,g18]=rgb_RGB(t18);t19=imread('D:\matlab\皮肤库\19.jpg');[r19,g19]=rgb_RGB(t19);t20=imread('D:\matlab\皮肤库\20.jpg');[r20,g20]=rgb_RGB(t20);t21=imread('D:\matlab\皮肤库\21.jpg');[r21,g21]=rgb_RGB(t21);t22=imread('D:\matlab\皮肤库\22.jpg');[r22,g22]=rgb_RGB(t22);t23=imread('D:\matlab\皮肤库\23.jpg');[r23,g23]=rgb_RGB(t23);t24=imread('D:\matlab\皮肤库\24.jpg');[r24,g24]=rgb_RGB(t24);t25=imread('D:\matlab\皮肤库\25.jpg');[r25,g25]=rgb_RGB(t25);t26=imread('D:\matlab\皮肤库\26.jpg');[r26,g26]=rgb_RGB(t26);t27=imread('D:\matlab\皮肤库\27.jpg');[r27,g27]=rgb_RGB(t27);r=cat(1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r 26,r27);g=cat(1,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g18,g19,g20,g21,g22,g2 3,g24,g25,g26,g27);m=mean([r,g])n=cov([r,g])3.求质心function [xmean, ymean] = center(bw)bw=bwfill(bw,'holes');area = bwarea(bw);[m n] =size(bw);bw=double(bw);xmean =0; ymean = 0;for i=1:m,for j=1:n,xmean = xmean + j*bw(i,j);ymean = ymean + i*bw(i,j);end;end;if(area==0)xmean=0;ymean=0;elsexmean = xmean/area;ymean = ymean/area;xmean = round(xmean);ymean = round(ymean);end4. 求偏转角度function [theta] = orient(bw,xmean,ymean) [m n] =size(bw);bw=double(bw);a = 0;b = 0;c = 0;for i=1:m,for j=1:n,a = a + (j - xmean)^2 * bw(i,j);b = b + (j - xmean) * (i - ymean) * bw(i,j);c = c + (i - ymean)^2 * bw(i,j);end;b = 2 * b;theta = atan(b/(a-c))/2;theta = theta*(180/pi); % 从幅度转换到角度5. 找区域边界function [left, right, up, down] = bianjie(A) [m n] = size(A);left = -1;right = -1;up = -1;down = -1;for j=1:n,for i=1:m,if (A(i,j) ~= 0)left = j;break;end;end;if (left ~= -1) break;end;end;for j=n:-1:1,for i=1:m,if (A(i,j) ~= 0)right = j;break;end;end;if (right ~= -1) break;end;for i=1:m,for j=1:n,if (A(i,j) ~= 0)up = i;break;end;end;if (up ~= -1)break;end;end;for i=m:-1:1,for j=1:n,if (A(i,j) ~= 0)down = i;break;end;end;if (down ~= -1)break;end;end;6. 求起始坐标function newcoord = checklimit(coord,maxval) newcoord = coord;if (newcoord<1)newcoord=1;end;if (newcoord>maxval)newcoord=maxval;7.模板匹配function [ccorr, mfit, RectCoord] = mobanpipei(mult, frontalmodel,ly,wx,cx, cy, angle) frontalmodel=rgb2gray(frontalmodel);model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小model_rot = imrotate(model_rot,angle,'bilinear'); % 旋转模板[l,r,u,d] = bianjie(model_rot); % 求边界坐标bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 选择模板人脸区域[modx,mody] =center(bwmodel_rot); % 求质心[morig, norig] = size(bwmodel_rot);% 产生一个覆盖了人脸模板的灰度图像mfit = zeros(size(mult));mfitbw = zeros(size(mult));[limy, limx] = size(mfit);% 计算原图像中人脸模板的坐标startx = cx-modx;starty = cy-mody;endx = startx + norig-1;endy = starty + morig-1;startx = checklimit(startx,limx);starty = checklimit(starty,limy);endx = checklimit(endx,limx);endy = checklimit(endy,limy);for i=starty:endy,for j=startx:endx,mfit(i,j) = model_rot(i-starty+1,j-startx+1);end;end;ccorr = corr2(mfit,mult) % 计算相关度[l,r,u,d] = bianjie(bwmodel_rot);sx = startx+l;sy = starty+u;RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标8.主程序clear;[fname,pname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.gif'},'Please choose a color picture...');% 返回打开的图片名与图片路径名[u,v]=size(fname);y=fname(v); % 图片格式代表值switch ycase 0errordlg('You Should Load Image File First...','Warning...');case{'g';'G';'p';'P';'f';'F'}; % 图片格式若是JPG/jpg、BMP/bmp、TIF/tif或者GIF/gif,才打开I=cat(2,pname,fname);Ori_Face=imread(I);subplot(2,3,1),imshow(Ori_Face);otherwiseerrordlg('You Should Load Image File First...','Warning...');endR=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;m=[ 0.4144,0.3174]; % 均值n=[0.0031,-0.0004;-0.0004,0.0003]; % 方差row=size(Ori_Face,1); % 行像素数column=size(Ori_Face,2); % 列像素数for i=1:rowfor j=1:columnif RGB(i,j)==0rr(i,j)=0;gg(i,j)=0;elserr(i,j)=R1(i,j)/RGB(i,j); % rgb归一化gg(i,j)=G1(i,j)/RGB(i,j);x=[rr(i,j),gg(i,j)];p(i,j)=exp((-0.5)*(x-m)*inv(n)*(x-m)'); % 皮肤概率服从高斯分布 endendendsubplot(2,3,2);imshow(p); % 显示皮肤灰度图像low_pass=1/9*ones(3);image_low=filter2(low_pass, p); % 低通滤波去噪声subplot(2,3,3);imshow(image_low);% 自适应阀值程序previousSkin2 = zeros(i,j);changelist = [];for threshold = 0.55:-0.1:0.05two_value = zeros(i,j);two_value(find(image_low>threshold)) = 1;change = sum(sum(two_value - previousSkin2));changelist = [changelist change];previousSkin2 = two_value;end[C, I] = min(changelist);optimalThreshold = (7-I)*0.1two_value = zeros(i,j);two_value(find(image_low>optimalThreshold)) = 1; % 二值化subplot(2,3,4);imshow(two_value); % 显示二值图像frontalmodel=imread('E:\我的照片\人脸模板.jpg'); % 读入人脸模板照片FaceCoord=[];imsourcegray=rgb2gray(Ori_Face); % 将原照片转换为灰度图像[L,N]=bwlabel(two_value,8); % 标注二值图像中连接的部分,L为数据矩阵,N为颗粒的个数for i=1:N,[x,y]=find(bwlabel(two_value)==i); % 寻找矩阵中标号为i的行和列的下标bwsegment = bwselect(two_value,y,x,8); % 选择出第i个颗粒numholes = 1-bweuler(bwsegment,4); % 计算此区域的空洞数if (numholes >= 1) % 若此区域至少包含一个洞,则将其选出进行下一步运算RectCoord = -1;[m n] = size(bwsegment);[cx,cy]=center(bwsegment); % 求此区域的质心bwnohole=bwfill(bwsegment,'holes'); % 将洞封住(将灰度值赋为1)justface = uint8(double(bwnohole) .* double(imsourcegray));% 只在原照片的灰度图像中保留该候选区域angle = orient(bwsegment,cx,cy); % 求此区域的偏转角度bw = imrotate(bwsegment, angle, 'bilinear');bw = bwfill(bw,'holes');[l,r,u,d] =bianjie(bw);wx = (r - l +1); % 宽度ly = (d - u + 1); % 高度wratio = ly/wx % 高宽比if ((0.8<=wratio)&(wratio<=2))% 如果目标区域的高度/宽度比例大于0.8且小于2.0,则将其选出进行下一步运算 S=ly*wx; % 计算包含此区域矩形的面积A=bwarea(bwsegment); % 计算此区域面积if (A/S>0.35)[ccorr,mfit, RectCoord] = mobanpipei(justface,frontalmodel,ly,wx, cx,cy, angle);endif (ccorr>=0.6)mfitbw=(mfit>=1);invbw = xor(mfitbw,ones(size(mfitbw)));source_with_hole = uint8(double(invbw) .* double(imsourcegray));final_image = uint8(double(source_with_hole) + double(mfit));subplot(2,3,5);imshow(final_image); % 显示覆盖了模板脸的灰度图像imsourcegray = final_image;subplot(2,3,6);imshow(Ori_Face); % 显示检测效果图end;if (RectCoord ~= -1)FaceCoord = [FaceCoord; RectCoord];endendendend% 在认为是人脸的区域画矩形[numfaces x] = size(FaceCoord);for i=1:numfaces,hd = rectangle('Position',FaceCoord(i,:));set(hd, 'edgecolor', 'y');end部分检测原理一、基于肤色模型的人脸检测对于一个成功的人脸识别系统,人脸检测是极其重要和关键的一步,它直接影响人脸特征的提取,识别等后续工作。

人脸识别综述与展望-最新范文

人脸识别综述与展望-最新范文

人脸识别综述与展望1人脸识别技术概述近年来,随着计算机技术的迅速发展,人脸自动识别技术得到广泛研究与开发,人脸识别成为近30年里模式识别和图像处理中最热门的研究主题之一。

人脸识别的目的是从人脸图像中抽取人的个性化特征,并以此来识别人的身份。

一个简单的自动人脸识别系统,包括以下4个方面的内容:(1)人脸检测(Detection):即从各种不同的场景中检测出人脸的存在并确定其位置。

(2)人脸的规范化(Normalization):校正人脸在尺度、光照和旋转等方面的变化。

(3)人脸表征(FaceRepresentation):采取某种方式表示检测出人脸和数据库中的已知人脸。

(4)人脸识别(Recognition):将待识别的人脸与数据库中的已知人脸比较,得出相关信息。

2人脸识别算法的框架人脸识别算法描述属于典型的模式识别问题,主要有在线匹配和离线学习两个过程组成,如图1所示。

图1一般人脸识别算法框架在人脸识别中,特征的分类能力、算法复杂度和可实现性是确定特征提取法需要考虑的因素。

所提取特征对最终分类结果有着决定性的影响。

分类器所能实现的分辨率上限就是各类特征间最大可区分度。

因此,人脸识别的实现需要综合考虑特征选择、特征提取和分类器设计。

3人脸识别的发展历史及分类人脸识别的研究已经有相当长的历史,它的发展大致可以分为四个阶段:第一阶段:人类最早的研究工作至少可追朔到二十世纪五十年代在心理学方面的研究和六十年代在工程学方面的研究。

J.S.Bruner于1954年写下了关于心理学的Theperceptionofpeople,Bledsoe在1964年就工程学写了FacialRecognitionProjectReport,国外有许多学校在研究人脸识别技术[1],其中有从感知和心理学角度探索人类识别人脸机理的,如美国TexasatDallas大学的Abdi和Tool小组[2、3],由Stirling大学的Bruce教授和Glasgow大学的Burton教授合作领导的小组等[3];也有从视觉机理角度进行研究的,如英国的Graw小组[4、5]和荷兰Groningen大学的Petkov小组[6]等。

人脸识别的主要算法以及原理

人脸识别的主要算法以及原理

⼈脸识别的主要算法以及原理⼈脸识别的主要算法以及原理主流的技术基本上可以归结为三类,即:基于⼏何特征的⽅法、基于模板的⽅法和基于模型的⽅法。

1. 基于⼏何特征的⽅法是最早、最传统的⽅法,通常需要和其他结合才能有⽐较好的效果;2. 基于模板的⽅法可以分为基于相关匹配的⽅法、特征脸⽅法、线性判别分析⽅法、奇异值分解⽅法、神经⽹络⽅法、动态连接匹配⽅法等。

3. 基于模型的⽅法则有基于隐马尔柯夫模型,主动形状模型和主动外观模型的⽅法等。

1. 基于⼏何特征的⽅法⼈脸由眼睛、⿐⼦、嘴巴、下巴等部件构成,正因为这些部件的形状、⼤⼩和结构上的各种差异才使得世界上每个⼈脸千差万别,因此对这些部件的形状和结构关系的⼏何描述,可以做为⼈脸识别的重要特征。

⼏何特征最早是⽤于⼈脸侧⾯轮廓的描述与识别,⾸先根据侧⾯轮廓曲线确定若⼲显著点,并由这些显著点导出⼀组⽤于识别的特征度量如距离、⾓度等。

Jia 等由正⾯灰度图中线附近的积分投影模拟侧⾯轮廓图是⼀种很有新意的⽅法。

采⽤⼏何特征进⾏正⾯⼈脸识别⼀般是通过提取⼈眼、⼝、⿐等重要特征点的位置和眼睛等重要器官的⼏何形状作为分类特征,但Roder对⼏何特征提取的精确性进⾏了实验性的研究,结果不容乐观。

可变形模板法可以视为⼏何特征⽅法的⼀种改进,其基本思想是 :设计⼀个参数可调的器官模型 (即可变形模板),定义⼀个能量函数,通过调整模型参数使能量函数最⼩化,此时的模型参数即做为该器官的⼏何特征。

这种⽅法思想很好,但是存在两个问题,⼀是能量函数中各种代价的加权系数只能由经验确定,难以推⼴,⼆是能量函数优化过程⼗分耗时,难以实际应⽤。

基于参数的⼈脸表⽰可以实现对⼈脸显著特征的⼀个⾼效描述,但它需要⼤量的前处理和精细的参数选择。

同时,采⽤⼀般⼏何特征只描述了部件的基本形状与结构关系,忽略了局部细微特征,造成部分信息的丢失,更适合于做粗分类,⽽且⽬前已有的特征点检测技术在精确率上还远不能满⾜要求,计算量也较⼤。

人脸识别的主要方法

人脸识别的主要方法

1.1 人脸识别的主要方法目前,国内外人脸识别的方法很多,并且不断有新的研究成果出现。

人脸识别的方法根据研究角度的不同,有不同的分类方法。

根据输入图像中人脸的角度不同,可以分为正面,侧面,倾斜的人脸图像的识别;根据图像来源的不同,可分为静态和动态的人脸识别;根据输入图像的特点,又可分为灰度图像和彩色图像的人脸识别等等。

本文重点研究基于正面的、静态的灰度图像的识别方法。

对于静态的人脸识别方法从总体上看可以分为三大类:一是基于统计的识别方法,主要包括特征脸(Eigenface)方法和隐马尔科夫模型(Hidden Markov Model 简称HMM)方法等;二是基于连接机制的识别方法,包括人工神经网路(Artifical Neural Network 简称ANN)方法和弹性图匹配(Elastic Bunch Graph Matching 简称EBGM)方法等;三是一些其他的综合方法及处理非二维灰度图像的方法。

下面分别进行介绍。

1.1.1 基于特征脸的方法特征脸方法[5],又称为主成份分析法(Principal Component Analysis 简称PCA),它是20 世纪90 年代初期由Turk 和Pentland 提出的,是一种经典的算法。

它根据图像的统计特征进行正交变换(即K-L 变换),以消除原有向量各个分量之间的相关性。

变换得到对应特征值依次递减的特征向量,即特征脸。

特征脸方法的基本思想是将图像经过K-L 变换后由高维向量转换为低维向量,并形成低维线性向量空间,利用人脸投影到这个低维空间所得到的投影系数作为识别的特征矢量。

这样,就产生了一个由“特征脸”矢量张成的子空间,称为“人脸子空间”或“特征子空间”,每一幅人脸图像向其投影都可以获得一组坐标系数,这组坐标系数表明了人脸在子空间中的位置,因此利用特征脸方法可以重建和识别人脸。

通过人脸向量向特征子空间作投影得到的向量称之为主分量或特征主分量。

基于遗传算法的支持向量机人脸识别技术

基于遗传算法的支持向量机人脸识别技术

构风险最小原理基础上的,结构简 单、学习性能优越 ,可防止过学习现象和 陷入局部最小 问题,这些特
点是传统神经 网络学习算法所 不及 的,它 已经成 为机器学 习领域 的研 究热 点.人脸识别过程如图 1所 示 ,它有两个关键环节:特征提取和 识别,人脸检测与归一化主要是在含有人脸 的图像 中准确找到人


‘ 』

— — ●

象 素的灰度值 ,而孤立地 改变某 个象素的灰度值是没 有意义的.而使用 K L变换后 ,每个描述量都有其各 自的作用 ,因此通过改变这些参数的值就可实现对 -
模型的有效描述.首先在 已建立的人脸 图像库中,利用 K L变换确定相应的人脸基图像,再用这些基 图 .
人脸 识别方法的实验结果表 明,该方法所 得参数 确定的 S M 具有较优 的识别率 ,其整体性 能优 良. V
关 键 词 :支 持向量机 ;核 函数 ;遗传算法 ;人脸识别 中图分类号 :T 3 1 P9 . 4
收 稿 日 期 :2 0 —1 —1 05 2 2
文献标识码 :A
文章编号 : 17 "2 5 2 0 )0 一O 3 —0 6 1 2 0( 0 6 5 O 0 3
脸 ,并将人脸进行预处理转化成适合计算机处理 的格式 ;特征提取是对 归一化 后的人脸提 取出主要特
征 ,本文利用 KL变换法提取出 效的人脸 像特征,最后用基 于遗传算法的 S M 方法对人脸的特征差 . V
_
另 进行 识 另 . 0 0
^ 、

1 基于 KL变换 的有效特征提取 -
2 基于
目前应用于人脸识别的方法主要有:R we ol y等人提出的基于神经 网络的方法、Fse 判别法和基于 i r h

KL分解计算经验特征函数算法Matlab

KL分解计算经验特征函数算法Matlab

KL分解计算经验特征函数算法Matlab
本文利用KL展开对已知大小的图片进行判断,确定其是否为人脸图像。

我使用牛津大学给出的200张标准人脸图片为训练样本,对给出的非人脸图像orangutang进行测试,结果表明人脸识别系统可以识别出图片是否为人脸。

介绍:
人脸识别是目前计算机图像中应用相当广泛的技术,近来受到广泛关注。

该问题的解决有助于身份辨识相关的信息安全、司法刑侦等多种领域。

人脸识别所采用的方法也是多种多样,主要有基于人脸特征点的识别、基于神经网络识别等等,由于问题的复杂性,人脸识别的准确度一直难以达到大规模推广应用的水平。

本文所采用的方法是基于KL变换的特征脸识别。

KL变换是一种在图像压缩领域广为人知的最优正交变换,也可以考虑用在人脸识别中,检测图片是否具有人脸图像的特性以判别该图像是否为人脸。

本文具体结构如下:
4(基本理论和方法)中介绍了一般KL展开的原理及其在人脸识别领域中应用的方法和具体实现;
5(方法)中介绍了我应用KL展开进行人脸识别时采用的独特的处理方法;
6(方法分析)中介绍了方法的适用范围和局限;
7(算法)中介绍了在我所应用的KL展开方法在matlab上的的具体实现,在附件中,有相应的matlab源代码可供验证;
8(算法分析)中说明了代码复杂度以及人脸识别的精度问题;
9(数学结果)中含有我应用“orangutang”和一些老师给出的人脸图像测试人脸识别性能的具体例子;
10(讨论)中阐述了一些进一步精化人脸识别的设想以及本次project的收获与感想。

KL变化特点:
因为原来KL特征空间中,较大特征值对应的特征向量体现原图像的总体趋势。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于K-L变换的人脸识别一、实验原理及基本要求特征脸方法是基于K-L变换的人脸识别方法,K-L变换是图像压缩的一种最优正交变换。

高维的图像空间经过K-L变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。

如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法用于人脸识别的基本思想。

在人脸识别中,可以用离散K-L变换对人脸图像的原始空间进行转换,即构造人脸图像数据集的协方差矩阵,对之进行正交变换,求出协方差矩阵的特征向量,再依据特征值的大小对这些特征向量进行排序,每一个向量表示人脸图像中一个不同数量的变量,这些特征向量表示特征的一个集合,它们共同表示一个人脸图像。

在人脸识别领域,人们常称这些特征向量为特征脸。

每一个体人脸图像都可以确切地表示为一组特征脸的线性组合。

这样我们首先通过有指导的训练(给定训练样本集已知分类)得到样本集在特征脸空间中的坐标。

训练完成后,输入待辨识图像,求得在特征脸空间的坐标,采用欧式距离法,就可以实现人脸识别。

我们从网上下载人脸图像,构建人脸训练数据库和测试数据库,采用K-L变换进行特征脸提取,并实现人脸识别。

通过K-L变换在人脸识别中的应用,加深对所学内容的理解和感性认识。

二、具体做法及流程图ORL人脸库是由英国剑桥Olivetti实验室从1992年4月到1994年4月期间拍摄的一系列人脸图像组成,共有40个不同年龄、不同性别和不同种族的对象。

每个对象10幅图像共计400幅灰度图像组成,图像尺寸是92×112,图像背景为黑色。

其中人脸部分表情和细节均有变化,例如笑与不笑、眼睛睁着或闭着,戴或不戴眼镜等,人脸姿态也有变化,其深度旋转和平面旋转可达20度,人脸尺寸也有最多10%的变化。

该库是目前使用最广泛的标准数据库,它含有大量的比较结果。

本次试验我们用的是ORL人脸库中的人脸样本集,每个人的人脸样本集中含有十个人脸样本。

我们从其中挑出训练样本和测试样本。

对训练样本集采用K-L变换进行特征脸提取,并对测试样本集进行人脸识别。

步骤:1、读入训练人脸库。

读入时,将每个人脸图像转化为一维的列向量。

本次实验参与训练的人脸图像有N=40个,每个图像大小为92*112. 则训练图像可以表示为一个(92×112)×40的矩阵X 。

其中,第i 个人脸可以表示为],,,[)(:,112*9221ii i i x x x i X x ==, )40,2,1( =i2、计算平均脸和相应的距离向量。

平均脸就是所有人脸图像的平均值向量。

计算公式如下:∑==Ni i xNx 11则每张人脸与平均脸之间的距离向量可以表示为:x x d ii -=3、计算特征脸。

设矩阵],,[21N d d d A =,本次试验我们选择训练样本集的类间散布矩阵作为K-L变换的产生矩阵,即: ∑===Ni Ti i Tb d d NAA N S 111计算特征脸时要计算出协方差矩阵的前Z (Z<<N )个较大特征值的特征向量。

但是由于上式是一个(92*112)×(92*112)的高维向量,计算这个矩阵的特征值和特征向量的计算量非常大,所以先计算A A T 的特征值与特征向量,设它们分别为i λ和)40,,2,1( =i v i 。

再将i λ的值从大到小排列,选取前Z 个特征值,使其满足:αλλ≥∑∑==Ni iZi i11这里的α表示样本集的前Z 个轴上的能量占整个能量的α以上。

本次实验我们取的α为99%。

然后,从z i 2,1=,计算21-=i i i Av u λ,则由Z 个i u 可以组成一个特征脸空间},,{21Z u u u W=。

4、投影。

将每一幅人脸与平均脸的差值矢量i d 投影到“特征脸”空间,得到第i 个人脸的特征脸向量表示为:),,2,1(N i d W P i Ti== 5、对待识别的人脸进行识别( 利用欧氏距离分类) 。

先选定一个距离阈值,如果待识别的人脸图像投影到特征脸空间后与人脸集空间中点的最小距离仍然大于这个阈值,则说明待识别人脸包含的是未知人脸。

本次实验我们选取的阈值为),2,1,}({max 21,N k j P P k j kj ===θ把待识别的人脸图像R 投影到特征脸空间,得到:)(x R W P T-= P 与每个人脸的距离定义为:),2,1(22N k P P k k =-=ε人脸分类的规则如下: (1)、若,,θε≥∀kk 则输入图像中包含的是未知人脸。

(2)、若,}m in{θε<k 则输入图像为库中第k 个人的人脸。

流程图如下:三、 实验结果与分析1、首先,我们从人脸库中的二十个人脸样本集每个人脸样本集中抽取两个样本组成一个包含四十个样本的训练样本集,并将这二十个人脸样本集中每个人脸样本集剩下的8个人脸样本作为测试样本集待测试。

测试结果如下:个样本数为四十的训练样本集,用第一次实验的测试样本集继续进行测试,测试结果如下:原因有两个:一是实验一中得训练样本是由二十个人脸样本集各抽出两个人脸样本组成的;二是实验二中所用训练样本集来自四十个不同人的人脸样本集,所以出现错误的可能性会加大。

四、心得体会本次实验拿到题目之后,我们首先从书上以及其它资料上了解了K-L变换,弄懂了它的原理以及做法,然后从网上下载了人脸库,并根据设计好的实验步骤用MATLAB编写程序,最后对测试样本进行测试,得到结果并进行分析。

本次实验时在编写程序上我们已经能够很熟练了,并且出现的错误也很少了。

程序代码:1、用20个人每人两个人脸样本组成训练样本N=40;X=zeros(92*112,80);i=1;img1=imread('C:\Users\Administrator\Desktop\renlianXL\1.pgm','pgm'); for j=1:10304X(j,i)=img1(j);endi=i+1;%依次进行读入训练样本集for j=1:10304X(j,i)=img60(j);endSUM=sum(X');XP=1/N*SUM;XP=XP';A=zeros(10304,40);for i=1:40A(:,i)=X(:,i)-XP;endB=A'*A;[VV p]=eig(B);%下面需要将vi和di重新排列,保证按从大到小d=zeros(40,40);V=zeros(40,40);for i=1:40d(i,i)=p(41-i,41-i);V(:,i)=VV(:,41-i);enddd=0;for j=1:40dd=dd+d(j,j);%计算所有特征值之和endz=40;for a=1:40s=0;for j=1:as=s+d(j,j);endif s/dd>=0.99&&a<=z%求出占特征值总和的前z个特征值z=a;endendW=zeros(10304,z);for j=1:zW(:,j)=A*V(:,j)*1/sqrt(d(j,j));%此时的W是特征脸空间endP=zeros(z,40);for i=1:40P(:,i)=W'*A(:,i);%将每一幅人脸与平均脸的差值矢量投影到特征脸空间endsita1=0;for i=1:40for j=1:40ss=norm(P(:,i)-P(:,j));if ss>sita1sita1=ss;endendendsita=0.5*sita1;img01=imread('C:\Users\Administrator\Desktop\renlianCS\s4\1.pgm','pgm ');I=zeros(10304,1);for j=1:10304I(j,1)=img01(j);endP01=W'*(I-XP);P02=W*P01+XP;sigma=norm(I-P02);sigma1=zeros(z,1);for k=1:40sigma1(k,1)=norm(P01-P(:,k));end[sigma2,z0]=min(sigma1);if sigma>=sitafprintf('输入图像不是人脸图像');elseif sigma2>=sitafprintf('输入图像包含未知人脸');elsefprintf('输入图像为库中的第%d个人脸',z0)endend2、四十个人脸样本集中各出一个人脸样本组成人脸样本集N=40;X=zeros(92*112,40);i=1;img1=imread('C:\Users\Administrator\Desktop\renlianXL\1.pgm','pgm'); for j=1:10304X(j,i)=img1(j);endi=i+1;%依次进行,读入训练样本集。

for j=1:92*112X(j,i)=img40(j);endSUM=sum(X');XP=1/N*SUM;XP=XP';A=zeros(10304,40);for i=1:40A(:,i)=X(:,i)-XP;endB=A'*A;[VV p]=eig(B);%下面需要将vi和di重新排列,保证按从大到小d=zeros(40,40);V=zeros(40,40);for i=1:40d(i,i)=p(41-i,41-i);V(:,i)=VV(:,41-i);enddd=0;for j=1:40dd=dd+d(j,j);%计算所有特征值之和endz=80;for a=1:40s=0;for j=1:as=s+d(j,j);endif s/dd>=0.99&&a<=z%求出占特征值总和的前z个特征值z=a;endendW=zeros(10304,z);for j=1:zW(:,j)=A*V(:,j)*1/sqrt(d(j,j));%此时的W是特征脸空间endP=zeros(z,40);for i=1:40P(:,i)=W'*A(:,i);%将每一幅人脸与平均脸的差值矢量投影到特征脸空间endsita1=0;for i=1:40for j=1:40ss=norm(P(:,i)-P(:,j));if ss>sita1sita1=ss;endendendsita=0.5*sita1;img01=imread('C:\Users\Administrator\Desktop\renlianCS\s4\10.pgm','pg m');I=zeros(10304,1);for j=1:10304I(j,1)=img01(j);endP01=W'*(I-XP);P02=W*P01+XP;sigma=norm(I-P02);sigma1=zeros(z,1);for k=1:40sigma1(k,1)=norm(P01-P(:,k));end[sigma2,z0]=min(sigma1);if sigma>=sitafprintf('输入图像不是人脸图像');elseif sigma2>=sitafprintf('输入图像包含未知人脸');elsefprintf('输入图像为库中的第%d个人脸',z0);endend。

相关文档
最新文档