Ядро фильтра 11x11 - PullRequest
       3

Ядро фильтра 11x11

0 голосов
/ 14 марта 2020

Я пытаюсь смазать изображение, используя ядро ​​11x11. Но я продолжаю получать следующую ошибку:

    add = image.item(i+k, j+l)
    IndexError: index 600 is out of bounds for axis 1 with size 600

Мой код для этой части:

for i in np.arange(3, height-3):
for j in np.arange(3, width-3):
    sum = 0
    for k in np.arange(-5,6):
        for l in np.arange(-5,6):
            add = image.item(i+k, j+l)
            sum = sum+add
    avg = int(sum/121.0)  #for 11x11, average is sum/121
    image_output3.itemset((i,j), avg)

1 Ответ

0 голосов
/ 14 марта 2020

for i in np.arange(3, height-3) указывает, что вы зацикливаетесь на изображении и оставляете 3-пиксельную границу.

for k in np.arange(-5,6) указывает, что вы зацикливаетесь на ядре, для которого требуется 5-пиксельная граница.

image.item(i+k, j+l) показывает, что i+k должно быть между 0 (включено) и height (исключено). Учитывая указанные выше ограничения, на самом деле это значение между 3-5=-2 (включено) и height-3+6=height+3 (исключено). Очевидно, вы будете индексировать вне границ.

Решение тогда состоит в том, чтобы отрегулировать границу во внешних циклах, чтобы они были np.arange(5, height-5).

...