2015-07-12 106 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”,您会发现很多关于如何/为什么要这样做的信息。