您当前的位置:首页 > 计算机 > 编程开发 > Python

使用Python对图像进行中值滤波

时间:12-26来源:作者:点击数:

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

import numpy as np

from PIL import Image

import scipy.signal as signal

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

data = []

width, height = im.size

# 读取图像像素值

for h in range(height):

    row = []

    for w 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 h in range(height):

    for w in range(width):

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

im.save('result.jpg')

原始图像:

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

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

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门