VVC之SCC(一):IBC

VVC之SCC(一):IBC

Intra block copy(IBC)是屏幕内容编码(Screen Content Coding,SCC)的主要技术之一。IBC是块级的编码模式,在编码端会使用块匹配(Block Matching,BM)技术为每个CU寻找最优匹配块,并计算块向量(block vector)。块向量表明当前块和最优匹配块的位置关系。

当CU使用IBC模式编码,其亮度分量的块向量使用整数精度表示,色度分量的块向量四舍五入到整数精度。当结合AMVR技术时,块向量可以在1像素精度和4像素精度间切换。

IBC模式只用于亮度分量的宽和高都小于等于64的CU。

在编码端,可以对IBC模式使用基于哈希的运动估计技术。编码器会为宽或高不大于16的块进行RD检查。对于non-merge模式,首先使用基于哈希的搜索进行块向量搜索,如果哈希搜索没有返回有效的候选项则使用基于局部搜索的BM。

在基于哈希的搜索中,当前块和参考块间的哈希键值匹配(32-bit CRC)操作对所有允许尺寸的块进行。对当前图像所有位置的哈希键值计算都是基于4x4子块进行的。对于较大的当前块,只有其所有4x4子块的哈希键值与参考块对应位置哈希键值都匹配时,才将其作为匹配块。如果多个块的哈希键值都和当前块匹配,则选择块向量代价最小的一个。

在BM搜索中,搜索范围包括前面的CTU和当前CTU。

在CU级上有一个IBC标志位表示IBC AMVP模式或IBC skip/merge模式:

  • IBC skip/merge模式:一个merge候选项索引用于表示使用哪个相邻IBC块的块向量作为预测值。merge列表由空域、HMVP和pairwise候选项构成。

  • IBC AMVP模式:BVD(block vector difference)和MVD(motion vector difference)编码方式一样。块向量有两个候选预测值分别来自左侧和上侧IBC块。当两个候选项都不可用时,使用一个默认块向量作为预测值。需要传输一个标志位表示使用的块向量预测值的索引。

IBC参考区域

为了减少内存需求和解码复杂度,VTM5中仅允许在当前CTU和左侧CTU的部分重建区域使用IBC。下图表示IBC模式允许的参考区域,每个块都为64x64。

VVC之SCC(一):IBC_第1张图片

 

根据当前CU在CTU中的位置可分为下面4种情况:

  • 如果当前CU是CTU左上角的64x64的块,除了当前CTU已重建部分,CPR模式下左侧CTU的右下角64x64的块、左下角64x64的块、右上角64x64的块也可以作为参考。

  • 如果当前CU是CTU右上角的64x64的块,除了当前CTU已重建部分,如果相对于当前CTU的(0,64)位置还未重建,当前块也能参考CPR模式下左侧CTU的右下角64x64的块、左下角64x64的块;否则当前块也能参考左侧CTU的右下角64x64的块。

  • 如果当前CU是CTU左下角的64x64的块,除了当前CTU已重建部分,如果相对于当前CTU的(0,64)位置还未重建,当前块也能参考CPR模式下左侧CTU的右上角64x64的块、右下角64x64的块;否则当前块也能参考CPR模式下左侧CTU的右下角64x64的块。

  • 如果当前CU是CTU右下角的64x64的块,它只能参考CPR模式下当前CTU已重建部分。

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

VVC之SCC(一):IBC_第2张图片

 

你可能感兴趣的:(H.266/VVC,视频编码,h.265/hevc)