JAVA求教 Image Processing filter問題

本帖最後由 ip4368 於 2014-12-7 12:06 編輯
  1. private void convolve(int[][] f, double[][] filter) {
  2.         int filterSize = filter.length;
  3.         int M = f.length; //height
  4.         int N = f[0].length; //width
  5.         int[][] copy = new int[f.length][f[0].length];
  6.         for (int i = 0; i < f.length; i++)
  7.             System.arraycopy(f[i], 0, copy[i], 0, f[0].length);
  8.             int sl = (filterSize-1)/2;
  9.                 for (int i = sl; i < f.length-sl; i++)
  10.                         for (int j = sl; j < f[0].length-sl; j++){
  11.                                 double temp = 0.0;
  12.                                 for (int y = 0; y < filterSize; y++)
  13.                                         for (int z = 0; z < filterSize; z++)
  14.                                                 temp += copy[i-sl+y][j-sl+z]*filter[y][z];
  15.                                 f[i][j]= (int) temp;
  16.                                 if (f[i][j]<0)
  17.                                         f[i][j]=0;
  18.                                 if (f[i][j]>255)
  19.                                         f[i][j]=255;
  20.                         }
  21. }
複製代碼
我寫完, 如果用box smoothing嘅kernel係成功做到, 同professor個example一模一樣, 但我放laplacian filter就唔得, 個樣差好遠.
我google其他convolve嘅又應該一樣concept, 唔知錯咩, 希望各位ching可以幫幫手
(professor話ignore個boundary)
---------------------------------------------------------------------------------------------------
update寫完, 原來幅圖D pixel out of range會出255, 所以要將<0嘅pixel轉返0, 就正常做到. 要做返好, 所以將>255都轉返255

solved

TOP

……咁都得?2分進帳Yeah!

TOP

……咁都得?2分進帳Yeah!
Jackass_TMxCK 發表於 2014-12-7 13:53



    YEAH, 又進帳一分

TOP

回覆 3# Jackass_TMxCK


    樓主有post番個solution出來,已經好好架喇

TOP