2015-07-12 104 views
0
I = double(image1Cropped); 
X = reshape(I,size(I,1)*size(I,2),3); 
coeff1 = pca(X); 

上述3行代碼究竟發生了什麼? 爲什麼在進行重塑之前將圖像變成雙倍圖像? 重塑的目的是什麼? 從pca(X)返回什麼? 我可以使用coeff1來比較圖像(例如,比較臉部)嗎?MatLab中PCA返回的是什麼?

+0

更多信息:http://www.numerical-tours.com/matlab/multidim_1_color/#34 –

回答

1

從主成分分析中,主要成分被退回。當然。

查看文檔或任何在線課程以瞭解PCA是什麼。由於PCA是一個數學工具,它需要浮點數據才能工作,這就是爲什麼第一行有double,它將數據(最可能是uint8)轉換爲浮點數據。

reshape正在將您的圖像整形爲一個巨大的矩陣size(I,1)*size(I,2),3,因此每個X(ii,:)的長度都是3。

我的猜測是圖像是RGB圖像,並且此代碼試圖獲取圖像的「主色」。代碼的作用是將數據轉換爲3個值的點,即紅色,綠色和藍色(與普通的XYZ相對),然後獲取圖像的主要組成部分。主要組件將是圖像中的「主要3種顏色(RGB的組合)」。

如果您在Google上搜索「RGB圖像的PCA」,您會發現很多關於如何/爲什麼要這樣做的信息。