基于KL变换的人脸识别报告Word文档格式.doc
- 文档编号:15407626
- 上传时间:2022-10-30
- 格式:DOC
- 页数:13
- 大小:204.50KB
基于KL变换的人脸识别报告Word文档格式.doc
《基于KL变换的人脸识别报告Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于KL变换的人脸识别报告Word文档格式.doc(13页珍藏版)》请在冰豆网上搜索。
二、主要思想
基于特征脸的人脸识别方法是基于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);
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));
p=6;
base=xmean'
*vsort(:
1:
p)*diag(dsort(1:
p).^(-1/2));
for(k=1:
p)
hape(base(:
k),100,100);
newpath=['
\Users\lenvo\Desktop\test\'
int2str(k)'
.jpg'
];
imwrite(mat2gray(temp),newpath);
avg=reshape(samplemean,100,100);
imwrite(mat2gray(avg),'
\Users\lenvo\Desktop\test\average.jpg'
);
save('
\Users\lenvo\Desktop\test\eigface.mat'
'
base'
samplemean'
2、识别
\Users\lenvo\Desktop\图
'
allsamples=[allsamples;
xmean(i,:
[vd]=eig(sigma);
i=1;
allcoor=allsamples*base;
accu=0;
forj=1:
3
\Users\lenvo\Desktop\test3'
b=a(1:
10000);
tcoor=b*base;
fork=1:
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
elseifclass2==class3
class=class2;
ifclass==i
accu=accu+1;
end;
accuracy=accu/7
3.重构
function[]=Reconstruct()
loadC:
\Users\lenvo\Desktop\test\eigface.mat;
a=imread('
\Users\lenvo\Desktop\test2\10.bmp'
b=a(1:
b=double(b);
b=b-samplemean;
c=b*base;
t=2;
temp=base(:
t)*c(1:
t)'
temp=temp+samplemean'
imwrite(mat2gray(reshape(temp,100,100)),C:
\Users\lenvo\Desktop\1.jpg)
t=4;
imwrite(mat2gray(reshape(temp,100,100)),'
\Users\lenvo\Desktop\2.jpg'
t=6;
\Users\lenvo\Desktop\3.jpg'
五、实验结果
给出ORL人脸数据库,共有400幅人脸图像(40人,每人10幅,大小为92*112象素)。
其中第一个人的图像如下图:
选取数据库中的部分样本(每个人的前5张图片)作为训练样本,其余作为未知的测试样本。
从训练样本中得到KL变换矩阵,然后对训练样本和测试样本都进行变换,用变换后的数据作最近邻识别,距离可以为对应灰度值之差的平方和,统计识别率。
通过取不同的前N个最大特征向量,如最大的10个表示为190:
200,得到如下识别率的数据:
190:
200识别率为:
0.9100
180:
0.9350
170:
0.9450
160:
0.9500
150:
140:
130:
0.9400
120:
110:
100:
0.9450
50:
20:
0.9600
1:
当最大特征向量达到30个以后识别率已经固定在0.9450。
再增加提高已经不大。
六、心得体会
人脸识别是当前人工智能和模式识别的研究热点,但同时人脸识别也是一个复杂的具有挑战性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 KL 变换 识别 报告