8-HEVC视频编码技术

成功运行HM10.0后,下面开始进入真正对HEVC标准采用的编码技术的讨论。参考文献选用IEEE TCSVT 201212期的Overview of HEVC。
同H.264等前代的视频编码标准类似,HEVC依然采用了混合编码框架,利用帧间预测去除时域相关,利用帧内预测去除空间相关,利用变换、熵编码去除统计相关性。同前代技术相比,HEVC并未采用革命性的创新技术,而是针对现有技术进行小步快跑的改进,用积少成多的方法提高编码的性能。
1、图像的像素表示:
HEVC通常采用4:2:0采样的YCbCr颜色空间表示视频信号,每个分量支持8比特或10比特,通常情况采用8比特,且视频为逐行扫描信号。在图像帧的大小方面,两个色度分量的分辨率均为亮度分量的1/4。
2、由图像帧到树形编码单元的分割
一帧图像分割成树形编码单元(coding tree units,CTUs),CTU包含亮度和色度分量CTB,是基本的处理单元。亮度分量CTB为边长为16、32或者64的矩形块,色度CTB的边长为亮度的一半,CTB的实际大小由码流中的序列参数集合指定。更大尺寸的分块可以更好地处理高清视频信号。
3、由CTB分割为CB:
亮度和色度CTB可以按照四叉树结构进一步分解为CB。四叉树结构可以根据视频信号的区域特征将CTB分割成合适大小的CB块。分割过程可反复迭代,知道亮度CB的大小为可支持的最小值8×8。在图像的边界处,CB为最小支持尺寸。解码器对可能“越界”的CTB会做专门处理。
4、PB和PU
每个CU的预测模式可能为帧内或者帧间。若预测模式为帧内,除了最小尺寸模式外,PB的尺寸等于CB。若是最小尺寸模式,则用标志位表示是否将CB分割成四个PB块。这样最小可以支持到4×4大小的帧内预测块(此时色度分量PB也为4×4)。
若预测模式为帧间预测,亮度和色度CB可能分割为1/2/4个PB。只有CB为最小尺寸模式时才能分割为4个PB块。CB分割为四个PB时,每个PB占据CB的1/4;CB分为两个PB时,可选择6种分割模式的一种,其中包含不平均分割模式(只针对16×16及以上的亮度块)。每个帧间预测PB包含一个或者两个运动矢量和参考帧索引。为控制编码效率,4×4亮度块不允许使用帧间预测,8×4和4×8最多只允许单向预测编码。
5、树结构分解为变换块和变换单元
CB的残差信号可按照残差四叉树分解为变换块(transform blocks,TBs),只能分解为方块,其最大和最小尺寸由编码器指定。除了4×4之外,色度TB的边长为亮度TB的一半。
6、Slices和Tiles
Slice是帧中按光栅扫顺序排列的CTU序列。一帧可以由多个slice组成,每个slice可以独立解码,因为slice内像素的预测编码不能跨越slice的边界。每个slice可按照编码类型的不同分为I/P/B slice。该结构的主要目的是在传输中遭遇数据丢失后的重新同步。每个slice可携带的最大比特数通常受限,因此根据视频场景的运动程度,slice所包含的的CTU数量可能有很大不同。
Tile是帧内可以独立进行解码的矩形区域,包含多个按矩形排列的CTU(数目不要求一定相同),定义这一结构的初衷是增强编解码的并行处理性能。同一个slice内的多个tiles可共享相同的头信息,一个tile也可以包含多个slice。另外还可以定义依赖性条带的概念。
由于引入了波前并行编码模式(wavefront parallel processing),一个slice可以按行分割成多个CTU,每一行的解码可以在上一行的几个CTU解码完成后开始,采用这种方式支持CTU的并行处理。
7、帧内预测
【这是多少年的老问题,都快被研究烂了……现在真的一看见什么“帧内”或者“运动搜索”之类的就困意顿生……】HEVC的帧内预测要依据先前解码完成的TB块和TB的大小确定。对于从4×4到32×32大小的TB块而言,定义了33种预测方向以及DC和planar两种特殊模式。对于色度块,可显式指定水平、垂直、planar和DC模式,也可以采用跟亮度预测一致的模式。同H.264类似,HEVC的帧内预测在各种不同类型slice中都可支持。【视频编码的各个技术中,我觉得帧内算是最简单最容易理解的,没有之一。所以具体的细节也不多写了,感兴趣的可以去看参考文献(“Overview of HEVC”,IEEE TCSVT 2012.12),相信熟悉H.264的童鞋马上就能看懂】。
8、帧间预测
HEVC帧间预测的PB分块方法比帧内预测复杂,分块模式可以将CB分割成1整块、水平二等分、垂直二等分等。在CB为最小尺寸模式下,可分割为等大小的4小块。另外非对称运动分割(asymmetric motion partitions)支持分割成不同大小的块。
同H.264类似,HEVC支持亮度的亮度的1/4精度的亚像素差值。色度信号的精度由采样格式确定,对4:2:0信号而言,为1/8精度。
合并模式:该模式可以从当前块的时间或空间邻域块导出运动矢量,将共享运动信息的区域生成一个合并区域。合并模式的候选数据集合包括空间邻域块,一个时间邻域块和生成邻域块。每个候选快需验证其可用性。对空间候选块,若当前PU的候选要参考同CU内的PU,则排除该候选块,运动信息相同的候选块也样一并排除。对时间候选块的位置,选择参考帧中相应位置的PU区域外右下方(如果可用),否则选用居中位置。
非合并模式下的运动矢量精度:以运动矢量预测的方式进行编码,利用运动矢量预测、预测索引和运动矢量残差。
9、变换量化
HEVC使用的变换编码方法同前期标准类似,仍然采用二维DCT变换,变换块的大小为4×4, 8×8,16×16或32×32。对于4×4大小的块,采用二维DST变换。
量化算法同H.264类似,量化矩阵为降低空间复杂度,只采用4×4和8×8大小。
10、熵编码
HEVC仅采用CABAC一种熵编码方法。同H.264相比,舍弃了CAVLC。
11、环路滤波器
HEVC中环路滤波分为两步,即去块滤波(Deblocking filter, DBF)和采样自适应滤波(SAO filter)。SAO是HEVC中新引入的技术,它不仅限于在边界,而是自适应地处理所有满足一定条件的像素。
除非PU或TU块的边缘也是帧的边缘或在条带及tiles边缘被禁用(由SPS和条带头控制),DBF会作用于所有块的边界。为了在不造成明显画质降低的前提下减小最差情况运算复杂度,在对亮度和色度4×4处理时,DBF仅仅处理对齐于8×8边界的块边缘。DBF强度根据不同情况采用0、1、2三档。
SAO作用于DBF之后,根据查表法,对符合一定条件的像素加一个偏移量。偏移量表由编码器端发送。
12、特定的编码模式
除了以上编码技术之外,HEVC还制定了I_PCM,无损模式和变换跳过模式。
【很多内容我也还没有理解透彻,因此经常一笔带过。在研究编解码器的程序时,将结合程序仔细研究用到的技术。】
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值