使用python编写使用SNR对图像去噪效果进行评估的代码
时间: 2023-07-20 13:15:59 浏览: 342
基于python与YaleB数据集使用OMP + K-SVD算法实现图像去噪
5星 · 资源好评率100%
好的,以下是一个使用SNR对图像去噪效果进行评估的Python代码示例:
```python
import numpy as np
import cv2
def calculate_snr(original, noisy, denoised):
"""
计算信噪比(SNR)的函数
"""
mse_noise = np.mean((original - noisy) ** 2)
mse_denoised = np.mean((original - denoised) ** 2)
snr = 10 * np.log10(mse_denoised / mse_noise)
return snr
# 读取原始图像
original_image = cv2.imread('original_image.png', cv2.IMREAD_GRAYSCALE)
# 添加高斯噪声
mean = 0
variance = 0.1
sigma = np.sqrt(variance)
noisy_image = original_image + np.random.normal(mean, sigma, original_image.shape)
# 对噪声图像进行去噪处理
denoised_image = cv2.fastNlMeansDenoising(noisy_image, None, h=10, templateWindowSize=7, searchWindowSize=21)
# 计算 SNR 并输出结果
snr = calculate_snr(original_image, noisy_image, denoised_image)
print('SNR:', snr)
```
这个示例代码中,我们首先读取原始图像,然后添加高斯噪声以模拟实际场景中的图像噪声。接着,我们使用 `cv2.fastNlMeansDenoising` 对噪声图像进行去噪处理。最后,我们使用 `calculate_snr` 函数计算信噪比(SNR)并输出结果。
需要注意的是,这个示例代码中使用的是 OpenCV 中的快速非局部均值去噪算法(`cv2.fastNlMeansDenoising`)。在实际应用中,可能需要根据情况选择不同的去噪算法。
阅读全文