结构相似性损失 SSIM (structural similarity)

2023-12-20 10:04:22 浏览数 (2)

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

简介

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

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

定义

给定两个信号 xy ,两者的结构相似性定义为: 其中, 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,quadbeta>0,quadgamma>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})

,如此一来:

mathrm{SSIM}(mathbf{x},mathbf{x})=frac{2mu_x2 C_1}{mu_x2 mu_x2 C_1}timesfrac{2sigma_x2 C_2}{sigma_x2 sigma_x2 C_2}timesfrac{sigma_{xx} C_3}{sigma_xsigma_x C_3}=1

性质

  • 对称性
mathrm{SSIM}(mathbf{x},mathbf{y})=mathrm{SSIM}(mathbf{y},mathbf{x})。
  • 局限性

结构相似性指标的最大值为1,亦即

forallmathbf{x},mathbf{y},mathrm{SSIM}(mathbf{x},mathbf{y})leq1,
  • 单一最大值

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

使用

得到:

mathrm{SSIM}(mathbf{x},mathbf{y})=frac{(2mu_xmu_y C_1)(2sigma_{xy} C_2)}{(mu_x2 mu_y2 C_1)(sigma_x2 sigma_y2 C_2)}

在计算两张影像的结构相似性指标时,会开一个局部性的视窗,一般为

比较

一般认为,结构相似度指标比均方误差(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{2sum_{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}{2sum_{i=1}N|c_{x,i}c_{y,i}^*| K}right)

其中

参考资料

  • https://zh.wikipedia.org/zh-hans/結構相似性

文章链接: https://cloud.tencent.com/developer/article/2372743

0 人点赞