基于加权和java转换邻居

问题描述 投票:-1回答:1

我试图根据作业的不同权重编辑二维数组中的相邻元素。 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数组。

java arrays 2d
1个回答
0
投票

小问题,但为什么使用Pixel代替Javax.awt.Color,为什么不使用第二个Color [9] [3]而不是你的九个独立数组?(知道这应该是一个komment而不是答案,但我不能发表评论)

© www.soinside.com 2019 - 2024. All rights reserved.