什么是SSIM?

Structural Similarity 结构相似性,源自论文《Image Quality Assessment: From Error Visibility to Structural Similarity》(图像质量评估:从错误可见性到结构相似性)。

在SSIM 被提出之前被广泛应用的是MES,因为它计算简单,物理意义明确。

MSE公式:

\[MSE=\frac1{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i,j)-K(i,j)]^2\]

就是 element-wise 地计算重建图像与输入图像的像素差的平方,然后在全图上求平均。 下图可以看出,MSE 反应的距离和人力的直观感受有很大差别。 左侧为原图,中间为把灰度值调整为原来额0.9 倍的图,右侧为高斯模糊的图。以MSE 为评价指标则右图与原图更接近,和人类观感不同。

由于MSE不能表达人的视觉系统对图片的直观感受(涉及生物学),因此作者提出了更为科学的SSIM 评价指标。SSIM 更侧重于两图的结构相似性,而不是逐像素计算亮度的差异。作者声称其比MSE 更能反应人类视觉系统对两幅图相似性的判断。

SSIM 评价如何实现?

作者将两幅图的相似性比较拆成了三个维度:亮度(luminance)$l(x,y)$,对比度(contrast)$c(x,y)$,结构(structure)$s(x,y)$。 最终x和y 的相似度为这三者的函数:

\[S(x,y) = f(l(x,y),c(x,y),s(x,y))\]

作者设计的三个公式定量计算三者的相似性,公示的设计遵顼三个原则:
对称性:$s(x,y)=s(y,x)$
有界性:$s(x,y)<=1$
极限值唯一:$s(x,y)=1$ 当且仅当 x=y

亮度

如果一幅图有 N 个像素点,每个像素点的像素值为xi,那么该图像的平均亮度为: 图像亮度平均值:

\[\mu_x=\frac{1}{N}\sum_{i=1}^Nx_i\]

亮度相似度:

\[l(x,y)=\frac{2\mu_x\mu_y+C1}{\mu_x^2+\mu_y^2+C1}\]

$C_1$ 是防止分母为0 的系数

\[C_1=(K_1L)^2\]

K1 是一个常数,取值0.01,L 是灰度的动态范围,和图像数据的类型有关,如果是uint8 类型则L=255,如果是float则L=1。公式堆成且始终小于等于1,当x=y时为1。

对比度

对比度反应的时图像明暗变化的剧烈程度,也就是像素值的标准差。公式:

\[\sigma_x=(\frac{1}{N-1}\sum_{i=1}^N{(x_i-\mu_x)^2})^{1/2}\]

对比度的相似度公式和亮度相似度公式极为相似,只不过把均值换成了方差。作者定义:

\[c(x,y)=\frac{2\sigma_x\sigma_y +C_2}{\sigma_x^2+\sigma_y^2+C_2}\]

其中

\[C_2=(K_2L)^2\]

K2 一般在代码中取0.03。对比度相似公式堆成且小于等于1。

结构相似度

对于一幅图而言,亮度和对比度是标量,而结构无法用要给标量表示,而应该用全图所有像素组成的向量表示。同时,研究结构相似度时应该排除亮度和对比度的影响,即排除均值和标准差的影响。因此作者研究的是归一化的两个想想:$(x-\mu_x)/\sigma_x$ 和 $(y-\mu_y)/\sigma_y$ 之间的关系。

结构比较函数:

\[s(x,y) = \frac{\sigma_{xy} + C_3}{\sigma_x \sigma_y + C_3}\]

协方差公式

\[\sigma_{xy}=\frac{1}{N-1}\sum_{i=1}^N(x_i-\mu_x)(y_i-\mu_y)\]

SSIM

结合前面三个公式

\[SSIM(x,y) = f(l(x,y),c(x,y),s(x,y))\]

令C3=C2/2,c(x,y) 和 s(x,y) 的分母可以约分,最终得到SSIM 公式:

\[SSIM(x,y)=\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2+\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)}\]

然而上面的公式不能应用于整幅图,因为在整幅图的跨度上均值和方差往往变化剧烈。作者采用 sliding window 以步长为 1 计算两幅图各个对应 sliding window 下的 patch 的 SSIM,然后取平均值作为两幅图整体的 SSIM,称为 Mean SSIM。简写为 MSSIM。 假如整幅图有 M 个 patch,那么 MSSIM 公式为:

\[MSSIM(X, Y) =\frac{1}{M} \sum_{j=1}^M SSIM(x_j,y_j)\]

使用MSSIM 计算相似度:

图像处理中的SSIM

参考链接

  1. SSIM 的原理和代码实现

补充概念

方差

定义:用于衡量一组数据的离散程度。在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。

\[\sigma^2=\frac{1}{N}\sum(X-\mu)^2\]

$\sigma$ 为总体方差,$X$为变量,$\mu$为总体均值,$N$为总体例数。

标准差(Standard Deviation)

定义:标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。

\[\sigma=\sqrt{\frac{\sum(X-\mu)^2}{N}}\]

标准差越小说明数据越集中。

协方差(Covariance)

协方差用来刻画两个随机变量 X , Y 之间的相关性

如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。

如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

协方差的公式如下:

\[\sigma(x,y)=\frac{1}{N}\sum(x_i-\mu_x)(y_i-\mu_y)\]

方差就是协方差的一种特殊形式,当两个变量相同时,协方差就是方差了。

公式2:

\[Cov = E[(X -\mu_x)(Y-\mu_y)]\]

可以有如下理解:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值。

余弦相似度

\[cos(\theta)=\frac{\sum_{i=1}^n(X_i * Y_i)}{\sqrt(\sum_{i=1}^n(X_i)^2) * \sqrt(\sum_{i=1}^n(Y_i)^2)}\]

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫”余弦相似性”。