HEVC中的编码结构-编码时的分层处理架构

引言

我们都知道HEVC里有很多语法结构,为什么要设计那么多的语法结构呢?答案是为了增强操作的灵活性和数据损失的鲁棒性。这些语法架构使得HEVC在压缩效率网络适应性都有显著提升。

编码时的分层处理架构

GOP

视频序列由时间连续的图像构成,这些图像首先会被分成若干组,每一组图像集合就是一个GOP(Group of Pictures)。

GOP分为封闭式GOP和开放式GOP,封闭式的即每个GOP之间独立编解码,开放式的GOP则后面的GOP中的图像可以使用前面的GOP中图像作参考。

封闭式GOP第一帧为IDR图像,开放式GOP第一个GOP第一帧为IDR图像,后续GOP第一个帧内图像为non-IDR图像。所谓IDR图像就是一种特殊的帧内编码图像,其后面的图像不能参考IDR之前的图像。
在这里插入图片描述

Slice

一个GOP中有多帧图像,每一帧图像会被划分为一个或多个Slice。每个Slice之间独立编解码,即不需要依靠其他Slice的信息,因此每个Slice都需要进行熵编码的初始化。

划分为Slice的主要目的是为了在数据丢失后能再次保证解码同步,且有利于并行运算。

Slice根据类型可以分为I Slice,P Slice,B Slice。

  • I Slice里所有CU使用帧内预测,其余两种Slice里的CU可以使用帧内或帧间预测
  • P Slice里所有帧间预测的预测块只能有一个运动补偿预测信息。P Slice只能有一个参考图像列表。
  • B Slice里所有帧间预测的预测块最多可以有两个运动补偿预测信息,B Slice可以使用两个参考图像列表。

SS(Slice Segment)

每个Slice会被划分为一个或多个SS,且有一个独立的SS和若干个依赖SS组成,且以独立SS为Slice的开始部分。每个SS由多个CTU组成(至少一个)。一个SS的编码数据组成一个NAL单元传输。

  • 独立SS,其相关信息可以由自己确定
  • 依赖SS,其某些相关信息需要用到独立SS的信息推导

在这里插入图片描述

CTU(Coding Tree Unit)

由一个亮度CTB(Coding Tree Block)和两个色度CTB及相应的语法元素组成,尺寸默认为64x64,可以通过编码器配置。一个SS会被分割成若干个相同大小的CTU进行编码。

CU(Coding Unit)

由一个亮度CB(Coding Block)和两个色度CB及相应的语法元素组成。CU由CTU通过四叉树的形式划分而来。一个CTU可以作为一个CU,也可能进一步划分为多个小的CU。CU尺寸默认最小为8x8,最大为64x64,也是可以配置的。
大尺寸CU使得平缓区域编码效率大大提高,小尺寸CU可以更好地处理图像局部细节
在这里插入图片描述

Tile

图像出了划分成Slice还能划分成Tile,Tile是一个矩形区域,包含整数个CTU,可以独立解码。其主要目的是为了增强并行处理能力,同时不引入新的错误扩散
在这里插入图片描述
Slice和Tile需要至少满足以下两个条件之一:

  • 一个Slice中的CTU属于同一个Tile
  • 一个Tile中的CTU属于同一个Slice
    在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值