python计算图像信噪比
时间: 2023-07-08 13:10:44 浏览: 243
python求不同分辨率图像的峰值信噪比,一文搞懂.docx
计算图像信噪比(PSNR)的公式如下:
PSNR = 20 * log10(MAX_I) - 10 * log10(MSE)
其中,MAX_I 是像素值的最大值,对于8位灰度图像,MAX_I = 255;对于24位彩色图像,MAX_I = 255 * 3 = 765。MSE 是均方误差,计算公式为:
MSE = 1 / (m * n) * ∑[i=0 to m-1]∑[j=0 to n-1](I(i,j) - K(i,j)) ^ 2
其中,m 和 n 分别是图像的宽和高,I(i,j) 和 K(i,j) 分别是原始图像和处理后的图像在第 i 行第 j 列的像素值。
下面是一个简单的 Python 代码实现:
```python
import cv2
import numpy as np
def psnr(img1, img2):
mse = np.mean((img1 - img2) ** 2)
if mse == 0:
return 100
max_pixel = 255.0
psnr = 20 * np.log10(max_pixel / np.sqrt(mse))
return psnr
# 读取原始图像和处理后的图像
img1 = cv2.imread('original.png')
img2 = cv2.imread('processed.png')
# 计算 PSNR 值
print('PSNR:', psnr(img1, img2))
```
注意,这里的 img1 和 img2 都需要是相同大小的图像。
阅读全文