python3-PIL基于盒模糊核均值化平滑

发布时间:2021-09-24 22:38:33编辑:run阅读(5481)

    基于盒模糊核均值化平滑,使用PIL的ImageFilter.Kernel()函数和大小为3x3和5x5的盒模糊核(均值滤波器)来平滑噪声图像

    from PIL import Image, ImageEnhance, ImageFilter
    import matplotlib.pylab as pylab
    import numpy as np
    
    pylab.rcParams['font.sans-serif'] = ['KaiTi']
    pylab.rcParams['axes.unicode_minus'] = False
    def plot_image(image, title=''):
        pylab.title(title, size=20)
        pylab.imshow(image)
        pylab.axis('off')
    im = Image.open(r'D:\image_processing\image4\f.jpg')
    pylab.figure(figsize=(20, 15))
    pylab.subplot(1, 3, 1)
    pylab.imshow(im)
    pylab.title('原始图像', size=25)
    pylab.axis('off')
    for n in [3, 5]:
        box_blur_kernel = np.reshape(np.ones(n*n), (n, n)) / (n * n)
        im1 = im.filter(ImageFilter.Kernel((n, n), box_blur_kernel.flatten()))
        pylab.subplot(1, 3, (2 if n==3 else 3))
        plot_image(im1, '核大小为' + str(n) + 'x' + str(n))
    pylab.suptitle('利用不同核大小的PIL均值滤波(盒模糊)', size=40)
    pylab.show()

    image.png

    可以看到,输出图像是通过将较大尺寸的盒模糊与已经平滑处理的噪声图像进行卷积得到的。

关键字