eigenfaces are not showing correctly and are very dark

牧云@^-^@ 提交于 2019-12-02 19:04:20

问题


I need to show 1st 10 eigenfaces using PCA for a image feature vector matrix.

I am using following matlab code to create 1st eigenface but I am getting very dark and not so correct eigenfaces. eFea is a matrix of 240x4096 where each row represents an image of 64x64

 newData = eFea';
data  = newData;
[M,N] = size(data); 

mn = mean(data,2); 
data = double(data) - repmat(mn,1,N); 
% construct the matrix Y 
Y = data' / sqrt(N-1); 
% SVD 
[u,S,PC] = svd(Y,0); 


imshow(reshape(PC(1,:),64,64))

any hints regarding the error in code will be helpful.


回答1:


IMSHOW does not automatically scale the image. Thus, if you only have values from, say, 0 to 0.3 in the eigenface, everything will be really dark. Try imshow(reshape(PC(1,:),64,64),[]) instead.




回答2:


This is a really old topic but I want to answer something anyway.

Honestly, I think the error is somewhere else, although what Jonas said might give good-looking results.

You need to add the mean of the data again in the end. I just had the same problem with the dark principal components, that's why I found this question. But then I realized, that when you do PCA, you substract the mean first. That means that in the end, you need to add it again.



来源:https://stackoverflow.com/questions/7940276/eigenfaces-are-not-showing-correctly-and-are-very-dark

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!