psnr和ssim MAE RMSE计算公式
时间: 2024-12-27 13:19:09 浏览: 3
### PSNR、SSIM、MAE、RMSE 的计算公式
#### 峰值信噪比 (PSNR)
峰值信噪比是一种常用的图像质量评估指标,用于衡量重建图像的质量。其定义为:
\[ \text{PSNR} = 10 \cdot \log_{10}\left(\frac{\text{MAX}_I^2}{\text{MSE}}\right) \]
其中,
- \( \text{MAX}_I \) 是像素的最大可能强度值(对于8位灰度图像是255)
- \( \text{MSE} \) 表示均方误差。
该公式的推导基于信号处理理论中的信噪比概念[^4]。
```python
import numpy as np
def psnr(original_image, noisy_image):
mse_value = np.mean((original_image - noisy_image)**2)
max_pixel_value = 255.0
psnr_result = 20 * np.log10(max_pixel_value / np.sqrt(mse_value))
return psnr_result
```
#### 结构相似性指数 (SSIM)
结构相似性指数测量两个图像之间的感知差异,考虑亮度、对比度和结构三方面的变化。基本形式如下所示:
\[ \text{SSIM}(x,y)=\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2+\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)} \]
这里 \( C_1=(K_1L)^2,C_2=(K_2L)^2 \),\( L \) 是动态范围,\( K_1,K_2 << 1 \)[^2]。
```python
from skimage.metrics import structural_similarity as ssim
ssim_index, diff = ssim(imageA, imageB, full=True)
```
#### 平均绝对误差 (MAE)
平均绝对误差是指预测值与实际观测值之间差额的绝对值的平均数:
\[ \text{MAE}=\frac{1}{n}\sum^n_{i=1}|y_i-\hat y_i| \]
此表达式适用于任何类型的数值数据集,在图像领域则指代像素级偏差[^3]。
```python
def mae(img1, img2):
absolute_error_sum = np.sum(np.abs(img1.astype('float') - img2.astype('float')))
mean_absolute_error = absolute_error_sum / float(img1.shape[0] * img1.shape[1])
return mean_absolute_error
```
#### 均方根误差 (RMSE)
均方根误差是各数据偏离真实值之平方和的平均数再开平方的结果,即标准差的一种变形:
\[ \text{RMSE}= \sqrt{\frac{1}{N}\sum^{N}_{i=1}(Y_i-Y'_i)^2 } \]
它反映了估计量与被估计量间的离散程度。
```python
def rmse(predictions, targets):
differences = predictions - targets
differences_squared = differences ** 2
mean_of_differences_squared = differences_squared.mean()
rmse_val = np.sqrt(mean_of_differences_squared)
return rmse_val
```
阅读全文