原文:http://blog.csdn.net/whuhan2013/article/details/53994683《 基于PCA的人脸特征抽取》
关于displayImage()函数,最开始想的就是用reshape()函数重新构造一下原图像结构用imshow()显示就可以,但是用
function displayImage(x,y,z) img=reshape(x,y,z); imshow(img)
试了一下并不可以显示。所以用两幅图片测,最终显示了我需要的图片。
所以用存储的脸部数据做测试 ,废了,这个问题困扰了我很久,我才发现,上面成功的跟没成功的差的地方只有数据类型,图片一般都是uint8型的,所以经过修改就OK了。
function displayImage(xApprox,width,height)
%xApprox要显示的向量,width 图像的宽,图像的高
img=reshape(xApprox,width,height);
figure
imshow(uint8(img))
function rebuild(n,k1,k2)
%n 选择恢复哪张照片
%K1 用PCA将原图降至多少维
%k2 用多少个主向量进行重建 K2<=k1
load Mat/FaceMat.mat
x = FaceContainer(n,:);
[pcaA V]= fastPCA(FaceContainer,k1);%用PCA降至200维
xApprox = approx(x,k2);
displayImage(xApprox,112,92);