HEVC去方块滤波原理以及代码流程

xiaoxiao2021-08-27  479

代码版本:HM-16.2+SCM-3.0rc1 时间: 2015/5/17 作者: LB

环路滤波以及SAO在代码中的大概流程如下图所示: 下面分别对去方块滤波和SAO的原理和相关代码作分析。

去方块滤波: 去方块滤波的主要步骤流程图如下: 滤波顺序: 以参考代码版本为例,去方块滤波的滤波顺序是以CTU为基本单位,按照光栅扫描进行滤波;在CTU内部以CU为基本单位,按照Z扫描方式进行处理。 将相关边界分为垂直边界和水平边界;分别进行垂直滤波与水平滤波。

确定滤波边界: 1、滤波边界必须为Pu或者Tu的边界; 2、无论亮度分量还是色度分量,去方块滤波均对8x8的块边界滤波; 3、将8x8块分为独立的两部分进行去方块滤波处理,垂直边界以8x4为基本单位,水平边界以4x8为基本单位; 以大小为32x32的CU 亮度块的垂直滤波为例:

计算边界强度: 1、边界强度共有三个等级,分别为0,1,2; 2、根据边界块的编码参数,初步判断边界是否需要滤波,以及边界强度; 3、亮度块边界强度非零时,需要后续判断是否需要滤波(滤波开关&滤波强弱 选择); 4、色度块边界强度为2时(直接复试相应亮度块的边界强度),直接判断需要滤 波,其他情况不需要。 具体流程图如下:

滤波开关决策与滤波强弱选择:

滤波开关决策与滤波强弱选择只适用于边界强度非零的亮度块边界。其中滤波开关决策是进一步分析边界两边像素值的变化程度(平缓,剧烈),进而判断该区域的内容特点,再根据区域的内容特点来决定是否需要滤波。

若判定滤波开关打开,则边界一定要进行滤波处理,需要进一步决定采用强滤波还是弱滤波。 采用强滤波还是弱滤波,从以下三个方面考虑: 1、边界两边像素值的变化率; 2、边界两侧像素值是否平坦; 3、边界两边像素的跨度是否控制在一定范围之内; 以上三个条件均满足,则采用强滤波,否则采用弱滤波。 流程如下: 强滤波:对两侧像素大范围,大幅度修正,一般为两侧各三个像素修正。 弱滤波:对像素小范围,小幅度修正,对边界两边一到两个像素修正。 色度块滤波:对边界两边各一个像素修正。

去方块滤波的函数流程如下图所示:

转载请注明原文地址: https://www.6miu.com/read-4823563.html

最新回复(0)