MatLab 中的 PCA 究竟返回了什么?

What exactly is returned from PCA in MatLab?

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

以上3行代码到底发生了什么? 为什么在进入重塑之前将图像转换为双重图像? 重塑的目的是什么? pca(X) 返回了什么? 我可以使用 coeff1 来比较图像(例如,比较人脸)吗?

从 PCA 返回主成分。当然。

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

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

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

我的猜测是图像是 RGB 图像,并且此代码试图获取图像的 "principal colours"。代码所做的是将数据转换为具有 3 个值的点,红色、绿色和蓝色(与正常的 XYZ 相对),然后获取图像的主要成分。主要成分将是图像中的 "the principal 3 Colors (conbinations of RGB)"。

如果您在 Google 上搜索 "PCA of an RGB image",您会找到很多 how/why 的信息来执行此操作。