做了一段时间帧内,感觉对帧内预测的理解有加深了一些,今天来给帧内预测做个总结,也相当于巩固记忆啦。
相比起来,帧内预测真的是属于视频编码中最简单的模块了,内容也超级少,感觉最近帧内有点难做,性能提升都很少,第十次会议大部分的提案的性能都不高,而且大部分提案都集中于滤波,双向预测和多参考行预测这一块。
帧内预测的基本思想就是利用相邻像素的相关性去除空间冗余。在视频编码中相邻像素指的就是当前块周围的已编码块的重建像素。
帧内预测的过程可以分为4个部分,分别是:
1.参考像素的获取;
2.参考像素的平滑滤波;
3.利用参考像素计算当前块的预测值;
4.对上一步得到的预测块的边界做边界滤波;下面来详细介绍。
一.参考像素的获取:
如上图所示,当前CU的参考像素由5个部分组成,分别是当前块的左下一列的重建值,个数为W,当前块的左边一列的重建值,个数是H,当前块的左上角重建值,个数为1,当前块的上边一行,个数为W,当前块的右上一行,个数为H。总个数为2(W+H)+1。当然,有时候这5个部分的重建值不是都可用,比如在图像,Tile和slice的边缘时,某一部分的重建值或者全部的重建值都不可用,或者参考像素所属的编码块不是帧内预测模式且被限制不能作为帧内预测的参考块时,这时的处理如下:
1.如果5个部分的重建值都不可用时,则用1<<(bitDepth-1)来填充;
2.如果这5个部分中有部分可用部分不可用时,则先查看最左下角的重建像素值是否可用,如果可用,则从下往上遍历,不可用的重建值用其下方最相邻的像素值填充,到达左上角后,从左到右遍历,若有某点的重建值不可用,则用其左边最相邻的像素填充;
如果最左下角的重建像素值不可用,则先从下往上,从左往右一次遍历知道找到可用的重建值吗,将该重建值填充到最左下角的位置,然后重新开始从下往上,从左往右遍历,填充像素值