精华内容
下载资源
问答
  • H.264帧内预测模式的快速选择算法,程飞,,H.264视频压缩编码标准比先前的H.261和H.263标准有更好的编码效果。这主要归功于H.264标准中在编码过程中采用的大量复杂的编码压缩方法�
  • HEVC帧内预测

    2015-07-10 10:58:29
    HEVC是新一代视频编解码标准,帧内预测时期中关键技术之一也是我们优化的算法的关键环节,所以了解帧内预测是非常重要。
  • 首先,介绍了新一代视频编码标准(HEVC)帧内预测算法中的Angular预测模式、Planar预测模式和LM 预测模式,以及帧内率失真代价最优化(RDO)计算方法。本文采用了绝对误差和(SAD)作为代价函数对残差进行处理,初步筛选...
  • 一种HEVC帧内预测模式选择快速算法 ,王中刊,赵旦峰,与上一代视频编码标准H.264/AVC相比,新一代视频编码标准HEVC/H.265的压缩效率提高了近50%。但是由于编码时高计算复杂度带来的高延时问��
  • 在本文中,提出了一种用于帧内预测的自适应块编码顺序。 包括最新的高效视频编码(HEVC)在内的现代视频编码标准在帧内编码期间在处理块中使用固定的扫描顺序。 但是,固定的扫描顺序通常会导致带有明显边缘图案的...
  • 帧内预测

    千次阅读 2018-04-17 10:04:06
    为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是...帧内预测是利用视频空间域的相关性,使用同一图像邻近已编码像素预测当前的像素,以达...

    转载于:https://www.cnblogs.com/charybdis/p/6049108.html

    为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色。而进行视频编码,目的就是利用这个相关性,来进行压缩。帧内预测是利用视频空间域的相关性,使用同一帧图像内邻近已编码像素预测当前的像素,以达到有效去除视频时域冗余的目的。

    很好理解,存储一个像素的亮度值可能需要8个bit,但是如果相邻的两个像素变化不大,我存储一个像素的原始值,以及第二个像素相对第一个像素的变化值,那么第二个值我可能用2个bit就够了,这就节约了很多的空间。而节约存储消耗的bit数,也就是节约码率,贯穿了H.264编码器的所有过程,不管是帧内预测、帧间预测、变换、量化、熵编码,一切的一切都是为这个目的服务的,明白了这一点,我们就能轻易的理解H.264编码器,所有看上去复杂难懂的地方,都是为了一个目的——节约码率。

    说回到帧内预测,帧内预测的流程见下图

    首先,是上图中蓝色的部分,假设现在我需要对一个像素X进行编码,在编码这个像素之前,先假设我已经有一个参考像素X’了,这个参考像素与同一帧的临近像素有关,根据参考像素X’的值,我得到了一个预测值Xp。

    然后,是上图中红色的部分,我用编码的像素X减去预测值Xp,得到了残差d,这个残差d代替原始值X被编码进最终的图像,起到了节省码率的作用

    最后,是上图中黑色的部分,残差d和预测值Xp相加,得到了X’,用于下一个像素的预测。

    总结起来就是三步:

    1、以同一帧图像内的临近像素作为参考,计算预测值Xp

    2、原始值X和预测值Xp的差值d,被传递到解码端

    3、解码端接收到差值d,将其与预测值Xp相加,就得到了“原始值”X’,X’=Xp+d

    注意:此处只是画出了帧内预测这一部分的流程,参考帧X’真正是由残差d做了变换量化和反量化反变换后与预测值Xp相加得到的。

    步骤很简单,但是里面有几个问题要明确,首先要知道的是,我们固然可以按像素来进行预测,但是这样太费事了,要计算很多次,而且由于帧内预测的特性,你要预测当前的像素,能参考的像素只能是它的临近像素,也就是前面已经编码完成的,它后面的像素还没有编到,所以自然是不能用来编码当前像素的,因此我们只能一个像素一个像素进行编码,编完了一个才能编下一个,这样显然会很慢。于是H.264标准中提出按块进行计算,一个宏块是16x16像素,然后它可以分成子块,最小是4x4的(这个大小是对于亮度编码而言,至于色度编码,4:2:0格式的色度宏块的长和宽都是亮度宏块的一半),这样也能大大提高计算速度。因此下面提到的“值”可以代表“像素”也可以代表“块”,从原理上来说是一样的,而实际采用的是“块”,因此我也就统一用块这个词了。

    我们从上面三个步骤从头开始一点点找问题

    1、这个参考值X’是怎么来的?答案是在第三步里,使用Xp和传递过来的残差d相加得到的,这个X’用于后面的块编码时的参考。

    2、预测值Xp是怎么从X’获得的?答案是根据X’,通过某个公式计算得到的。而这个X’并不是只有一个块,而是有左侧、左上、正上、右上一共四个块作为参考。

    3、上面提到的这个某个公式是什么?根据白皮书,Intra(帧内预测)有两种,一种是4x4大小的亮度块,一种是16x16大小的亮度块。

    对于4x4大小的亮度块,我们有9种预测模式,如下图所示

    对于预测模式0(vertical),当前块的十六个像素值,完全由其上方块最后一行的那四个像素值决定,第一列所有的Xp值都等于A,第二排都等于B,以此类推。

    预测模式1(horizontal)也是一样,完全由图中IJKL四个像素值决定。

    对于预测模式2(DC),则十六个像素值完全相等,等于ABCDIJKL这八个像素的平均值。

    对于预测模式3-8,倾斜方向的,各个像素是由A到L像素通过权重不等的公式加权计算的

    比如对于模式3(diagnal down-left)来说,a=(A+2B+C+2)/4,这里+2代表四舍五入,b和e=(B+2C+D)/4,cfi=(C+2D+E+2)/4,dgjm=(D+2E+F+2)/4,hkn=(E+2F+G+2)/4,lo=(F+2G+H+2)/4,p=(G+2H+H+2)/4=(G+3H+2)/4

    对于模式4(diag down-right),加权系数也是(1,2,1)/4,afkp用IMA三个像素计算,以此类推

    对于模式5(vertical right),aj=(M+A+1)/2,同理bk是AB均值,cl是BC均值,d是CD均值(因为这几个像素延长线都不在预测用的13个像素里面)。en在M的延长线上,所以等于(I+2M+A+2)/4,同理fo\gp\h\i\m都可以计算出来

    同理模式6、7、8也基本跟5一样,注意对于模式8来说,klmnop四个像素都等于L,因为其延长线在L的下面和前面,没有可以平均的像素,于是只好用L一个值代替了。

    还有一点要注意的是,这里面A到L的像素有的没有怎么办?对于模式2(DC),有什么用什么,反正是求均值就对了。其余的模式就必须用到的那几个像素都存在才行(EFGH四个像素可以不存在,此时认为都等于D)

    最终,我们要选择哪种模式进行预测?为了在后面节约码率考虑,当然是预测的越准越好,也就是选择Xp和X’差距最小为好。而评判这个差距其实也有好几种算法,比如SAD、SATD等,等到了变换那里再详细说。总之我们用一个公式把上面9种模式的预测都评价了一番,选出里面最好的一种,作为4x4帧内预测的选择。

    我们注意到这里有9种模式,之后要进行编码的话,我们除了把残差编进去,总得知道我预测的时候用了哪种模式吧,9这个数就尴尬了,因为刚好三个比特可以表示8种,四个比特可以表示16种,所以3bit不够4bit又浪费了。怎么办呢?有个方法就比较巧妙,我有1bit用来表示我当前用的模式和前面的是不是一样的,因为经常有这样的情况,我前面块用的预测方向和现在这个块用的预测方向一样(比如物体边缘是一条直线,那么对应的那几个块用的预测方向很可能都是一样的),如果一样,我只用1bit就足够存储了,如果不一样,我再用用4个bit存储,也就达到了节约bit的目的。

    说完了4x4的亮度块,我们看看16x16大小的亮度块。16x16亮度块有四种模式,如下图

     

    前面三种很好理解了,重点是第四种plane的计算方式,从图上看大概能理解,不过具体算法我还不是很理解。

    我们假设左上角起,上方那一行是17个像素是a1 b2 c3 d4 e5 f6 g7 h8 i9 j8 k7 l6 m5 n4 o3 p2 q1,用这17个像素计算一个H值。

    我在上面标了1~9~1的数字,有数字相同的8对像素,后面计算的时候,都是一对对的计算的。

    i9;j8 - h8;k7 - g7;l6 - f6;m5 - e5;n4 - d4;o3 - c3;p2 - b2;q1 - a1,这九对分别乘以权重0到8(也就是i9这个像素没有用到),而最左边和最右边两个像素权重最大。

    同理V值,也是一样的算法,从上到下像素记作带’的(当然a1’ = a1)。

    然后计算一个A值,它等于右上角(q1)和左下角(V值计算时候对应的那个q1’)的和乘以16

    计算一个B值,它等于(5*H+32)/64,计算一个C值,C=(5*V+32)/64,这种后面加了32又除以64的,其实都是用来四舍五入的。

    然后就能计算我们的预测值了。

    i00 = A - 7*B -7*C + 16

    pix[0][0] = i00 / 32(超出0到255范围的要截断成0或者255)

    然后计算第一行十六个像素分别是i00 + B到i00 + 15*B,然后除以32(然后截断到0~255)

    第二行是在第一行基础上加了一个C,一直到第16行,加了15个C,于是这256个像素都算出来了。

    这就是plane方式的算法。算出来结果就跟下图一样。

      

    对于色度块是亮度块的四分之一,也就是8x8的,那就只有一种了,预测模式也跟亮度16x16块的类似,有四种,只不过具体的序号不一样而已。是0代表DC,1代表horizontal,2代表vertical,3代表plane。

    plane的算法和上面16x16的类似,只不过系数变了,而且两个色度块用的方式一定都是一样的。

    好了,我们回到前面的帧内预测的步骤,还有几个问题没有解决

    4、重建值X’和原始值是不是一样的?答案是不一样,因为d在传到解码端的过程中经过了量化、变换、反变换和反量化,有了精度的损失,因此Xp+d得到的X’跟原始的X是不一样的。这也是为什么要用重建值X’来得到Xp而不是用原始值X。因为解码器那边在解码图像的时候,用到的是有损的X’获得Xp,如果编码器用无损的X来得到Xp的话,那么得到的残差d在编码侧和解码侧就不一致了,这个误差扩散到了下一个块里。

    好了,这样上面的步骤就组成了一个循环,可以一直编码下去了,当然最开始没有参考的那个块,其预测值Xp又是怎么来的呢?可以有一种方式叫做DC128,也就是认为这个块的每个像素都是0x80,然后依据此来计算。

    实际上对于一个16x16的宏块,上面这个16x16的四种模式和它16个子块(大小4x4)的9种模式都会算一遍,然后用16个子块的SATD最小值和16x16的四种模式的SATD最小值比较,选择更小的那个,所以这里面计算量还是很大的。x264源代码里有很多节约计算量的设计,不过这些就得看代码了,白皮书里面是没有的,以后再做研究。

    另外x264里面还有Intra8x8亮度块的模式,这种我认为应该也是为了找到一个预测最准的模式而加进去的,而且也不常用,所以也就不多介绍了。

    回过头来看最开始的那个步骤图,跟白皮书里给的编码器流程图,是不是正是编码器的一部分呢?

    展开全文
  • 针对视频编码系统编码运算复杂度高的问题,提出了1种基于图像边缘方向检测的帧内预测快速选择算法。该算法通过对图像边缘最佳预测方向的选择,极大地降低了编码的运算量和复杂度。仿真表明,该算法与全搜索算法和...
  • 帧内预测的三种快速算法,做了一个综述。很好理解
  • 基于帧内预测模式标定的视频隐写分析
  • 帧内预测解析

    2013-01-17 10:26:39
    本文详述了H.264视频编解码标准技术中的帧内预测;在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。对亮度像素而言,P块用于4×4子块或者16×16宏块的相关操作。
  • 帧内预测是H.264视频编码标准的重要组成部分。为了保证在图像质量和编码比特率大致不变的前提下,减少帧内预测模式选择的编码时间,提出了一种基于[4×4]块的纹理方向性和[4×4]块与[16×16]块之间的相关性并通过...
  • 基于决策树的HEVC帧内预测模式修剪快速算法
  • 基于帧内预测模式的HEVC大容量信息隐藏算法
  • H.265帧内预测文档

    2018-09-05 17:32:23
    H.265帧内预测总结文档,对H.265帧内预测方式及运动矢量处理做一些详细总结
  • H.266/VVC帧内预测总结

    千次阅读 2020-08-12 19:11:53
    最近大致看完了帧内预测相关的技术及相关代码,做个总结。 1、初始化帧内预测参数 通过initPredIntraParams函数进行初始化帧内预测参数,代码参考如下: ... 2、获取参考像素及对参考像素进行滤波 ...

    一、帧内预测基本原理

    帧内预测技术是利用同一帧中相邻像素的相关性,利用当前块相邻区域的重建像素预测当前块中像素的技术,如下图所示,当前CU可以利用相邻A、B、C、D和E位置处的重建像素来预测当前CU中的像素。通过帧内预测之后,再将预测残差通过变换、量化等,可以有效地去除视频的空间冗余。

     二、H.266/VVC的帧内预测技术

    帧内预测是利用的视频的空间相关性,利用当前图像已经编码的像素预测当前像素,VVC的帧内预测方法主要分为两种方式:

    • 利用相邻(左边和上方)已经编码的像素预测当前像素(如角度预测模式)
    • 利用已经编码的颜色分量预测当前颜色分量的像素(如CCLM模式,用Y分量的像素预测色度分量的像素)

    为了提高帧内预测模式的性能,VVC中的帧内预测模式改进主要有以下几点:

    1. 引入了更大尺寸的预测块
    2. 为了提高预测的精度,引入了更多的参考像素(MRL多参考行模式),针对参考像素的处理,使用了新的滤波技术(MDIS
    3. 引入了更多的方向性(65种角度预测模式
    4. 引入了跨分量预测(CCLM模式
    5. 引入了神经网络的思想(MIP技术
    6. 对预测后的像素进一步改进(PDPC技术
    7. 更小预测和变换块(ISP技术

    1. 角度预测模式

    为了捕捉自然视频中呈现的更多的边缘方向,VVC在HEVC的33个角度预测模式的基础上,将角度预测模式扩展到了65个,再加上Planar模式和DC模式,共67个传统模式。

    (1)角度预测模式的编码

    为了减少模式编码的比特数,VVC沿用了HEVC中的构建MPM列表的方法,并将MPM列表的长度扩展到了6。首先根据空间相邻块的帧内预测模式,构建MPM列表,如果当前待编码的模式在MPM列表中,则仅编码其在MPM列表中的索引即可;如果不在MPM中而是在61个non-MPM模式中,则使用截断二元码(Truncated Binary Code ,TB)编码其模式。

     (2)针对矩形块的宽角度模式(Wide-angle intra prediction for non-square blocks)

    VVC中引入了非方形块,对于水平块(宽度大于高度),上边的参考像素使用概率大于左边参考像素的使用概率,对于垂直块(高度大于宽度),左侧的参考像素使用概率大于上侧的参考像素使用概率。并且,对于方形块在45度(模式2)附近和-135度(模式66)附近的预测角度,用在矩形块时,其对应的参考像素通常会超出(2W+1)或(2H+1)的参考像素范围。

    针对矩形块,VVC引入了宽角度模式,如下图所示。对于那些方形块在45度附近与-135度附近的预测角度,用在当前长方形块上会导致超出原有 (2W + 1) 或(2H + 1) 的参考样本范围的,会将其重新映射成同一预测角度延长线上利用另一侧(或宽边或长边)的参考像素的反向预测角度,如下图所示。

     (3) 模式相关的帧内预测平滑 (Mode Dependent Intra Smoothing MDIS)

    与HEVC类似,VVC也采用了两种针对参考像素的滤波器:一种是对参考像素进行平滑滤波的[1 2 1]/4滤波器,另一种是对非整数位置处参考像素的插值滤波器。其中,插值滤波器又包括三次插值滤波器和高斯插值滤波器,三次插值滤波器能保留更多细节纹理,高斯插值滤波器的滤波效果更为平滑。对于一个给定块,只能对其使用平滑滤波器或者插值滤波器的一种,以避免由于连续应用两个过滤操作而导致的延迟增加。

    滤波器的选择和使用与预测模式有关。具体地,平滑滤波器仅用于亮度块的整数预测角度,而插值滤波器仅用于分数角度预测模式,如下图所示,其中实线是整数角度模式,虚线是分数角度模式。

     对于整数预测角度模式,当预测块的像素数超过32时,需要使用[1 2 1]/4平滑滤波器对参考像素进行平滑滤波。

    对于分数角度预测模式,如果在进行预测时,给定角度方向的像素投影到参考像素的分数位置时,如下图虚线所示,此时需要使用插值滤波器对分数位置处的参考像素进行插值。对于亮度块,使用4抽头的插值滤波器,预测像素pred(x,y)的计算如下图所示,这里这里,i0 表示预测样本投影在参考样本中最接近左侧整数的位置,p∈ {0, . . . ,31},以1/32像素精度构成预测像素投影的分数部分;对于色度块,使用HEVC中的两抽头插值滤波器。

     具体细节参考:H.266/VVC技术学习:帧内预测之角度预测模式

    2. 多参考行技术(Multiple reference line (MRL) intra prediction)

    为了进一步利用相邻块和当前块的空间相关性,VVC中采用了多参考行(MRL)技术。顾名思义,MRL技术就是在进行帧内预测的时候,使用了多行参考像素,如下图所示,进行帧内预测时,除了可以使用参考行0,还可以使用参考行1和参考行2。

    • 使用MRL模式时,仅能利用MPM列表中的模式进行帧内预测(不包括Planar模式和DC模式),且不能使用PDPC模式
    • 在CTU第一行时,禁用MRL模式,以防止利用CTU以外的像素

    具体细节参考:H.266/VVC技术学习:帧内预测之MRL技术

    3. 帧内预测子划分技术(Intra Sub-Partitions, ISP)

    VVC使用帧内预测子划分技术,在进行帧内预测时,可以将当前CU进一步划分为多个子块,然后分别对每个子块进行预测、变换、量化重建等,后一个预测的块,可以利用前一个重建像素作为参考像素,这样可以提高预测精度。ISP中各子块要么全是水平划分,要么全是垂直划分,如下图所示,并且所有子块的帧内预测模式都相同(PLANAR模式或者DC模式或者角度模式),这样ISP模式的编码性能的提升主要就来自多个使用相同预测模式的子块模式信息传令码率的节省,因为对多个子块只需要传一次帧内预测模式信息。

    • ISP技术应用的最小块尺寸为8x4和4x8,最大尺寸为64x64
    • 各子块帧内预测模式均相同
    • 子块预测最小预测块宽度是4,但是变换块的最小宽度是1。这样4个块可以并行
    • 使用ISP模式时,默认使用MPM列表中的模式

    具体细节参考:H.266/VVC技术学习:帧内预测之ISP技术

    4. 位置相关的组合帧内预测 (Position Dependent intra Prediction Combination, PDPC)

    为了补偿传统预测模式利用空间冗余性的不足,VVC 中引入了一种根据当前像素的位置及帧内预测模式的角度自适应选取反方向角度上的参考像素信息作为新的一个相对互补性的帧内预测,然后将它和原有角度的帧内预测做基于样本距离的加权平均,尽量让原有的角度预测都能够充分利用该预测角度上正反两个方向对应的参考像素信息,从而提高预测性能,计算公式如下所示:

    图片

    refL[x, y], refT[x, y] 是分别来自左边和上边对当前样本位置 (x, y) 的预测参考样本,wL[x],wT[y] 是它们各自对应的基于水平或竖直距离的权重。

    • 如果当前块是Bdpcm模式或MRL索引大于0,则不应用PDPC。
    • PDPC应用于宽度和高度均大于等于4的块。
    • PDPC用于DC、Planar、小于等于水平模式(模式18)的角度模式,大于等于垂直模式(模式50)且小于等于80的角度模式
    • DC模式和Planar模式的PDPC过程是相同的
    • 对于角度模式,如果当前模式是水平模式则不在进行PDPC时不再利用左侧的参考像素(当前预测像素已经利用过左侧参考像素),同理如果当前模式是垂直模式,则不再利用上侧的参考像素。PDPC的权重和比例因子取决于预测模式和块尺寸。 

    具体细节参考:H.266/VVC技术学习:帧内预测之PDPC技术

    5. 矩阵加权平均帧内预测 (Matrix weighted Intra Prediction, MIP)

    MIP技术是VVC中新增的帧内预测技术,与传统的帧内预测技术不同,该技术是利用机器学习方法训练出多个MIP预测矩阵,通过将相邻参考像素与预测矩阵进行矩阵乘法,获得预测像素。具体流程如下图所示:

    MIP 模式先对左边和上边的参考像素做下采样平均,然后将其于训练得到的块大小相关的模式矩阵做矩阵相乘,最后加上一个模式矩阵对应的常数调整(Offset) 矢量项。产生的预测样本再上采样到原始块大小。

     MIP 技术实际上是通过机器学习的方法,在统计意义上对实际中高效的帧内预测模式通过矩阵定义的方式进行线性建模。这里的针对块中每个样本位置定义的加权矩阵,实际上就是对每一个块中的样本都利用全体参考样本加权平均的最一般化的帧内预测方法,图示如下。

     具体细节参考:H.266/VVC技术学习:帧内预测之MIP技术

     6. 交叉分量线性模型预测(Cross-component linear model prediction,CCLM)

    为了提高帧内色度分量的预测性能,VVC使用了一种交叉分量线性模型的技术。该技术通过利用相邻重建亮度和色度像素建立亮度和色度分量的线性模型,再利用该线性模型预测当前块,计算如下图所示,其中pred_{C}(i,j)表示当前CU的色度预测像素,rec_{L}^{'}(i,j)表示当前CU的下采样重建亮度像素,\alpha\beta称为线性模型参数,由相邻的4个色度像素和对应的下采样的亮度像素生成推导。

    该技术利用了亮度和色度的分量间相关性。为了降低建立线性模型的复杂度,采用定点的方式建立线性模型,具体地,

    • 对于LM模式,分别从上边和左边的下采样亮度重建像素各选取两个重建像素,在各边的位置为 {1/4, 3/4} 处(W’ = W, H’ = H )

    • 对于LM-L模式,在左边的下采样亮度重建像素中选取 4 个重建像素,在该边的位置为 {1/8, 3/8, 5/8, 7/8} 处(H’ = H + W)

    • 对于对于LM-T模式,在上边的下采样亮度重建像素中选取 4 个重建像素,在该边的位置为 {1/8, 3/8, 5/8, 7/8} 处(W’ =W + H )

    然后,将这 4 个亮度参考像素排序为两个较小值组(minY1, minY2) 和两个较大值组 (maxY1, maxY2),结合其各自像素对应位置的色度重建参考像素的做同样排序后的较小值组,较大值组 (minC1, minC2), (maxC1, maxC2), 各组取平均得到(minY, maxY), (minC, maxC)。

    通过以下简单线性模型的推导公式即可算出模型参数α和β:

     具体细节参考:H.266/VVC技术学习:帧内预测之CCLM技术

    三、帧内预测流程及代码实现

    1、预测模式的RDO过程

    亮度预测模式的RDO过程:亮度预测estIntraPredLumaQT函数

    MPM列表建立:(getIntraMPMs函数)

    色度预测模式的RDO过程:色度预测estIntraPredChromaQT函数   

    2、帧内预测模式的流程

    (1) 初始化帧内预测参数

    通过initPredIntraParams函数进行初始化帧内预测参数,并决定是否对参考像素进行滤波,代码参考如下:初始化帧内预测参数

    (2) 获取参考像素及对参考像素进行滤波

    在初始化帧内预测参数后,需要获取进行帧内预测时使用的参考像素,并根据预测模式决定是否对参考像素进行平滑滤波。initIntraPatternChType函数是获取参考像素和对参考像素滤波的入口函数,xFillReferenceSamples函数用来获取参考像素。

    参考像素的滤波与帧内预测模式以及块尺寸有关,具体条件参考:H.266/VVC技术学习:帧内预测之角度预测模式

    对参考像素进行滤波是通过xFilterReferenceSamples函数,主要是使用[1,2,1]滤波器。参考像素获取及滤波的代码参考:

    帧内预测之参考像素获取及滤波  

    (3) 计算预测像素

    根据预测模式,预测像素的计算分为以下几种:

    DC模式和Planar模式

    角度预测模式技术介绍和相关代码:

    帧内预测之角度预测模式帧内预测之角度预测函数(predIntraAng、xPredIntraAng)

    MIP技术介绍和相关代码:

    帧内预测之MIP技术initIntraMip函数predIntraMip函数MIP技术相关代码

    ISP技术介绍及相关代码:

    帧内预测之ISP技术帧内ISP技术相关代码

    CCLM技术介绍及相关代码:

    帧内预测之CCLM技术CCLM技术相关代码(xGetLumaRecPixels,predIntraChromaLM)

    (4) PDPC滤波

    预测结束后,为了块边界的连续性,需要对预测得到的预测块的边界进行边界滤波,PDPC技术的使用和预测模式有关

    PDPC技术介绍:帧内预测之PDPC技术

    3、预测模式编码

    (1)亮度模式编码

    亮度模式编码流程:

     具体细节参考:H.266/VVC技术学习之帧内模式编码

    (2)色度模式编码

      具体细节参考:H.266/VVC技术学习之帧内模式编码

    展开全文
  • 为了在最新的视频压缩标准-高效视频编码(HEVC)下实现信息隐藏并在保证隐秘信息嵌入容量的前提下减少对宿主信息的修改,提出基于帧内预测模式和分组码的HEVC视频信息隐藏方法。首先,利用分组码的标准阵列译码方法,建立...
  • 这篇我们介绍一下H.264所使用的帧内预测,就像上篇中介绍的,帧内预测是H.264的一大特点,并且它和帧内编码的区别,我们上文中也已经讲到。与前面几篇所述的内容一样,了解H.264的帧内预测,同样也是为了理解H.264的...

    上篇讲了H.264中的宏块、片和帧,以及它们之间的关系。这篇我们介绍一下H.264所使用的帧内预测,就像上篇中介绍的,帧内预测是H.264的一大特点,并且它和帧内编码的区别,我们上文中也已经讲到。与前面几篇所述的内容一样,了解H.264的帧内预测,同样也是为了理解H.264的句法和语义打基础,也对理解各H.264的编解码器大有帮助。

    1、H.264/AVC的三种配置

    在开始讲帧内预测之前,我们先补充一点上篇没讲到的内容,那就是H.264的三种配置。上篇中,我们曾给出像片和宏块的关系表,如下图:

    在这里插入图片描述
    像片与宏块的关系

    我们注意到,第三列Profiles,为各像片隶属的配置,为什么会有这一区别呢?那是因为,H.264定义了三种不同的配置,编解码器实现每一种配置,都可以完成H.264的编解码。三种配置如下:

    在这里插入图片描述
    H.264/AVC的三种配置

    可以看到,三种配置分别为:基本配置、主流配置、扩展配置。上图展示了三种配置之间的关系,和各自支持的编码方法。其中基本配置是扩展配置的子集,而I像片、P像片和CAVLC,是各种配置都会用到的编码方法。

    进行这三种划分,主要是考虑到H.264的各种应用场合的不同。它们各自的应用场合如:

    (1)基本配置: 这种配置看名称也可以猜到,它具有基本的编解码性能和抗错能力,主要应用在低延时的电视会议,和可视电话中。这里的抗错能力是指,解码器在传输过程中,对出现的错误数据位流的一种应对能力。这种能力通常为:错误检测、重新传输、错误校正和其他错误处理措施。

    (2)主流配置: 可以看到它在I像片帧内预测和P像片帧间预测的基础上,加了B像片的帧间编码功能,而且还增加使用了加权预测的帧间编码。同时使用CABAC也是它的特点,应用场合为质量要求比较高的电视广播和HD DVD等方面。

    (3)扩展配置: 看这种配置主要看它不支持什么,它不支持隔行扫描和CABAC。而相对于另外两种配置,它引入了可以进行码流切换的SP和SI像片,以及数据分割。所以它的主要应用为,用户网络状态各异的网络播放等方面。

    要提一句的是,虽然上面我们说H.264的配置分为三种,不过在较新的H.264版本中,第四种配置已经产生,它被称为高级配置。这种配置在近几年才出,而且还在不断修订,在实际的各编解码器中也没用到,所以我们并不介绍。

    2、H.264/AVC的帧内预测

    (1)帧内预测概况

    在H.264的编解码中,帧内预测是个很重要的组成部分,就像我们在上篇中讲到的,H.264的16x16的宏块,可以从两个方向进行划分,并最小可以划分成4x4的子块。所以帧内预测和帧间预测中,4x4是编解码处理的最小块单位,这不仅减小了帧内预测的预测误差,也提高了帧间预测移动矢量的计算精度。

    不过有一点需要明确的是,帧内预测,并不是在帧内进行,而是在同一个像片中进行,它是在同一个像片中,从过去编码(编码端从像素数据到H.264裸流)后重构(解码端从H.264裸流到像素数据,并使用数据恢复图像序列)的相邻块,对当前块(即待编码的块)进行预测的过程。

    所以帧内预测,我们可以理解为“片内预测”,但是依然说成是帧内预测。而使用帧内预测的块编码、宏块编码、像片编码、帧编码都称为帧内编码。

    帧内预测的数据处理,和之前标准中的P帧和B帧的处理一样,都是使用预测得到的预测值,与像素实际的样本值相减,从而得到像素残差(也叫预测误差),然后对残差数据进行变换和编码。

    (2)帧内预测的预测模式

    上面我们说,子块最小可为4x4,但并不是说,帧内预测全部是使用4x4的子块进行预测。在H.264规定中,预测块的大小可以为4x4、8x8、16x16。并且预测块大小的使用,基于样本的不同也不同。比如对于亮度样本,预测块大小可以为4x4、8x8、16x16。而色度块,则使用8x8和4x4的色度块。

    既然块大小确定了,那该怎么进行预测呢?这就涉及到它们的预测模式,而预测模式也根据块大小和样本的不同进行划分。

    比如对于亮度样本,8x8和4x4的亮度块,使用的是相同的9种预测模式,而16x16的亮度块使用4种预测模式。对于色度块,8x8和4x4的两种(Cb、Cr)色度块,使用相同的4种预测模式。

    在这些预测模式中,只要理解了亮度样本的4x4和8x8的9种预测模式,那么其他的也就好理解了。而这9种预测模式也很好理解,下面我们根据4x4的亮度块进行详细介绍。

    1)4x4亮度预测模式

    要理解4x4的预测模式,得首先知道它们的位置,如下图所示:

    在这里插入图片描述
    4x4亮度块预测标记

    在图中,小写字母a-p为待编码的4x4亮度块,它上边和左边的大写字母A-M,为已编码和重构的样本。在预测的时候,4x4的亮度块的样本值,就是根据这A-M的样本值来预测的。当然啦,在预测的时候,A-M并不一定都可用,这个时候可以使用当前片的其他样本进行预测。而如果E-H样本不存在,则可以使用D代替。

    确定了参考像素和4x4的亮度块之后,就可以进行预测啦,规定的9种预测模式如下:

    在这里插入图片描述
    4x4亮度块帧内预测模式

    以模式0为例,图中箭头向下,这表示每个箭头方向上的样本预测值,分别使用箭头初始端也即A、B、C、D的值。这个时候,4x4亮度块的第一列,a、e、i、m的样本预测值等于A的样本值。同理,第二列b、f、j、n使用B的样本值。

    模拟1与模式0类似,只不过方向换成了水平方向。而模式2使用的是平均值模式(也称DC模式),即a-p的样本预测值都使用(A+B+C+D+I+J+K+L)/8

    剩余的模式3-8,注意到它们的预测方向与垂直或水平方向都有偏角,它们的预测值,为A-M的加权平均值。

    对于模式3和模式4,偏角为45度,位于同一个箭头上的预测样本值相同。在模式4里,对于a样本预测值,它的加权平均值为round(I/4+M/2+A/4),而d的样本预测值,可用round(B/4+C/2+D/4)计算。round代表四舍五入

    同样的,对于模式5-8,也可用加权平均值计算,但是因为箭头偏角既不是45度,也不是水平或垂直,所以位于同一个箭头上的预测样本值,并不相同。

    既然4x4亮度块,有这9种预测模式,那在实际编码中,该使用哪种预测模式呢?

    答案是,当然得根据预测效果来看啦。那预测效果怎么度量呢?那就得看,使用哪种预测模式,得到的预测值,与原始的样本值的差值最小。

    在实际的应用中,通常通过计算预测块中,各个样本预测值与原始样本值的差,然后再计算绝对误差的和SAD(sum of absolute different)或SAE(sum of absolute errors)来表示,或计算均方误差MSE(mean square error)。然后通过比较各种预测模式的SAD或SAE或MSE,值最小的就代表预测精度最高。

    比如下图:

    在这里插入图片描述
    4x4亮度预测结果

    这是9种预测模式下的预测结果,可以看到这时预测模式7的SAE值最小,理论上最接近原始样本值,事实上也确实如此。下图就是原始的样本:

    在这里插入图片描述
    原始样本值(右下角)

    需要注意的是,虽然在这个4x4亮度预测块中,预测模式7更适合它,但是在换个预测块,答案就不一定了。意思是哪种预测模式比较合适,是跟预测块周围的样本值有关的。

    2)16x16亮度预测模式

    16x16亮度预测模式对应的4中预测模式如下:

    在这里插入图片描述
    16x16亮度预测模式

    如图所示,模式0和模式1,与4x4亮度预测模式的模式0和模式1相同。模式2(DC预测)中,每个样本的预测值,为相应的顶部和左边样本值和的平均值。模式3使用的是平面预测,这是一种使用顶部和左边样本值,进行空间插值法来得到的样本预测值。

    3)8x8色度预测模式

    对于色度,8x8和4x4的色度块,都指定了相同的4种预测模式,分别为模式0(DC预测),模式1(水平),模式2(垂直),模式3(平面),这几个预测模式和16x16亮度预测模式的含义相同,只是顺序变了而已。

    这就是H.264的帧内预测,值得一提的是,全篇下来,我们并没有介绍更细节的东西,只是大致说了预测值以哪些样本值进行参考而已。实际上,在块中各个样本预测值,都是以所属宏块为参照来计算的,比如在宏块中的位置也即坐标,通过坐标可以严格确定,某个样本预测值的计算方式。

    这在H.264的官方文档中,有详细规定。所以这篇鉴定来说,属于帧内预测的入门,后面介绍句法和语义时,我们还会针对样本预测值的计算,单独写一篇,希望读者了解。

    参考资料:
    https://www.vcodex.com/h264avc-intra-precition/

    展开全文
  • VVC学习之五:VTM帧内预测工具详解

    千次阅读 2019-05-14 00:21:24
    帧内预测的摘要

    简介

    为了增加帧内预测的精度,VVC改进了HEVC的帧内预测方法,将预测角度从33种扩展到65种,角度预测的插值滤波器改用4抽头的高斯插值滤波器。同时,由于QTMTT划分结构使得CU的不在局限于正方形,各种矩形尺寸的CU被广泛采用,因此VVC扩展了HEVC中角度预测的预测范围,引入了广角预测模式。

    除了改进HEVC中的帧内编码技术,VVC还使用了新的高效预测技术,具体有跨分量线性预测(Corss-Component Linear Mode, CCLM)、位置自适应帧内联合预测(Position dependent intra prediciton Combination, PDPC)、帧内多行预测(Multiple reference line intra prediction, MRL)、帧内逐块预测(Intra sub-Partition prediction, ISP)等。

    1. 扩展角度帧内模式

    传统帧内预测包括方向角度预测和平滑预测(DC和Planar)两类,VVC为提高预测精度,将HEVC帧内的33种角度预测模式扩展到65种,如图所示,67种角度预测可用于亮度和色度的预测。
    帧内预测角度
    在原HEVC中的35个角度模式的基础上,每两个方向之间插入一个新预测方向,共33+32=65个预测方向。

    1.1 MPM构建和模式编码

    为了降低建立MPM列表的复杂度,VTM通过两个相邻的CU预测模式生成6个MPM,MPM列表中的模式包含以下三类:

    • 默认模式
    • 相邻CU模式
    • 计算推导的模式

    VTM参考两个相邻PU(左(A)、上(B))的帧内模式生成MPM列表。默认的初始化MPM列表如下
    6 MPM modes = {A, Planar (0) or DC (1), Vertical (50), HOR (18), VER - 4 (46), VER + 4 (54)}
    之后MPM列表根据两个相邻的PU帧内模式进行更新。更新方式如下:

    • 如果A=B且A>1,6个模式为三个默认模式(A, Planar, DC)和三个推导模式,由A偏移得到。
    • 如果A与B不等,则6个模式前两个为A和B,剩余四个由默认模式和相邻模式推导得到。

    生成MPM列表时,要进行去重操作,以保证6个模式都是不同的。在编码帧内模式时,61个非MPM模式,采用截断二进制编码(TBC)。

    1.2 帧内广角预测(WAIP)

    HEVC采用四叉树划分结构,对于每个正方形N×N的CU帧内角度预测模式的范围为45°— -135°,其左、上参考样点数目都是2N+1。但是VVC采用了QTMTT划分结构,CU尺寸不局限于正方形,还有矩形尺寸。对于一个尺寸为W×H的CU,为满足45度~-135度的角度预测范围,左、上分别需要W+H+1个参考样点,这种角度预测范围虽然兼容了HEVC相关技术,但是并没有考虑到VVC中QTMTT的特点,例如:(1)当W>H时,待预测像素距离上方的参考像素更近;(2)当W<H时,待预测像素距离左侧的参考像素更近,如下图,
    帧内预测角度帧内预测角度
    这种矩形尺寸的CU并不是沿斜对角线对称的,这就造成对于某些预测角度,其预测值使用的是很远的参考像素而不会用邻近的参考像素,如下图所示。
    帧内预测角度帧内预测角度
    左侧示例,待预测像素A距离上方参考像素T更近,但是由于预测角度限制,最终使用左侧像素L预测。对于右侧示例,待预测像素A距离左侧参考像素L更近,但是由于预测角度限制,最终使用上方像素T进行预测。

    为解决此问题,对于非方形的编码块,VTM提出了帧内广角预测技术,为了不增加帧内预测模式数量,广角预测将依据CU的长宽比,自适应替换原始的角度预测模式,被替换的模式按照原始的索引进行传输,在解码端载替换为相应的广角预测。广角预测模式下,尺寸为W×H的CU上方参考像素点个数为2W+1,左侧参考样点个数为2H+1。如下图所示。
    帧内预测角度帧内预测角度
    由上图可以看到,可被替换的角度预测模式与CU的宽高比有关,现在总结如下,

    宽高比被替换的角度模式
    W / H == 1612, 13,14,15
    W / H == 812, 13
    W / H == 42,3,4,5,6,7,8,9,10,11
    W / H == 22,3,4,5,6,7
    W / H == 1
    W / H == 1/261,62,63,64,65,66
    W / H == 1/457,58,59,60,61,62,63,64,65,66
    W / H == 1/855, 56
    W / H == 1/1653, 54, 55, 56

    在此,需要注意的是,在广角预测下,相邻像素的参考像素可能并不相邻,如下所示
    帧内预测角度
    因此,在广角模式下,为了降低非相邻参考样点对预测的影响,需要对参考值进行低通滤波,即参考样点的平滑。
    加入广角预测模式之后,VTM所支持的预测角度如下图所示
    帧内预测角度

    1.3 基于模式的参考样本平滑(MDIS)

    VTM采用4抽头的插值滤波器用于生成角度预测参考像素,以提高角度预测的预测精度。在HEVC中,角度预测参考像素通过2抽头的线性插值滤波器计算得到,而VTM使用了更精确的6bit 4抽头高斯插值滤波器。VTM中以下五种模式不进行四抽头滤波:2, HOR_IDX, DIA_IDX, VER_IDX66;其余所有角度模式都要进行滤波。

    根据帧内预测的模式,参考样本的平滑遵循以下原则(JVET-L0628):

    • 帧内角度预测模式将被分为如下三类:A: 水平、垂直模式(HOR_IDX, VER_IDX);B: 对角线模式(2, DIA_IDX, VDIA_IDX);C: 其他角度模式。
    • 对于A类模式,不需要对参考样点进行滤波。
    • 对于B类模式,参考样点有可能会使用抽头系数为[1,2,1]的参考样本滤波器进行平滑,然后直接生成帧内预测值,不需要进行插值预测。此可能性根据MDIS的条件判断。
    • 对于C类模式,对参考像素使用帧内插值滤波器生成预测样本,不需要对参考像素进行平滑滤波。

    2. 跨分量线性模型预测(CCLM)

    为降低颜色分量间的冗余,VTM采用了跨分量线性模型的色度预测模式,即色度值可根据已重建亮度像素线性变换得到,变换函数为pred_C (i,j)=α•rec_L'(i,j)+β,其中pred_C为预测的色度值,rec_L'(i,j)表示已重建的亮度下采样后的值。参数αβ通过相邻CU的亮度和色度计算得到,计算公式为 α = Y a − Y b X a − X b α = \frac{Y_a - Y_b}{X_a - X_b} α=XaXbYaYb β = Y b − α × X b β = Y_b - α \times X_b β=Ybα×Xb。其中, Y a Y_a Ya 是相邻亮度像素下采样后最大亮度像素的亮度值, X a 是 Y a X_a 是Y_a XaYa对应的色度值。 Y b Y_b Yb 是相邻亮度像素下采样后最小亮度像素的亮度值, X b 是 Y b X_b 是Y_b XbYb对应的色度值。下图给出一个CCLM预测的例子
    在这里插入图片描述
    VTM中计算α的除法操作通过查表获得,以降低计算复杂度。为了减少表的存储空间,最大最小的差值 diff 和 α 以指数形式存储和计算。例如,diff近似为4位有效位和一个指数量级。因此,1/diff 的表格元素可减少为16 个,如下
    D i v T a b l e [ ] = 0 , 7 , 6 , 5 , 5 , 4 , 4 , 3 , 3 , 2 , 2 , 1 , 1 , 1 , 1 , 0 DivTable [ ] = { 0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0 } DivTable[]=0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0
    总之,这种计算方式不仅减少了计算复杂度还减少了存储空间。

    除了亮度所有的上方参考像素和左侧参考像素联合计算线性模型的参数外,模型参数还有另外两种计算方式,即CCLM还有两位两种模式,称之为LM_ALM_L模式。

    • LM_A模式仅使用已重建亮度像素的上方元素作为参考像素计算线性模型参数,为了获取足够参考像素,上方亮度参考像素扩展为W+H
    • LM_L模式仅使用已重建像素左侧元素计算线性模型参数,同样,左侧参考像素扩展为H+W

    对于4:2:0色度采样的序列,需要对对亮度信息进行下采样,VTM支持两种2:1采样方式。采样滤波器的选择由SPS指出,分表标识为“type-0”和“type-2”,如下
    帧内预测角度
    帧内预测角度
    线性模型参数的计算过程不仅在编码端进行,解码端同样进行相同的操作,因此参数alpha和belta不用记录在码流中。

    VTM色度共有8种预测模式,包括5种亮度分量的帧内模式和三种CCLM模式(CCLMLM_ALM_L)。色度模式的传输和获取过程如下表所示
    在这里插入图片描述
    帧内色度模式的编码依赖于相应的亮度块,因为VTM中I帧的亮度和色度分量可能会有不同的划分结构,一个色度块可能对应多个亮度块。因此,对于色度的DM模式,使用当前色度块中心像素对应的亮度块的帧内预测模式。

    3. 位置自适应帧内联合预测(PDPC)

    在VTM中,帧内某些模式的预测结果将通过位置自适应帧内联合预测模式进行修正。简单来说,PDPC模式就是通过未滤波和已滤波的参考像素的预测值加权作为最终的预测值。VTM中的以下模式将默认进行PDPC:Planar, DC, horizontal, vertical, bottom-left angular mode and its eight adjacent angular modes, and top-right angular mode and its eight adjacent angular modes.

    最终预测值pred(x,y) 为(传统帧内模式预测值)与(参考像素直接计算的修正值)的和,计算公式如下:
    p r e d ( x , y ) = [ w L × R − 1 , y + w T × R x , − 1 – w T L × R − 1 , − 1 + ( 64 – w L – w T + w T L ) × p r e d ( x , y ) + 32 ] &gt; &gt; 6 pred(x,y) = [ wL×R_{-1,y} + wT×R_{x,-1} – wTL ×R_{-1,-1} + (64 – wL – wT+wTL) × pred(x,y) + 32 ]&gt;&gt;6 pred(x,y)=[wL×R1,y+wT×Rx,1wTL×R1,1+(64wLwT+wTL)×pred(x,y)+32]>>6
    其中 R x , − 1 R_{x,-1} Rx,1 R − 1 , y R_{-1,y} R1,y当前像素(x,y)上方和左侧的相邻参考像素, R − 1 , − 1 R_{-1,-1} R1,1表示当前块左上角的参考像素。

    类似于HEVC中DC模式的边界滤波器和水平/垂直模式的边缘滤波器,当PDPC作用于DC、Planar、水平和垂直预测模式时,不需要额外的边界滤波器。

    下图列出不同预测模式的PDPC的预测方式和相应参考像素,其中pred (x’, y’)是预测像素位于当前预测块的(x’, y’)。对于对角线模式,参考像素 R x , − 1 R_{x,-1} Rx,1的横坐标x计算方式为x = x’ + y’ + 1,纵坐标y计算方式为y = x’ + y’ + 1。对于别的方向模式,参考像素可能会处于分数像素位置,此时,使用最邻近的整数像素值进行替代。
    帧内预测角度帧内预测角度
    帧内预测角度帧内预测角度
    PDPC的权重依赖于帧内预测模式,具体如下

    预测模式wTwLwTL
    右上对角线模式16 >> ( ( y’<<1 ) >> shift)16 >> ( ( x’<<1 ) >> shift)0
    下左对角线模式16 >> ( ( y’<<1 ) >> shift )16 >> ( ( x’<<1 ) >> shift )0
    右上对角线模式相邻角度32 >> ( ( y’<<1 ) >> shift )00
    下左对角线模式相邻角度032 >> ( ( x’<<1 ) >> shift )0

    4. 多行预测模式(MRL)

    多行帧内预测模式即使用多个参考行的帧内预测,如下图所示
    帧内预测角度
    传统帧内预测(如HEVC等)使用reference line 0进行帧内预测,VTM增加了两个参考行reference line 1reference line 3。需要注意的是,Segment ASegment F并不是相邻的已重建像素,而是由临近的Segment BSegment E填充得到。

    多行预测的参考行索引(mrl_idx)需要传输到解码端以生成相应的帧内参考像素,即帧内多行编解码模式信息为 “预测模式+ 参考行索引” 。VTM为了降低码率,同时平衡编码端复杂度,对于不使用reference line 0的多行预测,其额外的参考行模式将包含在MPM列表中,因此只需要传输MPM的索引即可。码流中,参考行的索引在帧内预测模式之前传输,DC和Planar模式不使用多行预测。

    需要额外注意,为了避免使用CTU外扩展使用参考样本,多行预测模式对CTU最上第一行CU默认关闭。此外,PDPC默认对扩展参考行关闭。

    5. 帧内逐块预测(ISP)

    帧内逐块预测技术依据CU的亮度分量尺寸,将其沿水平或垂直方向划分成2个或者4个尺寸相同的子块,然后逐个子块进行预测重建。进行帧内ISP的最小CU尺寸为48或84(即最少需要32个像素),48或84的CU会被分成2个子块,其他尺寸则被分成4个子块,即每个子块最要需要有16个像素。下图给出了一个例子,上方为4*8CU的ISP划分方式,下方为划分为4个子块的情况。
    帧内预测角度
    帧内预测角度
    对于每个子块,重建信号为预测信号与残差信号的和,残差信号通过熵解码、反量化和反变换得到。(每个子块独立预测变换量化) 换句话说,每个子块的重建信号可以用来进行下一个子块的预测,CU中每个子块的重建、预测依次进行。位于当前CU左上角的第一个子块首先压缩,然后向下(水平划分)或者向右(垂直划分)依次编码, 每个子块公用相同的帧内预测模式

    5.1 ISP预测模式和其他工具的关系总结如下:

    • 多行预测: 如果CU使用多行预测(参考行索引大于0),则ISP默认关闭。
    • 熵编码系数长度:所有情况下,子块熵编码以一组16个像素进行,按照子块尺寸的不同,其尺寸略有差异,具体如下:
    子块尺寸熵编码系数组尺寸
    1 × N , N ≥ 16 1 \times N, N\geq 16 1×N,N16 1 × 16 1 \times 16 1×16
    N × 1 , N ≥ 16 N \times 1, N\geq 16 N×1,N16 16 × 1 16 \times 1 16×1
    2 × N , N ≥ 8 2 \times N, N\geq 8 2×N,N8 2 × 8 2 \times 8 2×8
    N × 2 , N ≥ 8 N \times 2, N\geq 8 N×2,N8 8 × 2 8 \times 2 8×2
    M × N M \times N M×N 4 × 4 4 \times 4 4×4
    • CBF编码: 使用ISP帧内预测,默认至少有一个子块的CBF不为0,因此如果有N个子块,前N-1个子块的CBF都为0,则最优一个默认为1.
    • MPM列表:ISP只对MPM列表中的模式进行。如果采用ISP模式,需要传输一个MPM索引,标注何种预测模式。DC模式不加入MPM列表,水平划分时,MPM中水平预测模式优先,垂直划分垂直预测模式优先。
    • 变换核尺寸:尺寸16使用DCTII变换核
    • PDPC:ISP默认关闭PDPC。
    • MTS:…

    5.2 针对ISP预测的编码端优化

    平衡性能和复杂度,对编码端做出如下优化

    1. 分别对ISP水平划分(ISP_H)和垂直划分(ISP_V)建立不同候选模式列表。
    2. 使用传统帧内预测(非ISP)RMD候选列表初始化ISP候选列表。
    3. 依据ISP划分类型,去除2中RMD非ISP的MPM模式。
    4. 在RD全搜索中,进行如下操作
      (1) 传统帧内预测结束后,将未量化的DCT-II系数划分为三个区域:右上区域、左下区域和对角线(对角线包含DC系数)
      (2) 分别计算三个区域的变换系数的绝对值和(topRight, blowLeft, diag
      (3) 计算两个比率:r1=topRight/belowLeftr2=diag/(topRight + belowLeft)
      (4) 保存最优帧内模式的r1r2
    5. 如果r1大于预先设定的阈值,则跳过所有ISP_H的模式选择;如果r1小于预先设定的阈值,则跳过所有ISP_V的模式选择。
    6. 如果r2大于预先设定的阈值,跳过ISP_H和ISP_V。
    7. 对剩余的ISP_H和ISP_V候选列表中的模式进行RD全搜索。
    展开全文
  • 帧内预测模式下的SAD算法优化,董嘉维,王海婴,新一代视频编码标准H.264/AVC具有更高的编码效率,更好的图像质量,更强的网络友好性和抗误码能力,但H.264标准的优势是以增加编解码�
  • 为了进一步提高HEVC信息隐藏过程中的嵌入效率,提出了一种HEVC帧内预测模式调制的信息隐藏方法。该方法根据密钥生成每个CTU的空间点阵维数N(N=2,3,4),利用帧内预测模式选取规则选出N个顶角处的帧内预测模式,通过...
  • VVC帧内预测(一)

    万次阅读 2019-12-04 22:46:46
    1、帧内预测模式 为了适应更多的预测方向,VVC的帧内角度预测模式增加为65个,加上DC模式和planar模式,VVC的帧内预测模式有67个。下图中红色的线是VVC比HEVC增加的预测方向。 在HEVC中,每个帧内预测块都是...
  • 基于减少视频编码复杂度的目的,本文采用一种基于SATD的帧内预测模式选择算法,该算法首先计算出35种预测模式所对应的SATD值,然后通过MPM选择出最有可能预测模式,并计算出最有可能预测模式所对应的SATD值和35种...
  • 基于图像修复算法的帧内预测在HEVC中的应用,戚兴利,全子一,HEVC是下一代视频压缩标准,其压缩效率将达到传统H.264/AVC的一倍。为了实现这一目标,HEVC在编码框架中应用了大量新技术。例如,在帧内预�
  • matlab平台下写的九种帧内预测模式
  • 为了提升可分级视频编码的层间帧内预测(ILIP)性能,提出了一种基于维纳滤波器的块级别自适应ILIP方法.首先,将一图像分块;其次,逐块选取原始增强层图像和对应的基本层上采样图像逐进行训练,得到维纳滤波器系数;...
  • 通过对AVS帧内预测各个预测模式的分析,设计了帧内预测编码流水线结构和模式预测运算单元电路。根据各预测模式的编码运算关系,合理安排流水线结构,采用8 bit数据并行流水处理,实现了高清视频帧内预测实时编码。将...
  • 帧内预测之角度预测 为了捕捉自然视频中呈现的任意边缘方向,VVC中的帧内传统角度预测模式数从HEVC中使用的33个扩展到65个。在下图中,VVC中的新的角度预测模式被描绘成红色虚线箭头,并且planar和DC模式保持不变。...
  • 文章目录1、帧内预测原理2、67种帧内预测模式3、帧内预测编码4、宽角度帧内预测 WAIP5、色度跨分量线性模型预测 CCLM6、位置相关帧内预测组合PDPC7、多参考行预测MRL8、矩阵加权预测9、内子划分ISP 1、帧内预测...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,715
精华内容 17,886
关键字:

帧内预测