преобразовать соседей на основе взвешенной суммы Java - PullRequest
0 голосов
/ 10 марта 2019

я пытаюсь редактировать соседние элементы в 2d массиве, основываясь на разных весах для назначения.каждый индекс в массиве Pixel [] [] представляет различные значения RGB от 0 до 255.

Соседние элементы основаны на центральном индексе в массиве 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 голосов
/ 10 марта 2019

второстепенный вопрос, но зачем использовать Pixel вместо Javax.awt.Color и почему бы не использовать второй Color [9] [3] вместо ваших девяти независимых массивов? (Знаете, это должен быть комментарий, а не ответ, но я не могу комментировать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...