参考:https://zhuanlan.zhihu.com/p/50757421
PSNR 峰值信噪比
peak signal-to-noise ratio
给定一个大小为的干净图像
和噪声图像
,均方误差
定义为:
然后就定义为:
其中为图片可能的最大像素值。如果每个像素都由 8 位二进制来表示,那么就为 255。通常,如果像素值由
位二进制来表示,那么
。
一般地,针对 uint8 数据,最大像素值为 255,;针对浮点型数据,最大像素值为 1。
上面是针对灰度图像的计算方法,如果是彩色图像,通常有三种方法来计算。
- 分别计算 RGB 三个通道的 PSNR,然后取平均值。
- 计算 RGB 三通道的 MSE ,然后再除以 3 。
- 将图片转化为 YCbCr 格式,然后只计算 Y 分量也就是亮度分量的 PSNR。
其中,第二和第三种方法比较常见。
PSNR高于40dB说明图像质量极好(即非常接近原始图像),在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),在20—30dB说明图像质量差;最后,但PSNR低于20dB图像不可接受
diff = im1 - im2
mse = np.mean(np.square(diff))
psnr = 10 * np.log10(255 * 255 / mse)
SSIM 结构相似性
structural similarity公式基于样本
和
之间的三个比较衡量:亮度 (luminance)、对比度 (contrast) 和结构 (structure)。
一般取。
为
的均值
为
的均值
为
的方差
为
的方差
为
和
的协方差
为两个常数,避免除零
为像素值的范围,
为默认值
那么
将设为 1,可以得到
每次计算的时候都从图片上取一个的窗口,然后不断滑动窗口进行计算,最后取平均值作为全局的 SSIM。
其取值范围为[0,1],值越大越好