%%%%%%%%%%%%%特征脸显示已正确,训练与测试没有分开。
% Face recognition
clear all
close all
clc
M=200%%%%
traincopy=5%%%表示同一个人有几张相片。
eignum=3%%%选取的特征个数。
cel=cell(1,M)
cellafter=cell(1,M)
tt=clock
S=[]
ii=1
str=strcat('E:\三维人脸\2dfacedatabase\ORL\s1\1.pgm')
img=imread(str)
[ia ib]=size(img)
sum=zeros(ia,ib)
B=zeros(ia,ib)
for i=1:40
for j=1:5
str=strcat('E:\三维人脸\2dfacedatabase\ORL\s',int2str(i),'\',int2str(j),'.pgm')
eval('img=imread(str)')
sum=double(sum)+double(img)
cel{1,ii}=img
ii=ii+1
end
end
meanA=sum/M
cov=zeros(ib)
for i=1:M
img=cel{1,i}
B=double(img)-double(meanA)
temp=B'*B
cov=double(cov)+double(temp)
end
[vv dd]=eig(cov)
num2=size(vv)
% Sort and eliminate those whose eigenvalue is zero
v=[]
d=[]
for i=1:size(vv,2)
if(dd(i,i)>1e-4)
v=[v vv(:,i)]
d=[d dd(i,i)]
end
end
num1=size(v,2)
%sort, will return an ascending sequence
[B index]=sort(d)
ind=zeros(size(index))
dtemp=zeros(size(index))
vtemp=zeros(size(v))
len=length(index)
for i=1:len
dtemp(i)=B(len+1-i)
ind(i)=len+1-index(i)
vtemp(:,ind(i))=v(:,i)
end
d=dtemp
v=vtemp
imgafter=[]
for i=1:M
for j=1:eignum
img=cel{1,i}
temp1=double(img)*double(v(:,j))
imgafter=[imgafter temp1]
end
cellafter{1,i}=imgafter
imgafter=[]
end
timeconsume=etime(clock,tt)
testimg=M/traincopy
findimgnum=traincopy
suc=0
% figure(5)
for k=1:testimg
InputImage =imread(strcat('E:\三维人脸\2dfacedatabase\ORL\s',int2str(k),'\10.pgm'))
testafter=[]
for j=1:eignum
temp=double(InputImage)*double(v(:,j))
testafter=[testafter temp]
end
% Find Euclidean distance
e=[]
for i=1:M
tempA=double(testafter)-double(cellafter{1,i})
total=0
for j=1:eignum
aa=norm(tempA(:,j))
total=total+aa
end
e=[e total]
end
[C index]=sort(e)
min=index(1)
%%%%%%%计算正确率
testingroup=floor((min-1)/traincopy)+1%%计算要测试的图像所在的组
if testingroup==k
suc=suc+1
else
fprintf('%d.jpg fails to match!\n',k)
end
% %%%%%%%%%%%%%%%%%%%显示所有找到的与测试图像为同一个人的图片(可)。(显示所有与测试图片最小距离的那组,而不是比较出来的最小的5个)
% subplot(testimg,findimgnum+1,(k-1)*(findimgnum+1)+1)% subplot(行数,列数,放图像位置的序数)
% imshow(InputImage)
%
% for i=1:findimgnum
% temppos=(testingroup-1)*traincopy+i
% str=strcat('E:\三维人脸\testpic\orl\',int2str(temppos),'.pgm') %concatenates two strings that form the name of the image
% eval('img1=imread(str)')
% subplot(testimg,findimgnum+1,(k-1)*(findimgnum+1)+i+1)
% imshow(img1)
% drawnow
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
sucrate=suc/M*traincopy*100
fprintf('%2.1f%% matched successfully!\n',sucrate)
fprintf('it takes %3.2f S\n',timeconsume)
hfss峰值增益怎么看HFSS中查看增益
[LeetCode] Largest Rectangle in Histogram 直方图中最大的矩形
Python模拟d道轨迹
浙江省赛之Singing Everywhere
应用于电力电子变压器的双向DC_DC变换器综述(学习笔记)
朝韩危机-Python模拟导d互射
[LeetCode] 84. Largest Rectangle in Histogram 直方图中最大的矩形
声源定位之3精读《The Generalized Correlation Method for Estimation of Time Delay》
制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
看完此文还不懂NB-IoT,你就过来掐死我吧...【转】
看完此文还不懂NB-IoT,你就过来掐死我吧...
面对30页左右的运放数据手册datasheet,你需要知道如何看懂
NB-IoT的介绍最终版 !看明白了吗?(转自 top-iot)
从下往上看--新皮层资料的读后感 第二部分:突触Synapses
第四章 电商云化,4.1 17.5W秒级交易峰值下的混合云d性架构之路(作者:唐三 乐竹 锐晟 潇谦)
透过表象看本质!?之三——Kalman滤波
看图说话,P2P 分享率 90% 以上的 P2P-CDN 服务,来了!
音频增益响度分析 ReplayGain 附完整C代码示例
基于密度峰值的聚类(DPCA)
MATLAB 均方根误差MSE、两图像的信噪比SNR、峰值信噪比PSNR、结构相似性SSIM
热门专题
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)