date: 2022-01-18 12:53
Structural Similarity 结构相似性,源自论文《Image Quality Assessment: From Error Visibility to Structural Similarity》(图像质量评估:从错误可见性到结构相似性)。
在SSIM 被提出之前被广泛应用的是MES,因为它计算简单,物理意义明确。
MSE公式:
M S E = 1 m n ∑ i = 0 m − 1 ∑ j = 0 n − 1 [ I ( i , j ) − K ( i , j ) ] 2 MSE=\frac1{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i,j)-K(i,j)]^2 MSE=mn1i=0∑m−1j=0∑n−1[I(i,j)−K(i,j)]2
就是 element-wise 地计算重建图像与输入图像的像素差的平方,然后在全图上求平均。
下图可以看出,MSE 反应的距离和人力的直观感受有很大差别。
左侧为原图,中间为把灰度值调整为原来额0.9 倍的图,右侧为高斯模糊的图。以MSE 为评价指标则右图与原图更接近,和人类观感不同。
由于MSE不能表达人的视觉系统对图片的直观感受(涉及生物学),因此作者提出了更为科学的SSIM 评价指标。SSIM 更侧重于两图的结构相似性,而不是逐像素计算亮度的差异。作者声称其比MSE 更能反应人类视觉系统对两幅图相似性的判断。
作者将两幅图的相似性比较拆成了三个维度:亮度(luminance) l ( x , y ) l(x,y) l(x,y),对比度(contrast) c ( x , y ) c(x,y) c(x,y),结构(structure) s ( x , y ) s(x,y) s(x,y)。
最终x和y 的相似度为这三者的函数:
S ( x , y ) = f ( l ( x , y ) , c ( x , y ) , s ( x , y ) ) S(x,y) = f(l(x,y),c(x,y),s(x,y)) S(x,y)=f(l(x,y),c(x,y),s(x,y))
作者设计的三个公式定量计算三者的相似性,公示的设计遵顼三个原则:
对称性: s ( x , y ) = s ( y , x ) s(x,y)=s(y,x) s(x,y)=s(y,x)
有界性: s ( x , y ) < = 1 s(x,y)<=1 s(x,y)<=1
极限值唯一: s ( x , y ) = 1 s(x,y)=1 s(x,y)=1 当且仅当 x=y
如果一幅图有 N 个像素点,每个像素点的像素值为xi,那么该图像的平均亮度为:
图像亮度平均值:
μ x = 1 N ∑ i = 1 N x i \mu_x=\frac{1}{N}\sum_{i=1}^Nx_i μx=N1i=1∑Nxi
亮度相似度:
l ( x , y ) = 2 μ x μ y + C 1 μ x 2 + μ y 2 + C 1 l(x,y)=\frac{2\mu_x\mu_y+C1}{\mu_x^2+\mu_y^2+C1} l(x,y)=μx2+μy2+C12μxμy+C1
C 1 C_1 C1 是防止分母为0 的系数
C 1 = ( K 1 L ) 2 C_1=(K_1L)^2 C1=(K1L)2
K1 是一个常数,取值0.01,L 是灰度的动态范围,和图像数据的类型有关,如果是uint8 类型则L=255,如果是float则L=1。公式堆成且始终小于等于1,当x=y时为1。
对比度反应的时图像明暗变化的剧烈程度,也就是像素值的标准差。公式:
σ x = ( 1 N − 1 ∑ i = 1 N ( x i − μ x ) 2 ) 1 / 2 \sigma_x=(\frac{1}{N-1}\sum_{i=1}^N{(x_i-\mu_x)^2})^{1/2} σx=(N−11i=1∑N(xi−μx)2)1/2
对比度的相似度公式和亮度相似度公式极为相似,只不过把均值换成了方差。作者定义:
c ( x , y ) = 2 σ x σ y + C 2 σ x 2 + σ y 2 + C 2 c(x,y)=\frac{2\sigma_x\sigma_y +C_2}{\sigma_x^2+\sigma_y^2+C_2} c(x,y)=σx2+σy2+C22σxσy+C2
其中
C 2 = ( K 2 L ) 2 C_2=(K_2L)^2 C2=(K2L)2
K2 一般在代码中取0.03。对比度相似公式堆成且小于等于1。
对于一幅图而言,亮度和对比度是标量,而结构无法用要给标量表示,而应该用全图所有像素组成的向量表示。同时,研究结构相似度时应该排除亮度和对比度的影响,即排除均值和标准差的影响。因此作者研究的是归一化的两个想想: ( x − μ x ) / σ x (x-\mu_x)/\sigma_x (x−μx)/σx 和 ( y − μ y ) / σ y (y-\mu_y)/\sigma_y (y−μy)/σy 之间的关系。
结构比较函数:
s ( x , y ) = σ x y + C 3 σ x σ y + C 3 s(x,y) = \frac{\sigma_{xy} + C_3}{\sigma_x \sigma_y + C_3} s(x,y)=σxσy+C3σxy+C3
协方差公式
σ x y = 1 N − 1 ∑ i = 1 N ( x i − μ x ) ( y i − μ y ) \sigma_{xy}=\frac{1}{N-1}\sum_{i=1}^N(x_i-\mu_x)(y_i-\mu_y) σxy=N−11i=1∑N(xi−μx)(yi−μy)
结合前面三个公式
S S I M ( x , y ) = f ( l ( x , y ) , c ( x , y ) , s ( x , y ) ) SSIM(x,y) = f(l(x,y),c(x,y),s(x,y)) SSIM(x,y)=f(l(x,y),c(x,y),s(x,y))
令C3=C2/2,c(x,y) 和 s(x,y) 的分母可以约分,最终得到SSIM 公式:
S S I M ( x , y ) = ( 2 μ x μ y + C 1 ) ( 2 σ x y + C 2 ) ( μ x 2 + μ y 2 + C 1 ) ( σ x 2 + σ y 2 + C 2 ) 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)} SSIM(x,y)=(μx2+μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)
然而上面的公式不能应用于整幅图,因为在整幅图的跨度上均值和方差往往变化剧烈。作者采用 sliding window 以步长为 1 计算两幅图各个对应 sliding window 下的 patch 的 SSIM,然后取平均值作为两幅图整体的 SSIM,称为 Mean SSIM。简写为 MSSIM。
假如整幅图有 M 个 patch,那么 MSSIM 公式为:
M S S I M ( X , Y ) = 1 M ∑ j = 1 M S S I M ( x j , y j ) MSSIM(X, Y) =\frac{1}{M} \sum_{j=1}^M SSIM(x_j,y_j) MSSIM(X,Y)=M1j=1∑MSSIM(xj,yj)
使用MSSIM 计算相似度:
定义:用于衡量一组数据的离散程度。在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。
σ 2 = 1 N ∑ ( X − μ ) 2 \sigma^2=\frac{1}{N}\sum(X-\mu)^2 σ2=N1∑(X−μ)2
σ \sigma σ 为总体方差, X X X为变量, μ \mu μ为总体均值, N N N为总体例数。
定义:标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。标准差也被称为标准偏差,或者实验标准差,在概率统计中最常使用作为统计分布程度上的测量依据。
σ = ∑ ( X − μ ) 2 N \sigma=\sqrt{\frac{\sum(X-\mu)^2}{N}} σ=N∑(X−μ)2
标准差越小说明数据越集中。
协方差用来刻画两个随机变量 X , Y 之间的相关性
如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。
如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
协方差的公式如下:
σ ( x , y ) = 1 N ∑ ( x i − μ x ) ( y i − μ y ) \sigma(x,y)=\frac{1}{N}\sum(x_i-\mu_x)(y_i-\mu_y) σ(x,y)=N1∑(xi−μx)(yi−μy)
方差就是协方差的一种特殊形式,当两个变量相同时,协方差就是方差了。
公式2:
C o v = E [ ( X − μ x ) ( Y − μ y ) ] Cov = E[(X -\mu_x)(Y-\mu_y)] Cov=E[(X−μx)(Y−μy)]
可以有如下理解:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值。
c o s ( θ ) = ∑ i = 1 n ( X i ∗ Y i ) ( ∑ i = 1 n ( X i ) 2 ) ∗ ( ∑ i = 1 n ( Y i ) 2 ) 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)} cos(θ)=(∑i=1n(Xi)2)∗(∑i=1n(Yi)2)∑i=1n(Xi∗Yi)
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫"余弦相似性"。