林与卷积操作(特征地图)的工作和我有此问题:麻烦与矩阵乘法(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