基于加权和java变换邻居

时间:2019-03-09 22:43:20

标签: java arrays 2d

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数组。

1 个答案:

答案 0 :(得分:0)

次要问题,但为什么要使用Pixel而不是Javax.awt.Color,为什么不使用第二个Color [9] [3]而不是您的9个独立数组呢?发表评论)