Сглаживание изображения с использованием медианного фильтра - PullRequest
0 голосов
/ 29 сентября 2019

Я работаю над сглаживанием изображения с использованием медианного фильтра.Для этого я не использую встроенные функции в библиотеке Python, а пишу свои собственные функции.Следующий код предназначен для вычисления медианы.

def CalcMedian(Image, x, y, gridSize):    #x and y are nested loops, that run over the entire image.
    medianList = []
    row, col = Image.shape;
    k = int(gridSize/2);
    for i in range(gridSize-1):
        for j in range(gridSize-1):
            if (i+x-k)<0 or (j+y-k)<0 or (i+x-k)>row or (j+y-k)>col:
                break;
            medianList.append(Image[(i+x-k),(j+y-k)]);
    medianList.sort();
    length = len(medianList);
    if length%2 != 0:
        return float(medianList[length/2]);
    return float((medianList[int((length-1)/2)] + medianList[int(length/2)]) / 2.0);

В последней строке я получаю сообщение об ошибке.

IndexError: список индексов выходит за пределы диапазона

Я не могу понять, в чем проблема, поскольку это стандартный код, используемый для поиска медианы, и я не понимаю, где именно индекс будет вне диапазона.

1 Ответ

0 голосов
/ 29 сентября 2019

Я использовал вашу функцию и некоторые фиктивные данные для проверки, и это работает.Я получаю индекс выхода за пределы ошибки только тогда, когда значение x или y равно row или col соответственно.

проверьте, на каком значении x и y вы получите эту ошибку.

...