基于ORL人脸库PCA特征提取之“基于主分量人脸重建”

来源:互联网 发布:无线网限速软件 编辑:程序博客网 时间:2024/06/05 21:17

参考:http://blog.csdn.net/whuhan2013/article/details/53994683;
http://blog.csdn.net/weixin_35479108/article/details/78314114

1.approx()函数实现重建

function [ xApprox ] = approx( x, k )% 用 k 个主成分分量来近似(重建)样本 x%% 输入:x --- 原特征空间中的样本,被近似的对象%       k --- 近似(重建)使用的主分量数目%% 输出:xApprox --- 样本的近似(重建)% 读入 PCA 变换矩阵 V 和 平均脸 meanVecload pcaMat.matnLen = length(x);xApprox = meanVec;for ii = 1:k    xApprox=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);
阅读全文
0 0
原创粉丝点击