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

更新时间:2023-05-12 08:52:11 阅读: 评论:0

HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等接着来说HEVC的图像分割。
HEVC的标准中有这么⼀段话,翻译过来就是:
图像分成分量(Y,Cb,Cr)。
分量分成coding tree blocks
图像分成tile列
图像分成tile⾏
Tile列分成tiles
Tile⾏分成tiles
Tile分成coding tree blocks
图像分成slices
Slice分成slice gment
Slice gment分成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表格。详见
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 gment——简单(1)
Slice gment分成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在三个分量上进⾏划分
在的最后,我介绍了tile扫描⽅式,原因就在于slice gment包含n个CTU(coding tree unit)(见(1)),CTU按照tile扫描顺序排列。也就是说,在每个slice gment中,每解码⼀个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,xBa, yBa, log2TrafoSize, trafoDepth, blkIdx)结构,本⽂简称TT结构。
作为根节点,(x0, y0)等于当前CU的左上⾓坐标,(xBa, yBa)等于当前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, xBa, yBa,
log2TrafoSize, trafoDepth,blkIdx ),即TU。

本文发布于:2023-05-12 08:52:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/887216.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   分成   分量   图像   节点   等于   扫描   终端
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图