ipca_jc_3.m
来自「又一种增量人脸学习算法——参考文献“Candid Covariance-Free」· M 代码 · 共 110 行
M
110 行
% IPCA_JC_3.m 25th, May, 2008 made by J.Chen
% Candid Covariance-Free Incremental Principal Component Analysis. Juyang
% Weng, Yilu Zhang, Wey-Shiuan Hwang.
k = 70;
l = 0;
%%u = zeros(10304,2,k);
%%v = zeros(10304,2,k);
x = zeros(10304,40);
m = 200; % the No.of Samples
m1 = 40;
n = 1;
for i = 1:40
for j = 6:6
a = imread(strcat('E:\FaceDataBase\ORL\s',num2str(i),'\',num2str(j),'.pgm')); %a是112*92的矩阵
x(:,n) = (a(1:112*92))';
x = double(x);
n = n+1;
end
end
%中心化数据
%%%%%%%Xm = mean(x'); %x转置后每行代表一张图片,按列求平均,返回一个行向量1*10304
for j = 1:m1
Xcter(:,j) = x(:,j)-Xm';
end
x=Xcter(:,1:m1);
for n=201:240
if mod(n,2)~=0 %奇数
u(:,1,1) = x(:,n-200);
else %偶数
u(:,2,1) = x(:,n-200);
end
for i=1:k
if i==n
if mod(n,2)~=0
v(:,1,i) = u(:,1,i);
else
v(:,2,i) = u(:,2,i);
end
else
if mod(n,2)~=0
v(:,1,i) = ((n-1-l)/n)*v(:,2,i)+((1+l)/n)*u(:,1,i)*u(:,1,i)'*(v(:,2,i)/norm(v(:,2,i))); % Euclidean length
u(:,1,i+1) = u(:,1,i)-u(:,1,i)'*(v(:,1,i)/norm(v(:,1,i)))*(v(:,1,i)/norm(v(:,1,i)));
else
v(:,2,i) = ((n-1-l)/n)*v(:,1,i)+((1+l)/n)*u(:,2,i)*u(:,2,i)'*(v(:,1,i)/norm(v(:,1,i))); % Euclidean length
u(:,2,i+1) = u(:,2,i)-u(:,2,i)'*(v(:,2,i)/norm(v(:,2,i)))*(v(:,2,i)/norm(v(:,2,i)));
end
end
end
n
end
P = [];
for i=1:k
P(:,i) = v(:,2,i)/norm(v(:,2,i));
end
Y = P'*x;
accu = 0;
%-------------------------------IPCA & Test--------------------------------
for i=1:40
for j=7:10 %读入40 x 5 副测试图像
a=imread(strcat('E:\FaceDataBase\ORL\s',num2str(i),'\',num2str(j),'.pgm'));
b=(a(1:10304))';
b=double(b);
bm = b - Xm'; %将测试图片中心化!!!
t=P'*bm; %计算测试图片在新特征空间中的坐标,是k*1阶矩阵
mdist = [];
for s=1:m1
mdist(s)=norm(t'-Y(:,s)');
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;
if class1~=class2 && class2~=class3
class=class1;
elseif class1==class2
class=class1;
elseif class2==class3
class=class2;
end;
if class==i
accu=accu+1;
end;
end;
end;
accuracy = accu/160 % 输出识别率
%-------------------------------IPCA & Test--------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?