通过数组循环过滤器的有效方法

时间:2018-09-03 12:35:36

标签: python numpy image-processing

因此,我正在执行此课程,并且在此练习中,我必须使用数组的3x3区域模糊图像,并将所有值换成平均值。所以我写了这个我知道仍然无法完全使用的功能:

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

我的问题是,使用numpy,使用3x3过滤器循环遍历此数组是否有更有效的方法?

1 个答案:

答案 0 :(得分:0)

skimage软件包提供的功能可以完全满足您的要求:

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

也许您正在寻找专门使用Numpy的解决方案,在这种情况下,您应该查看skimage模块中该函数的编码方式