2016-04-26 124 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