一、帧内预测基本原理

帧内预测技术是利用同一帧中相邻像素的相关性,利用当前块相邻区域的重建像素预测当前块中像素的技术,如下图所示,当前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使用了一种交叉分量线性模型的技术。该技术通过利用相邻重建亮度和色度像素建立亮度和色度分量的线性模型,再利用该线性模型预测当前块,计算如下图所示,其中表示当前CU的色度预测像素,表示当前CU的下采样重建亮度像素,称为线性模型参数,由相邻的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技术学习之帧内模式编码

H.266/VVC帧内预测总结相关推荐

  1. H.266 VVC 帧内预测中MIP技术更新

    P次会议采纳的MIP技术: (1)P0199, P0289, P0303(解决方案一样,待看) (2)P0803中 固定上采样顺序,先水平,后垂直 不受最大变换尺寸大小(3232/6464)限制,使M ...

  2. H.266/VVC帧间预测总结

    一.帧间预测基本原理 帧间预测是利用视频帧与帧之间的相关性,去除视频帧间的时间冗余信息.统计表明,帧间差绝对值超过3的像素平均不到一帧像素的4%,因此,采用高效的帧间编码方式,可以很大程度上提高视频压 ...

  3. H.266/VVC帧间预测技术学习:帧间和帧内联合预测(Combined inter and intra prediction, CIIP)

    在HEVC中一个CU在预测时要么使用帧内预测要么使用帧间预测,二者只能取其一.而VVC中提出的CIIP技术,是将帧间预测信号与帧内预测信号相结合. 在VVC中,当CU以Merge模式编码时,且CU包含 ...

  4. H.266/VVC帧间预测技术学习:高级运动矢量预测(Advanced Motion Vector Prediction, AMVP)

    高级运动矢量预测模式(Advanced Motion Vector Prediction,AMVP) AMVP模式是H.265/HEVC中提出的新的MV预测技术,H.266/VVC仍采用了该技术,并在 ...

  5. H.266:帧内预测之PDPC(VTM4)

    关于H.266帧内完整过程的总结(来自小小柴): https://blog.csdn.net/cxy19931018/article/details/80635898#commentBox 其中,对角 ...

  6. H.266/VVC帧间预测技术学习:几何划分模式(Geometric partitioning mode, GPM)

    几何划分模式 (Geometric partitioning mode ,GPM)原理 针对图像中运动物体的边界部分,VVC采用了几何划分模式进行帧间预测.如下图所示,GPM模式在运动物体的边界处进行 ...

  7. H.266/VVC帧间预测技术学习:CU级双向加权预测(Bi-prediction with CU-level weight)

    CU级双向加权预测(Bi-prediction with CU-level weight ,BCW) 在HEVC中,通过对从两个不同参考图片获得的两个预测信号求平均和/或使用两个不同运动矢量来生成双向 ...

  8. H.266/VVC帧间预测技术学习:带有运动矢量差的Merge技术(Merge mode with MVD)

    在VVC的扩展Merge模式当中,当前CU生成的Merge list中选择一个率失真代价值最小的候选项直接作为自己的运动信息.除了常规Merge模式,VVC还引入了带运动矢量差(Merge mode ...

  9. 【十三】 H.266/VVC | 帧间预测技术 | 解码端运动向量修正技术(DMVR)

    目的:为了提高merge模式下双向预测MV的准确性 基本思路:双向预测是在list0和list1中分别寻找一个运动向量,然后将MV0和MV1所指向的预测块进行加权得到最终预测块,而DMVR技术不是直接 ...

最新文章

  1. python【蓝桥杯vip练习题库】ALGO-189 P0505(阶乘问题)
  2. vue.js项目的mock数据配置
  3. lucene join解决父子关系索引
  4. 员工工号怎么编码_华为员工感慨:工号就留在这了,感谢公司给我自己写墓志铭的机会...
  5. Android中贝塞尔曲线的绘制方法
  6. [原]让链接点击过后无虚线
  7. 用 C# 来守护 Python 进程
  8. MySQL的高可用实现:MySQL系列之十四
  9. halcon相机标定助手_Halcon教程之单相机标定
  10. VMVare 打不开磁盘xxx.vmdk
  11. react native 高德定位 react-native-amap-geolocation
  12. 生物信息学之抗癌药物反应论文阅读三:ML+PDX
  13. linux 安装apache apu,Apache编译安装
  14. 把不同的pdf文档合并在一个pdf文件中,一次批量打印
  15. 电子信息工程求职目标_应用电子专业求职信范文合集6篇
  16. 静态成员变量和静态成员函数
  17. 【Java设计模式 设计模式与范式】创建型模式 四:抽象工厂模式
  18. 国内终端安全防护市场报告发布 360网神排行第一
  19. 全球第四大航空南方航空与阿里云合作,成首家云上航空公司
  20. 致远小场景方案之从外部推送待办

热门文章

  1. 正交表测试用例自动生成工具Allpairs的使用说明
  2. 2023年6月中国数据库排行榜:OceanBase 连续七月踞榜首,华为阿里谋定快动占先机
  3. kf.qq.xom/product/lol.html,LOL11月8日更新几点结束 英雄联盟11.8更新维护公告
  4. java单机西瓜大作战,合并西瓜大作战
  5. 怎么利用快手引流?快手引流实用技巧
  6. Axure RP Pro 6注册码
  7. ios12电池测试软件,iOS 12.2 正式版耗电测试:比 12.1.4 省电、对旧设备更友好
  8. 鸿蒙手机升级计划,公布一下鸿蒙手机升级计划
  9. java项目运行在浏览器_在 Java 程序中,能在 WWW 浏览器上运行的是 程序。_学小易找答案...
  10. 新版VSCode中Python设置自动补全函数括号