特征脸未正确显示且非常暗

时间:2011-10-29 16:55:57

标签: matlab computer-vision face-recognition eigenvector

我需要使用PCA显示前10个特征脸,用于图像特征向量矩阵。

我正在使用以下matlab代码来创建第一个特征脸,但是我变得很暗并且不那么正确的特征脸。 eFea是240x4096的矩阵,其中每行代表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))

有关代码中错误的任何提示都会有所帮助。

2 个答案:

答案 0 :(得分:5)

IMSHOW不会自动缩放图像。因此,如果在特征脸中只有0到0.3之间的值,那么一切都会非常暗。请改为imshow(reshape(PC(1,:),64,64),[])

答案 1 :(得分:2)

这是一个非常古老的话题,但无论如何我想回答一些问题。

老实说,我认为错误在其他地方,尽管乔纳斯所说的可能会给出好看的结果。

您需要在最后再次添加数据的平均值。我只是遇到了与黑暗主成分相同的问题,这就是我发现这个问题的原因。但后来我意识到,当你做PCA时,你首先减去平均值。这意味着最后,您需要再次添加它。