接着来说HEVC的图像分割。

HEVC的标准中有这么一段话,翻译过来就是:

图像分成分量(Y,Cb,Cr)。

分量分成coding tree blocks

图像分成tile列

图像分成tile行

Tile列分成tiles

Tile行分成tiles

Tile分成coding tree blocks

图像分成slices

Slice分成slice segment

Slice segment分成coding tree units

coding tree unit分成coding tree blocks

coding tree block分成coding blocks

coding tree unit分成coding units

coding tree unit分成prediction units

coding unit分成transform units,

coding unit 分成coding blocks,

coding block 分成prediction blocks,

coding block 分成transform blocks,

prediction unit 分成prediction blocks,

transform unit 分成transform blocks.

看完了,你也许会说,这TMD说的些啥?都是罗圈话!别急,让我们read between lines。

图像分成分量(Y,Cb,Cr)——这个好理解吧,YUV三个分量

分量分成coding tree blocks ——注意了,每个分量的在几何上划分的单位,叫block

图像分成tile列——由SPS中的参数可知,一列tile具有相同的宽度

图像分成tile行——由SPS中的参数可知,一行tile具有相同的宽度,所以tile就像田字格一样把图像分成了很多格子,不同的是这些格子不一定是正方形,而是有点像空的excel表格。详见HEVC标准中的图像分割(1)

Tile列分成tiles——这个好理解,一行有n个tile

Tile行分成tiles——同上

Tile分成coding tree units——coding tree block,简称CTU,是解码的基本单位,是HEVC中相当于其他标准宏块的存在,注意是units,不是blocks,为什么呢?因为tlie有3个分量,当YUV结合在一起的时候叫unit而不是block

图像分成slices——简单

Slice分成slice segment——简单(1)

Slice segment分成coding tree units——同样是units,不是block

coding tree unit分成coding tree blocks——其实就是分成了YUV三个coding tree block

coding tree block分成coding blocks——coding tree block和coding block,coding block是coding tree block树形结构的终端节点,会在后面详细讲解。

coding tree unit分成coding units——coding unit是CTU树形结构的终端节点

coding unit分成prediction units——预测unit

coding unit分成transform units——变换unit

coding unit 分成coding blocks——CU包含YUV三个分量的coding blocks

coding block 分成prediction blocks——预测块

coding block 分成transform blocks——变换块

prediction unit 分成prediction blocks——预测unit在三个分量上进行划分

transform unit 分成transform blocks——变换unit在三个分量上进行划分

在HEVC标准中的图像分割(1)的最后,我介绍了tile扫描方式,原因就在于slice segment包含n个CTU(coding tree unit)(见(1)),CTU按照tile扫描顺序排列。也就是说,在每个slice segment中,每解码一个CTU,TS扫描地址加1。

这里引入几个SPS中的参数:

1. log2_min_luma_coding_block_size_minus3:加上3等于MinCbLog2SizeY,给出最小亮度CB(coding block)的尺寸。

2.log2_diff_max_min_luma_coding_block_size:给出最小亮度CB尺寸和最大亮度CB尺寸间的差距。

所以最大亮度CB的尺寸的对数为:

CtbLog2SizeY = MinCbLog2SizeY +log2_diff_max_min_luma_coding_block_size

3.log2_min_luma_transform_block_size_minus2:加2等于MinTbLog2SizeY,给出最小亮度变换块的尺寸。

4.log2_diff_max_min_luma_transform_block_size:给出最小亮度变换块尺寸和最大亮度变换块尺寸间的差距。

最大亮度变换块的尺寸不大于Min( CtbLog2SizeY, 5 )

Coding Tree Unit

CTU包含一个coding_quadtree(x0, y0, log2CbSize, cqtDepth)结构,即解码四分树形结构,在本文中,简称CQT结构。

对于CQT的根节点,(x0, y0)为CTU左上角坐标(单位:像素);log2CbSize为Ctblog2SizeY,即CTU尺寸的对数;cqtDepth为CQT的深度,为0。

变量split_cu_flag作为CQT的元素,可由码流解析得到。

如果split_cu_flag为1,表示CQT结构有分叉,分成4个CQT,一直循环嵌套,直到split_cu_flag为0。如下图所示:

其中,x1 = x0 + (1  <<  ( log2CbSize − 1 ) ); y1 = y0 + ( 1  << ( log2CbSize − 1 ) ).

在log2CbSize等于MinCbLog2SizeY时,即CQT的尺寸等于最小亮度CB尺寸时,split_cu_flag等于0,CQT结构分叉结束。即CQT终端节点的尺寸大于等于最小亮度CB尺寸。

若split_cu_flag为0,包含一个coding_unit( x0, y0, log2CbSize )结构。

Coding Unit

coding unit(下面简称CU) 在预测模式为inter时,可以分成prediction unit(简称PU),coding unit也分成transform unit(简称TU)。

Prediction Unit

参数part mode提供了PU的分块方式。如下表所示:

根据part mode得到了PU的分块方式,如下图所示。

Transform Unit

transform uint的划分也是四分树形结构,即transform_tree(x0, y0,xBase, yBase, log2TrafoSize, trafoDepth, blkIdx)结构,本文简称TT结构。

作为根节点,(x0, y0)等于当前CU的左上角坐标,(xBase, yBase)等于当前CU的左上角坐标,log2TrafoSize等于log2CbSize,trafoDepth等于0,blkidx等于0。

参数split_transform_flag可由码流解析得到。如果split_transform_flag等于1,则当前节点分成4个节点,如下图所示:

其中,x1 = x0 + (1  <<  ( log2CbSize − 1 ) ); y1 = y0 + ( 1  << ( log2CbSize − 1 ) )。

如果参数split_transform_flag等于0,则到达终端节点transform_unit( x0, y0, xBase, yBase, log2TrafoSize, trafoDepth,blkIdx ),即TU。

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

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

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

  2. 浅谈HEVC中的CTU CU PU TU

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

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

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

  4. HEVC标准概览-很概括很详细

    HEVC的设计兼顾提高编码效率.降低传输压力.增强丢包容忍性.优化并行处理在内的多个目标.  本章将简要描述HEVC实现这些目标的关键技术以及标准HEVC编码器的处理流程.  解码流程和具体的语法会在 ...

  5. H265/HEVC编解码系列(1):图像分割(Slice、Tile、CTU)

    H265/HEVC编解码系列(1):图像分割(Slice.Tile.CTU) 一.Slice 和 Slice Segment 二.Tile单元 三.CTU.CU 参考 一.Slice 和 Slice ...

  6. HEVC之tiles、slice、slice segment、CU、PU、TU分析

    (一) (1)   编码树单元(CTU)和编码树块(CTB)结构: 在之前的标准中,编码层的核心是宏块,一个宏块包含一个16×16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8×8的色度块 ...

  7. JM与h264标准中的关键字说明

    有些乱,先存着,留着看 如何结合H.264标准看JM代码>这个web文件,大家都应该有了吧.不过,那个web文档是"H.264乐园"群中聊天的内容 1.一个sps后,有若干个 ...

  8. SQL99标准中的查询(MySQL)

    SQL99标准中的查询 MySQL5.7支持SQL99标准: 一.笛卡尔乘积 笛卡尔乘积是指在数学中,两个集合 X 和 Y 的笛卡尓积(Cartesian product),又 称直积,表示为 X * ...

  9. C标准中一些预定义的宏,如__FILE__,__func__等

    C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏 意义 __DATE__ 进行预处理的日期("Mmm dd yyyy&q ...

最新文章

  1. opencv-mediapipe手部关键点识别
  2. 枚举集合的EnumSet
  3. python getopterror_python3 getopt用法
  4. C#.net同步异步SOCKET通讯和多线程总结(转)
  5. [译]介绍Spark2.4的用于处理复杂数据类型的新内置函数与高阶函数
  6. JavaScript循环结构(1)
  7. Excel 2010实战技巧精粹
  8. ❤️「Python」初阶,必看系列, 万字只为你,建议点赞收藏~❤️
  9. 如何用天气预警API接口进行快速开发
  10. 超声波测距原理与实现
  11. Android | Sensor.TYPE_ORIENTATION被废弃后的解决办法
  12. 《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
  13. 游戏中的镜头语言和应用
  14. 便携式显示器之手机云本 ----- 手机秒变电脑
  15. JAVA和MySQL实现公交管理_基于JSP公交管理系统的设计与实现(SSH,MySQL)(含录像)
  16. Linux中的if-then语句
  17. Character-Aware Neural Language Models
  18. 下半年重要的10大美国写作比赛不要错过
  19. pycharm 总弹出modify setUp的解决办法
  20. Windows server 2008、2012、2016、2019搭建sftp服务(超级简单)

热门文章

  1. 有趣的生活,有趣的比赛
  2. 【安全知识分享】突发事件救护疏散及避险逃生安全知识培训(55页).pptx(附下载)
  3. ONAP — 系统架构
  4. 欢迎hua@XUST加入XU安全组!
  5. CAN:SRR位有什么用
  6. EF框架实现登录记住密码+首页欢迎
  7. [zz]目前国内p2p视频直播软件
  8. 【机器学习实战】线性回归之北京市住房价格预测
  9. RK3588,6大亮点、8大应用方向
  10. 论文阅读|node2vec: Scalable Feature Learning for Networks