2016-04-26 66 views
0

我想使用内置函数pca获取图像的第一个主要组件。我怎样才能做到这一点?用于图像处理的PCA

我曾尝试下面的代码:

[COEFF, SCORE] = pca(image); 
SCORE(1:size(SCORE,1),:)=0; 
reconstructed_image = SCORE/COEFF + repmat(mean(image,1),size(image,1), 1); 
I=reshape(reconstructed_image,[256,256]); 
figure 
imshow(I,[0 255]) 

我只得到了图像的拳头一行。任何想法我怎么能正确地做到这一点?

回答

1

你不能“PCA一个图像”。这样做是而不是给你的第一行,它使用所有的行作为观察和你的列作为参数,就像你通常设置你的测量。所以它通过所有参数计算了方差,给你一个长度等于你的列数的向量。您可能需要更多图像才能完成此操作。

请在继续之前阅读我的以下答案,因为我在MATLAB中解释了PCA的主要缺陷。

PCA in matlab selecting top n components

+0

好,认为我像行是图像的话,我怎么能得到第一PCA – Mohammed

+0

您已经在处理图像的每一行作为一个观察,就像我在我的回答中写道。随着你对线性代数的了解,你应该知道哪一个是你通过'pca'运行它的第一个主要组件。我非常怀疑它会对你有所帮助,但由于你没有告诉我问题是什么,所以我无法为你解决问题。只是一个侧面说明:没有“第一个pca”这样的事情。它是*主成分分析*,它给你*主成分*。在使用它之前,您可能想学习一些关于该技术的知识。 – Adriaan