H.265/HEVC 简述 第三课(编码结构)

零、前言

本系列博客是对H.265/HEVC视频编码进行一个简单的介绍,主要介绍大致的编码框架和流程,不涉及算法和公式的详细推导与证明过程,适用于刚接触视频编码与H.265/HEVC的新手玩家。
我的参考书籍是万帅、杨付正所编著的《新一代高效视频编码 H.265/HEVC:原理、标准与实现》。这本书的电子版存放在我的百度网盘,大家可以自行取用。
链接:https://pan.baidu.com/s/1zhczlcI1wNB3pIR9ehMq4Q
百度网盘-《H.265》电子版
提取码:prbb

本篇博客是该系列博客的第三篇博客,主要是讲解了H.265/HEVC中所用到的编码结构及其所涉及的相关语法参数集,还给出了档次、层、级的基本概念。

系列博客的链接:
1、H.265/HEVC 简述 第一课(绪论)
2、H.265/HEVC 简述 第二课(数字视频格式)
3、H.265/HEVC 简述 第三课(编码结构)

一、编码结构概述

编码结构,可以从编码时的分层处理架构和编码完后码流的语法架构两方面进行描述。
在这里插入图片描述

1.1、编码时的分层处理架构

首先来讲讲编码时的分层处理架构
对视频进行压缩时,先将视频分成小的图像组(GOP),存在两种GOP类型,开放式GOP和封闭式GOP。在封闭式GOP中,每一个GOP从IDR图像开始,各个GOP之前独立编解码。在开放式GOP中,第一个GOP中的第一个帧内编码图像为IDR图像,后续GOP中的第一个帧内编码图像为non-IDR图像。后面的帧间编码图像可以越过non-IDR图像,使用前一个GOP中的已编码图像做参考图像。
在这里插入图片描述

每个GOP又可以分为很多片(Slice),片与片之间进行独立编解码。目的是在数据丢失的情况下进行重新同步。每一个片又由许多片段(SS) 组成。片段SS是视频编码数据的基本单元,一个SS在编码时,先分割为大小相同的CTU。H.265/HEVC引入的树形结构单元(CTU),每个CTU包含一个亮度树形编码块(CTB),和两个色差树形编码块。每一个CTU又可以按照四叉树分为不同类型的编码单元(CU)。
在这里插入图片描述

1.2、编码后码流的语法架构

然后再来聊一聊编码完后码流的语法架构
码流结构是采用了类似H.264/AVC中的分层结构。将GOP,Slice中的语法元素游离出来,组成序列参数集(SPS)图像参数集(PPS)。同时在H.265/HEVC中又添加了视频参数集(VPS)
在这里插入图片描述

CVS被定义为一个GOP编码后产生的压缩数据。而SPS中包含一个CVS中所有图像公用的信息。PPS则包含一幅图像所用的公共参数。而VPS包含子层共享的语法元素。对于片段SS而言,通过引用它所使用的PPS,该PPS又引用其对应的SPS,该SPS又引用它对应的VPS,最终得到SS的所有公用信息。

在这里插入图片描述
只有参数集被SS直接或者间接引用才有效。一个SS的压缩数据生成一个VCLU(承载压缩视频片的网络适配层单元)进行传输,最终一个视频序列的编码流由一系列SS所生成的多个VCLU单元和掺杂其间的一些分割标识数据和参数集数据组成。分割标识示数据用于区分一个SS属于哪副图像、哪个CVS。

二、参数集

各个参数集都包含语法元素与它们的描述子。描述子是指从比特流提取语法元素的方法,即语法元素的解码算法,每个语法元素都有相对应的描述子。
H.265/HEVC中的描述子有如下几种:
(1)、ae(v) :基于上下文自适应的二元算术编码。
(2)、b(8):读进连续的8比特。
(3)、f(n):读进连续的n比特。
(4)、se(v):有符号指数Golomb熵编码。
(5)、u(n):读进连续的n比特,且它们解码后的值为无符号整数。
(6)、ue(n):无符号指数Golomb熵编码。
上面描述子中括号内的参数为n时,表明该语法元素是定长编码,参数为v时表明语法元素采用变长编码。
视频参数集(VPS)
视频参数集主要用于传输视频分级信息。一个给定的视频信息,无论它每一层的SPS是否相同,都参考相同的VPS。VPS包含的信息有:①多个子层和操作点共享的语法元素。②会话所需的有关操作点的关键信息,如档次、级别。③其他不属于SPS的操作点特性信息。
序列参数集(SPS)
对于一段视频码流,其可能包含一个或多个编码视频序列CVS。序列参数集SPS中就是包含一个编码视频序列CVS中所有编码图像的共享编码参数。SPS通过被PPS引用而作用用编码图像。一个CVS中所有被引用的PPS必须引用同一个SPS。SPS内容大致分为以下几个部分:①图像格式的信息;②编码格式的信息;③与参考图像相关的信息;④档次、层和级相关参数;⑤时域分级信息;⑥可视化可用性信息;⑦其他。
图像参数集(PPS)
在编码视频流中,一个CVS包含多幅图像,每幅图像可能包含一个或多个SS,每个SS头提供了其所引用的PPS标识号,以此得到相应的PPS中的公用信息。同一幅图像的所有SS都用同一个PPS。PPS中存在一些和SPS中相同的参数,PPS中这些参数会覆盖掉SPS中它们的取值。SS使用PPS中的参数进行解码,解码开始时,所有PPS都是非激活状态,当解码过程在引用了某个PPS,这个PPS被激活,直到该图像解码结束,在解码的任意时刻最多只有一个PPS处于激活状态。PPS的内容大致分为以下部分:①编码工具的可用性标志;②量化过程相关句法元素;③Tile相关句法元素;④去方块滤波相关句法元素;⑤片头的控制信息;⑥其他编码一幅图像时可以共用的信息。

三、片段层与Tile单元

一幅图像可以被分为一个或多个片(Slice),每个片的压缩数据都是独立的。使用Slice的主要目的是当数据丢失后,能再次保证解码同步。
根据编码类型,Slice可以分为几种类型:
(1)、I Slice:该Slice中所有CU的编码过程都使用帧内预测。
(2)、P Slice:在I Slice基础上,可以使用帧间预测。每个预测块至多使用一个运动预测补偿信息。P Slice只使用图像参考列表list0。
(3)、B Slice:在P Slice的基础上,B Slice中的CU也可以使用帧间预测,但是每个PB可以使用至多两个运动补偿预测信息。B Slice可以使用图像参考列表list 0 , list 1 。
一个独立Slice可以被进一步划分为若干SS,包含一个独立SS和若干依赖SS,以独立SS作为该Slice的开始。 一个Slice之间的SS可以互相参考。
独立SS:它所涉及的句法元素可以由自身确定。
依赖SS:它所涉及的某些句法元素由已解码的独立SS推导得到。

一幅图像也可以划分为若干个Tile,一个矩形区域就是一个Tile,每个Tile包含整数个CTU,划分Tile的主要目的是在增强并行处理能力的同时,又不引入新的错误扩展。
在这里插入图片描述

四、树形编码块

H.265/HEVC中引入了树形编码单元(CTU)。 一个亮度CTB(树形编码块)加上两个色度CTB再加上相应的语法元素就得到一个CTU。
H.265为图像提供了一个新的划分方式,编码单元CU(预测、变换、量化、熵编码),预测单元PU(帧内、帧间预测)和变换单元TU(变换和量化)。
其中编码单元CU 包含 一个亮度CB(编码块)和两个色度CB和相应的句法元素。而预测单元PU规定了编码单元的所有预测模式。变换单元TU则是进行变换和量化的基本单元。
在这里插入图片描述

五、档次、层和级别

档次、层和级别为多种不同应用提供了兼容性,规定了比特流必须要遵守的一些限制要求。
档次(Profile) 主要规定编码器可采用哪些编码工具和算法。分为三个档次(Main、Main 10和Main Still Picture)。Main支持每像素8比特的位深,4:2:0的采样格式,是最常见的档次。Main 10档次支持每像素8比特或者10比特的位深,4:2:0的采样格式。Main Still Picture档次支持单个静止图像,其按照Main档次规定进行编码。
级别(Level) 则是根据解码段的负载和存储空间情况对一系列的编码参数加以限制,如最大采样频率,最大图像尺寸,分辨率,最小压缩率等。在H.265/HEVC中定义了13个级别。
层(Tier) 主要分为两个,主层Main Tier和高层High Tier。 主层可适用于大多数应用,高层适用于高需求应用。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值