2015-02-06 79 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

    • 不能被用於預定的目標分辨率,因爲
    • 它提取其尺寸取決於內容

所以答案顯著數據真的取決於你需要達到什麼目的以及目的是什麼