SCC(三):HEVC IBC

155 篇文章 138 订阅
66 篇文章 23 订阅

SCC(三):HEVC IBC

HEVC-SCC基于HEVC version 1和HEVC-RExt开发而成,并且继承了它们的编码结构和编码工具。

HEVC-SCC编码器结构如下:

 

HEVC-SCC是基于HEVC框架,并添加了几个新工具。新的编码工具如下:

  • Intra block copy(IBC):当CU使用IBC模式时,该CU的PU会在当前图像重建部分搜索最相似的块。IBC可以看作是在当前图像里做“运动补偿”。

  • Palette mode:对于屏幕内容,对于大部分块,其颜色可能在很小的范围内变动。因此plaette mode枚举出这些颜色值,对于每个像素只需要传输一个索引值表示其颜色。

  • Adaptive colour transform(ACT):因为大部分屏幕内容使用RGB颜色空间,所以去除不同颜色通道间的冗余能极大提高编码效率。在HEVC-SCC中,CU可以自适应转换颜色空间。也就是说,一个RGB空间的块可以直接编码,也可以转换为YCoCg空间然后编码。

  • Adaotive motion vector resolution:不同于相机拍摄的内容运动都是连续的,屏幕内容中运动经常是离散的是按像素运动的。所以对于大部分屏幕运动没必要进行分像素运动补偿。HEVC-SCC中可以在slice级控制运动向量是整像素还是分像素。

本文主要分析IBC编码工具。

IBC(Intra block copy)

IBC类似于帧间预测,不同之处在于IBC的参考像素来自于同一帧的重建像素(环路滤波前)。在HEVC-SCC中,IBC作用于PU级。

由于IBC是在当前块做预测,所以其有几个限制:

  • 预测块必须来自当前帧重建部分。

  • 预测块和当前CU必须在同一个slice和同一个tile中。否则,会存在不同slice或tile的依赖关系,会影响slice和tile的并行处理能力。

  • 预测块需要限制在下图中灰色区域内。这样可以避免影响波前并行处理能力。

  • 对于constrained-intra profiles,其预测块的像素必须来自其他帧内块或IBC块。

  • 块向量(Block Vector,BV)是整像素精度。

 

Intra block vector search

为了决定是否对当前CU使用IBC模式,需要对CU计算其率失真代价。在编码端使用块匹配(Block Matchong,BM)为每个PU寻找最优BV。根据PU尺寸,有以下三类BV候选项。

 

对每个候选BV计算其率失真代价:

 

注意,在本阶段只需要计算亮度分量的SAD。

选择RD cost最小的4个BV,继续按下面方式计算RD cost,选择最优BV。

 

注意,本阶段亮度和色度都进行SAD计算。

对于8x8 PU,可以在当前图像中满足上一节限制的区域里使用基于哈希的搜索方法寻找最优BV。hash table内的每个节点表示一个BV候选项在当前图像中的位置。只对和当前块有相同hash entry的BV候选项进行检查。hash entry长度为16 bit。

对于16x16 PU,只进行一维搜索,即BV中有一个分量为0,例如水平搜索或垂直搜索。

16-bit hash entry计算如下:

 

msb(X,n)表示X的最高n个有效位。dc0,dc1,dc2,dc3分别表示8x8块的4个4x4子块的DC值。grad_BLK表示8x8块的梯度。

梯度计算如下:首先,对于块内除了首行和首列所有像素计算gradX,gradX等于当前像素和左侧像素差的绝对值。然后计算gradY,gradY等于当前像素和上方像素差的绝对值。第二,每个像素的梯度grad等于其对应的gradX和gradY的均值。最后,grad_BLK等于块内所有像素grad的和。

感兴趣的请关注微信公众号Video Coding

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值