图像质量评估指标 | MAE | MSE | PSNR | SSIM

MAE 平均绝对误差

MAE=1m∑i=1m∣yi−yi′∣ MAE = \frac{1}{m}\sum_{i=1}^{m}|y_i-y_i^{'}| MAE=m1i=1myiyi
是所有单个观测值与算术平均值的偏差的绝对值的平均。

MSE 均方误差

MSE=1m∑i=1m(yi−yi′)2 MSE = \frac{1}{m}\sum_{i=1}^{m}(y_i-y_i^{'})^2 MSE=m1i=1m(yi

### **PSNRSSIMMAEMSE 的定义与用途** #### **1. PSNR(Peak Signal-to-Noise Ratio,峰值信噪比)** PSNR 是一种用于衡量图像质量指标,通常用于评估重建图像与原始图像之间的差异。PSNR 值越高,表示图像质量越好。 公式: \[ PSNR = 10 \cdot \log_{10} \left( \frac{MAX^2}{MSE} \right) \] 其中: - \( MAX \):像素值的最大可能值(例如,对于8位灰度图像,\( MAX = 255 \))。 - \( MSE \):均方误差(Mean Squared Error)。 --- #### **2. SSIM(Structural Similarity Index Measure,结构相似性指数)** SSIM 是一种衡量两幅图像结构相似性的指标,考虑了亮度、对比度和结构信息。SSIM 的取值范围为 [0, 1],值越接近 1,表示两幅图像越相似。 公式: \[ 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)} \] 其中: - \( \mu_x, \mu_y \):分别表示图像 \( x \) 和 \( y \) 的均值。 - \( \sigma_x, \sigma_y \):分别表示图像 \( x \) 和 \( y \) 的标准差。 - \( \sigma_{xy} \):表示图像 \( x \) 和 \( y \) 的协方差。 - \( C_1, C_2 \):用于避免分母为零的小常数。 --- #### **3. MAE(Mean Absolute Error,平均绝对误差)** MAE 是一种衡量预测值与真实值之间绝对差异的指标,计算简单直观。 公式: \[ MAE = \frac{1}{N} \sum_{i=1}^{N} |x_i - y_i| \] 其中: - \( x_i \):原始图像的像素值。 - \( y_i \):重建图像的像素值。 - \( N \):像素总数。 --- #### **4. MSE(Mean Squared Error,均方误差)** MSE 是一种衡量预测值与真实值之间平方差异的指标,对较大的误差更敏感。 公式: \[ MSE = \frac{1}{N} \sum_{i=1}^{N} (x_i - y_i)^2 \] --- ### **代码实现** 以下是一个使用 Python 实现 PSNRSSIMMAEMSE 的代码示例: ```python import numpy as np from skimage.metrics import structural_similarity as ssim def calculate_psnr(img1, img2, max_value=255): """ 计算 PSNR :param img1: 原始图像 (numpy array) :param img2: 重建图像 (numpy array) :param max_value: 像素值的最大可能值 :return: PSNR 值 """ mse = np.mean((img1 - img2) ** 2) if mse == 0: return float('inf') psnr = 10 * np.log10(max_value**2 / mse) return psnr def calculate_mse(img1, img2): """ 计算 MSE :param img1: 原始图像 (numpy array) :param img2: 重建图像 (numpy array) :return: MSE 值 """ mse = np.mean((img1 - img2) ** 2) return mse def calculate_mae(img1, img2): """ 计算 MAE :param img1: 原始图像 (numpy array) :param img2: 重建图像 (numpy array) :return: MAE 值 """ mae = np.mean(np.abs(img1 - img2)) return mae def calculate_ssim(img1, img2, data_range=255): """ 计算 SSIM :param img1: 原始图像 (numpy array) :param img2: 重建图像 (numpy array) :param data_range: 数据范围 :return: SSIM 值 """ score, _ = ssim(img1, img2, data_range=data_range, full=True) return score # 示例 if __name__ == "__main__": # 创建两个示例图像 img1 = np.array([[100, 150], [200, 250]], dtype=np.float32) img2 = np.array([[102, 148], [198, 255]], dtype=np.float32) # 计算各项指标 psnr = calculate_psnr(img1, img2) mse = calculate_mse(img1, img2) mae = calculate_mae(img1, img2) ssim_score = calculate_ssim(img1, img2) print(f"PSNR: {psnr:.4f}") print(f"MSE: {mse:.4f}") print(f"MAE: {mae:.4f}") print(f"SSIM: {ssim_score:.4f}") ``` --- ### **代码解释** 1. **PSNR 函数** - 计算均方误差(MSE)。 - 使用公式 \( PSNR = 10 \cdot \log_{10} \left( \frac{MAX^2}{MSE} \right) \) 计算 PSNR 值。 2. **MSE 函数** - 直接计算像素值之间的平方差并求平均值。 3. **MAE 函数** - 计算像素值之间的绝对差并求平均值。 4. **SSIM 函数** - 使用 `skimage.metrics.structural_similarity` 函数计算 SSIM 值。 --- ### **相关问题**
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值