python自编中值滤波器

使用python实现图像的中值滤波
椒盐噪声处理的图片:
python自编中值滤波器_第1张图片

import numpy as np
import matplotlib.pyplot as plt
from skimage import io
def mediafil(img,m):
#滤波后会缺失边缘,先对原图进行0 padding
    img1=np.zeros((img.shape[0]+m-1,img.shape[1]+m-1))
    img1[(m-1)//2:(img.shape[0]+(m-1)//2),(m-1)//2:(img.shape[1]+(m-1)//2)]=img
#利用np.median寻找中值
    img2=np.zeros(img.shape)
    for i in range((m-1)//2,img2.shape[0]-(m-1)//2):
        for j in range((m-1)//2,img2.shape[1]-(m-1)//2):
            img2[i,j]=np.median(img1[i - (m-1)//2:i + (m-1)//2 + 1, j - (m-1)//2:j + (m-1)//2 + 1])
    return img2
#测试仅用一个通道,三通道遍历即可
img=io.imread("3-5-5.tif")[:,:,0]
m=3
img_new=mediafil(img,m)
plt.subplot(1,2,1)
plt.imshow(img,cmap='gray')
plt.subplot(1,2,2)
plt.imshow(img_new,cmap='gray')
plt.show()

python自编中值滤波器_第2张图片

你可能感兴趣的:(python,开发语言,图像处理)