📄 face_recognition_rpca.m
字号:
function face_recognition_rpca % 识别过程
%w=load_database();
load data %载入数据
ri=round(40*rand(1,1)); %从40幅图象中随机抽取一幅作为测试图象
r=w(:,ri);
v=w(:,[1:ri-1 ri+1:end]); %剩下的做为训练图象
N=20; %主成分数
%把训练图象零均值化
O=ones(1,size(v,2));
m=mean(v,2);
vzm=v-single(m)*single(O); %零均值化后的矩阵
%用传统PCA计算出初始主子空间
L=single(vzm)'*single(vzm);
[V,D]=eig(L);
V=vzm*V;
V=V(:,end:-1:end-(N-1));
%求出主子空间
for i=1:N
V(:,i)=V(:,i)/sqrt(D(end-i-1,end-i-1));
end
%构造佚代初始值
C=double(V')*double(vzm);
B=V;
Miu=m;
%
error=vzm-B*C;
mediant=median(abs(error(:)));
error2=error(:)-mediant;
sig=2.3*1.4826*median(abs(error2(:)));
subplot(221);
ri=uint8(r);
imshow(reshape(ri,112,92));title('for reconstruction ...','FontWeight','bold','Fontsize',24,'color','green');
%输出重构后的图象
subplot(222);
p=r-Miu;
cv=B'*p;
br=B*cv+Miu;
e1=norm((br-r),2)
Br=uint8(br);
subplot(222);
imshow(reshape(Br,112,92));title('recon... for PCA!','FontWeight','bold','Fontsize',16,'color','red');
%调用佚代函数
[B,C,Miu]=Die_Dai(B,C,Miu,sig,vzm,v);
%输出重构后的图象
subplot(223);
p=r-Miu;
cv=B'*p;
br=B*cv+Miu;
e2=norm((br-r),2)
Br=uint8(br);
subplot(223);
imshow(reshape(Br,112,92));title('recon... for RPCA!','FontWeight','bold','Fontsize',16,'color','red');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -