超分辨率模型性能度量PSNR和SSIM及其计算方法
程序员文章站
2022-03-09 13:07:13
...
超分辨率模型性能度量PSNR和SSIM及其计算方法
一、PSNR(峰值信噪比)
简介
PSNR(dB):峰值信噪比(Peak Signal-to-Noise Ratio),用于测量有损变换的重建质量 (只关心像素值差异,不能代表感官质量),越大越好。
>40,非常接近原始图像
30-40,质量好,失真可接受
20-30,质量差
<20,不可接受
公式
MSE(均方误差),反映估计量与被估计量之间的差异程度:
其中,和为的无噪声单色图像。
PSNR(峰值信噪比) 定义如下:
其中,是图像像素值的最大值。
以上为单色图像的公式,彩色图像的公式类似,其MSE为RGB三者和再除以3。
代码
1.png
2.png
方法一:numpy计算(CPU运行时间约0.0014593s)
import cv2
import math
import numpy as np
def psnr(img1, img2):
mse = np.mean((img1 / 255. - img2 / 255.) ** 2) # 均方差
if mse < 1.0e-10: # 几乎无差异返回100
return 100
PIXEL_MAX = 1 # 像素最大值
return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))
if __name__ == "__main__":
img1 = cv2.imread('1.png')
img2 = cv2.imread('2.png')
print(psnr(img1, img2)) # 37.28288478569672
方法二:调用scikit-image库(CPU运行时间约0.0016281s)
import cv2
import skimage
if __name__ == "__main__":
img1 = cv2.imread('1.png')
img2 = cv2.imread('2.png')
print(skimage.measure.compare_psnr(img1, img2, data_range=255)) # 37.28288478569673
二、SSIM(结构相似度)
简介
SSIMs:结构相似度(Structural SIMilarity),一种基于亮度、对比度和结构三个相对独立的主观度量,用于衡量图像间的结构相似度。取值0-1,越大越好,此度量相较PSNR 更符合人眼对图像品质的判断。
公式
亮度 (luminance)
对比度 (contrast)
结构 (structure)
为的均值
为的方差
为和的协方差
和为常数,防止除零(为像素值范围)
SSIM(结构相似度) 定义如下:
其中,和为大小相同的图像。
代码
import cv2
import skimage
if __name__ == "__main__":
img1 = cv2.imread('1.png')
img2 = cv2.imread('2.png')
print(skimage.measure.compare_ssim(img1, img2, data_range=255, multichannel=True)) # 0.9736976594713508
参考文献
上一篇: coursera视频无法播放的解决方法
下一篇: 超分辨率图像重建