【发布时间】:2015-07-12 17:15:42
【问题描述】:
I = double(image1Cropped);
X = reshape(I,size(I,1)*size(I,2),3 );
coeff1 = pca(X);
以上 3 行代码到底发生了什么?
为什么在转换为重塑之前将图像转换为双重?
重塑的目的是什么?
从pca(X) 返回什么?
我可以使用coeff1 来比较图像(例如比较人脸)吗?
【问题讨论】:
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 图像,并且此代码试图获取图像的“主要颜色”。代码所做的是将您的数据转换为 3 个值的点,即红色、绿色和蓝色(与正常的 XYZ 相对),然后获取图像的主要成分。主要成分将是图像中的“主要 3 种颜色(RGB 的组合)”。
如果您在 Google 上搜索“RGB 图像的 PCA”,您会发现很多关于如何/为什么这样做的信息。
【讨论】: