我必须将腐 eclipse 方法应用于图像。 但是,我遇到了一些困难。 我从一个基本示例开始,但此时图像的所有像素都将保留第一个像素的值。 如何解决这个问题?
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;
}
最佳答案
问题在于数组中的前一个值已在下一次迭代中分配。对于就地替换,您可以尝试这样的操作:
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];
编辑:扩展到第一个和最后一个值。
关于java - Java中的腐 eclipse 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932475/