H265框架编码流程(一)

RQT(Residual Quad-tree Transform)技术是一种基于四叉树结构的自适应变换技术,它为最优TU模式选择提供了很高的灵活性。大块的TU模式能够将能量更好地集中,小块的TU模式能够保存更多的图像细节。根据当前CU内残差特性,自适应选择变换块大小,可以在能量集中和细节保留两者做最优的折中,与传统的固定块大小的变换相比,RQT对编码效率贡献更大。

变换编码和量化模块从原理上属于两个相互独立的过程,但是在HEVC中,两个过程相互结合,减少了计算的复杂度。

4.环路滤波

在HEVC中,环路滤波模块主要包括去块滤波器(DBF)和样点自适应补偿滤波(SAO)。DBF的主要作用是去方块效应,而SAO的主要作用是去除振铃效应。这部分的具体分析在《HEVC算法和体系结构:环路滤波技术》中已有详细介绍。

5.熵编码

熵编码模块将编码控制数据、量化变换系数、帧内预测数据、运动数据、滤波器控制数据编码为二进制进行存储和传输。熵编码模块的输出数据即是原始视频压缩后的码流。

在HEVC中,采用了基于上下文的自适应二进制算术编码(CABAC)进行熵编码,引入了并行处理架构,在速度、压缩率和内存占用等方面均得到了大幅度改善。

接下来介绍HEVC的两个容易被忽略的新技术:ACS和IBDI。

6.ACS技术

ACS(Adaptive Coefficient Scanning)包括三类:对角扫描、水平扫描和垂直扫描。ACS技术是基于4x4块单元进行的,将一个TU划分为多个4x4块单元,每个4x4块单元内部以及各个4x4块单元之间都按照相同的扫描顺序进行扫描。

对于帧内预测区域的4x4和8x8尺寸的TU,根据所采用的帧内预测方向来选择扫描方法:当预测方向接近水平方向时采用垂直扫描;当预测方向接近于垂直方向时就选用水平扫描,对于其他预测方向使用对角扫描。

对于帧间预测区域,无论TU尺寸多大都采用对角扫描方式。

7.IBDI技术

IBDI(Internal Bit Depth Increase)技术是指在编码器的输入端将未压缩图像像素深度由P比特增加到Q比特(Q>P),在解码器的输出端又将解压缩图像像素深度从Q比特恢复至P比特。

IBDI技术提高了编码器的编码精度,降低了帧内/帧间预测误差。但由于要建立参考队列,像素深度为Q比特的重构图像须占用较大的内存空间。此外,在进行帧间运动估计和补偿时,需要较多的内存访问带宽,这样会给内存受限的系统带来不便,解决的方法是引入参考帧压缩算法,来减小重构图像的数据量。

二、帧内、帧间编码流程

1、HEVC混和编码架框

网上的HEVC框架图出自Overview of the High Efficiency Video Coding  (HEVC) Standard,如下图所示。但是这张图初看起来非常复杂,而网上也没有解释得比较详细的文章,因此本文的目的就是来详细分析这张图,即分析HEVC编码过程中大致流程。

首先第一个问题:何为混合编码?我理解的是对同一帧数据使用帧内编码和帧间编码多个编码策略,那么上图综合了两种编码策略,自然看起来十分复杂,下面将分别分析帧内编码和帧间编码,用化繁为简的方式进行讨论。

2、帧内编码

这里把帧内编码部分分离出来,视频第一帧的编码过程也只采用帧内编码,并忽略其他辅助因素的干扰,绘制以下框架图。

黑色线条部分不论是帧内/帧间都一样,蓝色线条是帧内编码走的路径。编码步骤如下:

1.图像首先被分割为块状区域;

2.数据进行帧内估算(编码器),进行帧内编码;

3.进行帧内预测(反编码),注意,此时帧内预测得到数据与分块原图像帧应有些许偏差;

4.分块原图像帧减去帧内预测结果,得到帧内残差信号;

5.残差信号经过线性变换,变换后的系数再经过缩放、量化;

6.将处理后的残差信号系数经过反处理,得到残差信号,注意与原残差存在偏差;

7.将残差信号加上帧内预测信号,可得到分块预测图像帧;

8.最终通过环路滤波和自适应补偿,去除“分块效应”,得到未经分块的图像帧;

9.帧内编码信号和残差信号系数一起进行熵编码后输出。

3、帧间编码

大部分图像帧需要进行帧间编码过程,帧间编码框架图如下图所示。

同样,绿色线条为帧间编码专属过程,编码过程如下:

1.分块图像帧数据输入运动估算模块(编码器),再结合上一步帧内预测获得的上/下一幅图像帧数据,进行帧间编码;

2.对帧间编码数据进行运动补偿(帧间预测,解码器),注意,解码得到的图像帧与原图像块数据存在残差;

3.分块原图像帧减去帧间预测结果,得到帧内残差信号;

4.残差信号经过线性变换,变换后的系数再经过缩放、量化;

5.将处理后的残差信号系数经过反处理,得到残差信号,注意与原残差存在偏差;

6.将残差信号加上帧间预测信号,可得到分块预测图像帧;

7.最终通过环路滤波和自适应补偿,去除“分块效应”,得到未经分块的图像帧;

8.帧间编码信号和残差信号系数一起进行熵编码后输出。

4、混合编码

第2节和第3节分别说明了帧内编码和帧间编码涉及模块,主要过程已经分析完毕,但注意到图2、3和图1之间仍有较大差异,接下来就将全局考量,并说明剩余部分的作用,重绘混合编码框架如下图所示。


图中红色内容是前面的图省略的,省略的模块有两部分,包括编码控制模块和滤波控制模块,其中编码控制模块对框架内的编码和量化过程进行控制,因为编码和量化过程可以使用多种不同的策略,滤波控制模块也是必须的。熵编码输入数据很多,必要的图像帧和熵编码一同输出,因为帧间编码时需要参考其他图像帧。

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

**Android精讲视频学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!

如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值