资源描述
试验报告(例1)
课程名称: 模式辨认 试验名称: KL变换试验
提交时间:
专业:计算机应用技术 年级: 2023级 姓名:
一、试验目的和要求
1. 掌握特征提取的基本措施。
2. 掌握基于KL变换的特征提取的措施。
3. 培养学生灵活使用KL变换进行模式辨认的能力。
二、试验环境、内容和措施
环境:windows XP,matlab R2023a
内容:
给出ORL人脸数据库,共有400幅人脸图像(40人,每人10幅,大小为92*112象素)。其中第一种人的图像如下图:
选用数据库中的部分样本(每个人的前5张图片)作为训练样本,其他作为未知的测试样本。从训练样本中得到KL变换矩阵,然后对训练样本和测试样本都进行变换,用变换后的数据作近来邻辨认,距离能够为相应灰度值之差的平方和,统计辨认率。
措施:KL变换措施
三、试验过程描述
1.经过com_ReadDB函数读取每个人的前5幅图像,函数com_ReadDB 返回TrainX和TrainClass。TrainX的每一行是每幅图像能够用按行或者按列堆成一种=WidthHeight维向量。TrainClass是图像的辨认信息。
2.求均值m,构造矩阵
3.计算:
4.计算:[V,D] = eig(R);
5.计算:
6.按特征值从大到小排序,选择前几种最大的特征值相应的Ui作为变换矩阵W。
7.把全部训练样本做变换y=Wtx,保存系数y。
8.再读取每个人的后5幅图像作测试。
9.对新样本也作变换,看与哪个y最接近。
10.把比较成功辨认的图像进行计数。最终统计辨认率。
四、成果分析
经过取不同的前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。再增长提升已经不大。
在试验过程中曾遇到cell类型的比较问题。因为没有现成的cell类型,只能经过cell转换成别的类型进行比较。处理措施是用一种变量C=cell{n,m},n,m表达cell中的第n行,m列的元素。C的类型取决与cell{n,m}中的类型。
五、附录代码
[TrainX,TrainClass] = com_ReadDB('D:\模式辨认\ORL\','1,2,3,4,5');
m=mean(TrainX,2);
Q=[];
for i=1:200
Q=[Q TrainX(:,i)-m];
end
R=Q'*Q;
[V,D] = eig(R);
U=Q*V*D^(-0.5);
W=U(:,150:200);
Ty=W' * TrainX;
[TrainX1,TrainClass1] = com_ReadDB('D:\模式辨认\ORL\','6,7,8,9,10');
Ty1=W' * TrainX1;
compare=0;
for j=1:200
for i=1:200
a(i) =norm(Ty(:,i)-Ty1(:,j),2);
end
min=a(1);
order=1;
for i=2:200
if a(i)<min
min=a(i);
order=i;
end
end
ju1=TrainClass(order,1);
ju2=TrainClass1(j,1);
if ju1{1}==ju2{1}
compare=compare+1;
end
end
disp('成功辨认率为:');disp(compare/200);
展开阅读全文