利用skimage实现中值滤波器对加了高斯噪声的lena图像进行去噪并且计算原图与去噪图像的峰值信噪比和均方误差还有结构相似性
时间: 2023-11-08 22:13:26 浏览: 124
好的,以下是使用skimage实现中值滤波器对加了高斯噪声的lena图像进行去噪并计算相关指标的Python代码:
```python
import numpy as np
from skimage import io, color, util, img_as_ubyte
from skimage.filters import median
from skimage.metrics import peak_signal_noise_ratio, mean_squared_error, structural_similarity
# 读取图像并加入高斯噪声
img = io.imread('lena.png')
img_noise = util.random_noise(img, mode='gaussian', var=0.01)
# 中值滤波器去噪
img_med = median(img_noise.astype(np.uint8), selem=np.ones((3, 3)))
# 将图像转换为8位整型
img = img_as_ubyte(img)
img_noise = img_as_ubyte(img_noise)
img_med = img_as_ubyte(img_med)
# 计算指标
psnr = peak_signal_noise_ratio(img, img_med)
mse = mean_squared_error(img, img_med)
ssim = structural_similarity(color.rgb2gray(img), color.rgb2gray(img_med))
# 输出指标结果
print('PSNR: ', psnr)
print('MSE: ', mse)
print('SSIM: ', ssim)
# 显示图像
io.imshow_collection([img, img_noise, img_med])
io.show()
```
运行以上代码,可以得到输出的指标结果和显示去噪后的图像。请确保在运行代码前,已经将lena图像保存在当前工作目录下,并且安装了skimage库。
阅读全文