本文最后更新于:2023年12月26日 上午

结构相似性指标(structural similarity index,SSIM index)是一种用以衡量两张数位影像相似程度的指标,本文记录相关内容。

简介

结构相似性指标(structural similarity index,SSIM index)是一种用以衡量两张数位影像相似程度的指标。当两张影像其中一张为无失真影像,另一张为失真后的影像,二者的结构相似性可以看成是失真影像的影像品质衡量指标。相较于传统所使用的影像品质衡量指标,像是峰值信噪比(PSNR),结构相似性在影像品质的衡量上更能符合人眼对影像品质的判断。

结构相似性的基本观念为自然影像是高度结构化的,亦即在自然影像中相邻像素之间有很强的关联性,而这样的关联性承载了场景中物体的结构资讯。人类视觉系统在观看影像时已经很习惯抽取这样的结构性资讯。因此,在设计影像品质衡量指标用以衡量影像失真程度时,结构性失真的衡量是很重要的一环。

定义

给定两个信号 $x$ 和 $y$,两者的结构相似性定义为:

$$ \begin{aligned} &\mathrm{SSIM}(\mathbf{x},\mathbf{y})=[l(\mathbf{x},\mathbf{y})]^{\alpha}[c(\mathbf{x},\mathbf{y})]^{\beta}[s(\mathbf{x},\mathbf{y})]^{\gamma}, \\ &l(\mathbf{x},\mathbf{y})={\frac{2\mu_{x}\mu_{y}+C_{1}}{\mu_{x}^{2}+\mu_{y}^{2}+C_{1}}},c(\mathbf{x},\mathbf{y})={\frac{2\sigma_{x}\sigma_{y}+C_{2}}{\sigma_{x}^{2}+\sigma_{y}^{2}+C_{2}}},s(\mathbf{x},\mathbf{y})={\frac{\sigma_{xy}+C_{3}}{\sigma_{x}\sigma_{y}+C_{3}}}。 \end{aligned} $$

其中,$l(\mathbf{x},\mathbf{y})$比较$\mathbf{x}$和$\mathbf{y}$的亮度,$c(\mathbf{x},\mathbf{y})$比较$\mathbf{x}$和$\mathbf{y}$的对比度,$s(\mathbf{x},\mathbf{y})$比较$\mathbf{x}$和$\mathbf{y}$的结构 (structure) , $\alpha>0,\quad\beta>0,\quad\gamma>0$, 为调整$l(\mathbf{x},\mathbf{y})$、$c(\mathbf{x},\mathbf{y})$、$s(\mathbf{x},\mathbf{y})$相对重要性的参数,$\mu_x$ 及$\mu_y$、$\sigma_x$ 及$\sigma_y$分别为x和y的平均值和标准差,$\sigma_{xy}$为x和y的协方差,$C_1$、$C_2$、$C_3$皆为常数,用以维持$l(\mathbf{x},\mathbf{y})$、$c(\mathbf{x},\mathbf{y})$、$s(\mathbf{x},\mathbf{y})$的稳定。

结构相似性指标的值越大,代表两个信号的相似性越高。试想,若使用全等的两张图片去做SSIM运算,也就是说$\mu_x=\mu_y$且$\sigma_x=\sigma_y$,如此一来:

$$ \mathrm{SSIM}(\mathbf{x},\mathbf{x})=\frac{2\mu_x^2+C_1}{\mu_x^2+\mu_x^2+C_1}\times\frac{2\sigma_x^2+C_2}{\sigma_x^2+\sigma_x^2+C_2}\times\frac{\sigma_{xx}+C_3}{\sigma_x\sigma_x+C_3}=1 $$

性质

  • 对称性

$$
\mathrm{SSIM}(\mathbf{x},\mathbf{y})=\mathrm{SSIM}(\mathbf{y},\mathbf{x})。
$$

  • 局限性

结构相似性指标的最大值为1,亦即
$$
\forall\mathbf{x},\mathbf{y},\mathrm{SSIM}(\mathbf{x},\mathbf{y})\leq1,
$$

  • 单一最大值

当衡量的两个信号完全相同时,若且唯若结构相似性指标的值为1。

使用

实际使用时,一般会将参数设为 $\alpha=\beta=\gamma=1\text{及}C_3=C_2/2,$ 得到:

$$ \mathrm{SSIM}(\mathbf{x},\mathbf{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)} $$

在计算两张影像的结构相似性指标时,会开一个局部性的视窗,一般为 $N \times N$ 的小区块,计算出视窗内信号的结构相似性指标,每次以像素为单位移动视窗,直到整张影像每个位置的局部结构相似性指标都计算完毕。将全部的局部结构相似性指标平均起来即为两张影像的结构相似性指标。

比较

一般认为,结构相似度指标比均方误差(MS)更适合用来判断两张图像的相似度,原因是结构相似性指标同时考虑图片亮度、对比与结构资讯,这跟人类的视觉系统的判断基准较为接近。MSE只考虑两张图片的平均亮度误差而不考虑结构化的资讯,所以当图片有些微的亮度改变时,MSE改变会很剧烈,但小亮度改变并不会造成人类把两张图片判断成完全不同。

另外一种计算相似度的方法是使用正规化均方根误差(NRMSE),NRMSE是基于MSE的公式,再除上其中一张图像的亮度,这样的处理使得NRMSE对于整体亮度变化比较不敏感,并且让数值落在比较受限的范围内以便于比较,然而NRMSE没有考虑结构化资讯的问题依旧存在。

测试

下面使用了五张照片做实验,辅助说明:

  • Image A:原图
  • Image B:(Image A * 0.5) + 128
  • Image C:255 - Image A
  • Image D:Image A 叠加影子后的结果
  • Image E:对照组

对人类的视觉系统来说,Image A、B、C、D 是一群较为相似的图片,Image E 则是与其他图片毫无相关。

这里是使用Image A跟其他图片进行相似度的比较,一共使用三种方法:均方误差(MSE)、正规化方均根差(NRMSE)、结构相似度指标(SSIM)。

A B C D E
MSE 0.000 4443.170 7214.947 5445.344 4592.340
NRMSE 0.000 0.489 0.623 0.541 0.497
SSIM 1.000 0.744 -0.909 0.713 0.047

然而在上述的比较实验可以发现,只有结构相似度指标能够正确反映这个关联,结构相似性指标在Image B、C、D之中都得到了较高的相似度(其中Image C为负相关),而唯有Image E得到了接近零的相似度。这代表使用结构相似性指标能够知道Image A、B、C、D之间很相似,而Image E跟其他图片不相似。反之,MSE与NRMSE皆无法在结果上反映出Image E与其他图片的差别。

限制

结构相似性指标有其限制,对于影像出现位移、缩放、旋转(皆属于非结构性的失真)的情况无法有效的运作。为解决此问题,另已发展出在小波域进行运算的结构相似性指标,称作复小波结构相似性指标(complex wavelet SSIM,CW-SSIM)。

当图片出现平移、旋转或是缩放时,结构相似度指标会改变得十分剧烈,并很容易将两张类似的图片视为不相似的。原因与在计算SSIM时所使用的局部性视窗有关,平移、旋转或是缩放都会导致视窗内的像素结构完全改变,使SSIM无法正确估计相似度。

测试

下面的实验是使用Image A 跟Image F、G、H计算相似度

  • Image F: Image A 往右平移30像素
  • Image G: Image A 逆时针旋转30度
  • Image H: Image A 长宽各缩短6.25%

可以看到Image A仅向右移30像素就导致了两张图片前后的SSIM为0.11,上述实验足以说明结构相似性指标的确对这些操作很敏感,要解决这类的问题可以使用复小波结构相似性。

变形

多尺度结构相似性

多尺度结构相似性(multi-scale SSIM,MS-SSIM)尝试去解决结构相似度里面,依赖特定大小的视窗进行计算的问题,因为如果输入的图片的解析度不同,使用者往往需要更改结构相似性的参数,才能得到较合理的结果。多尺度结构相似性,则是把输入图片经过若干次的低通滤波器与两倍下采样,每次下采样之后都计算一次结构相似度。最后的结果会同时考量所有不同尺寸的图片计算出的结构相似性,由此达到指标能自适应不同解析度的图片的目的。Multi-Scale SSIM Complex Wavelet SSIM 或是 CW-SSIM的作者认为MS-SSIM能得到比SSIM相等或是更好的评量结果。

结构相异性

结构相异性(structural dissimilarity,DSSIM)正好是结构相似性的相反。当两张图片相等时,结构相异性为0。反之当两张图片很不相似时,结构相异性可以趋近无限大。
$$
\mathrm{DSSIM}(x,y)=\frac{1-\mathrm{SSIM}(x,y)}2
$$

复小波结构相似性

结构相似性虽然能大致符合人类的视觉系统的感受,但若图片遇到几何上的转换,例如平移、旋转与缩放时,结构相似性会无法正确描述两张图片的相似程度。因此复小波结构相似性(complex wavelet SSIM,CW-SSIM)针对了这个问题进行了改良,CW-SSIM的作者[8]认为与其使用亮度(magnitude)进行比较,不如用相位来进行比较较具有代表性,因此CW-SSIM会在复小波域中计算区域性的相位,并用相位的差异来计算相似性,公式如下:

$$ \text{CW-SSIM}(c_x,c_y)=\left(\frac{2\sum_{i=1}^N|c_{x,i}||c_{y,i}|+K}{\sum_{i=1}^N|c_{x,i}|^2+\sum_{i=1}^N|c_{y,i}|^2+K}\right)\left(\frac{2|\sum_{i=1}^Nc_{x,i}c_{y,i}^*|+K}{2\sum_{i=1}^N|c_{x,i}c_{y,i}^*|+K}\right) $$

其中$c_x$ 是复小波转换后的$x$信号,而$c_{y}$是复小波转换后的$y$信号,另外$K$是用于稳定数值的一个常数如同结构相似性,CW-SSIM的最大值为1, 但是不同于结构相似性,CW-SSIM的最小值为0。

参考资料



文章链接:
https://www.zywvvd.com/notes/study/deep-learning/loss/ssim/ssim/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

结构相似性损失 SSIM (structural similarity)
https://www.zywvvd.com/notes/study/deep-learning/loss/ssim/ssim/
作者
Yiwei Zhang
发布于
2023年12月19日
许可协议