Эффективный способ зацикливания фильтра через массив - PullRequest
0 голосов
/ 03 сентября 2018

Итак, я делаю этот курс, и есть это упражнение, в котором мне нужно размыть изображение, используя область массива 3х3 и поменять все значения на средние. Итак, я написал эту функцию, которая, как я знаю, до сих пор не работает полностью:

def replace_avg(img, block=3):
    x_dim, y_dim = img.shape
    for row in range(1,x_dim-block+2,3):
        for col in range(1,y_dim-block+2,3):
            img[row-(block-2):row+(block-1),col-(block-2):col+(block-1)] = np.average(img[row-(block-2):row+(block-1),col-(block-2):col+(block-1)])
    return img

У меня вопрос: есть ли более эффективный способ циклически проходить через этот массив с фильтром 3x3 с использованием numpy?

1 Ответ

0 голосов
/ 03 сентября 2018

Пакет skimage предоставляет функцию, которая делает именно то, что вы хотите:

from skimage import transform
img_rescaled = transform.rescale(img,1/block)

Может быть, вы ищете решение, специально предназначенное для использования Numpy, в этом случае вы должны посмотреть, как эта функция закодирована в модуле skimage

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