HEVC系列的目标:

1、对基本概念的进行了解,不深入公式推导当中。在学习进行之前存在的疑问,学习之后是不是都一一解决了?

2、在一段时间忘记相关概念的时候,是不是可以通过阅读之前的记录 最快的回忆起相关概念。

环路滤波是什么?环路滤波在编解码框架的哪个部分?环路滤波是为了解决什么问题的?环路滤波用了哪些技术?环路滤波的流程是怎样的?

一、 环路滤波是什么?
    环路滤波顾名思义就是在环路上面对数据进行滤波操作,而所谓的滤波操作就是将数据乘上某一个权重数据。

二、环路滤波在编码框架的哪个部分?
    从解码端考虑,解码端用于帧间/帧内预测解码的数据 是熵解码 反变换 反量化之后的数据。而在编码端,帧间预测的数据是经过环路滤波处理的。这样做虽然增加了复杂度,同时还需要多传输滤波相关的比特数。 但是滤波后的数据用于参考 能够减少残差的数据,这样从整个编码系统看来 编码出来的比特数反而少了。

三、环路滤波是为了解决什么问题的?
   环路滤波主要是为了解决块效应和振铃现象而设置的模块。两个问题产生的原因不同,解决的方法也不一样。

块效应和去块效应

方块效应是指图像中编码块边界的不连续性。块效应是在环路滤波之前的模块引入的。

1、变换量化过程中的TU分块导致的。

TU块中变换量化编码过程相互独立,引入的量化误差大小及其分布特性相互独立,导致相邻块边界的不连续。

2、预测编码PU分块导致。

在运动补偿预测过程中,相邻块的预测值可能来自于不同图像的不同位置,这样就会导致预测残差信号在块边界产生数值不连续。另外,时域预测技术使得参考图像中存在的边界不连续可能会传递到后续编码图像。

解决块效应的方法 是加入一个去块效应模块,这个模块的作用是将块与块边界附近的像素进行平滑滤波处理。使得边界的不连续性不那么明显。

振铃效应和样点自适应补偿

振铃效应 是从量化过程中引入的,数据经过DCT变换、量化后,高频的信息产生失真。这些失真的信息经过解码恢复的时候就会在图像边缘周围产生波纹现象。

SAO(样点自适应补偿)滤波就是为消除这种振铃效应而设计的。它通过对重建图像的分类,对每一类图像像素值加减一个偏移,达到减少失真的目的。在HEVC中包含了两种像素值补偿方法:边界补偿(Edge Offset,EO)以及边带补偿(Band Offset,BO)。在HEVC中SAO是以CTU为基本单位的。

四、环路滤波采用了哪些技术?
4.1 去块效应
    去块效应的最终目的是: 为了 不同的块边界自适应选择是否滤波及滤波强度,如对平滑区域处的不连续边界做强滤波处理,对纹理较丰富的区域弱滤.波乃至不滤波。

去方块滤波模块的总体流程:首先图像分割成一个个8x8块,找8x8块的边界,包括水平和垂直,取边界两侧的4x4进行组合形成8x4(垂直)或者4x8(水平),边界就落在这8x4/4x8的块中间了。对这些8x4/4x8进行边界强度(BS),然后BS>0的时候进行计算滤波开关的决策计算,对于滤波打开的情况下进行滤波强度的计算,以得到边界的滤波强度(不滤波、弱滤波或强滤波)及滤波参数,在BS大于0而且滤波开关打开的情况下才进行滤波操作,即根据所选择的滤波强度及滤波参数对像素进行相应的修正。

如下图BS>0是BS的计算过程,计算得到的BS大于0,进入式7-1就是一个滤波开关的决策过程,如果开关时开的情况下 进入滤波强度的决策。然后根据不同的滤波强度进行滤波处理。

分块找边界 确定边界的处理顺序

对图像进行分块的大小是8x8。TU和PU最小都是8x8,所以块滤波取这个大小是为了覆盖所有TU和PU的边界。而实际是将8x8块分成两部分独立进行去方块滤波处理,垂直边界以8x4为基本单位,水平边界以4x8为基本单位

计算边界强度BS

边界强度跟滤波强度是两个概念,边界强度间接影响滤波强度,边界强度( Boundary Strength, BS),其取值为0、1或2。

亮度分量:

边界强度值为0时,表示该边界不需要滤波,亮度分量边界强度值为1或2时,会进行后续模块处理,并且值会影响后续“滤波强弱选择”中的阈值。

色度分量:

边界强度值为0、1时,表示该边界不需要滤波,只有边界强度值为2时,才会对其进行滤波。

计算流程:

如下图。P\Q如前图所示,边界强度值在一定程度上反映了两个相邻块编码参数的一致性。 相邻块采用的编码参数越一致,那么BS就越小,边界的块效应就越小。

确定边界是不是要进行滤波(滤波开关)

边界需不需要滤波的规则是 边界两边比较平滑但是边界处出现了差异,这个差异不能太大,太大就是图像边界而不是编码过程中引入的。如下图,

问题是该如何取衡量边界的差异,HEVC中是用8X4块中最上6个和最下6个像素进行计算得到的,计算的值称为纹理度。

垂直块边界区域的纹理度定义为

Cb小于某个阈值时开启边界滤波,这个阈值通过边界两边块的QP值算出来的。

确定边界是进行什么强度的滤波(滤波强度)

滤波强度也跟边界处的差异有关,差异越大需要越强的滤波,但不能超过一定范围。判断的方式如下

强滤波: 式(7-2) ~ (7-7) 均满足时,否则采用弱滤波。

其中式(7-2)和式(7-3) 用于判断边界两边像素值的变化率。

其中式(7-4)和式(7-5)用于判断边界两侧像素是否平坦。

其中式(7-6)和式(7-7) 用于判断在边界处像素的跨度是否控制在一定的范围内。 其中tc是判断的阈值,跟QP、 slice_tc_offset div2 (片级补偿值)以及前面计算到的QS有关。

进行滤波操作

1、亮度分量强滤波

强滤波会对边界两侧的像素进行大范围、大幅度的修正,边界像素p(m,n)和q(m,n)都要进行修正,m取值0,1,2,且n取值0,1,2。也就是对边界左右两边3个共6个像素进行修正。像素值的修正公式略。但是是跟前面tc有关 也就是其中跟QP、 slice_tc_offset div2 (片级补偿值)以及前面计算到的QS有关。

2、亮度分量弱滤波

弱滤波操作中修正的像素范围及幅度较小,而且需要根据每一行像素的具体情况确定每行的滤波操作。一般情况下不修复或者只修复一个点。

3、色度分量滤波

当获取边界强度模块判定BS=2时,色度分量需要进行滤波操作,色度滤波的过程跟边界左右两边4 共8个像素都有关系。

五、解码相关的语法
1. SPS级语法语义
       pcm_loop_filter_disabled_flag: 该语法元素用于说明对于一个编码单元CU,在pcm_ enabled_ flag 为1的条件下是否采用环路滤波技术,包括

去方块滤波以及像素自适应补偿。当该语法元素取值为1时,表示不使用;取值为0时,表示使用。

loop_filter_across_tiles_enabled_flag: 该语法元素用于说明在tile的边界处是否执行环路滤波操作,包括去方块滤波和像素自适应补偿。当取值为1时,表示执行;取值为0时,表示不执行。

pps_ loop_ filter_ across_ slices_ enabled_ flag: 该语法元素用于说明在Slice的左边界以及上边界处是否执行环路滤波操作。当取值为1 时,表示执行;取值为0时,表示不执行。

deblocking_filter_ control_ present_ flag: 该语法元素指出控制去方块滤波的语法元素是否出现在PPS中。当取值为1时,表示在PPS中有控制.去方块滤波的语法元素;取值为0时,表示没有。

deblocking_filter_override_ enabled_flag: 该语法元素指出在Slice 头部是否出现语法元素deblocking_filter_override_flag。 当取值为1时,表

示在Slice头部存在语法元素deblocking_filter_ override_ flag; 取值为0时,表示在Slice头部不存在该语法元素。其默认值为0。

pps_ deblocking_ filter _disabled_ flag: 该语法元素表示在语法元素

slice_ deblocking filter_ disabled_ flag 未出现的条件下,是否对各个Slice执行去方块滤波。当取值为1时不执行;取值为0时执行。默认值为0。

pps beta_ offset_ div2& pps_ tc_ offset_ div2: 该语法元素表示去方块滤波参数p/2和tc/2的默认补偿值,该补偿值还可以在Slice的头部进行重载。其取值范围为[- 6,6],当该语法元素未出现时,认为其值为0。

2. Slice 级语法语义
    deblocking_filter_ override_ flag: 该语法元素表明在Slice的头部是否出现去方块滤波参数。当取值为1时,表明出现了去方块滤波参数;当取值为0时,表明未出现。其默认值为0。

slice_ deblocking_ filter_ disabled_ flag: 该语法元素表明对于当前Slice是否进行去方块滤波操作。当其取值为1时,表示不进行;取值为0时,

表示进行。当该语法元素未出现时,其值等于语法元素pps_deblocking_filter_disabled_flag 的值。

slice_ beta_ offset_ div2&slice_ tc_ offset_ div2: 该语法元素表明当前Slice的去方块滤波参数β/2和tc/2的补偿值,其取值范围为[-6,6]。 当该语法元素未出现时,slice_beta_offset_ div2 的值等于pps_ beta_ offset_ div2的值,slice_ tc_ offset_ _div2 的值等于pps_ tc_ offset_ _div2 的值。

slice_loop_filter_ across_ slices_ enabled_ flag: 该语法元素表明对于当前Slice的左边界及上边界是否进行环路滤波操作,包括去方块滤波和像素自适应补偿。当取值为1时,表示可能进行( 具体情况要根据后续条件判断);取值为0时,不进行环路滤波。当该语法元素未出现时,其值等于pps_ loop_ filter_ _across_ slices_ enabled_ flag 的值。

六、总结
    块效应是编码块与块之间的预测,变换参数方法等不一样导致的块边界像素的不连续。 解决这个问题的方法是对边界周围的像素点进行滤波修正。滤波修正处理的是左右或者上下两个8x8之间的垂直和水平边界,实际计算的范围是边界周围8x8像素矩阵拆分成的两个4x8或者8x4像素矩阵。首先计算边界强度,边界强度跟边界周边两个4x4块采用的预测和变换的参数相关。计算得到边界强度后,对于边界强度大于0的,进一步判断是否需要滤波。是否需要滤波是通过边界像素的差异来决定的。如果是需要滤波的情况,还需继续判断是使用强滤波还是弱滤波。这一步的判断跟边界差异,QP,边界强度以及sps 中片级偿值 有关。最后就依照公式进行滤波像素修正。强滤波修正的范围比较大。

————————————————
版权声明:本文为CSDN博主「dawnminghuang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/H2008066215019910120/article/details/106512361

HEVC-环路滤波 之去块效应滤波相关推荐

  1. H264去块效应滤波分析

    ###Date:2017/10/17 转载自:http://blog.csdn.net/h514434485/article/details/52241778 所谓的块效应就是在视频编码中人眼察觉到的 ...

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

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

  3. h.264 去块滤波

    块效应及其产生原因 我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact). 首先我们需要 ...

  4. SVACH.264AVS去块滤波比较

    Date:2017/10/21 Content: SVAC&H264&AVS标准的去块滤波比较 一.去块滤波条件 H.264:支持4x4边界的环路滤波: SVAC:在H.264的基础上 ...

  5. SVACH264AVS标准的去块滤波比较

    Date:2017/10/21 Content: SVAC&H264&AVS标准的去块滤波比较 一.去块滤波条件

  6. 滤波,去耦,旁路电容的选取问题

    电容的特性是正半周时充电,负半周时放电,高频信号频率较高,它会在负半周时没等电压放完,正半周又到来开始充电.电容容量过大,将在电容上聚集很高的电压或杂波,根本滤不下去,将传到后级形成干扰.所以只有小容 ...

  7. opencv 图像雾检测_专栏 | OpenCV图像处理专栏十 | 利用中值滤波进行去雾

    原标题:专栏 | OpenCV图像处理专栏十 | 利用中值滤波进行去雾 前言 这是OpenCV图像处理专栏的第十篇文章,介绍一种利用中值滤波来实现去雾的算法.这个方法发表于国内的一篇论文,链接我放附录 ...

  8. 双边滤波去雾matlab,基于双边滤波的去雾算法.doc

    基于双边滤波的去雾算法 中图法分类号:TP391.41 文献标识码:A 文章编号:1006-8961(2013) - - 论文引用格式: 基于双边滤波的图像去雾 王一帆1 ,尹传历2,黄义明1 , 王 ...

  9. 块效应 振铃效应 呼吸效应

    1.块效应: (1)概念: 主要是由视频图像采用基于块的编码方式和量化造成相邻块之间存在明显差异的现象,在视频编码中人眼察觉到的小块边界处的不连续. (2)产生原因: 1.编码过程中对残差进行DCT变 ...

最新文章

  1. Go 学习笔记(36)— 基于Go方法的面向对象(封装、继承、多态)
  2. win 系统配置 openal
  3. 你在听音乐的时候能否感受到背后有“寒意“?
  4. music‘s effects
  5. 使用Akka处理1000万条消息
  6. poj3660 Cow Contest
  7. 为何python不好找工作-为什么python不好找工作
  8. 2017 ACM-ICPC北京网络赛: C. Matrix(DP)
  9. SQL Server Update:使用 TOP 限制更新的数据
  10. psd图层重命名,ps批量修改图层名字的脚本(附批量替换方法)
  11. python怎么爬虎牙_Python_虎牙妹子爬虫实现
  12. OpenGL深入探索——广告牌(Billboard)和几何着色器
  13. Python实战之小说下载神器(二)整本小说下载:看小说不用这个程序,我实在替你感到可惜*(小说爱好者必备)
  14. 给通信专业研究生——安心完成培养,你不是在劣势下和计算机学生抢饭碗来的
  15. BZOJ 1116 [POI2008]CLO 并查集
  16. 华侨大学计算机本科导师,华侨大学计算机科学与技术学院导师介绍:李海波
  17. 西邮计算机学院楚东方,西邮计算机系课堂教学质量监控办法.doc
  18. 网红带货与直播平台源码,“直播+”的成熟模式
  19. recipe for target 'CMakeFiles/check' failed
  20. 聊聊猎户星空护航下的图书馆转型之路|白洞战报

热门文章

  1. centos6 trouble shooting
  2. 免费下载思科CCNP 642-055考试题库
  3. ECDSA算法JAVA实现加解密
  4. 安装design compiler的教程
  5. 网易互娱AI Lab视频动捕技术iCap被CVPR 2022接收!
  6. Win10 20H2系统任务管理器切换到性能页蓝屏解决方案
  7. 计算机考研1000题pdf,2020考研张宇1000题(数一、二、三全).pdf
  8. 信息学奥赛一本通(c++):1000:入门测试题目
  9. iOS storyboard 与 xib 间相互跳转
  10. 面试过后等通知却没回音,到底哪里出了问题?