这篇文章提出了一个PSNR-B指标,旨在衡量 压缩图像的块效应强度 或 去块效应后的残留块效应强度(比较去块效应算法的优劣)。

1. 故事

现有的PSNR虽然形式简单、物理意义清晰,但与主观质量关系不大;SSIM(同时考虑亮度相似度、对比度相似度和结构相似度)和主观质量更贴近,但无法反映块效应强度。

2. 失真变化

首先,我们设无损图像为\(x\),编解码后为压缩图像\(y\),去压缩失真后的图像为\(\tilde{y}\)。我们将像素分为两类:

  1. \(\Vert x_i - \tilde{y}_i \Vert^2 < \Vert x_i - y_i \Vert^2\),即去压缩失真比较成功的像素点。

  2. \(\Vert x_i - \tilde{y}_i \Vert^2 > \Vert x_i - y_i \Vert^2\),即去压缩失真比较失败的像素点。

我们求这两类区域的距离差的均值:\(\bar{\alpha} = ave(\Vert x_i - y_i \Vert^2 - \Vert x_i - \tilde{y}_i \Vert^2), \bar{\beta} = ave(\Vert x_i - \tilde{y}_i \Vert^2 - \Vert x_i - y_i \Vert^2)\)。

所谓失真变化,就是\(\bar{\alpha} - \bar{\beta}\)。该值越大,块效应抑制越明显,去块效应算法越成功。

对于一般的低通滤波器,\(\bar{\alpha}\)虽然很大,但\(\bar{\beta}\)也很大,因此通常是失败的。对于H264内置的环路滤波器,它会自适应地根据 像素点与块边缘的距离 以及 局部灰度梯度信息,选择滤波位置和滤波器尺寸,从而让\(\bar{\beta}\)不至于过大,而\(\bar{\alpha}\)与低通滤波器相当大。但是,该环路滤波器的决策非常耗时,通常会占据1/3以上的解码器复杂度。

3. 方法(PSNR-B)

在本节,作者提出一种对块效应敏感的图像质量指标,作者称之为peak signal-to-noise ratio including blocking effects (PSNR-B)。

我们首先假设图像由整数个块(tiling)组成。例如:

图中每一个块都是\(8 \times 8\)的块,一共有64个。定义以下块类别:

分别代表:纵向接壤块边缘的像素对、纵向非接壤块边缘的像素对、横向接壤块边缘的像素对 和 横向非接壤块边缘的像素对。看图就好了,文字贼绕。

定义两个指标:

前者代表块边缘变化强度,后者代表非块边缘(块内)变化强度。随着量化逐渐粗糙,前者的增大会明显快于后者。

还考虑一个因素:随着块增大,块效应也会逐渐明显。【反过来,如果块很小,那么远看是看不出块效应的】因此我们定义一个块效应因数(blocking effect factor, BEF):
\[
BEF(y) = \eta \cdot [ D_B (y) - D_B^C (y) ]
\]
其中的\(\eta\)随着块尺寸的增大而增大:

例如在H264压缩标准下,一张图像内可以有多种不同尺寸的块。此时就有:

作者定义MSE-B和PSNR-B如下:

注意了,其中的MSE是有参考的指标,但BEF本身是无参考的指标。

4. 实验

我们看看对H264环路滤波器的测试情况。

通过四个视频作者发现:环路滤波器有时可以稍微提升视频的PSNR,有时没有太大作用。而低通滤波器会严重损失PSNR。

SSIM实验结果与PSNR接近,但不同点在于:在有些视频中,低通滤波后的SSIM要比原始压缩图像的SSIM更高。这与主观体验是基本一致的,说明SSIM更趋近于主观质量。

这是PSNR-B的实验结果。可以看到,当量化比较粗糙时,低通滤波器也发挥了作用。

最新文章

  1. jvm--2.类加载机制
  2. 修改Linux系统日期与时间date clock
  3. BZOJ 3675 序列分割
  4. PHP 对象和引用总结
  5. HTML中,按钮button与submit区别是什么?
  6. [改善Java代码]慎用动态编译
  7. git引用^和~的区别
  8. php 函数strtr 替换函数实例解析 strtr 速度比较快
  9. java 构造方法 constructor demo笔记
  10. linux配置本地tomcat应用80端口转发
  11. OpenStack实践系列⑦深入理解neutron和虚拟机
  12. intellj idea 跑覆盖率
  13. Java初学者的30个常见问题
  14. aspnet core 2.0 发布之后没有 views文件夹
  15. 解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts
  16. Redis学习系列四Hash(字典)
  17. MUTABLE和IMMUTABLE集合
  18. Java之 Hashtable
  19. 算法笔记_184:历届试题 约数倍数选卡片(Java)
  20. docker基于Dockerfile命令创建支持ssh服务的镜像

热门文章

  1. Java连载51-super关键字
  2. Python连载51-网络编程基础知识
  3. python笔记:配置虚拟开发环境
  4. es6模板字符串使用使${} 来包裹一个变量或者一个表达式
  5. path()函数
  6. sqoop的详细使用及原理
  7. mysql压缩备份导入导出
  8. 基于bert的命名实体识别,pytorch实现,支持中文/英文【源学计划】
  9. Redis+Keepalived
  10. python免密远程执行shell