本文主要是介绍基于ORL人脸库PCA特征提取之“基于主分量人脸重建”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.approx()函数实现重建
function [ xApprox ] = approx( x, k )
% 用 k 个主成分分量来近似(重建)样本 x
%
% 输入:x --- 原特征空间中的样本,被近似的对象
% k --- 近似(重建)使用的主分量数目
%
% 输出:xApprox --- 样本的近似(重建)% 读入 PCA 变换矩阵 V 和 平均脸 meanVec
load pcaMat.matnLen = length(x);xApprox = meanVec;for ii = 1:kxApprox=xApprox+((x-meanVec)*V(:,ii))*V(:,ii)';
end
2.显示重建的图片
理论上,reshape那段代码,可以直接用封装成displayImage程序。
注,load 相应的数据。
load MatFaceMat1.mat%载入样本矩阵
load pcaMat.mat;
x = FaceContainer(1,:);FaceImg1=reshape(x,112,92);
FaceImg1=uint8(FaceImg1);
subplot(2,2,4);
imshow(FaceImg1);%显示原图[pcaA V]= fastPCA1(FaceContainer,200);%采用fastPCA进行特征提取,常见fastPCA程序xApprox = ORLFaceChongJian(x,50);
% displayImage(xApprox,112,92);
FaceImg4=reshape(xApprox,112,92);
FaceImg4=uint8(FaceImg4);
subplot(2,2,3);
imshow(FaceImg4);xApprox = ORLFaceChongJian(x,100);
FaceImg2=reshape(xApprox,112,92);
FaceImg2=uint8(FaceImg2);
subplot(2,2,2);
imshow(FaceImg2);xApprox = ORLFaceChongJian(x,200);%200个主分量的重建
% displayImage(xApprox,112,92);
FaceImg3=reshape(xApprox,112,92);
FaceImg3=uint8(FaceImg3);
subplot(2,2,1);
imshow(FaceImg3);
参考:
- blog;
- blog;
- 数字图像处理与机器视觉Visual+C与Matlab实现配套代码(张铮版);
这篇关于基于ORL人脸库PCA特征提取之“基于主分量人脸重建”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!