HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等
来源:互联网 发布:2.0音箱 知乎 编辑:程序博客网 时间:2024/04/28 07:30
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扫描地址递增的。
- HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等
- HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等
- HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等
- HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等
- 浅谈HEVC中的CTU CU PU TU
- HEVC之CU、PU、TU分析
- HEVC之CU、PU、TU分析
- HEVC之CU、PU、TU分析
- HEVC 常用之 CU、PU、TU分析
- HEVC之CU、PU、TU分析
- HEVC-I帧中CU,TU,PU之间的关系
- CU PU TU
- 【转载】CU、PU、TU划分显示代码
- HM在帧内预测中如何指定一幅图像作为一个slice,一个CU作为一个PU的
- HM在帧内预测中如何指定一幅图像作为一个slice,一个CU作为一个PU的
- HEVC中CU分割示例
- HEVC中CU分割示例
- HEVC中的CU结构
- 【scala 笔记(9)】 隐式转换 和 隐式参数-- implicit
- tensorflow不同版本安装与升级/降级
- 10-20-pm-C++开发面试题
- PHP类和对象之重载
- Linux下MySQL备份以及crontab定时备份(crontab表达式简介)
- HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等
- [bzoj2456][数论]mode
- 基于corosync+pacemaker实现nfs+nginx部署
- spring Boot thymeleaf模版使用过程
- android中如何下载文件并显示下载进度
- Nginx+Php-fpm运行原理详解
- java实现大数减法算法
- java中文字生成图片
- super的使用(一)