首页 > 解决方案 > 非常庞大的医学图像矩阵的特征值分解(如CT图像的像素物理坐标)

问题描述

我正在尝试对一个大小超过 788000 * 788000 的巨大矩阵进行特征值分解,以进行医学图像分析。矩阵不是稀疏的,矩阵中的每个元素都有一个实值。并且,例如,我想获得前 20 个最大特征值对应的前 20 个特征向量。

  1. 虽然我的电脑配置非常好,但是电脑无法对巨大的矩阵进行特征值分解,内存溢出。
  2. 我用 Python 语言和其他相关包(如 numpy、opencv、matplotlib 等)编写计算机代码

是否有任何其他python lib或相关包可以进行特征值分解并解决计算问题?或者有没有其他方法可以用python解决这个问题?我现在处境艰难,希望有人能帮助我。太感谢了。

不好意思,我写错了,巨大的矩阵也是对称的。

标签: pythonmatrixnumericeigenvalueeigenvector

解决方案


首先,我对图像分析的 PCA 不太熟悉。本文描述了一种对图像进行 PCA 的方法,对于 WxH 图像,您按列执行 PCA,仅需要对 WxW 矩阵进行 SVD。但是,这会为每个图像生成一个 PCA,因此并不完全符合您的要求。

由于 SVD(奇异值分解)具有三次 (O(n^3)) 时间复杂度,我怀疑用任何语言在任何机器上处理您提出的数字是否可行。如果您仍然真的想走自己的路,您可能需要考虑首先通过调整图像大小以降低像素数并在较小的图像上运行您提出的方法来减小图像大小。有关不同的大小调整算法,请参阅页面。其中许多是在 PIL Python 图像模块中实现的(参见此处)。


推荐阅读