Вопрос

Мне нужно написать программу, которая заменяет каждый пиксель его медианным значением и его 8 соседями.То, что у меня есть, скомпилируется, но когда я пытаюсь создать новое изображение, я получаю несколько ошибок.Помощь приветствуется.

Вот трассировка стека:

Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:171)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at ImageProcessing.median(ImageProcessing.java:25

И вот мой код:

public static int [] [] median(int [] [] image) {
    int height = image.length;
    int width = image[0].length;
    int [] [] result = new int [height] [width];

    for (int col = 0 ; col < image.length ; col++) {
        result[0][col] = image[0][col];
        result[height - 1][col] = image[height - 1][col];
    }

    for (int row = 0 ; row < image[0].length ; row++) {
        result[row][0] = image[row][0];
        result[row][width - 1] = image[row][width - 1];
    }

    for (int row = 1 ; row < height - 1 ; row++) {
        for (int col = 1 ; col < width - 1 ; col++) {
            Arrays.sort(image);
            result[row][col] = image[row][col] / 2;
        }
    }
    return result;
}
Это было полезно?

Решение

Ошибка, которую вы получаете, связана с тем, что в последней паре циклов ваш вызов Arrays.sort(image) пытается отсортировать строки изображения.

Вместо того, чтобы звонить Arrays.sort(image), вам нужно будет создать список из девяти значений пикселей, которые вы хотите просмотреть (сам пиксель и его восемь соседей).Затем отсортируйте что, и запишите медианное значение в result.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top