python中值滤波函数,python滤波器信号处理

中值滤波

一. 中值滤波:

我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、城北ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的城北网站制作公司

中值滤波器是一种可以使图像平滑的滤波器。它使用滤波器范围内的像素的中值去代表该范围内所有的像素。中值滤波是消除图像噪声最常见的手段之一,特别是消除椒盐噪声,中值滤波的效果要比均值滤波更好。

二. python实现中值滤波和均值滤波,并用两种滤波器对受到椒盐噪声污染的图像进行去噪

import cv2

import numpy as np

# Median filter

def median_filter(img, K_size=3):

H, W, C = img.shape

## Zero padding

pad = K_size // 2

out = np.zeros((H + pad*2, W + pad*2, C), dtype=np.float)

out[pad:pad+H, pad:pad+W] = img.copy().astype(np.float)

tmp = out.copy()

# filtering

for y in range(H):

    for x in range(W):

        for c in range(C):

            out[pad+y, pad+x, c] = np.median(tmp[y:y+K_size, x:x+K_size, c])

out = out[pad:pad+H, pad:pad+W].astype(np.uint8)

return out

# Average filter

def average_filter(img, G=3):

out = img.copy()

H, W, C = img.shape

Nh = int(H / G)

Nw = int(W / G)

for y in range(Nh):

    for x in range(Nw):

        for c in range(C):

            out[G*y:G*(y+1), G*x:G*(x+1), c] = np.mean(out[G*y:G*(y+1), G*x:G*(x+1), c]).astype(np.int)

return out

# Read image

img = cv2.imread("../paojie_sp.jpg")

# Median Filter and Average Filter

out1 = median_filter(img, K_size=3)

out2 = average_filter(img,G=3)

# Save result

cv2.imwrite("out1.jpg", out1)

cv2.imwrite("out2.jpg", out2)

cv2.waitKey(0)

cv2.destroyAllWindows()

三. 实验结果

可以明显看出,对于受到椒盐噪声污染的图像,中值滤波往往比均值滤波的去噪效果要好!

四. 参考内容:

   

python 中一维数据中值滤波函数,在matlab中有 medfilt1函数,Python中有吗,只找到了图像2维的,

有的,在numpy包中

import numpy as np

dat = [1,3,5,6,7,2,4]

med = np.median(dat) # med=4.0

如何用python实现图像的一维高斯滤波

如何用python实现图像的一维高斯滤波

建议你不要使用高斯滤波。

推荐你使用一维中值滤波

matlab的函数为

y = medfilt1(x,n);

x为数组,是你要处理原始波形,n是中值滤波器的参数(大于零的整数)。y是滤波以后的结果(是数组)

后面再

plot(y);

就能看到滤波以后的结果

经过medfilt1过滤以后,y里储存的是低频的波形,如果你需要高频波形,x-y就是高频波形

顺便再说一点,n是偶数的话,滤波效果比较好。

N越小,y里包含的高频成分就越多,y越大,y里包含的高频成分就越少。

记住,无论如何y里保存的都是整体的低频波。(如果你看不懂的话,滤一下,看y波形,你马上就懂了)


分享标题:python中值滤波函数,python滤波器信号处理
URL地址:http://scyanting.com/article/dssoigp.html