2013-07-29 32 views
0

我必須對圖像應用侵蝕方法。 但是,我有一些困難。 我從一個基本的例子開始,但在這一點上,我的圖像的所有像素將保持與第一個像素的值。 如何解決這個問題?Java中的侵蝕函數

public static int[] erosion(int array[]) 
{ 
    //int array1[] = new int[array.length]; 
    // System.arraycopy(array, 0, array1, 0, array.length);   
    for(int i=1; i < array.length; i++) 
    { 
     if (array[i-1] < array[i]) { 
      array[i] = array[i-1]; 
     } 
     if (array[i+1] < array[i]) { 
      array[i] = array[i+1]; 
     } 
    } 
    return array;  
} 

回答

3

問題是數組中的前一個值在下一次迭代過程中被分配。對於就地替換,您可以嘗試如下所示:

int previous = array[0]; 
for (int i = 0; i < array.length - 1; i++) { 
    int res = Math.min(previous, array[i]); 
    res = Math.min(res, array[i + 1]); 
    previous = array[i]; 
    array[i] = res; 
} 
array[array.length - 1] = Math.min(previous, array[array.length - 1]; 

編輯:擴展到第一個和最後一個值。

+0

我去試試你的答案.. – FCoelho

+0

感謝您的幫助kiheru。 – FCoelho

+0

@FCoelho不用客氣 – kiheru