我试图根据作业的不同权重编辑二维数组中的相邻元素。 Pixel [] []数组中的每个索引表示0到255之间的不同RGB值。
相邻元素基于2d数组中的中心索引,我正在考虑存储每个中心索引的元素数据,存储围绕它的索引的数据,然后应用基于各种不同权重的“过滤”方法。
我有点失落,我认为我的代码是多余的,我想知道我是否可以得到如何解决这个问题的意见。
public void computeWeightedAverages(Pixel[][] data, int weightOne, int weightTwo, int weightThree) {
WritableRaster wr = this.myImage.getRaster();
int[] pixelValues = new int[3];
int[] pixelValues2 = new int[3];
int[] pixelValues3 = new int[3];
int[] pixelValues4 = new int[3];
int[] pixelValues5 = new int[3];
int[] pixelValues6 = new int[3];
int[] pixelValues7 = new int[3];
int[] pixelValues8 = new int[3];
int[] pixelValues9 = new int[3];
for (int row = (wr.getHeight()-1)/2; row < wr.getHeight()-1; row++) {
for(int col = (wr.getWidth()-1)/2; col < wr.getWidth()-1; col++) {
pixelValues[0] = data[row][col].red;
pixelValues[1] = data[row][col].green;
pixelValues[2] = data[row][col].blue;
pixelValues2[0] = data[row-1][col-1].red;
pixelValues2[1] = data[row-1][col-1].green;
pixelValues2[2] = data[row-1][col-1].blue;
pixelValues3[0] = data[row-1][col].red;
pixelValues3[1] = data[row-1][col].green;
pixelValues3[2] = data[row-1][col].blue;
pixelValues4[0] = data[row-1][col+1].red;
pixelValues4[1] = data[row-1][col+1].green;
pixelValues4[2] = data[row-1][col+1].blue;
pixelValues5[0] = data[row][col-1].red;
pixelValues5[1] = data[row][col-1].green;
pixelValues5[2] = data[row][col-1].blue;
pixelValues6[0] = data[row][col+1].red;
pixelValues6[1] = data[row][col+1].green;
pixelValues6[2] = data[row][col+1].blue;
pixelValues7[0] = data[row+1][col-1].red;
pixelValues7[1] = data[row+1][col-1].green;
pixelValues7[2] = data[row+1][col-1].blue;
pixelValues8[0] = data[row+1][col].red;
pixelValues8[1] = data[row+1][col].green;
pixelValues8[2] = data[row+1][col].blue;
pixelValues9[0] = data[row+1][col+1].red;
pixelValues9[1] = data[row+1][col+1].green;
pixelValues9[2] = data[row+1][col+1].blue;
}
}
}
所以我将权重应用于每个值,然后用新计算的值改变原始的2d数组。
小问题,但为什么使用Pixel代替Javax.awt.Color,为什么不使用第二个Color [9] [3]而不是你的九个独立数组?(知道这应该是一个komment而不是答案,但我不能发表评论)