关于PCA图片降维后的结果的一些疑问

在尝试PCA降维彩色图片的时候,由于只对其中的数学原理有简单的学习,所以对于降维得到的图片结果有一些疑问:
原图片:

img

这是降维为90维的:

img

60维度:

img

发现在原图中白色区域的部分,在处理之后反而出现了三种色彩非常明显的现象;将其中的一个通道转化为灰度图之后,是这样的

img

原来的白色区域出现了大块的黑色,请问有了解其中原因的人可以解释一下其中的原因吗?同时,随着降维程度的增加,图片中方格化越来越明显(就是像是一格一格的),这又是怎么解释呢?

  1. 你说的情况不详细,没有说清 PCA 降维具体怎么做的,以及所示图片是降维的结果,还是降维后基于主成分还原的图片。
  2. 如果降维后还原,通常在 10 维主成分特征的情况下,图像不会出现明显的区别,与你的结果显然不同。所以,我认为你做 PCA 的方法可能有问题:
    (1)你的输入特征是什么,有多少维?
    (2)你的输出特征,取 90/60/30 维时,PCA 的累积方差占比是多少?
    (3)你的输出图片,是如何生成的?

望采纳!!点击回答右侧采纳即可采纳!!!
当降维时,你所选取的维度越少,意味着你要用更少的信息来尽量保留原图的一些重要信息。
但由于信息的损失是必然的,所以在观察处理后的图片时,你会发现在某些区域图像变得非常模糊,甚至会出现明显的方格状现象。


至于为什么在原图中白色区域的部分,在处理之后出现了三种色彩非常明显的现象,可能是因为在降维时,这些信息被过度抽象,从而使得处理后的图像呈现出杂乱的色彩分布。


总的来说呢,我觉得哈在处理后的图像中出现的一些异常现象是正常的,这是因为降维的过程必然会导致信息的损失,而这些损失可能导致处理后的图像看起来模糊或者呈现出异常的色彩分布。但是你也可以尝试调整降维维度的大小,看看哪个维度能够使得处理后的图像看起来更加清晰

PCA(Principal Component Analysis)是一种常用的降维算法,它可以将数据投影到低维空间中,保留数据中最重要的信息。你在使用 PCA 降维彩色图片时,发现在原图中白色区域的部分出现了三种色彩非常明显的现象,这是因为在使用 PCA 降维时,你可能没有考虑彩色图片的通道信息,导致了图片色彩失真。彩色图片是由三个通道组成的,分别是红色(Red)、绿色(Green)和蓝色(Blue)通道,通常使用 RGB 模式表示。你可以使用 cv2.split() 函数将一张彩色图片拆分成三个单通道图片,然后使用 PCA 降维每个通道,再使用 cv2.merge() 函数将三个单通道图片合并成一张彩色图片,这样就可以避免色彩失真的现象。

至于随着降维程度的增加,图片中方格化越来越明显的现象,这是因为 PCA 降维时是对数据进行投影,投影过程中可能会有一些信息损失,导致图片出现色块或者方格状的现象。这时,你可以尝试使用更高的维度进行降维,或者使用其他降维算法,如 t-SNE(t-Distributed Stochastic Neighbor Embedding)来解决这个问题。t-SNE 是一种非线性降维算法,它可以很好地保留高维数据的信息,并且可以用来将多维数据可视化,是一种很有效的降维算法。你可以使用 t-SNE 将高维数据投影到二维平面上,然后使用 matplotlib 等工具将投影结果可视化,看看效果如何。

Principal Component Analysis (PCA) 是一种降低数据维度的方法,它可以被用来减少数据的冗余,并且保留数据的主要特征。在降维之后的图像中,白色区域出现的颜色较多的情况是因为在降维的过程中,PCA把原图像的色彩信息也一并降低了,从而导致了图像变得更加简单。随着降维程度的增加,图片中出现的方格化现象也是因为降维的过程中丢失了较多的信息,使得图像变得更加简单。

由于在降维的过程中会丢失部分信息,所以降维后的图像不能完全反映原图像的信息。如果想要在保留尽可能多的信息的情况下进行降维,可以考虑使用另一种降维方法,例如线性判别分析 (LDA)。
仅供参考,望采纳,谢谢。