2013-07-29 4 views
0

이미지에 침식 방법을 적용해야합니다. 그러나 몇 가지 어려움이 있습니다. 기본 예제부터 시작하겠습니다. 그러나이 시점에서 내 이미지의 모든 픽셀은 첫 번째 픽셀의 값으로 유지됩니다. 이 문제를 해결하는 방법?자바의 침식 기능

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