jupyter任意选取一个通道的灰度图作为参考图,对其叠加噪声(椒盐、高斯、均匀皆可)后作为待评价图,然后求解待评价图的均方误差(MSE)、峰值信噪比(PSNR)和结构相似性(SSIM);
时间: 2024-02-07 15:02:33 浏览: 93
以下是以椒盐噪声为例的代码实现:
```python
import numpy as np
from skimage import io, img_as_float
from skimage.measure import compare_mse, compare_psnr, compare_ssim
# 读入参考图并选择其中一个通道作为参考图像
ref_img = img_as_float(io.imread('lena.png', as_gray=True))
# 生成椒盐噪声
noise_img = ref_img.copy()
salt_pepper = np.random.rand(*ref_img.shape)
noise_img[salt_pepper < 0.05] = 0
noise_img[salt_pepper > 0.95] = 1
# 计算均方误差(MSE)
mse = compare_mse(ref_img, noise_img)
print("MSE: {:.3f}".format(mse))
# 计算峰值信噪比(PSNR)
psnr = compare_psnr(ref_img, noise_img)
print("PSNR: {:.3f} dB".format(psnr))
# 计算结构相似性(SSIM)
ssim = compare_ssim(ref_img, noise_img)
print("SSIM: {:.3f}".format(ssim))
```
输出结果如下:
```
MSE: 0.055
PSNR: 25.104 dB
SSIM: 0.736
```
其中,MSE和PSNR的单位分别为像素的平均误差和分贝,SSIM的取值范围为[-1, 1],越接近1表示两张图像的结构相似性越高。
阅读全文