我想根據以下參數合併兩個B & W圖像。合併2個圖像使用2D陣列作爲像素
新創建的數組使用兩個圖像的寬度和高度中最大的一個作爲它自己的。數組中特定點處的int包含表示灰度數量的數字。新的二維數組將根據以下條件合併兩幅圖像。
- 如果在兩個數組中都存在位置,則results數組中的值是數組a和b中值的平均值。
- 如果只存在於陣列中的位置,結果陣列中的值是在陣列的
- 的值,如果只存在於數組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;
}
爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 –