HEVC中CU、TU、PU划分和扫描方式简析

12 篇文章 4 订阅

作者:66

(转载请务必注明出处)

在进一步看代码前,先了解一下图像划分方式:

HEVC中,一帧图像分为多个slice,每个slice进行独立编解码。每个slice分为多个树形编码单元CTU,一个CTU分为一个亮度CTB和两个色度CTBCTB大小有163264CTU同)。进一步再划分为CU编码单元、PU预测单元、TU变换单元,使得编码、预测、变换分离,处理的时候更灵活。它们的关系时,CTU以四叉树方式划分为CUCU最大为64x64,最小为8x8CU以四叉树方式划分为TUPUTU最大为32x32,最小为8x8,其中PUTU无确定关系,允许TU跨越多个PU,但在帧内预测中一个PU可对应多个TU,一个TU至多对应一个PU。另外,HM中数据最小处理单元为4x4,而不是每次处理一个像素。

 

 图一.4x4最小单元

CTUCU的关系如图:

        

图二 CTUCU的划分

CU的大小在代码中用划分深度(下一篇代码中可见)来表示,PUTU的划分均基于CU。(Visio还没装上,这图抄网上的也不规范)

扫描方式:

前辈HEVC_CJL提到了帧内预测的扫描方式,感谢前辈,原文链接:http://blog.csdn.net/hevc_cjl/article/details/8183144

HEVC对像素有两种扫描方式:光栅扫描和Z扫描。指对像素的读取顺序,两种组织顺序如下:

 

  图三 Z扫描与光栅扫描

如图,左边为Z扫描,右边为光栅扫描。HEVC中为方便两种扫描方式数据转换,定义了转换数组g_auiRasterToZscan, g_auiZscanToRaster, g_auiRasterToX, g_auiRasterToY,即将上图中数据放到另一个组中对应的位置。转换数组如下:

 

    图四 RasterZscan的转换

 

     图五 Raster4x4块为单位的偏移

由上一篇的代码就能知道,HM处理数据按4x4块,如果不理解,去翻一下fillReferenceSample代码中参考像素不全部可用时的处理。


(转载请务必注明出处)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值