ISP(图像信号处理)学习笔记-帧内预测组合(视频编码入门)
转载小柴柴博主的博文
本文链接:https://blog.****.net/cxy19931018/article/details/80635898
PDPC(Position Dependent Intra Prediction Combination),位置决定的帧内预测组合
PDPC的基本原理是使用滤波后的参考采样生成预测值,再将此预测值和未滤波的参考采样进行加权平均得到最终的预测值。
帧内预测的基本思想就是利用相邻像素的相关性去除空间冗余。在视频编码中相邻像素指的就是当前块周围的已编码块的重建像素。
帧内预测的过程可以分为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个部分中有部分可用部分不可用时,则先查看最左下角的重建像素值是否可用,如果可用,则从下往上遍历,不可用的重建值用其下方最相邻的像素值填充,到达左上角后,从左到右遍历,若有某点的重建值不可用,则用其左边最相邻的像素填充;
如果最左下角的重建像素值不可用,则先从下往上,从左往右一次遍历知道找到可用的重建值吗,将该重建值填充到最左下角的位置,然后重新开始从下往上,从左往右遍历,填充像素值,规则和上述相同。
二. 参考像素的平滑滤波
为了提高帧内的预测效率,减少噪声对预测的影响,提高预测的精度,对参考像素进行平滑滤波。平滑滤波器其实是一个低通滤波器。
进行平滑滤波是分很多情况的,并不是所有情况下都进行平滑滤波的,266中进行平滑滤波的条件是:
1.亮度分量;
2.大小在4*4到128*128之间;
3.不是DC模式
4.如果是2*2的块,则不进行平滑滤波;
如果是4*4的块,则不进行平滑滤波;
如果是8*8的块,则模式1,2,3,33,34,35,65,66进行滤波,其他模式不滤波;
如果是16*16的块,则模式1,2-15,21-47,53-66进行滤波,其他模式不滤波;
如果是32*32的块,则模式1,2-17,19-49,51-66都进行滤波,其他模式不滤波;
如果是64*64的块,则不进行滤波(想不通);
如果是128*128的块,则滤波模式和32*32的块相同;
平滑滤波又分为两种,一种是常规滤波,一种是强滤波,如下图所示,左边是常规滤波,即将当前参考像素和左右两边的参考像素进行【1 2 1】的三抽头滤波,右边是强滤波,即当前像素用左上方和最右(最下)的参考像素加权平均得到,其中权重与当前像素距离最两角的距离成反比;
其中,强滤波的使用是需要满足一定条件的:
1.亮度分量
2.(abs(A+C-2B)<threshold)
(abs(C+E-2D)<threshold)
其中,threshold=1<<(bitDepth-5),A为左下部分的最下角的参考像素,B为左方的最下角的参考像素,C为左上角的参考像素,D为上方的最右边的参考像素,E是右上方的最右的参考像素。
3.块的大小大于等于32*32
可以看出,强平滑滤波用在低纹理区域,通过用沿着每个方向的线性内插值取代真是参考值,取消了小的局部变化,这样的变化尽管很小,但是在32*32的大样点区域上进行帧内预测,还是可以产生可见的结构性失真的。
三.预测值的计算
预测值的计算分成三种,分别是DC模式,PLANAR模式和角度模式
DC模式的计算:适用于平坦区域,即将当前块的上方和左方的参考像素计算一个均值,该均值作为当前块中每个点的预测值。
PLANAR模式的计算:适用于缓慢变化的区域,即根据a,b,c,d求加权平均,权重与距离有关;
角度模式计算:适合纹理比较复杂的区域,先以简单的对角模式66为例,计算当前块中点的预测值的过程起始是投影的过程,将的那个块中的点按照模式66的预测方向45度往参考像素上投影,投影到哪个参考像素,则该参考像素值就是该点的预测值,因为预测角度是45度,所以模式66种当前块的所有点分投影在参考像素是都是整像素位置。
再举个比较复杂的例子--模式21,为了减少的复杂度,先将参考像素统一到一维上,即对于垂直类预测模式35--49,将左方的参考采样投影到上方,对于水平类预测模式19--34,将上方的参考采样投影到左列,得到一维的参考像素后,即可进行预测值的计算。与模式66相似,计算预测值的过程其实也是反投影的过程,但是在模式21里,预测角度并不是45度,所以投影到参考像素上有两种情况,一种是投影到参考像素的整像素位置,一种是投影到参考像素的分像素位置。投影到整像素位置,也是直接将参考像素值作为预测值,如果是分像素位置,则要通过左右两边两个像素插值得到预测值,其中插值系数w1,w2与投影位置与两边像素的距离有关。
四.预测块的边界滤波
为了块边界的连续性,对预测得到的预测块的边界进行边界滤波,分为3种
DC模式:
左上角: P[0]=(P[-1]+P[-stride]+2*P[0]+2)>>2;
第一行:P[x]=(3*P[x]+P[x-stride]+2)>>2;
第一列:P[y]=(3*P[y]+P[y-1]+1)>>2
(近)水平/垂直模式:即将参考采样中存在的增大或者变小的趋势也添加到边界中,下图以垂直模式为例。
(近)水平模式(10,9,11):对第一行的预测值进行滤波
(近)垂直模式(26,24,26):对第一列的预测值进行滤波
(近)对角模式:越接近对角模式,第一行或者第一列与其相邻的参考像素之间的差距越大,所以需要与参考像素进行滤波以减少边界的不连续性,下图以模式66为例。
模式2及其相邻的8个模式(3,4,5,6,7,8,9,10): 对第一行进行边界滤波(模式2是对前四行)
模式66及其相邻的8个模式(58,59,60,61,62,63,64,65): 对第一列进行边界滤波(模式66是对前四列)
————————————————
版权声明:本文为****博主「小小柴」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/cxy19931018/article/details/80635898
本文链接:https://blog.****.net/yolo_life/article/details/81392295
JEM中,将planar模式预测所得结果进行进一步修正。PDPC是帧内预测方式,它将未滤波的边界参考样本和HEVC的有滤波边界参考样本结合进行预测。
PDPC的标志如图。r和s表示未滤波和滤波的边界样本。q(x,y)是HEVC基于滤波参考边界样本s的帧内预测 (JEM中只有planar模式) 。x和y是到边界的水平和垂直距离。
1、首先通过未滤波的样本得到滤波样本,即通过r求得s。
三个预先定义低通滤波器中的一个被用来平滑边界样本。三个滤波器包括3,5,7抽头。平滑滤波器的选择是基于块大小和帧内预测模式的。Hk是滤波器的脉冲响应,额外存储的参数a,滤波器参考计算为:
s=ar+(1−a)(hk∗r)s=ar+(1−a)(hk∗r)
*代表卷积。
2、通过s采用HEVC中预测方法得到planar模式的初步预测结果q。
3、预测最终结果p(x,y),需结合带权重的未滤波边界元素值和q(x,y):
c1-4是存储的预测参数,dx=1:块宽小于等于16,dx=2:块宽大于16,dy=1:高小于等于16。从公式中不难发现,将未滤波与滤波边界进行结合,是通过先得到滤波后的预测,再与未滤波边界样本进行计算达到的。b(x,y)昰归一化因子:
预测参数的一个集合(cv1c1v,cv2c2v,ch1c1h,ch2c2h,a 以及滤波器索引k),一个块大小一个。全部参数的总存储占据30字节。
————————————————
版权声明:本文为****博主「Veronica_o_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/yolo_life/article/details/81392295