图像质量评价指标 PSNR 和 SSIM
PSNR 和 SSIM 是两种常见的图像质量评价指标,通常用于衡量两张图像的相似度。
参考材料:
PSNR
PSNR:峰值信噪比(Peak signal-to-noise ratio),常用对数分贝单位来表示。
先定义均方误差 \(MSE\)。
灰度 MSE
两张大小均为 \(m\times n\) 的灰度图像,原图为 \(I\),有损图为 \(K\),则定义
RGB MSE
分别计算 RGB 三个通道的 MSE,然后取平均值。
PSNR
先定义 \({MAX}_I\) 为 \(I\) 中每个像素的可能颜色数量。对于 8 位图像,每个像素可能有255种颜色,于是 \({MAX}_I\)=255。当然也有 \({MAX}_K\)=255。
那么,
PSNR 的取值
PSNR 没有理论上限值,值越大,表明 \(I\) 和 \(K\) 越相似。容易看出,\(I\) 和 \(K\) 完全相同时,PSNR \(\to \infin\)。
- PSNR 接近 50dB,代表压缩后的图像仅有些许非常小的误差。
- PSNR 大于 30dB,人眼很难察觉压缩后和原始影像的差异。
- PSNR 介于 20dB 到 30dB 之间,人眼就可以察觉出图像的差异。
- PSNR 介于 10dB 到 20dB 之间,人眼还是可以用肉眼看出这个图像原始的结构,且直观上会判断两张图像不存在很大的差异。
- PSNR 低于 10dB,人类很难用肉眼去判断两个图像是否为相同,一个图像是否为另一个图像的压缩结果。
一组来自 wiki 的对比图[1]:
原图 | PSNR 47.61dB | PSNR 34.02dB | PSNR 24.46dB |
---|---|---|---|
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\) 的一半。
于是,得到
\(\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 剧烈变化。
来自 Miiishele - 自己的作品,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=91759828 ↩︎