【实验目的】
1. 理解图像滤波的基本概念;
2. 掌握空域滤波的基本原理;
3. 掌握图像中值滤波器的基本方法;
4. 掌握椒盐噪声的添加与去除方法。
【实验环境】
Python
【实验内容】
1、将图像进行中值滤波处理。
from scipy import ndimage
from skimage import data, util
from matplotlib import pyplot as plt
img=data.astronaut()[:,:,0]
noise_img=util.random_noise(img,mode='s&p',seed=None,clip=True)
n=3
new_img=ndimage.median_filter(noise_img,(n,n))
plt.figure()
plt.imshow(img,cmap='gray')
plt.figure()
plt.imshow(noise_img,cmap='gray')
plt.figure()
plt.imshow(new_img,cmap='gray')
2、将图像进行最大值和最小值滤波处理。
from scipy import ndimage
from skimage import data,util
from matplotlib import pyplot as plt
img=data.astronaut()[:,:,0]
pepper_img=util.random_noise(img,mode='pepper',seed=None,clip=True)
salt_img=util.random_noise(img,mode='salt',seed=None,clip=True)
n=3
max_img=ndimage.maximum_filter(pepper_img,(n,n))
min_img=ndimage.maximum_filter(salt_img,(n,n))
plt.figure()
plt.imshow(img,cmap='gray')
plt.figure()
plt.imshow(min_img,cmap='gray')
plt.figure()
plt.imshow(max_img,cmap='gray')
3、读入camera图像,添加椒盐噪声,分别采用高斯滤波、中值滤波、最大值滤波、最小值滤波进行滤波处理,分别显示滤波结果。
from skimage import data,util
from matplotlib import pyplot as plt
from scipy import ndimage
import numpy as np
import math
img=data.camera()
noise_img=util.random_noise(img,mode='s&p',seed=None,clip=True)
n=3
gauss_img=ndimage.gaussian_filter(noise_img,(n,n))
med_img=ndimage.median_filter(noise_img,(n,n))
max_img=ndimage.maximum_filter(noise_img,(n,n))
min_img=ndimage.maximum_filter(noise_img,(n,n))
plt.figure()
plt.imshow(img,cmap='gray')
plt.figure()
plt.imshow(gauss_img,cmap='gray')
plt.figure()
plt.imshow(med_img,cmap='gray')
plt.figure()
plt.imshow(min_img,cmap='gray')
plt.figure()
plt.imshow(max_img,cmap='gray')
4、将3进行改进,分别计算四种滤波器的结果与原始图像之间的PSNR值,比较哪种结果较好。
from skimage.metrics import peak_signal_noise_ratio as compare_psnr
psnr1=compare_psnr(img, gauss_img*255)
psnr2=compare_psnr(img, med_img*255)
psnr3=compare_psnr(img, max_img*255)
psnr4=compare_psnr(img, min_img*255)
print("高斯滤波",psnr1)
print("中值滤波",psnr2)
print("最大值滤波",psnr3)
print("最小值滤波",psnr4)
最终结果显示,中值滤波的效果较好。
【实验小结】
图像滤波实验是一个涉及图像处理和计算机视觉的实验,其主要目标是去除图像中的噪声、平滑图像以及提取图像中的特征。高斯滤波器可以平滑图像,但可能会模糊边缘;中值滤波器对椒盐噪声有很好的效果,但可能会导致图像变得模糊;而最大滤波、最小滤波可以增强边缘,但可能会增加噪声。而通过实验比较去噪效果最好的为中值滤波。