I = double(image1Cropped);
X = reshape(I,size(I,1)*size(I,2),3 );
coeff1 = pca(X);
以上3行代码究竟发生了什么?
为什么在进入重塑之前将图像转换为双重图像?
重塑的目的是什么?
从pca(X)
返回的内容是什么?
我可以使用coeff1
来比较图片(例如,比较面孔)吗?
答案 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上,您可以找到有关如何/为何如此操作的大量信息。