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



H.265的标准可以从网上免费下载。

        这里写一些我个人对HEVC(H.265)标准的解读,难免有些错误,欢迎大家积极积极留言讨论。

        图像分割,就是说一帧图像从几何空间上在标准中是如何划分的。

与h.264不同,265引入了tile的概念。

        首先,图像被分成slices和tiles。

        一个Slice包含一个slice segment或者以一个independent slice segment为首一系列的slice segments。

        Slice和tile都由一系列的coding tree units组成,简称CTU(相当于以前宏块的概念)。

        例子a1,如下图中,图像被分成了两个slice,第一个slice又分成了3个slice segments,其中第一个slice segment是一个包含4个coding tree units的independent slice segment。而第二个slice只有一个slice segment。


        例子a2,如下图(a)中,图像被分成2个tiles,图像只有一个slice,包含一个independent slice segment和四个dependent slice segments。

        图(b)中,图像也被分成了2个tiles,第一个tile有一个两个slices,第二个有一个slice。


(a)


(b)

        Tiles异于slices的一点是,tiles必须为长方形。而且通过分析后续标准中关于语法元素的介绍,可以肯定,tiles的划分必须满足每一行的tiles有相同的高度,每一行的tiles有相同的宽度。

标准中给出了一下条件来约束slices和tiles的相互关系。

对于每个tiles和slices,以下条件至少满足一条。

——一个Slice所有的coding tree units都属于同一个tile。(注:本文中用条件a代指)

        ——一个tile所有的coding tree units都属于同一个slice。(注:条件b)

对于每个tiles和slices segment,以下条件至少满足一条。

——一个Slicesegment所有的coding treeunits都属于同一个tile。

        ——一个tile所有的coding tree units都属于同一个slice segment。

       这些条件显得较为抽象,可以通过例子来具体分析。


        例子b1,如图所示:每个小方块为一个CTU, 图像分割为两个slices,slice0(6x2)和slice1(6x4)。4个tiles,tile0(3x2),tile1(3x2),tile3(3x4)和tile4(3x4)。

                此图像满足条件b,而不满足条件a。所以此例符合标准。


         例子b2,如图所示:图像分割为两个tile,tile0(3x6),tile1(3x6)。4个slice,slice0(包含11个coding tree units),slice1(包含7个coding tree units),slice2(包含8个coding tree units)和slice3(包含10个coding tree units)。

                 此图像满足条件a,而不满足条件b。所以此例符合标准。


         例子b3,如图所示:图像分割为两个slices,slice0(6x3)和slice1(6x3)。两个tiles,tile0(2x6)和tile1(4x6)。则条件a和条件b都不符合。所以不符合标准。


        前面提过tile的一些特质,下面详细介绍。变量colWidth[ i]标明各个tile的宽度,单位为CTU。可由语法元素uniform_spacing_flag,num_tile_columns_minus1,column_width_minus1[ i ]和PicWidthInCtbsY计算得出。变量colBd[ i ]标明各个tile横向的边界,可由colWidth[ i ]计算得出。

        变量rowHeight [ j]标明各个tile的高度,单位是CTU。可由语法元素uniform_spacing_flag,num_tile_rows_minus1,row_height_minus1[ j ]和PicHeightInCtbsY计算得出。变量rowBd[ i ]标明各个tile横向的边界,可由rowHeight[ i ]计算得出。

        其中的关系可一目了然的从下图看出。

       数组CtbAddrRsToTs[ctbAddrRs ]将以CTB为单位的光栅扫描地址转化为tile扫描地址。下图中,左侧为光栅扫描,右侧为tile扫描。最小的方块代表一个CTU,图像分成了4个tile。


为什么要做这个转化呢?因为在HEVC的码流中,CTU编码顺序就是按照这个tile扫描地址递增的。



转自:http://blog.csdn.net/qq_32430349/article/details/50623927

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值