PSNR与SSIM对于彩色图像和灰度图像的计算区别

  PSNR具体公式可以参考图像质量评价指标之PSNR和SSIM
  SSIM的计算公式讲解可参考图像质量评估算法SSIM。在实际应用中,一般采用高斯函数来计算两图像的均值、方差以及协方差,而不采用逐像素遍历。
  对于灰度图像来说,它只有单通道,那么PSNR的计算流程为计算处理后图像每一个像素与真实图像对应像素的差距,随后求平均。SSIM则是每次计算都从图像上(处理图像与真实图像)取一个高斯NxN的窗口,然后不断滑动窗口进行计算(即卷积),最后取平均值作为全局的SSIM。
  对于彩色图像来说,一般由三通道组成,我们以RGB图像为例。一般对于它的质量指标计算有两种方法:
【1】分别计算 RGB 各个通道上的 PSNR\SSIM均值,然后取平均值(除以3)。
【2】将图像转换为YCbCr格式,然后只计算Y分量(亮度分量)的PSNR\SSIM。
一般来说用第一种方法比较多,当然,我们常用Python库中的mean()方法一般都会直接帮我们计算好最终的均值结果,不必我们手动再除以3:
以PSNR的python计算代码为例:

def psnr(img1, img2): #这里输入的是(0,255)的灰度或彩色图像,如果是彩色图像,则numpy.mean相当于对三个通道计算的结果再求均值
    mse = numpy.mean((img1 / 255. - img2 / 255.) ** 2)
    if mse < 1.0e-10: # 如果两图片差距过小代表完美重合
        return 100
    PIXEL_MAX = 1.0
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse)) # 将对数中pixel_max的平方放了下来

你可能感兴趣的:(计算机视觉与图像处理)