微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 解读HEVC视频标准的环内滤波

解读HEVC视频标准的环内滤波

时间:12-20 来源:互联网 点击:

1.0 引言

高效视频编码(HEVC)是H.264/MPEG-4 AVC(高级视频编码)的一种升级版视频压缩标准(即ISO/IEC 23008-2 MPEG-H第2部分和ITU-T H.265)是由ISO/IEC动态图像专家组(MPEG)和ITU-T视频编码专家组(VCEG)共同编写的。与业界标准H.264相比,HEVC能够以几乎同样的视频质量实现半比特速率,并且有望在视频应用中得到广泛运用,其中包括:手机、广播、机顶盒、视频会议、视频监控、车载等。


下图显示了带有环路滤波的HEVC视频解码器结构图,突出显示的即为环路滤波。如图所示,它是一个可去除视频编码过程中块效应的两个级组成的级联,即去块效应滤波(DBLK)和采样自适应偏移(SAO)滤波。接下来的两部分内容将详细描述这个级。


图1 HEVC视频解码器结构图

2.0 去块效应滤波(DBLK)


本部分将阐述去块效应滤波,如HEVC视频标准[1]所述。去块效应滤滤器运行可大体可分为两部分:


1. 滤波器边缘上的边界滤波强度(aka BS)计算

2. 滤波器的实际运行


纵观整个去块效应滤波器运行,本文献采用了以下惯例:Q像素位于“纵向”滤波器的右侧,P像素位于“纵向”滤波器左侧。同样,Q属于“横向”滤波器边缘下方的像素,P属于“横向”滤波器边缘上方的像素。


图2 环内去块效应滤波中称为惯例的相邻像素


2.1 滤波器边缘强度(aka BS)


边界滤波强度[hor/ver][xpos][ypos]计算是在一个8x8网格上完成的,取值0、1、2,如下图所示:


虽然在8x8网格的每个像素边缘上都有滤波器(8x8结构包括4像素边缘),但就一个4像素段的所有像素而言,边界滤波强度计算的属性可以被组合。就强度计算而言,我们假设每个4像素段作为一个级。请注意,边界滤波强度计算取决于当前、左侧和顶部LCU LCUinfo。


图3 边界滤波强度(BS)结构图,在8x8网格中显示了边缘及其编号

2.1.1 边界滤波强度功能概述


边界滤波强度计算是在一个8x8网格上完成的,设置图片为0,且分片边界(slice boundarie) (if loop_filter_across_slice_enabled_flag = 0),Tile边界(loop_filter_across_tile_enabled_flag = 0).


只有8x8像素边界经过滤波,即预测单元(PU)和/或转换单元(TU)边界,滤波过程如下。


图4 PU和TU部分的边界滤波强度(BS)与边缘调谐

边界滤波强度推导规则:


感兴趣的读者可参见HEVC规范,了解以下内容:


1. 边界滤波强度的TU边界滤波强度推导:8.7.2.1章节

2. 边界滤波强度的PU边界滤波强度推导:8.7.2.2章节

3. 边界滤波强度推导:8.7.2.3章节

2.1.2 色度边界滤波强度推导


只有8x8色度像素网格上的PU和/或TU边界得到滤波。色度边界滤波强度值源自亮度边界滤波强度值。就色度滤波器4:2:0 (q0, p0)采样而言,从相应的(2q0, 2p0)亮度采样(即BS{Hor/ver}[xpos/2][ypos/2]图中的2因素下行采样)获取边界滤波强度。


图5 色度边界滤波强度映射:匹配到8x8网格然后除以2

2.2 滤波器运行


该部分将阐述去除HEVC视频标准中特定块效应的实际滤波。


2.2.1 滤波器的阶数


就HEVC而言,规定的滤波器阶数为帧级(不是LCU级),如下所示:


1. 在整个帧处理过程中,对所有块的竖向边缘都进行了H滤波。

2. 在整个帧处理过程中,对所有块的横向边缘都进行了V滤波。


滤波是完全独立的8x8滤波段,如图6所示:


图6 8x8块级独立滤波

是否需要亮度/色度(开启/关闭判定)滤波、滤波级别(弱滤波/强滤波)以及最终的实际滤波运行将在下面章节阐述。

2.2.2 亮度滤波器开启/关闭以及弱/强滤波的判定


滤波器开/关判定和亮度强/弱判定是根据上图所示的四个行列段进行的。

如果边界滤波强度等于0,则按顺序进行以下步骤:


qPL= ((QPP+QPQ+1)>>1), QPP 和 QPQ 为亮度 QPs

β = BETA_TABLE[Clip3(0,51,qPL+(beta_offset_div2<1)) ]

tc = TC_TABLE[Clip3(0,53,qPL+2*(BS-1)+(tc_offset_div2<1)) ]

dp0 = |p2,0-2*p1,0+p0,0| ; dp3 =|p2,3-2*p1,3+p0,3|

dq0 = |q2,0-2*q1,0+q0,0| ; dq3 = |q2,3-2*q1,3+q0,3|

dpq0 = dp0+dq0 ; dpq3 = dp3+dq3

dp = dp0+dp3 ; dq = dq0+dq3

dE = dEp = dEq = 0

如果 (dpq0 + dpq3 < β) //滤波器开/关判定

If ( (2*dpq0 <(β>>2)) && ( |p3,0- p0,0| + |q3,0- q0,0| <(β>>3)) && ( | p0,0- q0,0| <((5*tc+1)>>1))) dSam0 = 1

If ( (2*dpq3 <(β>>2)) && ( |p3,3- p0,3| + |q3,3- q0,3| <(β>>3)) && ( | p0,3- q0,3| <((5*tc+1)>>1))) dSam3 = 1

如果 (dSam0 ==1 && dSam3 ==1) dE = 2 (strong filter); 其他 dE = 1 (弱滤波);

如果 (dp < ((β+(β>>1))>>3) ) dEp = 1 //对滤波采样的数量进行弱滤波

If (dq < ((β+(β>>1))>>3) ) dEq = 1 //对滤波采样的数量进行弱滤波


图7 去块效应滤波中滤波开/关以及滤波强度判定中的像素使用

表1 qp、tc和β(BETA

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top