您的位置:首页 > 大数据 > 人工智能

HEVC的Availability计算过程

2016-04-22 10:07 513 查看
HEVC的intra预测和inter预测等等都要用的邻块的Availability信息。在文章HEVC的帧内预测(1)中已经写到了有关available的内容了,但是不够完整,把这部分内容归到intra预测中也不是很合适,所以单独写一篇文章描述这个过程,也正好对应标准6.4
Availability processes的内容。

1.z-scan order block availability

z-scan order block availability,就是在Z顺序扫描下的availability。

首先介绍计算MinTbAddrZs的方法

数组MinTbAddrZs表示以最小块(minimum blocks)为单位的z-scan 顺序地址,最小块的尺寸由变量Log2MinTrafoSize决定。

由以下公式得到:



其中:CtbLog2SizeY为ctb(coding tree block)的尺寸对数,MinTbLog2SizeY为最小的Tb(transform block变换块)的尺寸对数。ctbAddrRs为当前ctb的raster扫描地址,CtbAddrRsToTs[
ctbAddrRs ]就是将ctbAddrRs转化为了Ts(tiles)扫描地址(详见HEVC标准中的图像分割(1))。

其实这公式表达的意思就是当前以最小块为单位的坐标(x,y)的地址,此地址的寻址顺序在CTB内部为z-scan,在跨越CTB时为tile扫描顺序。举个例子,如图:



在图(1)中,黄色块代表当前的ctb,粗黑线标出了tile的边界,小方块代表ctb,黄色块代表(x,y)所在的ctb,即当前ctb,虚线箭头就是ts扫描的方向。则根据公式,当前ctb的ts扫描地址为24。

图(2)中,大的黄色块代表当前ctb,阴影块代表(x,y)所在的tb,假设CtbLog2SizeY = 4,MinTbLog2SizeY = 3,一个ctb中包含4个tb。(x,y)在当前ctb的地址为2。

所以MinTbAddrZs = 24 + 2 = 26吗?错!!!

因为前面扫描过的ctb都有4个tb,所以MinTbAddrZs = 24*4 + 2 = 98.

当前块左上角像素坐标(xCurr, yCurr),由以上MinTbAddrZs步骤计算出其最小块地址minBlockAddrCurr。

再计算左上角坐标为(xNbY, yNbY)的相邻块的最小块地址,minBlockAddrN

当相邻块位于图像范围外时,minBlockAddrN为-1,否则根据MinTbAddrZs方法进行计算。

如果有一个或者多个下列条件为真时,availableN 为FALSE

1. minBlockAddrN 小于0

2. minBlockAddrN 比 minBlockAddrCurr大

3. 相邻块所在的slice segment对应的SliceAddrRs和当前块所在的slice segment对应的SliceAddrRs不同。

4. 相邻块和当前块处于不同的tile。

否则, availableN为TRUE。

intra预测中用到的available信息用这一部分内容计算就可以得到了。

2.prediction block availability

prediction block availability就是说在预测过程用到的available信息,其实是特指inter预测中的available信息,不包括intra预测。

引入变量sameCb,如果相邻预测块和当前预测块处于同一个Cb,则sameCb为TRUE,否则为FALSE。

设当前预测块的availability为 availableN,如果sameCb为FALSE,以( xPb, yPb )(当前块地址)和( xNbY, yNbY )(邻块地址)为输入,代入第1部分计算得到的z-scanorder block availability即为availableN。

否则,当sameCb为TRUE时,如果当前coding block分为4个等大小的prediction block,当前prediction block的序号为1的时候,序号为2的prediction block的availableN为FALSE(标准中用了很长的一段条件描述,我概括了一下,应该是这个意思)。

除了此种情况外,availableN为TRUE。

最后,如果邻块的预测方式为intra,则availableN为FALSE。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: