2015-02-06 39 views
2

我想减小2D图像的尺寸。我有大小为100x50的图像补丁,我想减少这些补丁的尺寸。通过PCA降低2D图像的尺寸

我需要先补丁(100x50)转换成向量(5000x1),然后应用PCA,以减少尺寸或我可以直接申请PCA降维的补丁(100x50),减少尺寸,让我们说2x50

+0

由于最初编写的内容不清楚您是要调整图像大小还是应用标题中的PCA。我调整了标题以反映问题文本中的问题。 – Trilarion 2015-02-06 10:25:47

回答

3

您可以直接应用2D-PCA。至少它存在并且应该比1D-PCA更好地执行(简化)。二维PCA:一种基于外观的人脸表示和识别的新方法。二维PCA:基于外观的人脸表示和识别的新方法。 IEEE Transactions on Pattern Analysis and Machine Intelligence,26(1),pp.131-137。 Source

不幸的是我不知道Matlab的实现。

+0

复制可以在http://www.dtic.upf.edu/~afrangi/articles/pami2004.pdf – Trilarion 2015-02-06 10:22:47

+0

找到,我做了这个实现 'noofdim = 4 [r,c] = size(img); %计算cov矩阵和PCA矩阵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);' – 2015-02-06 10:27:01

+0

的实现是否正确? – 2015-02-06 10:56:07

0

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

使用Matlab,打电话给你的补丁X,你可以通过调用X(:)轻松完成,你不必与reshape混淆。

1

降维是R^n -> R^m其中n>m所以根据您的文字给我的感觉,你的意思是这个:

  1. 分辨率调整

    • 改变目标分辨率
  2. 数据减少

    • 消除不重要数据

对于图像缩放或数据压缩有很多方法可以做到这喜欢:

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

    • 适用于视觉数据调整大小(不用于数据缩减)
  2. 频域DFFT/DCT/DST为基础的数据还原

    • 可以通过转换到频域
    • (可选)中去除噪声或不显着被用于改变分辨率而不显著数据丢失
    • 数据(如JPEG压缩)
    • 转换回所需分辨率的空间域
    • 也可用于数据还原ñ当你留在频域
    • 并只使用显着的频率(高振幅..)
  3. PCA

    • 不能被用于预定的目标分辨率,因为
    • 它提取其尺寸取决于内容

所以答案显著数据真的取决于你需要达到什么目的以及目的是什么