【问题标题】:Dimension reduction of a 2D-Image via PCA通过 PCA 对 2D 图像进行降维
【发布时间】:2015-02-06 06:33:47
【问题描述】:

我想减小 2D 图像的尺寸。我有大小为100x50 的图像补丁,我想减小这些补丁的尺寸。

我是否需要先将patch(100x50)转换为vector(5000x1)然后应用PCA来降低维度或者我可以直接在patch(100x50)上应用PCA进行降维并降低维度让我们说2x50?

【问题讨论】:

  • 正如最初编写的那样,不清楚您是要调整图像大小还是从标题应用 PCA。我调整了标题以反映问题文本中的问题。

标签: matlab image-processing dimensionality-reduction


【解决方案1】:

您可以直接应用 2D-PCA。至少它存在并且应该比 1D-PCA 表现更好(减少)。

2004 年的一篇引用率非常高的研究论文: Yang, J. 等人,2004 年。二维 PCA:一种基于外观的人脸表示和识别的新方法。 IEEE 模式分析和机器智能汇刊,26(1),第 131-137 页。 Source

很遗憾,我不知道 Matlab 的实现。

【讨论】:

  • 我做了这个实现noofdim=4 [r,c] = size(img); %Calculate cov matrix and the PCA matrixes m = mean(img')'; S = ((img - m*ones(1,c)) * (img - m*ones(1,c))'); [Coeff latent]= eig(S); [latent, ind] = sort(diag(latent), 'descend'); M1 = Coeff(:,ind(1:noofdim)); latent1 = latent(1:noofdim);
  • @FrqKhan 抱歉,我现在没有足够的时间查看。
【解决方案2】:

降维是R^n -> R^m n>m 所以根据你的文字我得到的印象是你的意思是:

  1. 分辨率调整

    • 更改目标分辨率
  2. 数据缩减

    • 消除无关紧要的数据

对于图像大小调整或数据缩减,有很多方法可以做到:

  1. 线性/双线性/立方/...过滤

    • 适用于可视化数据大小调整(不适用于数据缩减)
  2. 基于频域 DFFT/DCT/DST 的数据缩减

    • 可用于更改分辨率而不会丢失大量数据
    • 通过转换到频域
    • (可选)去除噪音或无关紧要的数据(如 JPEG 压缩)
    • 以所需分辨率转换回空间域
    • 当您停留在频域时,也可用于数据缩减
    • 并仅使用重要频率(高振幅 ..)
  3. 主成分分析

    • 不能用于预定的目标分辨率,因为
    • 它提取大小取决于内容的重要数据

所以答案真的取决于你究竟需要达到什么目标和目的

【讨论】:

    【解决方案3】:

    PCA 将向量空间中的一个点作为输入,并将其投影到子空间中。以这种方式表达,那么很容易记住您需要将补丁大小调整为矢量。

    使用Matlab,调用你的补丁X,你可以通过调用X(:)轻松做到这一点,你不必乱用reshape

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 2017-08-28
      • 2019-07-21
      • 2020-10-27
      • 2013-12-31
      • 1970-01-01
      • 2013-09-30
      • 2018-04-15
      • 2021-04-04
      相关资源
      最近更新 更多