实 验 报 告
课程名称 人工智能
实验名称 班 级 学 号
姓 名
成 绩
指导教师
实验日期
一.实验目的
(1)通过本次人脸识别实验,进一步加深图像处理和基本算法的掌握,能利用已有的算法和程序去找出和识别人脸。
(2)通过本次人脸识别实验,进一步掌握和熟悉所学到的人工智能知识,能将所学知识和实际的生活联系起来,去解决一些比较复杂的问题。
(3)熟悉并且掌握人脸识别过程中各种算法的实现过程,能熟练的利用各种软件(VC++6.0,MATLAB 等)去实现算法的编写。
(4)熟悉人脸识别的过程和原理,进一步巩固PCA+LDA算法,掌握其本质,并能将其运用于其他类似模型中,去解决一些问题。
(5)通过实验进一步提高编程能力和解决问题的能力,能独立的思考和类比所学到的知识,进一步了解它们的本质,巩固实际用处。
二.实验原理
基于PCA 人脸识别算法的实现原理
主成分分析为一种统计学中特征提取方法,在实际中应用的非常广泛。PCA 是通过提取原始数据的主元来减少数据的冗余,使数据在低维度的空间中被处理,同时它还能很好保持了原始数据的绝大部分信息,有效的解决了由于空间维数过高而导致的一系列问题。如下将详细介绍如何使用PCA 算法进行人脸识别。第一个环节:提取图像数据并处理
1. 读入人脸,并将图像变化为相应的灰度图像。
2. 将变换后的二维人脸灰度图像变换为一维人脸向量矩阵
一个大小为M*N的二维人脸图像可以看成长度为MN 的人脸图像列向量。为了将二维人脸图像变为以为列向量,我们采取的措施为:首先计算出人脸图像的大小,然后将人脸图像经行转置,最后按列依次取出取出所有灰度值形成大小为MN 的一维向量,其实整个阶段的效果相当于将图像的灰度值按行取出依次连接成一维图像向量。
本环节完成后将会产生由一维图像向量组成的矩阵T 。
第二个环节:计算特征脸
1. 对图像矩阵T 进行规范化
首先计算出图像矩阵中一维列向量的平均值m ,然后对图像矩阵的每一列都减去平均值形成规范化的图像矩阵A 。
2. 计算特征脸
人脸训练图像的协方差矩阵为C=AAT ,其中人脸训练样本为A =[Φ1,..., ΦP ],
2(MN )维度为M ⨯N ⨯P ,则协方差矩阵C 的维度为。这就出现问题,C 的维度
过高,在实际中直接计算它的特征值和特征向量非常困难。因此,本文使用奇异值分解定理来解决这个问题。
奇异值分解定理:
假设B 为n ⨯m 维秩为p 的矩阵,则存在两个正交矩阵和一个对角矩阵: 正交矩阵为
U =[u 1, u 2,..., u p ]∈R n ⨯n 22
(4.23)
(4.24)
其中 V =[v 1, v 2,..., v p ]∈R m ⨯m
(4.25)
(4.26)
对角矩阵为U T U =I V T V =I ∧=diag [λ1, λ2,..., λp ]∈R m ⨯m
1
2 λ1≥λ2... ≥λp T T T 则可以得到B =U ∧V ,而且BB 和B B 有共同的非零特征值,u i 和v i
T T 分别为BB 和B B 对应特征值的正交特征向量。
由上述定理可以得到
(4.27) U =BV ∧ -12
T T m ⨯m 则可以由协方差矩阵C =AA ,构造出矩阵L =A A ∈R ,从而容易求出L
的特征值和特征向量,再根据上述(4-27)式可以求得协方差C 的特征值和特征向量。
实际上我们并不需要协方差所有的特征值和特征向量, m 个(m
T m ⨯m 在本环节,本文通过直接构造L =A A ∈R ,来计算出L 的特征值,再挑
选L 特征值大于100的作为C 的特征值,最后通过C 的特征值计算出它的特征向量,从而形成特征脸。
第三个环节:人脸识别
人脸识别过程分为训练和测试两个阶段。在训练阶段,主要是提取数据库人脸图像的特征,并形成特征库。在测试阶段,主要是提取待识别图像的特征和计算提取的特征和特征库中特征之间的距离测度,并输出最小距离测度对应的人脸图像作为结果。
具体步骤如下:
1. 训练阶段
将规范化的图像矩阵A 中的每一列向量投影到特征子空间,形成特征库。
2. 测试阶段
1假设测试人脸图像为Y ,○在人脸识别前,先对其进行标准化,即Φ=Y -ψ。
T Ω=U Φ。 2○把标准化后的人脸图像向特征子空间进行投影得到向量
3本文使用最近领法分类器欧几里德距离[14,15]进行判决分类。 ○测试图像与每
个人脸图像间的距离为εk =R -R k (k=1,2,…,P) ,并将最小距离对应的训练图像作为测试图像的匹配图像。
三.实验要求
(1)了解人脸识别的基本过程,熟练掌握人脸识别的基本算法和原理。
(2)熟悉人脸特征的提取,以及图像数据的处理,PCA 和LDA 算法。
(3)能运用已有软件和程序设计语言编写程序(实现算法),并能调试程序。
(4)编写的程序简单明了,具有一定结构化,能准确、快速的定位识别出人脸。
(5)了解人脸识别的应用价值和前景,并能将所学的知识运用图实际生活中。
四.主要仪器设备
Dell 笔记本一台,Windows 7 家庭普通版,4.00G 内存,64位操作系统。 Mathworks 公司的MATLAB 7.0软件、微软公司的VC++6.0等软件等。
五.实验内容与步骤
人脸识别是指基于已知的人脸样本库,利用图像处理和模式识别技术从静态或动态场景中,识别或验证一个或多个人脸。从广义上讲,其研究内容包括以下五个方面:
(1)人脸检测:即从动态的场景或复杂的背景中检测出人脸的存在并确定其位置,然后分离出来。这一任务主要受光照、噪声、头部倾斜度以及各种遮挡的影响。
(2)人脸表征:也称为人脸特征提取,即采用某种表示方法来描述检测出的人脸与数据库中已知人脸。通常的表示方法包括几何特征(如欧氏距离、曲率、角度等)、代数特征(如矩阵特征矢量)、固定特征模板、特征脸、云纹图等。
(3)人脸识别:即将待识别的人脸与数据库中已知人脸比较,得出相关信息。这一过程的核心是选择适当的人脸表征方法与匹配策略。
(4)表情分析:即对待识别人脸的表情进行分析,并对其加以归类。
(5)生理分类:即对待识别人脸的生理特征进行分析,得出其年龄、性别等相关信息,或者从几幅相关的图像推导出希望得到的人脸图像,比如从父母图像推导出孩子的脸部特征、基于年龄增长的人脸图像估算等。
其中人脸的表情分析、生理分类是两个非常难的研究方向,本实验由于时间和能力所限,不给予研究。本次主要介绍静态二维人脸的识别方法,重点是人脸特征的提取与识别的关键技术。
本实验的二维人脸识别系统通常主要由人脸检测与定位,人脸特征提取与识
别两部分组成,在这两部分的基础上还包括图像预处理等步骤。其主要实现步骤如下:
(1)图像预处理
由于实际成像系统多少存在不完善的地方以及外界关照条件等因素的影响,在一定程度上增加了图像的噪声,使图像变得模糊,并且比度低、区域灰度不平衡。为了提高图像的质量,保证提取特征的有效性,进而提高识别系统的识别率,在提取特征之前,有必要对图像进行预处理操作,以改善图像质量,保证提取特征的有效性。
(2)人脸检测与定位
从输入的图像中找出人脸及人脸的所在位置,并将人脸从背景中提取并显现出来,输出为分割好的人脸局部图像。
(3)图像归一化
图像归一化属于图像预处理的范畴。在对人脸图像进行特征提取和分类之前一般需要做几何归一化和灰度归一化。几何归一化是指根据人脸定位结果将图像中人脸变换到同一位置和同样的大小,灰度归一化是指对图像进行光照补偿等处理,光照补偿能够一定程度的克服光照的影响而提高识别率。
(4)特征提取与识别
对于归一化了的人脸图像进行面部的各特征的提取,将原始人脸图像中的数据映射到特征空间,对人脸进行特征建模,建立的特征模型主要用于区分各人脸之间的差异性,为人脸识别分类打下基础。由于原始的人脸图像数据量是相当大的,为了有效的实现分类和识别,就要对原始数据进行交换,得到最能反映分类本质的特征,如何提取稳定和有效的特征是识别系统成败的关键。人脸识别的验证是整个自动人脸识别的最后一个步骤,根据面部特征的提取结果,将待检人脸与人脸库中人脸数据进行比较,判断出待检人脸的身份信息。
本实验二维人脸自动识别系统如图所示:
对比以上系统进行分析可知,人脸识别需要考虑一下几个主要方面:如何准确快捷的检测并分割出人脸部分;寻找一种受人脸姿态变化和光照条件等因素影响小的特征提取方法;如何有效的变化补偿、特征描述和准确的分类等。
人脸面部器官比较复杂,一般特征提取方法可以从3个角度对特征进行提取:a. 通过面部拓扑几何关系的先验知识,构造一个包含面部器官的人脸模板对其特征进行提取;b. 将面部器官视为高维图像空间的信号,通过代数的方法将这些信号检测出来,达到提取面部器官特征的目的;c. 利用神经网络对图像进行分类,提取面部器官特征。本实验中脸部特征的准确、快速的提取是整个二维人脸识别系统的关键所在,其误差的减小和复杂算法的实现既是基础也是关键,数据的处理和分析需进行长时间的处理和比较,需要一定的耐心和数学基础,只有经过不断地实验和数据的调整才能使系统正确快速的识别出人脸。
六.程序清单及描述
程序代码如下:
clear all
close all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 读入待检测图像 x=imread('1.jpg'); %读入图像
figure
imshow(x)
if size(x,3)>1
x=rgb2gray(x);%转化为灰度图
end
x=double(x); %转化为小数型
[output,count,m,svec]=facefind(x);%找出人脸
imagesc(x)
colormap(gray)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 画出人脸框图 col=[1 0 0];%人脸框图为红色
col=[0 1 0];%人脸框图为绿色
t=2; %人脸框图线的宽度
N=size(output,2);
if (N>0)
for i=1:N
x1=output(1,i);
x2=output(2,i);
y1=output(3,i);
y2=output(4,i);
vec=[x1 x2 y1 y2]; %方框四个角的坐标
ind=find(isinf(vec)); %无限值情况
a=200; %should be realmax
vec(ind)=sign(vec(ind))*a;
h1=line([vec(1) vec(2)],[vec(3) vec(3)]);
h2=line([vec(2) vec(2)],[vec(3) vec(4)]);
h3=line([vec(1) vec(2)],[vec(4) vec(4)]);
h4=line([vec(1) vec(1)],[vec(3) vec(4)]);
h=[h1 h2 h3 h4];
set(h,'Color',col); %设置颜色
set(h,'LineWidth',t) %设置线条宽度
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
minf=m(1);
maxf=m(2);
ex1=size(x,1)*0.01;
ex1e=size(x,1)*0.02;
ex2=size(x,1)*0.04;
ex2e=size(x,1)*0.05;
bx1=[0 maxf maxf 0];
by1=[ex1e ex1e ex1 ex1];
bx2=[0 minf minf 0];
by2=[ex2e ex2e ex2 ex2];
hold on
fill(bx1,by1,[0 1 0])
fill(bx2,by2,[0 1 0])
hold off
七.运行结果及截图
截图1:
截图2:
截图3:
截图4:
截图5:
结果分析:从程序实际运行结果可以看出,程序基本实现了人脸的快速、准确的定位和识别,并且能正确的框出人脸。但其中还有些许的不足之处,尤其是人脸较远,且比较模糊和特征不明显的时候,程序不能正确的识别人脸并框出来。
八.总结与体会
在本次试验的过程中由于对人脸识别的不熟悉,尤其是识别的算法的不熟悉,在最初理论准备阶段完全没有头绪,而且由于对基本算法的不熟悉,根本不知从何
入手,其次由于以前从没有接触过MATLAB 编程,只能一点一点的摸索学习,在写代码的过程中,错误重重,最初调试代码的过程中,也不知从何入手,逻辑错误很难发现。对人脸识别基本算法PCA 和LAD 不了解,最初只知道需要提取人脸的特征数据,没想到在数据提取和处理的过程中需要进行很复杂的处理和误差处理,由于数理知识的不过关,显得很吃力,而且由于对其本质的不理解,从头到尾的数据处理过程根本不知道在干什么,花费了很长一段时间才弄明白。其次是代码的编写和优化,各种算法的调用和组合,模块化的编程,最终才将程序调试出来。通过本次实验,使我学到了许多新知识,尤其是对人脸识别的基本过程有了一个新的认识,对其的基本算法(PCA 和LAD )有了一个全面的了解,和其实际的运用也有了一个新的了解,基于MATLAB 的人脸识别,很具有研究和应用价值,并且得到了越来越多的研究机构和公司的青睐,在国家安全,计算机交互,家庭娱乐等其他领域有着举足轻重的作用,对提高办事效率,防止社会犯罪等有着重大的经济和社会意义。其次对自己的编程能力也有了一个新的提高,MATLAB 编程简洁高效,其本身自带大量的算法程序,只需组装便可运用,而且程序的稳定性较高。最后感谢在实验中帮助我的同学,他们的帮助在一定程度上节省了我大量的时间,使我了解到了更多的知识,拓宽了思路,对最后实验的成功起着很大的作用。
九.参考文献
【1】姚敏,数字图像处理[M]。机械工业出版社,2006:2。
【2】王爱民,沈兰荪。图像分割研究综述[J]。测控技术,2000,19(5):1-5。
【3】张德丰。详解MATLAB 数字图像处理[M]。北京:电子工业出版社,2010。
【4】韩晓军。数字图像处理技术与应用[M]。北京:电子工业出版社,2009。
【5】张化光,刘鑫蕊,孙秋野编著。MATLAB/SIMULINK实用教程[M],北京:人民邮电出版社,2009。
【6】刘刚。MATLAB 数字图像处理[M]。北京:机械工业出版社,2010,5:199-200.
【7】杨杰。数字图像处理及MATLAB 实现[M]。北京:电子工业出版社,2010。
【8】何国辉,甘俊英。PCA-LDA 算法在性别鉴定中的应用[J]。中国图像图形学学报。2006,32(19):2008-211.
【9】祝磊,朱善安。人脸识别的一种新的特征提取方法[J]。计算机学报,2007。
【10】何东风,凌捷。人脸识别技术综述[J]。计算机学报,2003,13(12)75-78。
实 验 报 告
课程名称 人工智能
实验名称 班 级 学 号
姓 名
成 绩
指导教师
实验日期
一.实验目的
(1)通过本次人脸识别实验,进一步加深图像处理和基本算法的掌握,能利用已有的算法和程序去找出和识别人脸。
(2)通过本次人脸识别实验,进一步掌握和熟悉所学到的人工智能知识,能将所学知识和实际的生活联系起来,去解决一些比较复杂的问题。
(3)熟悉并且掌握人脸识别过程中各种算法的实现过程,能熟练的利用各种软件(VC++6.0,MATLAB 等)去实现算法的编写。
(4)熟悉人脸识别的过程和原理,进一步巩固PCA+LDA算法,掌握其本质,并能将其运用于其他类似模型中,去解决一些问题。
(5)通过实验进一步提高编程能力和解决问题的能力,能独立的思考和类比所学到的知识,进一步了解它们的本质,巩固实际用处。
二.实验原理
基于PCA 人脸识别算法的实现原理
主成分分析为一种统计学中特征提取方法,在实际中应用的非常广泛。PCA 是通过提取原始数据的主元来减少数据的冗余,使数据在低维度的空间中被处理,同时它还能很好保持了原始数据的绝大部分信息,有效的解决了由于空间维数过高而导致的一系列问题。如下将详细介绍如何使用PCA 算法进行人脸识别。第一个环节:提取图像数据并处理
1. 读入人脸,并将图像变化为相应的灰度图像。
2. 将变换后的二维人脸灰度图像变换为一维人脸向量矩阵
一个大小为M*N的二维人脸图像可以看成长度为MN 的人脸图像列向量。为了将二维人脸图像变为以为列向量,我们采取的措施为:首先计算出人脸图像的大小,然后将人脸图像经行转置,最后按列依次取出取出所有灰度值形成大小为MN 的一维向量,其实整个阶段的效果相当于将图像的灰度值按行取出依次连接成一维图像向量。
本环节完成后将会产生由一维图像向量组成的矩阵T 。
第二个环节:计算特征脸
1. 对图像矩阵T 进行规范化
首先计算出图像矩阵中一维列向量的平均值m ,然后对图像矩阵的每一列都减去平均值形成规范化的图像矩阵A 。
2. 计算特征脸
人脸训练图像的协方差矩阵为C=AAT ,其中人脸训练样本为A =[Φ1,..., ΦP ],
2(MN )维度为M ⨯N ⨯P ,则协方差矩阵C 的维度为。这就出现问题,C 的维度
过高,在实际中直接计算它的特征值和特征向量非常困难。因此,本文使用奇异值分解定理来解决这个问题。
奇异值分解定理:
假设B 为n ⨯m 维秩为p 的矩阵,则存在两个正交矩阵和一个对角矩阵: 正交矩阵为
U =[u 1, u 2,..., u p ]∈R n ⨯n 22
(4.23)
(4.24)
其中 V =[v 1, v 2,..., v p ]∈R m ⨯m
(4.25)
(4.26)
对角矩阵为U T U =I V T V =I ∧=diag [λ1, λ2,..., λp ]∈R m ⨯m
1
2 λ1≥λ2... ≥λp T T T 则可以得到B =U ∧V ,而且BB 和B B 有共同的非零特征值,u i 和v i
T T 分别为BB 和B B 对应特征值的正交特征向量。
由上述定理可以得到
(4.27) U =BV ∧ -12
T T m ⨯m 则可以由协方差矩阵C =AA ,构造出矩阵L =A A ∈R ,从而容易求出L
的特征值和特征向量,再根据上述(4-27)式可以求得协方差C 的特征值和特征向量。
实际上我们并不需要协方差所有的特征值和特征向量, m 个(m
T m ⨯m 在本环节,本文通过直接构造L =A A ∈R ,来计算出L 的特征值,再挑
选L 特征值大于100的作为C 的特征值,最后通过C 的特征值计算出它的特征向量,从而形成特征脸。
第三个环节:人脸识别
人脸识别过程分为训练和测试两个阶段。在训练阶段,主要是提取数据库人脸图像的特征,并形成特征库。在测试阶段,主要是提取待识别图像的特征和计算提取的特征和特征库中特征之间的距离测度,并输出最小距离测度对应的人脸图像作为结果。
具体步骤如下:
1. 训练阶段
将规范化的图像矩阵A 中的每一列向量投影到特征子空间,形成特征库。
2. 测试阶段
1假设测试人脸图像为Y ,○在人脸识别前,先对其进行标准化,即Φ=Y -ψ。
T Ω=U Φ。 2○把标准化后的人脸图像向特征子空间进行投影得到向量
3本文使用最近领法分类器欧几里德距离[14,15]进行判决分类。 ○测试图像与每
个人脸图像间的距离为εk =R -R k (k=1,2,…,P) ,并将最小距离对应的训练图像作为测试图像的匹配图像。
三.实验要求
(1)了解人脸识别的基本过程,熟练掌握人脸识别的基本算法和原理。
(2)熟悉人脸特征的提取,以及图像数据的处理,PCA 和LDA 算法。
(3)能运用已有软件和程序设计语言编写程序(实现算法),并能调试程序。
(4)编写的程序简单明了,具有一定结构化,能准确、快速的定位识别出人脸。
(5)了解人脸识别的应用价值和前景,并能将所学的知识运用图实际生活中。
四.主要仪器设备
Dell 笔记本一台,Windows 7 家庭普通版,4.00G 内存,64位操作系统。 Mathworks 公司的MATLAB 7.0软件、微软公司的VC++6.0等软件等。
五.实验内容与步骤
人脸识别是指基于已知的人脸样本库,利用图像处理和模式识别技术从静态或动态场景中,识别或验证一个或多个人脸。从广义上讲,其研究内容包括以下五个方面:
(1)人脸检测:即从动态的场景或复杂的背景中检测出人脸的存在并确定其位置,然后分离出来。这一任务主要受光照、噪声、头部倾斜度以及各种遮挡的影响。
(2)人脸表征:也称为人脸特征提取,即采用某种表示方法来描述检测出的人脸与数据库中已知人脸。通常的表示方法包括几何特征(如欧氏距离、曲率、角度等)、代数特征(如矩阵特征矢量)、固定特征模板、特征脸、云纹图等。
(3)人脸识别:即将待识别的人脸与数据库中已知人脸比较,得出相关信息。这一过程的核心是选择适当的人脸表征方法与匹配策略。
(4)表情分析:即对待识别人脸的表情进行分析,并对其加以归类。
(5)生理分类:即对待识别人脸的生理特征进行分析,得出其年龄、性别等相关信息,或者从几幅相关的图像推导出希望得到的人脸图像,比如从父母图像推导出孩子的脸部特征、基于年龄增长的人脸图像估算等。
其中人脸的表情分析、生理分类是两个非常难的研究方向,本实验由于时间和能力所限,不给予研究。本次主要介绍静态二维人脸的识别方法,重点是人脸特征的提取与识别的关键技术。
本实验的二维人脸识别系统通常主要由人脸检测与定位,人脸特征提取与识
别两部分组成,在这两部分的基础上还包括图像预处理等步骤。其主要实现步骤如下:
(1)图像预处理
由于实际成像系统多少存在不完善的地方以及外界关照条件等因素的影响,在一定程度上增加了图像的噪声,使图像变得模糊,并且比度低、区域灰度不平衡。为了提高图像的质量,保证提取特征的有效性,进而提高识别系统的识别率,在提取特征之前,有必要对图像进行预处理操作,以改善图像质量,保证提取特征的有效性。
(2)人脸检测与定位
从输入的图像中找出人脸及人脸的所在位置,并将人脸从背景中提取并显现出来,输出为分割好的人脸局部图像。
(3)图像归一化
图像归一化属于图像预处理的范畴。在对人脸图像进行特征提取和分类之前一般需要做几何归一化和灰度归一化。几何归一化是指根据人脸定位结果将图像中人脸变换到同一位置和同样的大小,灰度归一化是指对图像进行光照补偿等处理,光照补偿能够一定程度的克服光照的影响而提高识别率。
(4)特征提取与识别
对于归一化了的人脸图像进行面部的各特征的提取,将原始人脸图像中的数据映射到特征空间,对人脸进行特征建模,建立的特征模型主要用于区分各人脸之间的差异性,为人脸识别分类打下基础。由于原始的人脸图像数据量是相当大的,为了有效的实现分类和识别,就要对原始数据进行交换,得到最能反映分类本质的特征,如何提取稳定和有效的特征是识别系统成败的关键。人脸识别的验证是整个自动人脸识别的最后一个步骤,根据面部特征的提取结果,将待检人脸与人脸库中人脸数据进行比较,判断出待检人脸的身份信息。
本实验二维人脸自动识别系统如图所示:
对比以上系统进行分析可知,人脸识别需要考虑一下几个主要方面:如何准确快捷的检测并分割出人脸部分;寻找一种受人脸姿态变化和光照条件等因素影响小的特征提取方法;如何有效的变化补偿、特征描述和准确的分类等。
人脸面部器官比较复杂,一般特征提取方法可以从3个角度对特征进行提取:a. 通过面部拓扑几何关系的先验知识,构造一个包含面部器官的人脸模板对其特征进行提取;b. 将面部器官视为高维图像空间的信号,通过代数的方法将这些信号检测出来,达到提取面部器官特征的目的;c. 利用神经网络对图像进行分类,提取面部器官特征。本实验中脸部特征的准确、快速的提取是整个二维人脸识别系统的关键所在,其误差的减小和复杂算法的实现既是基础也是关键,数据的处理和分析需进行长时间的处理和比较,需要一定的耐心和数学基础,只有经过不断地实验和数据的调整才能使系统正确快速的识别出人脸。
六.程序清单及描述
程序代码如下:
clear all
close all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 读入待检测图像 x=imread('1.jpg'); %读入图像
figure
imshow(x)
if size(x,3)>1
x=rgb2gray(x);%转化为灰度图
end
x=double(x); %转化为小数型
[output,count,m,svec]=facefind(x);%找出人脸
imagesc(x)
colormap(gray)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 画出人脸框图 col=[1 0 0];%人脸框图为红色
col=[0 1 0];%人脸框图为绿色
t=2; %人脸框图线的宽度
N=size(output,2);
if (N>0)
for i=1:N
x1=output(1,i);
x2=output(2,i);
y1=output(3,i);
y2=output(4,i);
vec=[x1 x2 y1 y2]; %方框四个角的坐标
ind=find(isinf(vec)); %无限值情况
a=200; %should be realmax
vec(ind)=sign(vec(ind))*a;
h1=line([vec(1) vec(2)],[vec(3) vec(3)]);
h2=line([vec(2) vec(2)],[vec(3) vec(4)]);
h3=line([vec(1) vec(2)],[vec(4) vec(4)]);
h4=line([vec(1) vec(1)],[vec(3) vec(4)]);
h=[h1 h2 h3 h4];
set(h,'Color',col); %设置颜色
set(h,'LineWidth',t) %设置线条宽度
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
minf=m(1);
maxf=m(2);
ex1=size(x,1)*0.01;
ex1e=size(x,1)*0.02;
ex2=size(x,1)*0.04;
ex2e=size(x,1)*0.05;
bx1=[0 maxf maxf 0];
by1=[ex1e ex1e ex1 ex1];
bx2=[0 minf minf 0];
by2=[ex2e ex2e ex2 ex2];
hold on
fill(bx1,by1,[0 1 0])
fill(bx2,by2,[0 1 0])
hold off
七.运行结果及截图
截图1:
截图2:
截图3:
截图4:
截图5:
结果分析:从程序实际运行结果可以看出,程序基本实现了人脸的快速、准确的定位和识别,并且能正确的框出人脸。但其中还有些许的不足之处,尤其是人脸较远,且比较模糊和特征不明显的时候,程序不能正确的识别人脸并框出来。
八.总结与体会
在本次试验的过程中由于对人脸识别的不熟悉,尤其是识别的算法的不熟悉,在最初理论准备阶段完全没有头绪,而且由于对基本算法的不熟悉,根本不知从何
入手,其次由于以前从没有接触过MATLAB 编程,只能一点一点的摸索学习,在写代码的过程中,错误重重,最初调试代码的过程中,也不知从何入手,逻辑错误很难发现。对人脸识别基本算法PCA 和LAD 不了解,最初只知道需要提取人脸的特征数据,没想到在数据提取和处理的过程中需要进行很复杂的处理和误差处理,由于数理知识的不过关,显得很吃力,而且由于对其本质的不理解,从头到尾的数据处理过程根本不知道在干什么,花费了很长一段时间才弄明白。其次是代码的编写和优化,各种算法的调用和组合,模块化的编程,最终才将程序调试出来。通过本次实验,使我学到了许多新知识,尤其是对人脸识别的基本过程有了一个新的认识,对其的基本算法(PCA 和LAD )有了一个全面的了解,和其实际的运用也有了一个新的了解,基于MATLAB 的人脸识别,很具有研究和应用价值,并且得到了越来越多的研究机构和公司的青睐,在国家安全,计算机交互,家庭娱乐等其他领域有着举足轻重的作用,对提高办事效率,防止社会犯罪等有着重大的经济和社会意义。其次对自己的编程能力也有了一个新的提高,MATLAB 编程简洁高效,其本身自带大量的算法程序,只需组装便可运用,而且程序的稳定性较高。最后感谢在实验中帮助我的同学,他们的帮助在一定程度上节省了我大量的时间,使我了解到了更多的知识,拓宽了思路,对最后实验的成功起着很大的作用。
九.参考文献
【1】姚敏,数字图像处理[M]。机械工业出版社,2006:2。
【2】王爱民,沈兰荪。图像分割研究综述[J]。测控技术,2000,19(5):1-5。
【3】张德丰。详解MATLAB 数字图像处理[M]。北京:电子工业出版社,2010。
【4】韩晓军。数字图像处理技术与应用[M]。北京:电子工业出版社,2009。
【5】张化光,刘鑫蕊,孙秋野编著。MATLAB/SIMULINK实用教程[M],北京:人民邮电出版社,2009。
【6】刘刚。MATLAB 数字图像处理[M]。北京:机械工业出版社,2010,5:199-200.
【7】杨杰。数字图像处理及MATLAB 实现[M]。北京:电子工业出版社,2010。
【8】何国辉,甘俊英。PCA-LDA 算法在性别鉴定中的应用[J]。中国图像图形学学报。2006,32(19):2008-211.
【9】祝磊,朱善安。人脸识别的一种新的特征提取方法[J]。计算机学报,2007。
【10】何东风,凌捷。人脸识别技术综述[J]。计算机学报,2003,13(12)75-78。