SSIM Introduction

SSIM 是2004年提出来的,原始论文在这里。SSIM相较PSNR更符合人眼的主观感觉,因此在很多图片视频任务中广泛使用,包括压缩,降噪等等。本文简单介绍下SSIM公式,并根据论文On the Mathematical Properties of the SSIM对SSIM做了分析,最后总结了如何在编码器中针对SSIM来做优化。

SSIM简介

SSIM的计算公式如下:

S(x,y)=f(l(x,y),c(x,y),s(x,y))

其中l(x, y)代表x, y对于mean的相似度,c(x, y)代表的contrast的对比度,s(x, y)代表的是结构的相似度;他们的计算方式分别如下

l(x,y)=2μxμy+C1μx2+μy2+C1

其中μx, μy 分别为块的均值;其中μx, μy相差越大,l(x,y)就越小;

而对比度相似度c(x, y)的计算方式与l(x, y)的相似,具体如下

c(x,y)=2σxσy+C2σx2+σy2+C2

结构相似度s(x, y)无法表示成一个数,作者是把他转换成归一化的向量,然后计算下余弦相似度:

s(x,y)=σxy+C3σxσy+C3

其中σxy为x, y的covariance,expected value of the product of their deriations from there individual expected values. 计算方式为

σxy=1N1i=1N(xiμx)(yiμy)

也就是两个相对于均值一起变动的节奏或者波形是否一致。可以考虑一维的情况,协方差在计算的时候会减去均值。

如果C3=C2/2,最终的SSIM的公式为

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)

因此SSIM(x, y) 小于1, 大于-1;

On the Mathematical Properties of the SSIM

作者首先把SSIM分成两部分,

S1(x,y)=l(x,y)=2μxμy+C1μx2+μy2+C1S2(x,y)=2σxy+C2σx2+σy2+C2

然后使用d1=1S1d2=1S2作为normalized metrics; 作者先证明了NRMSE是一个metrics,然后说明d1d2是NRMSE的一种。NRMSE的定义如下

NRMSE(x,y,c)=||xy||2||x||2+||y||2+c

之后通过构建D2:=||d(x,y)||2=2S1(x,y)S2(x,y)来表示一个距离,||d(x,y)||21SSIM(x,y)的低阶近似。

在图片或者视频的很多处理中,大部分时候mean都是保持一致的,因此SSIM中的c(x,y)s(x,y)更加重要。作者也通过计算SSIM和D2的相关性,可以看出图像的均值相差不大的情况下,SSIM和其他D2的相关性是很高的,大于0.967;

如何针对SSIM做优化

从以上分析可以看到,SSIM可以近似表示为d2d2可以理解为相对损失,因此相同的SSIM分数下,复杂的块,也就是σx 更大的块,可以允许有更大的损失。也可以把SSIM理解为weighted MSE,加权的因子是1σx,因此简单的块有更大的权重。在图片或视频压缩中,可以针对简单区域分配更多的比特从而优化SSIM的表现。