给出计算峰值信噪比、结构相似性指标、均方误差的python代码
时间: 2023-08-11 22:04:41 浏览: 138
下面是使用Python计算峰值信噪比(PSNR)、结构相似性指标(SSIM)和均方误差(MSE)的示例代码。
```python
import cv2
import numpy as np
from skimage.metrics import structural_similarity as ssim
# 读取原始图像和降噪后的图像
img_ori = cv2.imread("original_image.png")
img_denoise = cv2.imread("denoised_image.png")
# 计算PSNR
mse = np.mean((img_ori - img_denoise) ** 2)
psnr = 10 * np.log10(255 ** 2 / mse)
print("PSNR:", psnr)
# 计算SSIM
ssim_value = ssim(img_ori, img_denoise, multichannel=True)
print("SSIM:", ssim_value)
# 计算MSE
mse = np.mean((img_ori - img_denoise) ** 2)
print("MSE:", mse)
```
注意,计算SSIM需要安装scikit-image库。在命令行输入 `pip install scikit-image` 即可安装。
相关问题
给出计算峰值信噪比、结构相似性指标、均方误差的代码
以下是Python代码示例,用于计算图像降噪的峰值信噪比(PSNR)、结构相似性指标(SSIM)和均方误差(MSE):
```python
import cv2
import numpy as np
from skimage.metrics import peak_signal_noise_ratio, structural_similarity
# 读取原始图像和降噪后的图像
img_original = cv2.imread('original.png')
img_denoised = cv2.imread('denoised.png')
# 计算峰值信噪比
psnr = peak_signal_noise_ratio(img_original, img_denoised)
print('PSNR:', psnr)
# 计算结构相似性指标
ssim = structural_similarity(img_original, img_denoised, multichannel=True)
print('SSIM:', ssim)
# 计算均方误差
mse = np.mean((img_original - img_denoised) ** 2)
print('MSE:', mse)
```
其中,`cv2.imread()`函数用于读取图像文件,`peak_signal_noise_ratio()`函数和`structural_similarity()`函数来自于scikit-image库,用于计算PSNR和SSIM指标,`np.mean()`函数用于计算均方误差(MSE)。
利用skimage实现中值滤波器对加了高斯噪声的lena图像进行去噪并且计算原图与去噪图像的峰值信噪比和均方误差还有结构相似性
好的,以下是使用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库。
阅读全文