PCL在MatLab中究竟返回了什么?

时间:2015-07-12 17:15:42

标签: matlab pca

I = double(image1Cropped);
X = reshape(I,size(I,1)*size(I,2),3 );
coeff1 = pca(X);

以上3行代码究竟发生了什么? 为什么在进入重塑之前将图像转换为双重图像? 重塑的目的是什么? 从pca(X)返回的内容是什么? 我可以使用coeff1来比较图片(例如,比较面孔)吗?

1 个答案:

答案 0 :(得分:1)

从PCA,返回主要成员。当然。

查看文档或任何在线课程,了解PCA是什么。

由于PCA是一种数学工具,它需要浮点数据才能工作,这就是为什么第一行中有double,它正在转换数据(很可能是uint8 )到浮点数据。

reshape正在将您的图片重塑为size(I,1)*size(I,2),3的巨大矩阵,因此每X(ii,:)个长度为3个。

我的猜测是图像是RGB图像,并且此代码试图获得"主要颜色"图像。代码所做的是将数据转换为3个值的点,红色,绿色和蓝色(与普通XYZ相对),然后获取图像的主要成分。主要成分将是"主要的3种颜色(RGB的组合)"在图像中。

如果您搜索" RGB图像的PCA"在Google上,您可以找到有关如何/为何如此操作的大量信息。