林與卷積操作(特徵地圖)的工作和我有此問題:麻煩與矩陣乘法(JAVA)
當我輸入的代碼完全運行,並且輸出所述圖像變換(一切確定與正方形圖像即)
這是代碼:
long ImageMatrix[][] = new long[width][height];
int CounterColumns = 0;
BufferedImage KernelImg = new BufferedImage(width-2,height-2,BufferedImage.TYPE_INT_ARGB);
try {
for (j = 0; j < height-2; j++) {
for (k = 0; k < width-2; k++) {
for (w = 0; w < 3; w++) {
for (v = 0; v < 3; v++) {
int Sj = j + w;
int Sv = v + CounterColumns;
sum += ImageMatrix[Sj][Sv] * Kernel[w][v];
}
}
int a = 255;
int p = (a << 24) | (sum << 16) | (sum << 8) | sum;
sum = 0;
CounterColumns++;
count++;
KernelImg.setRGB(j, k, p);
}
CounterColumns = 0;
}
}
catch(Exception e){
System.out.println(e);
}
上面的代碼相乘內核矩陣(3×3矩陣)和圖像矩陣的循環,這是內核矩陣的一個示例:
int Kernel[][] = {
{-1,-1,-1},
{-1,8,-1},
{-1,-1,-1}
};
的問題是,當我輸入的矩形圖像的系統停止工作,並把我這個錯誤:
java.lang.ArrayIndexOutOfBoundsException:165
我已經搜索這個錯誤,但我沒有找到解決問題的任何東西,我不知道爲什麼代碼與正方形圖像運行沒有問題,但如果我輸入一個矩形的錯誤顯示。
謝謝,如果你能幫助我這個。
你有沒有試過通過調試器運行這個? – KyleKW