图像质量评估指标SSIMPSNRMSE
图像质量评估指标 SSIM / PSNR / MSE
Visibility of Errors
计算图像degrade后的质量,最 direct 的思路即⽐较degrade后的图像与真实图像(distortion-free)之间的差剖⾯,即可视误差,通过visibility of errors 评价图像质量。
PSNR 和 MSE 就是基于这种简单直接的思路确定的指标,MSE(Mean Squared Error),顾名思义,定义略。PSNR(Peak Signal to Noi Ratio),峰值信噪⽐,即峰值信号的能量与噪声的平均能量之⽐,通常表⽰的时候取 log 变成分贝(dB),由于 MSE 为真实图像与含噪图像之差的能量均值,⽽两者的差即为噪声,因此 PSNR 即峰值信号能量与 MSE 之⽐。定义式如下:第⼆个等式由于图像像素点数值以量化⽅式保存,bits 即每个像素点存储所占的位数。因此 MaxValue 即为 2^bits - 1。计算PSNR
def cal_psnr(im1, im2):
m = (np.abs(im1 - im2) ** 2).mean()
psnr = 10 * np.log10(255 * 255 / m)
return psnr
由于 grayscale 存成 8bit ,故最⼤值255。
Structural Similarity
由于基于差剖⾯的简单计算不符合⼈类视觉系统(Human Visual System,HVS)的评价结果,因此需要对评价⽅式进⾏重新考量。如果图⽚的最终⽬的是对⼈类展⽰的话,那么质量应该以⼈的主管测评为准。但是由于主管评价不⽅便且费时,因此我们试图⽤客观的 image quality asssment 来对图像进⾏评价,使其接近 HVS 的特点。由于 HVS 具有可以抓取图像的结构特征的特点,因此设计 Structural Similarity 进⾏评价,即 SSIM 。
图像质量评价分为:
1. full-reference:知道noi-free的图像。
2. no-reference:真实图像⽆法取得,因此需要blind asssment。
3. reduced-reference:reference只是部分的available。只有extracted features作为附加信息,进⾏评估。
这⾥讨论的是full-reference。
在介绍SSIM之前,由于MSE的缺点,⼈们尝试过对MSE进⾏改进,使得errors are penalized in accordance with their visibility。即
error nsitivity,基于误差敏感度。基本流程如下:
PSNR =10log =10MSE
MaxV alue 210log 10MSE 2−1
bits
预处理⽐如,将⾊彩空间转换到更适合HVS的空间,将储存的像素值转换为显⽰出的亮度值,等等。CSF为 Contrast Sensitivity Function,该函数描述了HVS对于不同时空频带的刺激的敏感性。然后分成不同channel,或称为subband,根据⽅向,时空频率等等。再分别计算误差并normalize,然后combine。
然⽽上述⽅法有很多缺陷,因此考虑新的思路,从⾃然图像⾼度结构化的特征出发,设计新的asssment。
相⽐于之前估计 perceived errors,该思路估计 perceived changes in structural information variation。如下图所⽰,虽然这些图的MSE相同,即具有相同的PSNR⽔平,但是显然对于⼈的主管感觉来说差别时很⼤的,对于contrast的stretch,以及均值的偏移,即整体上明暗变化,基本上并不会影响⼈类对图像的内容的理解。因此应该让这样的图⽚得到的质量值更⾼。原因在于我们可以把original information近乎完全的恢复出来,只需要做pixel-wi的映射即可。(当然saturation的那些数值⽆法恢复),⽽像⽐如blur,JPEG compression等,许多结构信息已经永久丢失了,因此应该评分低些。从图可以看出,SSIM做的较好。
然后SSIM的基本思路是,通过⼀下三个⽅⾯来对两幅图像的相似性进⾏评估,即
1. luminance,亮度
2. contrast,对⽐度
3. structure,结构
算法的框图基本如下:
基本流程为:对于输⼊的x和y,⾸先计算出luminance measurement,进⾏⽐对,得到第⼀个相似性有关的评价;在减去luminance的影响,计算contrast measurement,⽐对,得到第⼆个评价;在⽤上⼀步的结果除掉contrast,在进⾏structure的⽐对。最后将结果combine,得到最终的评价结果。
从实现⾓度来讲,亮度⽤均值表征,对⽐度⽤经过均值归⼀化之后的⽅差表征,结构⽤相关系数(就是统计意义上的 r ,协⽅差与⽅差乘积的⽐值)。
具体的计算公式如下所⽰:
其中S表⽰相似度,这个算⼦应当满⾜作为度量的基本性质,即
1. Symmetry,交换x和y顺序不影响结果。
2. Boundedness,值要有界,这⾥时⼩于等于1.。
3. Unique maximum,最⼤值,即1,只有当 x = y 时候取到。
上⾯的公式⾥,⽐如 l(x,y) ,这样定义的⼀个原因是让上下次数相同,然后可以满⾜Weber’s law,Weber定理说的是,对于HVS,对于亮度变化的最⼩感知的幅度与背景亮度成正⽐,也就是说,我们的视觉系统时对于相对的亮度变化敏感,⽽不是绝对值,⽐如我们的和如果是成⽐例的话,假设⽐例系数为(1+R),带⼊计算,发现$ l(x,y) $ 仅仅与R有关,与两均值的绝对数值⽆关,说明我们的评价⽐较类似⼈眼的视觉的主观性质。然后后⾯的C_1常数项是为了当均值接近0的时候避免波动。对⽐度相
似度的定义类似,然后结构相似性⽤的是correlation coefficient,也加了常数项防⽌除0。最后将三项加权乘积,⼀般选
使得表达式简单。于是总公式就是:但是由于SSIM应该应⽤于局部,这既是因为图像distortion的程度可能空变,也是为了拟合⼈类视觉的局部性的特点,因此实际上我们⽤mean-SSIM或者MSSIM,对各个local window的SSIM求平均。⼀般⽤⾼斯加权函数对每个local statistics进⾏加权防⽌出现blocking。关于⽤SSIM测试的实验结果,作者⾸先做了⼀个很有趣的实验,即best/worst ca的实验,通过对⼀个corrupted图像在保持MSE不变的情况下,对SSIM这个参数进⾏向上和向下的优化,找到了同等PSNR下的SSIM 最好和最差的情况。这样可以看出SSIM到底是表征了什
么信息。
最后是和MOS (mean opinion score)的相关性。可以看出MSSIM效果更好⼀些,由于分布⽐较紧致。
μ_1μ_2α=β=γ=1
计算SSIM
def cal_ssim(im1,im2):
asrt len(im1.shape) == 2 and len(im2.shape) == 2
asrt im1.shape == im2.shape
mu1 = an()
mu2 = an()
sigma1 = np.sqrt(((im1 - mu1) ** 2).mean())
sigma2 = np.sqrt(((im2 - mu2) ** 2).mean())
sigma12 = ((im1 - mu1) * (im2 - mu2)).mean()
k1, k2, L = 0.01, 0.03, 255
C1 = (k1*L) ** 2
C2 = (k2*L) ** 2
C3 = C2/2
l12 = (2*mu1*mu2 + C1)/(mu1 ** 2 + mu2 ** 2 + C1)
c12 = (2*sigma1*sigma2 + C2)/(sigma1 ** 2 + sigma2 ** 2 + C2)
s12 = (sigma12 + C3)/(sigma1*sigma2 + C3)
ssim = l12 * c12 * s12
return ssim
THE END
星期六, 09. ⼗⼆⽉ 2017 12:24上午
reference:
Wang Z, Bovik A C, Sheikh H R, et al. Image quality asssment: from error visibility to structural similarity[J]. IEEE transactions on image processing, 2004, 13(4): 600-612.