im尝试根据分配的不同权重来编辑2d数组中的相邻元素。 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数组。
答案 0 :(得分:0)
次要问题,但为什么要使用Pixel而不是Javax.awt.Color,为什么不使用第二个Color [9] [3]而不是您的9个独立数组呢?发表评论)