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

上传人:wj 文档编号:7440656 上传时间:2023-05-11 格式:DOC 页数:13 大小:204.50KB
下载 相关 举报
基于KL变换的人脸识别报告.doc_第1页
第1页 / 共13页
基于KL变换的人脸识别报告.doc_第2页
第2页 / 共13页
基于KL变换的人脸识别报告.doc_第3页
第3页 / 共13页
基于KL变换的人脸识别报告.doc_第4页
第4页 / 共13页
基于KL变换的人脸识别报告.doc_第5页
第5页 / 共13页
基于KL变换的人脸识别报告.doc_第6页
第6页 / 共13页
基于KL变换的人脸识别报告.doc_第7页
第7页 / 共13页
基于KL变换的人脸识别报告.doc_第8页
第8页 / 共13页
基于KL变换的人脸识别报告.doc_第9页
第9页 / 共13页
基于KL变换的人脸识别报告.doc_第10页
第10页 / 共13页
基于KL变换的人脸识别报告.doc_第11页
第11页 / 共13页
基于KL变换的人脸识别报告.doc_第12页
第12页 / 共13页
基于KL变换的人脸识别报告.doc_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《基于KL变换的人脸识别报告.doc》由会员分享,可在线阅读,更多相关《基于KL变换的人脸识别报告.doc(13页珍藏版)》请在冰点文库上搜索。

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

模式识别大作业

班级:

09030901

题目:

基于KL变换的人脸识别

姓名:

黎照学号:

2009302320

姓名:

陈升富学号:

2009302313

姓名:

益琛学号:

2009302311

日期:

2012/4/25

【摘要】本次实验论述了K_L变换在人脸识别中的应用,主要介绍人脸识别过程中的每个环节,整个过程包括人脸图像的采集、预处理、特征提取到训练和识别。

图像的采集

预处理

特征提取

人脸识别

一、基本要求

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

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

二、主要思想

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

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

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

三、实验原理

1、K-L变换

设n维随机向量

其均值向量,相关矩阵,协方差矩阵,经正交变换后产生向量。

设有标准正交变换矩阵T,(即T'T=I)

(称为的K-L展开式)

取前m项为的估计值

其均方误差为

在T‘T=I的约束条件下,

要使均方误差

为此设定准则函数

由得,即

表明:

li是的特征值,而是相应的特征向量。

利用上式有:

用“截断”方式产生x的估计时,使均方误差最小的正交变换矩阵是其相关矩阵Rx的前m个特征值对应的特征向量构成的。

2、构造参数模型

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

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

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

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

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

3、人脸识别

利用K-L变换进行人脸图象识别原理:

第一步:

搜集要识别的人的人脸图象,建立人脸图象库

第二步:

利用K-L变换确定相应的人脸基图象,再反过来用这些基图象对人脸图象库中的所有人脸图象进行K-L变换,从而得到每幅图象的参数向量并将每幅图的参数向量存起来

第三步:

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

第四步:

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

搜集人脸图象,建立人脸库

确定基图象,并用基图象对所有人脸进行K-L变换

对输入的图象规范化并进行K-L变换,得到其参数向量

正确

错误

将参数向量与库中参数向量比较

比对

四、实验源代码

1、特征人脸

function[]=eigface()

allsamples=[];

fori=1:

7

a=imread(strcat('C:

\Users\lenvo\Desktop\图','\',num2str(i),'.BMP'));

b=a(1:

100*100);

b=double(b);

allsamples=[allsamples;b];

end

samplemean=mean(allsamples);

fori=1:

7

xmean(i,:

)=allsamples(i,:

)-samplemean;

end;

sigma=xmean*xmean';[vd]=eig(sigma);

d1=diag(d);

dsort=flipud(d1);

vsort=fliplr(v);

dsum=sum(dsort);

dsum_extract=0;

p=0;

while(dsum_extract/dsum<0.9)

p=p+1;

dsum_extract=sum(dsort(1:

p));

end

p=6;

base=xmean'*vsort(:

1:

p)*diag(dsort(1:

p).^(-1/2));

for(k=1:

p)

hape(base(:

k),100,100);

newpath=['C:

\Users\lenvo\Desktop\test\'int2str(k)'.jpg'];

imwrite(mat2gray(temp),newpath);

end

avg=reshape(samplemean,100,100);

imwrite(mat2gray(avg),'C:

\Users\lenvo\Desktop\test\average.jpg');

save('C:

\Users\lenvo\Desktop\test\eigface.mat','base','samplemean');

2、识别

allsamples=[];

fori=1:

7

a=imread(strcat('C:

\Users\lenvo\Desktop\图

','\',num2str(i),'.BMP'));

b=double(b);

allsamples=[allsamples;b];

end

samplemean=mean(allsamples);

fori=1:

7

xmean(i,:

)=allsamples(i,:

)-samplemean;

end;

sigma=xmean*xmean';

[vd]=eig(sigma);

d1=diag(d);

dsort=flipud(d1);

vsort=fliplr(v);

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));

allcoor=allsamples*base;

accu=0;

forj=1:

3

a=imread(strcat('C:

\Users\lenvo\Desktop\test3','\',num2str(i),'.BMP'));

b=a(1:

10000);

b=double(b);tcoor=b*base;

fork=1:

7

mdist(k)=norm(tcoor-allcoor(k,:

));

end;

[dist,index2]=sort(mdist);

class1=floor((index2

(1)-1)/5)+1;

class2=floor((index2

(2)-1)/5)+1;

class3=floor((index2(3)-1)/5)+1;

ifclass1~=class2&&class2~=class3

class=class1;

elseifclass1==class2

class=class1;

elseifclass2==class3

class=class2;

end;

ifclass==i

accu=accu+1;

end;

end;

accuracy=accu/7

3.重构

function[]=Reconstruct()

loadC:

\Users\lenvo\Desktop\test\eigface.mat;

a=imread('C:

\Users\lenvo\Desktop\test2\10.bmp');

b=a(1:

100*100);b=double(b);

b=b-samplemean;

c=b*base;

t=2;

temp=base(:

1:

t)*c(1:

t)';

temp=temp+samplemean';

imwrite(mat2gray(reshape(temp,100,100)),C:

\Users\lenvo\Desktop\1.jpg)

t=4;

temp=base(:

1:

t)*c(1:

t)';

temp=temp+samplemean';

imwrite(mat2gray(reshape(temp,100,100)),'C:

\Users\lenvo\Desktop\2.jpg');

t=6;

temp=base(:

1:

t)*c(1:

t)';

temp=temp+samplemean';

imwrite(mat2gray(reshape(temp,100,100)),'C:

\Users\lenvo\Desktop\3.jpg');

五、实验结果

给出ORL人脸数据库,共有400幅人脸图像(40人,每人10幅,大小为92*112象素)。

其中第一个人的图像如下图:

选取数据库中的部分样本(每个人的前5张图片)作为训练样本,其余作为未知的测试样本。

从训练样本中得到KL变换矩阵,然后对训练样本和测试样本都进行变换,用变换后的数据作最近邻识别,距离可以为对应灰度值之差的平方和,统计识别率。

通过取不同的前N个最大特征向量,如最大的10个表示为190:

200,得到如下识别率的数据:

190:

200识别率为:

0.9100

180:

200识别率为:

0.9350

170:

200识别率为:

0.9450

160:

200识别率为:

0.9500

150:

200识别率为:

0.9450

140:

200识别率为:

0.9500

130:

200识别率为:

0.9400

120:

200识别率为:

0.9500

110:

200识别率为:

0.9450

100:

200识别率为:

0.9450

50:

200识别率为:

0.9500

20:

200识别率为:

0.9600

1:

200识别率为:

0.9600

当最大特征向量达到30个以后识别率已经固定在0.9450。

再增加提高已经不大。

六、心得体会

人脸识别是当前人工智能和模式识别的研究热点,但同时人脸识别也是一个复杂的具有挑战性的模式识别问题。

经过这次实验给出我的不少研究启发:

第一,在研究课题之前,一定要选择好研究的图像目标。

其实也可以是大家都在研究的一类物体,并不需要标新立异,当然如果你有针对这类目标的好的检测方法,那也是惟愿如此;第二,并不一定要求你的方法放之四海皆准,只需要对某一类目标有效果,同样是能力的一种体现;第三,多尝试从数学的角度去理解图像的机理,从美术家的角度去理解图像的构造。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2