其他分享
首页 > 其他分享> > HEVC编码结构简要总结

HEVC编码结构简要总结

作者:互联网

HEVC编码结构简要总结

感谢原创转载自 从数学游到计算机的咸鱼:https://blog.csdn.net/qq_21506301/article/details/107289576?spm=1001.2014.3001.5501

第1章 编码结构

1.1 视频编码标准简介

视频编码标准只是规定了编码码流的语法语义和解码器,只要求视频编码后的码流符合标准的语法结构,解码器就可以根据码流的语法语义进行正常解码。因此,符合某个视频编码标准的编码器是有很大自由度的,只要编码后的码流符合标准的规定即可。

在编码器输出的码流中,数据的基本单位是语法元素,每个语法元素由若干比特组成,它表征了某个特定的物理意义,如预测类型、量化参数等。视频编码标准的语法规定了各个语法元素的组织结构,而语义则阐述了语法元索的具体含义。编码器输出的比特码流中,每比特都隶属于某个语法元素,每个语法元素在标准中都有相应的解释。可见,视频编码标准规定了编码后码流的语法语义,也就阐明了从比特流提取语法元素并进行解释的方法,也就是视频的解码过程

1.1.1 HEVC的提出背景

随着数字视频应用产业链的快速发展,视频应用向以下几个方向发展的趋势愈加明显:

如果继续采用H.264编码就出现的如下一些局限性:

因此,市场需要比H.264/MPEG-4 AVC更高效的视频编码标准。在这样的背景下,HEVC作为新一代的视频编码标准应运而生,HEVC(High Efficiency Video Coding)是由ITU-T的VCEG(Video Coding Expert Group)和ISO/IEC的MPEG(Moving Picture Experts Group)联合开发,合作开发组称为JCT-VC(Joint Collaborative Team on Video Coding),JCT-VC从2010年4月开始第一次会议,从世界各大公司、高校和研究机构征集新标准的提案,在2013年1月发布了HEVC的第一版,确定了HEVC的基本框架和内容,之后HEVC仍会不断扩展其内容和功能以适应不同场景的应用需求,如对多种颜色空间格式的支持,SCC(Screen Content Coding),3D视频编码,可伸缩视频编码等。ISO/IEC将会把HEVC称为MPEG-H Part2 (ISO/IEC 23008-2),ITU-T可能会把HEVC称为H.265
在这里插入图片描述

图 视频编码标准发展进程

在这里插入图片描述

图 码率压缩趋势

在这里插入图片描述

图 各视频编码标准的率失真性能

1.1.2 AVS和HEVC关键特性对比

相对于AVS,HEVC标准的算法复杂性有了大幅提升,以此获得较好的压缩性能,这源于HEVC在很多特性上都做了较大的改进:

H.264/AVSH.265/HEVC
MB/CU 大小4×4~16×164×4~64×64
亮度插值Luma-1/2像素{1,-5,20,20,-5,1} Luma-1/4像素{1,1}Luma-1/2像素{-1,4,-11,40,40,-11,4,-1} Luma-1/4像素{-1,4,-10,57,19,-7,3,-1} Chroma-1/8像素{-3,60,8,-1}
MVP 预测方法空域MVP预测空域+时域MVP预测 AMVP\Merge
亮度 Intra预测4×4/8×8/16×16:9/9/4模式33种角度预测+Planar预测+DC预测
色度 Intra预测DC, Horizontal, Vertical, PlanarDM, LM, Planar, Vertical, Horizontal, DC, diagonal
变换DCT 4×4/8×8DCT 4×4/8×8/16×16/32×32 DST 4×4
去方块 滤波器4×4和8×8边界Deblock滤波较大的CU尺寸,4×4边界不进行滤波 SAO和ALF

表 AVS和HEVC关键特性对比

1.2 HEVC的分层结构与编码方式

HEVC的设计目标是在同等图像质量下,比H.264/AVC的比特率降低50%,其设计侧重点主要有两个方面,即针对高分辨率视频增加并行处理结构的运用。和以前的ITU-T和ISO/IEC开发的视频标准一样,HEVC采用了基于分块结构的混合编码流程,包括预测、变换、量化、熵编码、环路滤波,但HEVC几乎在每个模块都引入了新的编码技术。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Laz9lvtY-1594467148468)(media/1620b370c63c457a0ee1a7cce3aff2cb.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hbwS8g8g-1594467148469)(media/74631b936adf636ce53b2395734e4e69.png)]

图 HEVC视频编码器

1.2.1 视频编码层(VLC)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i5OOdgeq-1594467148471)(media/5bcf4c6cf623b009a4ff57bd875f4cf0.png)]

图 HEVC编码结构框图

与H.264/AVC相同,HEVC在编码结构上也分为视频编码层(Video Coding Layer, VCL)网络适配层(Network Abstraction Layer, NAL)。前者独立于网络,主要包括核心的视频压缩引擎和图像分块的语法定义。后者主要是定义数据的封装格式,把VCL产生的比特字符串适配到各种各样的网络环境中。

原始视频经过VCL层,被编码成视频数据,然后经过NAL层,封装成一个个NAL包以适应不同网络的视频传输。HEVC码流在应用过程中与H.264/AVC码流的区别就在于NAL层,具体情况见网络适配层章节。

HEVC视频编码层沿用以往视频标准的混合编码方式,它的输入是原始视频,输出为符合HEVC标准的比特流,简要编码过程如下。

在这里插入图片描述

图 HEVC视频编码层(VLC)
  1. 将每一帧图像划分为不同大小的图像块单元,并将相应的块划分信息加入到码流中,传到解码器。

  2. 对每个单元进行帧内或帧间预测,原始像素值和预测值相减形成该单元的残差;在帧间预测时需要进行运动估计和运动补偿,对需要用到的重建图像事先要进行去方块滤波和自适应样值补偿(SAO)滤波。

  3. 对每个单元的残差进行整数变换(近似离散余弦变换或正弦变换),对形成变换系数进行量化和扫描。

  4. 对量化后的变换系数、预测信息、模式信息、运动信息和头信息等进行熵编码,形成压缩的视频码流(语法元素)输出。

解码过程基本上和编码过程相反。

1.2.2 网络适配层(NAL)与参数集

HEVC网络适配层(NAL)包含了大量的从H.264/AVC的NAL继承来的语法元素。HEVC的VCL层产生的每个语法结构都会被放进网络适配层(NAL)单元的数据包中。NAL单元的头部容量从H.264/AVC的单字节扩充为两个字节,增加的内容主要用于标识它所装载数据的类型。NAL单元根据是否装载有编码视频或其他相关数据而分为VCL NAL单元non-VCL NAL单元两类。HEVC标准中,还包括了为解码器初始化和随机接入的目的而识别图像分类的若干VCL NAL单元类型。

NAL单元负责把视频编码层(VCL)表示视频内容的数据映射到不同传输层上,如RTP/IP、ISO MP4、H.222.0/MPEG-2系统等,并提供丢包恢复处理机制。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeEHbtlH-1594467148473)(media/88a8271b7c9a34d5d10c9d89378ca1cb.png)]

图 HEVC压缩码流结构

在码流结构方面,H.265/HEVC压缩数据采用了类似于H.264/AVC的分层结构,将属于GOP层、Slice层中共用的大部分语法元素游离出来,组成序列参数集(Sequence Parameter Set, SPS)图像参数集(Picture Parameter Set, PPS)SPS包含一个CVS(Coded Video Sequence)中所有图像共用的信息,其中CVS被定义为一个GOP编码后所生成的压缩数据。SPS的内容大致包括解码相关信息,如档次级别、分辨率、某档次中编码工具开关标识和涉及的参数、时域可分级信息等。PPS包含一幅图像所用的公共参数,即一辐图像中所有SS(Slice Segment)引用同一个PPS,其大致内容包括初始图像控制信息,如初始量化参数(Quantization Parameter,QP)、分块信息等。此外,为了兼容标准在其他应用上的扩展,例如可分级视频编码器、多视点视频编码器,H.265/HEVC的语法架构中增加了视频参数集(Video Parameter Set, VPS),其内容大致包括多个子层共享的语法元素,其他不属于SPS的特定信息等对于一个SS,通过引用它所使用的PPS,该PPS又引用其对应的SPS,该SPS又引用它对应的VPS,最终得到SS的公用信息。

详细的NAL单元类型列表以及对NAL设计的一般概念,如NAL单元、参数集、存取单元、码流格式、包格式等见网络适配层章节。

1.2.3 编码结构与配置

为了应对不同应用场合,HEVC设立了GOP的3种编码结构,即全帧内(AI)编码低延时(LD)编码随机访问(RA)编码

图 AI编码结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UB5f1gN7-1594467148475)(media/5a4018e5a50314feea42b335ee1f474c.png)]

图 LD编码结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xDVv1QOT-1594467148476)(media/66657c0a72308e8d604bdb23b914abb8.png)]

图 RA编码结构

1.3 HEVC的图像组(GOP)与四叉树单元划分

在图像分块方面,HEVC的一个重要革新之处就是为预测和变换编码目标而对图像进行的基于四叉树的划分。

HEVC将一个视频序列分为相继的若干图像组(GOP),每一组由该序列中连续的多帧图像组成。帧是四叉树划分的基本单位,每一帧图像经过四叉树划分,形成覆盖全帧的多个同样尺寸的方形编码树块(CTB)。CTB还可以划分为更小的编码块(CB)。CB是实施视频编码算法的基本单位,它还可以划分为预测块(PB)变换块(TB)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bauQ2ZRH-1594467148477)(media/00a5990c98081afeab71ae027a00372b.png)]

图 HEVC对视频序列编码的层次结构

1.3.1 图像组(GOP)

GOP分为:closed GOPopen GOP。每个closed GOP以IDR帧开始,各个GOP间相互独立;open GOP中,第一个GOP以IDR帧开始,后续GOP以non-IDR帧开始,即可以参考前面的GOP。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C3QXF1B8-1594467148478)(media/66f4a22025f9b18ccac10259d499f30f.png)]

图 两种不同的GOP类型

1.3.2 编码树单元(CTU)与编码单元(CU)划分

在HEVC中依然采用分块编码方式,但不同于H.264中固定尺寸的宏块,HEVC中块的尺寸是可以自适应改变的。HEVC中定义了四个新的概念:编码树单元(CTU)编码单元(CU)预测单元(PU)变换单元(TU)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QKvJMkfy-1594467148480)(media/520d51970dda137edf6d4ebe34159043.png)]

图 64×64 CTU到CU的四叉树划分示例
  1. 编码树单元(CTU)

类似于H.264/AVC中的宏块,HEVC将编码帧分为若干编码树块(Coding Tree Blocks, CTB),它们是进行预测、变换、量化和熵编码等处理的基本单元,其尺寸或者所包含的像素数可以是16×16、32×32或64×64。同一位置的亮度CTB和两块色度CTB,再加上相应的语法元素形成一编码树单元(Coding Tree Units, CTU)。一般来说,Unit是从语法结构角度进行描述,而Block是从采样值角度进行描述,并不特意区分这两个概念。

  1. 编码单元(CU)

CTU又可以按照四叉树结构分解为若干方形编码单元(Coding Units, CU),同一层次的CU必须是同一尺寸的4个方块,最多可有4层分解,即64×64(LCU),32×32,16×16和8×8(SCU)。如果不分解,则这个CTU仅包含一个 CU。每个CU包含一块亮度编码块(Coding Blocks, CB)、两个色度CB以及相应的语法元素。CU的大小和图像的特性是自适应的,在图像比较平缓区域,选择比较大的CU,而在图像边缘或纹理复杂的区域,选择比较小的CU,有利于提高编码效率。CU是决定进行帧内预测还是帧间预测的单元,也就是说整个CU只能是一种预测模式,不是帧内就是帧间。CU还可以按照四杈树层次分解(或不分解)为更小的预测单元(Prediction Units,PU)和变换单元(TB, Transform Units)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZeaLf95-1594467148481)(media/04282325d755e003a9566f20b3d0b7fe.jpg)]

图 CTU、CU划分实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iDkkpW2k-1594467148483)(media/aeb4a5d549d565a29c2f54c4e1667534.png)]

图 “Z”字形扫描标号顺序

每一个划分步骤中,解码器对某个特定的起始块都定义了一个唯一的处理顺序。通过以深度(划分的层次)在先的方式遍历编码四叉树来处理CU,形成一个递归的“Z”字形扫描顺序。这种扫描顺序保证了对于不同分割都能按照相同的遍历顺序进行寻址,有利于程序中的递归实现“Z”字形扫描标号顺序方法还用于定义PU和TU的划分顺序。

1.3.3 预测单元(PU)划分

预测单元PU是进行预测运算的基本单元,包括帧内(Intra)和帧间(Inter)预测两类。一个编码单元CU可以包含一个或者多个预测单元,CU到PU仅允许一层划分,最小的PU为4×4。划分可以是对称的,也可以是不对称的。一个2N×2N(N可以是4、8、16、32)的CU可划分为8种包含PU方式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yEjRdqPO-1594467148484)(media/ac8437b40d152d7ed945ce4925c456a7.png)]

图 2N×2N的CU的PU划分方式
  1. 帧内预测块
  1. 帧间预测块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y8x5AzWe-1594467148485)(media/4ab38e66817113e44e22c16fc395ea16.png)]

图 AMP模式示例(RaceHorses)

1.3.4 变换单元(TU)划分

HEVC突破了原有的变换尺寸限制,可支持大小为4×4~32×32的编码变换,变换单元(TU)是进行变换和量化操作的基本单元,和PU划分类似,它也是在CU的基础上划分的。方形CU到TU的划分也是一种四叉树划分,又称变换树残差四叉树(Residual Quad Tree, RQT), CU是这棵树的根,TU是这棵树的叶,也是方形。与编码单元CU四叉树类似,残差四叉树通过深度优先、光栅扫描的“Z”字形顺序进行遍历。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJHFGVoC-1594467148485)(media/1941d1c5d012061a9574c3ec568c1f8c.png)]

图 CTU到CU再到TU的四叉树划分示例

在这里插入图片描述

图 残差四叉树(RQT)示例

根据预测残差的局部变化特性,TU可以自适应地选择最优的模式。大块的TU模式能够将能量更好地集中,小块的TU模式能够保存更多的图像细节。这种灵活的分割结构,可以使变换后的残差能录得到充分压缩,以进一步提高编码增益。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k66V3vLC-1594467148487)(media/051fe6eba79014463c7983220b5a8ea0.png)]

图 CU划分为PU(虚线)和TU(实线)的示例

CU的变换树的构成和PU的划分基本无关,编码器可以选择穿越PU界线的残差变换。但帧内编码模式中TU尺寸需小于或者等于PU,而帧间编码模式中TU可以大于PU,但是不能超过CU。

注:HEVC为4×4~32×32的TB定义了类似离散余弦变换(DCT)的整数变换。对于4×4亮度帧内预测的TU,也可采用另外一种源于**离散正弦变换(DST)**的整数变换。

1.4 HEVC的条(Slice)和片(Tile)划分

一帧图像可以被划分为条(Slice)片(Tile),条还可以再划分为分条(Slice Segment, SS)。组成条的一系列分条是由一个独立分条开头,后面跟随的是非独立分条或独立分条(如果有)。条(或)片在HEVC图像结构中处于CTU的上一层,一个条或分条是由整数个相继排列的CTU组成的,类似,一个片也是由整数个相继排列的CTU组成的。

JQT$E%(P`K%CJ2{_M8Z4`AT

图 Slice到CTU再到CU的编码结构

1.4.1 条(Slice)划分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iDpOoAp-1594467148489)(media/45fb9d597cadaf7b14f1fff1b217a495.png)]

图 条划分示例

一幅图像可以分割成一个或多个Slice,每个Slice都是独立的(但环路滤波时可跨越Slice边界进行滤波),利于并行运算。在HEVC码流中,每个条封装为一个NAL单元,其容量小于等于最大网络传输单元(Maximum Transmission Unit,MTU)容量。使用Slice的主要目的是当数据丢失后能再次保证解码同步

Slice可以分为:

一个Slice可以分为若干SS(Slice Segment),包含一个独立SS(它涉及的句法元素由自身决定)和若干依赖SS(它涉及的句法元素由已解码的独立SS决定,依赖SS共享独立SS的一些信息),以独立SS作为该Slice的开始。一个SS包含整数个CTU,且这些CTU分布在同一个NAL中。SS可以作为一个分组来传送视频编码数据,一个Slice内的SS可以相互参考。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUoCMlQD-1594467148490)(media/1635f779e26d594c28f6955426d0b474.png)]

图 Slice、独立SS、依赖SS三者之间的关系示意

1.4.1 片(Tile)划分

在HEVC中新引入了可选的片划分,用水平和垂直的若千条边界将图像帧划分为多个矩形区域,每个区域就是一个片,同时也是一个独立的编码单位。每一个片常包含大体相同的整数个CTU,但并不强求。

片划分时并不要求水平或垂直边界均匀分布,可根据并行计算和差错控制的要求灵活掌握。在编码时,图像中的片也是按光栅扫描顺序进行处理,每个片中的CTU也是按光栅扫描顺序进行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-38zXIQx6-1594467148491)(media/628b50d5df92816b9648b7d95358edd9.png)]

图 片(Tile)划分示例

在HEVC中,允许条和片在同一图像帧中同时使用,既可以一个条中包含若干片,共享头信息,也可以一个片中包含若干条

图 条(Slice)和片(Tile)的包含关系

HEVC引入片划分的主要目的是增强并行处理的能力,而不在于提供差错鲁棒性。片划分提供的是一种较简单的粗粒度(子图像)并行处理机制,它的使用不需要提供复杂的线程同步支持。片划分的优点如下:

1.5 HEVC的档次(Profile)、水平(Level)和等级(Tier)

为了提供不同应用之间的兼容互通,HEVC定义了编码的不同档次(Profile)水平(Level)等级(Tier)

编解码器的兼容性方面,要求支持某个Profile的解码器必须支持该Profile及低于该Profile中的所有特性;要求支持某个Level和Tier的解码器可以解码所有等于和低于这个Level和Tier的码流;支持某一个Profile的编码器,并不要求它支持该Profile的所有特性,但是编码的码流必须符合HEVC的标准,才可被支持该Profile的解码器所解码。

1.5.1 档次(Profile)

常用的三个Main Profile:即常规8bit像素精度的Main Profile,支持10bit像素精度的Main 10 Profile和支持静止图像的Main Still Picture Profile

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nm9oEXi2-1594467148492)(media/e4d6224c3b3f17d472db40580740a65e.png)]

图 HEVC第一版3个主档次的特点
  1. 主档次(Mian Profile)的特点
  1. 10比特主档次(Main 10 Profile)的特点
  1. 静止图像档次(Main Still Profile)的特点

1.5.2 水平(Level)

水平(Level)指出了一些对解码端负载和内存占用影响较大的关键参数的约束,这些参数主要包括有:采样频率、分辨率、码率的最大值,压缩率的最小值、解码图形缓冲区(DPB)的容量、编码图像缓冲区(CPB)的容量;水平中还约束了每帧中垂直和水平方向的Tile的最大数量,以及每秒最大的Tile数量。HEVC共设置了13个水平

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWEcdK3a-1594467148493)(media/8dc68a52306b715f16ba1b09bc348c0a.png)]

表 一般等级(Tier)和水平(Level)的限制

1.5.3 等级(Tier)

对同一水平,按照最大码率和缓存容量要求的不同,HEVC设置了两档等级,定义为高等级(High Tier)主等级(Main Tier)。主等级可用于大多数场合,涵盖13个水平,要求码率较低;高等级可用于特殊要求或苛刻要求的场合,包括4和4以上的8个水平,允许码率较高,在同一水平大约高3-4倍。

参考文献
【1】《新一代高效视频编码H.265/HEVC:原理、标准与实现》,万帅,电子工业出版社
【2】《H.265/HEVC:视频编码新标准及其扩展》,朱秀昌,电子工业出版社

标签:编码,简要,HEVC,视频,划分,图像,CU
来源: https://blog.csdn.net/m0_51412823/article/details/114647589