(一)

(1)   编码树单元(CTU)和编码树块(CTB)结构:

在之前的标准中,编码层的核心是宏块,一个宏块包含一个16×16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8×8的色度块;而在HEVC中类似的结构为编码树单元(CTU),其尺寸由编码器进行指定且可以比传统的宏块大。一个CTU包含一个亮度CTB和两个对应的色度CTB及句法元素。一个L×L的亮度CTB的L可以设置为16,32或者64。一般来说,L越大,可以获得越好的压缩性能。HEVC支持使用树结构和类四叉树的标志来将CTB划分成更小的块。

(2)   编码单元(CU)和编码块(CB):

CTU的四叉树句法指定了它所属的亮度和色度CB的尺寸和位置。四叉树的根与CTU相关联。因此,亮度CB的最大尺寸为其所属的亮度CTB的尺寸。对于一个CTU来说,其亮度CB和色度CB的划分标志都是使用的同一个。一个亮度CB通常和两个色度CB及它们相关的句法共同组成一个编码单元(CU)。一个CTB可能只包含一个CU,也可能被划分成多个CU,每个CU包含着与之相关联的预测单元(PU)和变换单元(TU)。

(3)   预测单元(PU)和预测块(PB):

决定一个图像区域是以帧间还是帧内方式进行预测是在CU层进行的。一个PU划分结构的根在CU层。根据基本的预测类型,亮度CB和色度CB可以继续进行划分并利用其它的亮度PB和色度PB进行预测。HEVC支持多种PB尺寸,最大为64×64到最小4×4。

(4)   变换单元(TU)和变换块(TB):

预测残差以块变换的方式进行编码。一个变换单元树结构的根在CU层。亮度CB残差的尺寸可能与亮度变换块TB的尺寸相等,也可能会被划分成更小的亮度TB。色度CB的情况也是一样的。定义了与离散余弦变换(DCT)类似的整数变换的基本函数提供给尺寸为4×4,8×8,16×16,32×32的TB。对于尺寸为4×4且残差由帧内预测得到的TB来说,一种以离散正弦变换(DST)为基础的整数变换可供采用。

(二)!!!

HEVC中的图像的分块分割方法

1、条带与区块

在HEVC的视频编解码过程中,一帧图像会被分割成条带(slice),条带片段(slice segment)和区块(tiles)进行处理。条带和区块都是可采取的独立分割形式之一。而条带则是由条带片段组成的元素,包括独立条带元素和依赖性条带元素两类。

上图即为一帧图像分割成条带的示意图。在该图中,该帧图像被分割成两个条带,其中第一个条带包含一个独立条带片段(包含4个树形编码单元CTU)和两个依赖条带片段;第二个条带包含一个独立条带片段。

区块是另一种区域分割方法,某个区块必须为矩形,由整数个CTU组成。对于条带和区块,或者所有同一个条带的CTU均属于一个区块(tiles),或者同属于一个区块的CTU均属于一个条带;类似的,或者同属于一个条带片段的CTU需属于一个区块,或者同属于一个区块的CTU必须属于同一个条带片段。下图是某一帧分割成左右两个区块的示例图,分别表示整帧图像仅包含一个条带以及每个区块分别包含多个条带的情况。

2、块与四叉树结构

树形编码块(Coding Tree Blocks, CTBs)是一帧中像素组织的基本结构。亮度CTB的边长、色度CTB的长和宽分别由参数CtbSizeY、CtbWidthC和CtbHeightC指定。对于每个CTB,都有一个块分割标识,用来表示预测和变换编码块的大小。分割从根(CTB)开始,进行四叉树分割,直至到达叶子节点(CB)。而CB又是预测树(Prediction tree)和变换树(Transform tree)的根节点,这两个树分别表示预测块和变换块的位置大小。

像素块和相应语法元素的封装格式可能有如下情况:

(1)三个预测块(亮度和色度)或者单一一个预测块(单色图像或separate_colour_plane_flag为1,也就是三个分量当做三个独立图像分别编码),与相应的语法结构组成一个预测单元Prediction unit(PU);

(2)一个或三个变换快(情况与以上类似),与相应的语法结构组成一个变换单元Transform unit(TU);

(3)一个或三个编码块CB,与相应的语法元素组成为一个编码单元coding unit(CU);

(4)一个或三个树形编码与相应的语法元素组成一个树形编码单元coding tree unit(CTU)

(三)HEVC的条带头解析

一个条带由整数个coding tree units组成的编码视频流的结构,包含一个非依赖性条带元素和0到多个依赖性条带元素。若当前某个条带元素属于非依赖性条带元素,或者是按照解码顺序在当前的依赖性条带元素之前的第一个非依赖性条带元素的slice element header被称作当前条带的条带头。另一方面,条带元素头中的数据应用于该条带元素中的第一个或者所有的coding tree units
以下是我们的实例中,一些参数的取值情况和意义
first_slice_sement_in_pic_flag: 当前为1,表示当前的slice element为该帧内按照解码顺序的第一个slice element;
no_output_of_prior_pic_flag: 决定是否输出非首帧IDR或BLA之后的图像数据;
slice_pic_parameter_set_id : 指定该slice参考的PPS的id值,取值范围为[0,63];当前值取0;
slice_type : 指定slice的类型,可能取值为0,1,2,分别表示B,P,I条带,当前为2,表示slice的编码类型为I;
slice_sao_luma_flag : 此处取1,表示对当前slice中的亮度分量启用SAO;
slice_sao_chroma_flag : 此处取1,表示对当前slice中的色度分量启用SAO;
slice_qp_delta : 决定了该slice中CB的初始量化参数,QP可能被coding unit层的参数修改;此处该参数为6,因此CB的初始QP为SliceQPY = 26+init_qpminus26+slice_qp_delta=26+0+6=32;
slice_loop_filter_across_slices_enabled_flag : 此处取1,表示环路滤波器可以跨越slice边界进行操作;否则只能在slice内部操作;

HEVC之tiles、slice、slice segment、CU、PU、TU分析相关推荐

  1. HEVC区域划分Slice Tile CTU CU PU TU

    Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...

  2. HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等

    接着来说HEVC的图像分割. HEVC的标准中有这么一段话,翻译过来就是: 图像分成分量(Y,Cb,Cr). 分量分成coding tree blocks 图像分成tile列 图像分成tile行 Ti ...

  3. 每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择

    CU PU TU划分以及PU最佳预测模式选择 在HM对CU进行划分(CU模式判别).PU模式选择(划分).以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍. HM进行块划分和模式选择主 ...

  4. 浅谈HEVC中的CTU CU PU TU

    从今天开始会陆续写一些对HEVC的认识的文章,小弟初来乍到,希望大家能够多多指点. 这两天看了block partitioning structure in the HEVC standard这篇论文 ...

  5. HEVC 片与片段(Slice 和Slice Segment)说明

    HEVC 片与片段(Slice 和Slice Segment)说明 一幅图像可以被分割为一个或多个片(Slice),每个片的压缩数据都是独立的,Slice头信息无法通过前一个Slice的头信息推断得到 ...

  6. HEVC编码结构:Slice和Tile

    1.Slice片段层 一幅图像可以被划分为一个或多个片或称为条带(Slice),每个片的数据编码都是独立的. 如下图,一幅图像被划分为N个Slice,Slice成条带形.在编码时,每一个Slice中的 ...

  7. HEVC里面CU与TU打印到屏幕及提取到txt文本

    测试模型为HM16.5 在解决方案资源管理器里面找到项目TlibEncoder,会看到里面有个源文件TencCU.cpp (1)打印到屏幕 (在TencCU.cpp的xCompressCU函数(237 ...

  8. HEVC 常用之 CU、PU、TU分析

    本文以下部分为翻译G. J. Sullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand, "Overview of the High Efficiency ...

  9. HM中CU,TU的划分

    转载于这位大神的博客,为了更方便的学习:http://blog.csdn.net/hevc_cjl/article/details/9839331 相信只要是做算法改进的,首先都会遇到这么一个问题:C ...

最新文章

  1. 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
  2. Ubuntu无法ping通外网可以ping通内网
  3. linux文件共享加锁,Linux共享数据管理——文件锁定
  4. 常见职位的英文简称_想进外企?英文简历少不了,看这里,教你英文简历的形式和技巧...
  5. Recurrent Neural Network(3):LSTM Basics and 《Inside Out》
  6. 在没有创建Provision Profile权限的情况下 发布Enterprise inhouse app 的方法
  7. 老李分享:Android性能优化之内存泄漏3
  8. 访问网站时出现Service Unavailable的解决方法
  9. 古诗词html模板,田圆格古诗词书法模板
  10. windows下基于selenium保存网页为图片
  11. GEOS库一些自己的见解和注意点
  12. Labview编程模式
  13. 在番看付费美女直播,不想花钱,我这样做了!
  14. myeclipse安装pydev实现python开发
  15. 量子物理史话 第三章 火流星
  16. TL-WR886N密码JS加密
  17. Triangle Fun UVA - 11437(一个数学定理 + 三角形求面积)
  18. [原]OpenGL基础教程(二)多边形绘制
  19. 计算机科学研究进展,理论计算研究获进展
  20. 高鹏清华计算机系,丁高鹏:强身健体为祖国健康工作五十年-清华大学新闻网...

热门文章

  1. 粉丝让我爬取热搜话题,结果做成了实时热搜『跑马灯』可视化
  2. c语言菜单 键盘,三、Windows键盘快捷键—处理菜单项
  3. 犀牛书第七版学习笔记:数据类型与结构-数字
  4. Mobvista发行价为4港元 拟12月12日港交所上市
  5. html 颜色混搭_混搭油漆调色板,教用户基本的颜色理论
  6. JWeb新闻的增删改查
  7. table_schem是什么意思
  8. 【云原生之企业级容器技术 Docker实战一】Docker 介绍
  9. 关于Mac上使用百度云下载速度慢的解决方案
  10. php接口增加白名单,使用laravel中间件来添加指定请求的白名单