图像质量评价指标 PSNR 和 SSIM

发布时间 2023-12-17 11:38:19作者: Eslzzyl

PSNR 和 SSIM 是两种常见的图像质量评价指标,通常用于衡量两张图像的相似度。

参考材料:

PSNR

PSNR:峰值信噪比(Peak signal-to-noise ratio),常用对数分贝单位来表示。

先定义均方误差 \(MSE\)

灰度 MSE

两张大小均为 \(m\times n\) 的灰度图像,原图为 \(I\),有损图为 \(K\),则定义

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

RGB MSE

分别计算 RGB 三个通道的 MSE,然后取平均值。

\[MSE=\frac{1}{3mn}\sum_{R,G,B}\sum_{i=1}^{m-1}\sum_{j=0}^{n-1}\left[I_{color}(i, j)-K_{color}(i, j)\right]^2 \]

PSNR

先定义 \({MAX}_I\)\(I\) 中每个像素的可能颜色数量。对于 8 位图像,每个像素可能有255种颜色,于是 \({MAX}_I\)=255。当然也有 \({MAX}_K\)=255。

那么,

\[\begin{align*} PSNR&=10\cdot \log_{10}\left(\frac{{MAX}_I^2}{MSE}\right) \\ &= 20\cdot \log_{10}\left(\frac{{MAX}_I}{\sqrt{MSE}}\right) \end{align*} \]

PSNR 的取值

PSNR 没有理论上限值,值越大,表明 \(I\)\(K\) 越相似。

  • PSNR 接近 50dB,代表压缩后的图像仅有些许非常小的误差。
  • PSNR 大于 30dB,人眼很难察觉压缩后和原始影像的差异。
  • PSNR 介于 20dB 到 30dB 之间,人眼就可以察觉出图像的差异。
  • PSNR 介于 10dB 到 20dB 之间,人眼还是可以用肉眼看出这个图像原始的结构,且直观上会判断两张图像不存在很大的差异。
  • PSNR 低于 10dB,人类很难用肉眼去判断两个图像是否为相同,一个图像是否为另一个图像的压缩结果。

一组来自 wiki 的对比图[1]

原图 PSNR 47.61dB PSNR 34.02dB PSNR 24.46dB
img img img img

SSIM

SSIM:结构相似性指标(structural similarity index)

SSIM 的基本思想为自然图像是高度结构化的,即在自然图像中相邻像素之间有很强的关系性,而这样的关系性承载了场景中物体的结构信息。人类视觉系统在观看图像时已经很习惯抽取这样的结构性信息。

SSIM 的定义

设两张图分别为 \(x\)\(y\)

SSIM 从三个维度来衡量图像的相似性:

  • 亮度 luminance

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

    其中 \(\mu\) 表示图像的均值,\(c_1\)\(c_2\) 是为了避免除以 0 而添加的常数:

    \[c_1=(k_1 L)^2,\quad c_2=(k_2 L)^2 \]

    \(k_1\) 默认取 0.01,\(k_2\) 默认取 0.03。\(L\) 和 PSNR 中的 \({MAX}_I\) 是同一个东西。

  • 对比度 contrast

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

    其中 \(\sigma^2\) 表示图像的方差。

  • 结构 structure

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

    其中 \(\sigma_{xy}\)\(x\)\(y\) 的协方差,\(c_3\) 一般取 \(c_2\) 的一半。

于是,得到

\[SSIM(x,y)=l(x,y)^\alpha \cdot c(x,y)^\beta \cdot s(x,y)^\gamma \]

\(\alpha\)\(\beta\)\(\gamma\) 是控制三者相对重要性的参数,一般都取1即可。

在实际计算时,一般从图片上取一个固定大小的窗口,在窗口内进行 \(SSIM\) 计算,然后不断滑动窗口,最后取平均值作为全局的 \(SSIM\)

SSIM 的取值

如果 \(x=y\),则有 \(\mu_x=\mu_y\)\(\sigma_x=\sigma_y\),可以推算得出此时 \(SSIM=1\)

SSIM 是可以取负值的。

SSIM 越大,表明两张图的相似性越高。

局限性

有时,PNSR 和 SSIM 可能无法正确地反映图像的视觉质量。见 https://videoprocessing.ai/metrics/ways-of-cheating-on-popular-objective-metrics.html

SSIM 不适用于位移、旋转、缩放这些非结构性失真。这些种类的极轻微失真就会导致 SSIM 剧烈变化。


  1. 来自 Miiishele - 自己的作品,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=91759828 ↩︎