700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数字图像处理——中值滤波降噪

数字图像处理——中值滤波降噪

时间:2020-01-07 06:55:41

相关推荐

数字图像处理——中值滤波降噪

使用滤波模板中像素点的中值点作为目标像素,这就称为中值滤波降噪(顾名思义)

Python实现过程如下:

图像数据为:

图像中存在典型的椒盐噪声,而中值降噪,对椒盐噪声的作用是非常有效的。

导入要使用的库:

import PIL.Image as Imageimport matplotlib.pyplot as pltimport numpy as np

读入图片数据,并可视化:

img = Image.open('Fig0335(a)(ckt_board_saltpep_prob_pt05).tif')plt.imshow(img, cmap = 'gray')plt.axis('off')plt.show()

滤波函数:

这几个空间滤波使用的函数基本相似,只是目标像素的计算过程不一样

def rejector(img, m, n):img_data = np.array(img)img_new = [[] for _ in range(np.shape(img_data)[0])]a = m // 2b = n // 2for i in range(np.shape(img_data)[0]):for j in range(np.shape(img_data)[1]):num = []for k in range(i-a, i+a+1, 1):for l in range(j-b, j+b+1, 1):c = k>=0 and k<np.shape(img_data)[0]d = l>=0 and l<np.shape(img_data)[1]if c and d:num.append(img_data[k][l])else:num.append(0)num = sorted(num)y = m*n // 2img_new[i].append(int(num[y]))return img_new

调用滤波函数,得到结果,并可视化:

img_new = rejector(img, 3, 3)plt.subplot(121)plt.axis('off')plt.imshow(img_new, cmap = 'gray')plt.subplot(122)plt.axis('off')plt.imshow(img, cmap = 'gray')plt.show()

左侧为结果,右侧为原图像:

中值滤波结果与均值滤波结果比较:

左侧为中值滤波,中间为均值滤波,右侧为原图像

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。