随着5G的成熟和广泛商用,带宽越来越高,让传输视频变得更加容易。移动设备算力的提升、存储容量的提升,也使得视频技术的应用越来越广泛。视频相关的技术,特别是视频压缩技术,因其专业性,深入开发的门槛较高,在实时通信场景中,视频压缩技术更面临严峻的挑战。因为在实时通信场景下,不仅对时延和设备适配的要求很高,对带宽适应的要求也非常高,因此开发一款满足实时通信要求的编解码器,难度很大。

此前,我们已经在《深入浅出理解视频编解码技术》一文中简要介绍了视频编解码基本框架,也在《揭秘视频千倍压缩背后的技术原理之预测技术》深入分析了该框架中的预测技术,今天我们将继续深入剖析其中的环路滤波模块。

PART 01 什么是环路滤波?

基于块的混合编码框架一直是多种视频编解码标准的核心。在编码视频的时候,人为地将视频分割成不同大小的块,再进行预测和补偿,然后再对预测残差进行变换和量化,这一过程都是基于块进行的,在重建视频的时候,在不同的块的边界上就会出现不连续性,这样的不连续性,也就是常说的“块效应”,如图1-1。

▲ 图1-1环路滤波前的重建图像

通常人眼会对这样的不连续性比较敏感,很容易感受到视频的清晰度下降。块效应的产生,一方面是由于基于块的变换和量化操作,量化误差导致不同的块的重建样本产生了不同重建值,从而产生了边界;另外,由于运动补偿时,相邻的编码块的预测值,并不一定来自同一帧的相邻块,也会引入虚假边界;类似的,帧内预测不同的预测模式,生成预测值的方式不同,也会引入虚假边界。

为了减少视频中块的不连续性带来的主观质量下降,可以对重建视频进行滤波操作,如图1-2,经过滤波之后,视频的主观质量有了明显地改善,虚假的块边界平滑了,更为接近原始图像。从图中也可以发现,平坦区域,块效应更加明显,纹理丰富的区域(树叶),有自然的图像边界,也有编码引入的块边界,块效应相对不明显,同时,环路滤波器的设计也需要考虑区分“真”、“假”边界,防止对图像本身已经有的自然边界进行平滑,导致失真。

▲ 图1-2环路滤波后的重建图像

在较早的编码标准中,如MPEG-2,该操作都是在后处理阶段进行的,即视频流在解码重建后,输出之前进行滤波,以减少主观上的不舒适性。从H.263附录J开始,引入了“环路滤波”,之所以叫“环路”或者“In-loop”,是因为该滤波器在解码的闭环当中,如图红色模块所示,码流中的语法元素解析后,进行反量化和反变换,并与预测值叠加,得到重建图像,该重建图像将先进行环路滤波,再输出显示,同时作为参考图像,以便于后续的视频帧进行运动补偿。

由于环路滤波的引入,在提升视频主观质量的同时,也提高了预测的准确性,也进一步提高了编码效率。H.264的环路滤波只有去块滤波一种;从HEVC/H.265开始,环路滤波模块引入了多种类型的滤波器,例如HEVC中的SAO(Sample Adaptive Offset)[1]、AV1中的CDEF(Constrained Directional Enhancement Filter)[2]、LR(Loop Restoration)[3]、VVC中的LMCS(Luma Mapping With Chroma Scaling)、ALF(Adaptive Loop Filter)[4]等。本文将简要介绍HEVC中的去块滤波和AV1中的CDEF,以深入理解环路滤波的作用和效果。

▲ 图2 混和编码框架中的环路滤波

PART 02 HEVC中的去块滤波器

环路滤波的主要功能是去除块效应,设计去块滤波器的主要难点在于对于某一个块边界,是否要进行滤波,以及滤波的强度应该是多少。对块边界进行过度的平滑操作,会导致原有的图像纹理丢失;然而较低强度的平滑,却无法完全去除虚假边界。

因此,去块滤波器不但要考虑图像本身的纹理特性,也要考虑编码时采用的编码参数,如此才能将真正因为编码引入的人为边界去除。HEVC中,8x8的块的水平和竖直的边界是去块滤波的滤波对象,去块滤波器取边界两侧各4个像素点进行滤波。如此一来,去块滤波以8x8为基本单位,并且不同的8x8的样本之间无重叠,可以进行并行处理,提高处理速度。但并非所有的8x8边界都要进行处理,只有满足一定的条件才会进行:

  • 该边界是预测单元或者变换单元的边界;
  • 块边界的强度非零;
  • 边界两侧样本的局部特征满足一定的统计特性。

边界强度

边界强度将决定是否滤波以及滤波器的强度。边界强度可能的取值为0,1,2。取值为0,即不进行滤波操作。边界强度取决到边界两侧的编码块是否是Intra模式,是否有非零系数,是否有不一致的运动方向,是否参考了不同的帧等。这里充分考虑了编码失真才会引入虚假边界这一事实,避免对自然的平坦区域进行不必要的滤波操作。

局部特征

当边界强度非零,将进行一步检查图像的局部统计特征。基本的思路是,假设边界两侧的样本连续变化,这些样本将在一条直线上,换言之,像素点的梯度是一个常量;反之,如果边界两侧的梯度相差较大,则有虚假边界引入,如图3所示。当然,偏离程度与量化参数是相关的,标准给出了不同量化参数下的阈值。为了降低运算的复杂度,只计算第一行(列)和第四行(列)样本偏离直线的程度。同时,该偏离程度也与滤波的强度有一定的联系,它决定了滤波的两种模式,即普通滤波和强滤波。

▲ 图3 块边界两侧样本的局部特性

去块滤波器

普通滤波和强滤波两种模式由边界两侧像素点的梯度根据一定的规则进行决策。在普通滤波模式下,可能修改边界两侧最近的各一个或者各两个像素点,其中p0或者q0的滤波器的冲激响应为(3 7 9 −3)/16,p1或者q1的滤波器的冲激响应为(8 19 −1 9 −3)/32。在强滤波模式下,边界两侧各三个像素点会被修改,对p0、p1、p2的滤波器的冲激响应分别为(1 2 2 2 1)/8、(1 1 1 1)/4、(2 3 1 1 1)/8。

HEVC中的去块滤波与H.264相比,复杂度大大降低了。一方面HEVC的去块滤波是以8x8的块为基本单位,而264是4x4为基本单位;另一方面,HEVC的变换核尺寸和预测单元的尺寸都变大了。除此之外,HEVC的去块滤波的并行度也有了改进,8x8的块的边界两侧各取4个点进行滤波操作,多条边界使用到的像素点互不重叠,可以并行处理;竖直边界和水平边界以帧为单位进行,比H.264以宏块为单位进行更能进一步提高并行度。

PART 03 AV1中的CDEF

CDEF滤波器的基本作用是在保持视频图像细节的前提下,使用非线性的空域滤波器来消除编码中出现的失真。视频中的各种纹理细节,方向多种多样,CDEF首先检测纹理的方向,然后沿纹理的方向进行自适应滤波。

CDEF的纹理检测

为了保持图像本身的纹理细节,滤波操作应当按照纹理的基本方向进行,避免将纹理本身当作失真进行处理,造成质量下降。CDEF被置于去块滤波操作之后,在重建图像上进行纹理检测。纹理检测的基本单元是8x8的块,这样做的好处,既能有效地处理纹理 又可以便于将滤波操作进行并行处理(SIMD优化)。CDEF设计了8种纹理方向,如图4所示。

▲ 图4 CDEF的纹理方向定义 [2]

一个8x8的重建图样块内的像素,搜索某一个方向时,按照该方向定义的不同的分组,对像素进行分组并求其均值,以均值填充分组内的像素,形成一个8x8的“纹理方向预测块”。然后计算它与8x8的重建图像块的平方差的和。各个方向采用相似做法,从而选择最小平方差的和所对应的方向作为最优方向进行滤波操作。
以图5为例,该8x8的重建图像为45度的纹理(第一行方块所示),8组方向如第二行方块所示,按照方向所定义的像素分组,生成了每种方向的“纹理方向预测块”(第三行方块所示),以及对应的RMS(实际运算中只需要计算“纹理方向预测块”的平方和,便可以得到最佳方向)。按照文章[2]给出的该操作的计算复杂度,它和HEVC中8x8的IDCT的复杂度相当。需要指出的是,最佳纹理方向的决策,是标准定义的一部分,需要编码和解码做到完全一致。

▲ 图5 CDEF选择最佳方向示例[2]

Constraint function

CDEF使用非线性低通滤波器来消除编码出现的失真,同时又能保持图像中原有的纹理不被过度模糊。该滤波器的特点是,滤波系数的位置是基于前文中得到的纹理方向的;同时,横穿纹理方向上,当相邻的像素与被处理的像素差别较大时,减少其影响,以防止纹理被过度平滑,即引入了Constraint function。以一维信号为例,
该滤波器可以表达为:

其中是滤波器的系数,f(d,S,D)是Constraint function,其表达式为:

它与被滤波的像素与相邻像素的差别大小有关。如果差别较小,f(d,S,D) =d ,就是线性低通滤波器;如果差别较大,f(d,S,D) ,该位置滤波器系数将被忽略。参数S控制了像素差的阈值,参数D控制了f(d,S,D)何时取0。

▲ 图6 参数S和D的影响[2]

滤波器的抽头系数

只沿着纹理的方向进行滤波,有的情况下,无法去除纹理两侧出现的假纹理(Ringing失真)。因此,除了在纹理方向上的像素点之外的其它像素点,也要参与滤波。为此,CDEF设计了两组滤波器抽头系数,一组Primary taps,一组Secondary taps。Primary taps就是沿着纹理方向的,而Secondary taps使用了与纹理方向呈45度角的十字,如图7所示。


▲ 图7 Primary taps and Secondary taps[2]

与纹理方向检测一样,非线性滤波操作也以8x8的像素块为基本单元,8x8块内的像素共用同一组滤波参数,为了尽可能的并行处理,滤波器的输入都是去块滤波后的像素,CDEF滤波后的像素不会用作后续CDEF滤波器的输入。滤波器的参数在帧级和块级都有相应的语法元素进行传输,可以满足不同的纹理特性的滤波处理。通常需要在编码器中设计合理的算法,进行CDEF滤波参数的选择。

随着深度学习的蓬勃发展,特别是卷积神经网络在图像恢复、超分、识别、分类等领域表现得非常优秀。深度学习在视频压缩,特别是视频质量恢复和环路滤波领域涌现了许多优秀的算法。卷积神经网络可以更好地提取图像里的纹理等特征,通过学习得到不同纹理特征的对应的网络参数,与人工地基于先验知识(例如CDEF的纹理方向)的滤波算法相比,理论上具有更大优势。例如VRCNN[5]、PRN[6]、RHCNN[7]、Content-Aware CNN[8]、MFRNet[9]等。JVET也专门建立了Exploration Experiments,许多优秀的提案正致力于将深度神经网络应用于视频压缩标准中。环路滤波技术作为混合编码框架中的组成部分,在视频压缩中对提升视频主观质量发挥了至关重要的作用。

[1] Fu, Chih-Ming, et al. “Sample adaptive offset in the HEVC standard,” IEEE Transactions on Circuits and Systems for Video technology 22.12 (2012): 1755-1764.
[2] Midtskogen, Steinar & Valin, Jean-Marc. (2018). The Av1 Constrained Directional Enhancement Filter (Cdef). 1193-1197. 10.1109/ICASSP.2018.8462021.
[3] D. Mukherjee, S. Li, Y. Chen, A. Anis, S. Parker and J. Bankoski, “A switchable loop-restoration with side-information framework for the emerging AV1 video codec,” 2017 IEEE International Conference on Image Processing (ICIP), 2017, pp. 265-269
[4] M. Karczewicz et al., “VVC in-loop filters,” IEEE Trans. Circuits Syst. Video Technol., early access, Apr. 9, 20217
[5] Dai, Yuanying, et al. “A Convolutional Neural Network Approach for Post-Processing in HEVC Intra Coding” arXiv:1608.06690, 2016.
[6] D. Wang, S. Xia, W. Yang, Y. Hu, and J. Liu, “Partition tree guided progressive rethinking network for in-loop filtering of HEVC,” in 2019 IEEE International Conference on Image Processing (ICIP). IEEE, 2019, pp. 2671–2675.
[7] Y. Zhang, T. Shen, X. Ji, Y. Zhang, R. Xiong, and Q. Dai,“Residual highway convolutional neural networks for in-loop filtering in HEVC,” IEEE Transactions on Image Processing, vol. 27, no. 8, pp. 3827–3841, 2018.
[8] C. Jia et al., “Content-Aware Convolutional Neural Network for In-Loop Filtering in High Efficiency Video Coding,” in IEEE Transactions on Image Processing, vol. 28, no. 7, pp. 3343-3356, July 2019
[9] D. Ma, F. Zhang and D. R. Bull, “MFRNet: A New CNN Architecture for Post-Processing and In-loop Filtering,” in IEEE Journal of Selected Topics in Signal Processing, vol. 15, no. 2, pp. 378-387, Feb. 2021

视频千倍压缩背后的技术原理之环路滤波相关推荐

  1. 揭秘视频千倍压缩背后的技术原理之预测技术

    正文字数:3312  阅读时长:4分钟 随着5G的成熟和广泛商用,带宽已经越来越高,传输视频变得更加容易.设备特别是移动设备算力的提升.存储容量的提升,使得视频技术的应用越来越广泛,无论是流媒体.泛娱 ...

  2. EGO走进美团——追寻千亿市场背后的技术力量

    EGO的意义 \\ InfoQ中文站有一个朴素的理念,那就是"促进软件开发领域知识与创新的传播".这十六个字引导着Kevin(霍泰稳,InfoQ中国掌门人)走了八年.事实上,Inf ...

  3. 清华博士后用10分钟讲解AlphaCode背后的技术原理,原来程序员不是那么容易被取代的!...

    来源:AI科技评论 不久前,DeepMind 的团队发布了一个可以自动生成竞赛级代码的人工智能系统--AlphaCode,号称「媲美普通程序员」,一经发表就在国内外的AI圈里引起了巨大轰动. -论文地 ...

  4. 开发视频直播APP需要了解的技术原理和技术细节

    前言:每个成功者多是站在巨人的肩膀上!在做直播开发时 碰到了很多问题,在收集了许多人博客的基础上做出来了成功的直播项目并做了整理 . [一个完整直播app架构] 直播音视频知识点概括 1.采集视频.音 ...

  5. H.266/VVC技术学习之环路滤波:去块滤波(Deblock)技术

    一.方块效应 目前主流的视频编码标准都是基于分块的混合编码机制,其处理过程是针对每个块单独进行处理的,因此由于编码模式的差异以及量化误差的原因,会导致相邻块重建像素不连续的现象.对于一个两侧强相关性的 ...

  6. 微信语音技术原理_干货 | 2 分钟论文:语音生成表情包背后的技术原理

    雷锋网AI 科技评论出品系列短视频< 2 分钟论文 >,带大家用碎片时间阅览前沿技术,了解 AI 领域的最新研究成果. 来源 / Two Minute Papers 翻译 / 郭维 校对  ...

  7. 从蓝光到4K,腾讯视频高码率下载背后的技术

    蓝光和4k视频正逐渐普及,4K视频峰值码率超10Mbit/s.架构平台部TVideo平台从资源,链路.缓存.接入进行调优,有效解决4k高码率视频的二次缓冲问题,播放体验全面领先竞品. 背景 随着音视频 ...

  8. 视频直播源码的直播技术原理,CDN如何实现价值

    很多直播都是基于 CDN 来实现的.而通过声网的服务,或基于声网SDK与 CDN 结合,还可以实现在直播中的连麦互动.白板同步等强调实时性的场景.本文源自社区投稿,介绍了该场景下的一些基础知识.如大家 ...

  9. 飞机上终于能开着手机连 Wi-Fi 了,它背后的技术原理是什么?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作.目前正在 ...

最新文章

  1. 大学生如何合理使用计算机,大学生计算机合理使用引导分析
  2. pythonrequest方法_解决Python requests 报错方法集锦
  3. |DataDirectory|的使用
  4. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 )
  5. Java Review - 并发编程_ConcurrentLinkedQueue原理源码剖析
  6. 【MM模块】 Blanket PO 框架订单
  7. linux链接时报未定义的引用,g ++链接或引用不与本地安装的库一起使用:未定义的引用...
  8. html判断ie6,jquery如何判断是否是ie?
  9. CPU异常分析(以trap00为例)
  10. python用户画像_新闻个性化推荐系统源码之构建离线用户和文章特征
  11. PHP设计模式——抽象工厂
  12. 赛程安排 单循环赛 matlab程序
  13. 【深度学习之Tensorflow2.0】函数matmul和函数multiply的用法
  14. pm入门-需求调研/竞品分析/应用工具简介
  15. UAC怎么关闭?电脑的UAC如何关闭
  16. 阿里短信单发,批量发送
  17. 获取晋江优质小说(按章节数量选择、python多进程)
  18. 全球及中国辉光放电质谱仪(GDMS)市场商业模式与十四五投资战略规划研究报告2022-2028年
  19. Cisco Packet Tracer学习
  20. Cuil搜尋引擎 挑戰Google

热门文章

  1. Soloπ 工具使用见解
  2. 机器学习-KNN算法
  3. 直流有刷电机及Matlab/Simulink驱动仿真
  4. 【话题】致敬伟大的科学家史蒂芬·霍金,他留下的预言能实现吗?
  5. 8051单片机内部结构
  6. Android手机GPS卫星定位与通过WLAN与移动网络定位的区别?
  7. 插头类型:MX 1.25 PH间距2.0、XH间距2.5/2.54、VH间距3.96区别?
  8. 如何来做移动端网站SEO
  9. java多线程:9、synchronized、Lock的底层实现原理以及和volatile、Lock、ReentrantLock的区别?
  10. 网络空间安全是否有必要考研