python 中值滤波

来源:互联网 发布:班徽设计软件 编辑:程序博客网 时间:2024/05/24 05:58

中值滤波是数字信号处理和数字图像处理领域使用较多的预处理技术,使用邻域内所有信号的中位数替换中心像素的值,可以在滤除异常值的情况下较好地保留纹理信息。该技术会在一定程度上造成图像模糊和失真,滤波窗口变大时会非常明显。

import numpy as np

from PIL import Image

import scipy.signal as signal


im = Image.open('lena.jpg')

data = []

width, height = im.size


# 读取图像像素值

for in range(height):

    row = []

    for in range(width):

        value = im.getpixel((w,h))

        row.append(value)

    data.append(row)


# 二维中值滤波

data = np.float32(data)

# 滤波窗口的大小会对结果产生很大影响

data = signal.medfilt2d(data, (3,3))


# 创建并保存结果图像

for in range(height):

    for in range(width):

        im.putpixel((w,h), int(data[h][w]))


im.save('result.jpg')


原始图像:

滤波窗口为(3,3)时的结果:

滤波窗口为(5,5)时的结果:

滤波窗口为(11,11)时的结果:


原创粉丝点击