我正在尝试根据以下参数合并两个黑白图像。
新创建的数组使用两个图像的宽度和高度中最大的一个作为它自己的。数组中特定点的 int 包含一个表示灰度量的数字。新的二维数组将根据以下条件合并两个图像。
- 如果位置在两个数组中都存在,则结果数组中的值是数组 a 和 b 中的值的平均值。
- 如果位置只存在于数组 a 中,则结果数组中的值就是数组 a 中的值
- 如果位置仅存在于数组 b 中,则结果数组中的值是数组 b 中的值
- 如果该位置不在两个数组中,则在结果数组中的该位置分配值 127。
这是我的代码。arrayIndexOutOfBounds: 167
由于某种原因它返回时不会运行。如果有人可以查看它,我将不胜感激。
public static int[][] merge(int[][] a, int[][] b)
{
int biggerx = 0;
int biggery = 0;
if (a[0].length > b[0].length) {
biggery = a[0].length;
}
else {
biggery = b[0].length;
}
if (a.length > b.length) {
biggerx = a.length;
}
else {
biggerx = b.length;
}
int[][] merged = new int[biggerx][biggery];
for (int x = 0; x < merged.length; x++) {
for (int y = 0; y < merged[x].length; y++) {
if (x <= a.length && y <= a[x].length && x > b.length && y > b[x].length) {
merged[x][y] = a[x][y];
}
else if (x <= b.length && y <= b[x].length && x > a.length && y > a[x].length) {
merged[x][y] = b[x][y];
}
else if (x <= b.length && y <= b[x].length && x <= a.length && y <= a[x].length) {
merged[x][y] = ((a[x][y] + b[x][y]) /2);
}
else {
merged[x][y] = 127;
}
}
}
return merged;
}