热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

H.266帧内预测

1.67种帧内预测模式的帧内模式编码为了捕获自然视频中任意边缘的方向,定向帧内模式的数量从HEVC的33中增加到了65种。这些密集的方向帧内预测模式应用于所有大小的块

1. 67种帧内预测模式的帧内模式编码

       为了捕获自然视频中任意边缘的方向,定向帧内模式的数量从HEVC的33中增加到了65种。这些密集的方向帧内预测模式应用于所有大小的块中,也用于所有的亮度和色度帧内预测。

1.1 亮度帧内编码模式

      为了适应帧内模式数量的增加,使用6MPMs的帧内模式编码方法。包含两个主要的技术:1)6 MPMs的来源,2)6 MPMs和non-MPM模式的熵编码。

在JEM中,MPM列表中包含的模式可以分为3类:

邻近帧内模式;

派生的帧内模式;

默认帧内模式;

       使用5个邻近的帧内预测模式组成MPM列表。5个相邻块的位置和在合并模式中使用的块的位置相同,即左,上,左下,右上和左上。最初的MPM列表通过插入的5个相邻帧内模式和planar模式和DC模式组成。然后使用pruning过程来移除重复的模式,这样在MPM列表中只包含unique的模式。包含的初始模式的顺序为左,上,planar,DC,左下,右上,最后是左上。

                                      

      如果MPM列表不满,即候选模式小于6,就要增加派生模式。派生的帧内模式通过给MPM列表中已包含的角度模式加1或减1来得到。这样额外的派生模式不能从非角度(DC和planar)模式中派生得到。

       对于使用6 MPMs选择的模式的熵编码,使用一个截断的一元码。前三个bins用上下文进行编码,上下文取决于与当前正在被发送的bin相关的MPM模式。MPM模式可以被分成3类:(a)水平主导的模式,即MPM模式的编号小于或等于对角方向的模式编号(b)垂直主导的模式,即MPM模式的编号大于对角方向的模式编号,(c)非角度模式。因此,基于此分类使用三种上下文发送MPM索引。

      剩余61个non-MPM的选择的编码如下所示。61个non-MPM首先被分成两个集合:一个选择模式集合,一个非选择模式集合。选择模式的集合包含16个模式,剩下的45个模式被分到非选择模式集合。当前模式(表示什么)所属的模式集合用一个flag在比特流中指明。如果要指示的模式是在选择模式集合内,这选择模式(这个又表示什么)用4比特的定长码来发送。如果要指示的模式来自非选择模式集合,则选择模式用一个截断一元码来发送。选择模式的集合由61个non-MPM模式的自采样来产生。

选择模式集合:= {0, 4, 8, 12, 16,20 … 60}

非选择模式集合:= {1, 2, 3, 5, 6,7, 9, 10 … 59}

      在编码端,HM的帧内模式判决过程使用了两个相似的阶段。在第一个阶段,即帧内模式预选择阶段,使用低复杂度的SATD cost去从所有可获得的帧内模式中预选择出N个帧内预测模式。在第二阶段,应用一个高复杂度的R-D cost选择去从N个候选中选择一个帧内预测模式、但是,当应用67中帧内预测模式时,因为可获得的模式的数量翻倍,如果直接使用HM中相同编码器模式判决过程,帧内模式预选择阶段的复杂度也会增加。为了最小化编码器增加的复杂度,执行两步帧内模式的预选择过程。在第一步,基于SADT测度从原始35种帧内预测模式中选出N种模式,在第二步中,被选择的N种模式的直接相邻模式用SATD进行进一步的检查,并更新选择的N种模式的列表。最后,前MMPMs被增加到N种模式中,生成候选帧内预测模式的最后列表,进行第二阶段的R-D cost的比较。M的值在HM原始设置的基础上加上1,N减少1。

         

1.2 色度帧内采样

      在JEM中,色度CB编码允许11种编码模式。这些模式包括5种传统的帧内模式和6种跨组件线性模型模式。色度模式的候选列表包括下列3部分:

  1. CCLM 模式:

  2. DM模式,从覆盖当前色度块的5个位置的亮度CBs中派生的帧内预测模式

        要check的五个位置的顺序是:对于I slice,当前色度块中对应亮度块内的中心,左上,右上,左下,右下4*4块。对于P和B slice,只有这5个子块的其中之一会被checked。因为他们有相同的模式索引。      

                                                                    3. 来自空间相邻块的色度预测模式

    a.      5个色度预测模式:左,上,左下,右上,左上的空间相邻块

    b.     Planar和DC模式

    c.      增加派生模式,这些帧内模式通过给列表中的角度模式加1或者减1来获得

    d.     垂直,水平和模式2

      不管是否有新的色度帧内模式增加到候选列表中,都要进行pruning过程。Non-CCLM色度帧内模式候选列表的大小减小到5。对于模式信号,首先发送一个指示CCLM模式之一或者传统的色度帧内预测模式之一是否被使用的标记。然后随后可能会发送一些标记去指定用于当前色度CB的具体色度预测模式。

2. 4抽头帧内插值预测滤波(用该滤波器计算预测值)

      4抽头帧内插值滤波用于改善双向帧内预测冗余。在HEVC中,使用2抽头线性滤波去生成方向预测模式(即除了DC和planar)中的帧内预测块。在JEM中,使用4抽头帧内插值滤波用于方向帧内预测滤波。使用两种类型的4抽头插值滤波:对于小于或等于64*64的块使用三次插值滤波,对于大于64*64的块使用高斯滤波。滤波的参数是按照块的大小确定的,同样的滤波器可用于所有角度模式的所有预测样本。

    具体来说,在帧内的角度模式预测中,在最后计算预测值时,使用该4抽头滤波器计算得到最终的预测值;

   pDst[y*dstStride+x] =  (Pel)( ( f[0]*p[0] + f[1]*p[1] + f[2]*p[2] + f[3]*p[3] + 128 ) >> 8 );

pDst即为预测值,f(0),f(1),f(2),f(3)即分别为4个抽头系数;

 
3. 边界预测滤波(用该滤波器对预测值进行滤波)

       在HEVC中,在为垂直或水平帧内模式生成帧内预测块后,预测样本的最左列和最上行会被分别进一步调整。在JEM中,这种方法被扩展到了多个对角帧内模式,边界采样也通过使用2抽头或3抽头滤波器进一步调整,最多可以4行或4列。

                       

具体来说,对于对角模式66和2,还有几个斜对角模式3--10和58-65,对这些模式计算得到的预测值进行滤波;

4. 跨组件线性模型预测CCLM

       为了减少跨组件的冗余,在JEM中使用跨组件线性模型预测模式,使用线性模型基于同一CU的重建亮度采样对色度采样记性预测:

                                            

        表示CU中预测色度样本, 表示同一CU中下采样重建的亮度采样。  and 是通过最小化当前块相邻重建亮度和色度采样的回归误差推到得到的。

                                                

其中L(n)表示下采的左和上亮度采,C(n)表示左和上色度采,N等于前色编码块和高最小倍。于方形编码块,这两个等式可以直接用。于非方形的编码块,较长边缘近采首先行下采,得到与较边缘样数量相等的采样数。α和β不需要传输,在解器中也通算得到

       回归误差最小化作为解码过程的一部分来执行,而不只是编码器的搜索操作,所以不需要使用语法去传送α 和 β值。

                             

       CCLM预测模式也包含两个色度组件之间的预测,即从Cb分量中预测Cr分量。不使用重建的采样信号,CCLM Cb到Cr的预测是应用于残差域。

       在原始Cr帧内预测上加上一个有权重的重建Cb残差得到最后的Cr预测。

                             

       比例因子α是用和CCLM中亮度到色度的预测方式一样的方法推导得到。唯一的不同是增加了一个与误差函数中的默认α值有关的回归代价,这样子推导得到的比例因子偏向于-0.5的默认值。

                           

     Cb(n)表示相邻重建的Cb采样,Cr(n)表示相邻重建的Cr采样,λ等于  .

                             


      CCLM亮度到色度的预测模式增加为额外的色度帧内预测模式。在编码端,为选择色度帧内预测模式,增加了一次对色度分量的RDcost check.当除了CCLM 亮度到色度的预测模式之外的帧内预测模式用于CU的色度分量,CCLM Cb到Cr的预测用于Cr分量的预测。

4.1 多模型CCLM       在JEM中,有两种CCLM模式:一种是单一模型的CCLM模式,一种是多模型的CCLM模式。顾名思义,
单一模型的
CCLM
模式利用一种线性模式从亮度采样中预测色度采样,在多模型的CCLM模式中有两种模型。在多模型的CCLM模式中,
当前块的相邻亮度采样和相邻色度采样被分成两组,每一组作为推导线性模型的训练集(即每一个特定的组都能推导出一个特定的α和β)。而且,当前亮度块的采样也根据相邻亮度采样的分类方法去进行分类。

       图9展示了将相邻采样分成两组的过程。阈值是相邻重建亮度采样的平均值。相邻采样的重建值小于阈值则分到第一组,相邻采样的重建值大于阈值的则分到第二组。

                                    

                     


4.2 CCLM中的下采样滤波

       为了执行跨组件预测,对于4:2:0色度格式,重建的亮度块需要下采样去匹配色度信号的大小。CCLM模式中使用的默认下采样滤波器如下:

                              

        注意假设这个下采样对于与亮度采样位置有关的色度采样位置来说是0型相位关系。即并列的水平采样和间隙的垂直采样。

      上面的6抽头下采样滤波器用作单一模型CCLM模式和多模型的CCLM模式的默认滤波器。

      对于MMLM模式,编码器可以选择四种额外的亮度下采样滤波器应用于CU的预测,并将滤波器索引发送给解码端。用于多模型CCLM模式的四个可供选择的亮度下采样滤波器如下所示:

               


5. planar模式的位置决定的帧内预测联合(对参考采样进行滤波)

       在JEM中,planar模式的帧内预测结果被位置决定的帧内预测联合方法进一步修改。PDPC是一种帧内预测方法,调用了未滤波边界参考采样和带有滤波边界参考采样的HEVC帧内预测的联合。            


        用于定义PDPC的名词如图10所示。r和s分贝表示未滤波的边界采样和滤波的边界采样。q(x,y)是基于滤波的参考边界采样s 的HEVC的帧内预测。X和y是离块边界的水平距离和垂直距离。

       预测值p[x,y]联合了加权的边界元素和q[x,y]:


                              

       C1,C2,C3,C4是预测参数,对于宽度小于等于16的块dx=1,宽度大于16的块dx=2, 对于高度小于等于16的块dy=1,高度大于16的块dy=2.b[x,y]是推导出来的归一化因子。

                          

       使用三个预定义的低通滤波器中的一个去平滑边界采样。这三个预定义的低通滤波器包括3抽头滤波器,5抽头滤波器,7抽头滤波器。平滑滤波器的选择基于块的大小和帧内预测模式。将hk定义为滤波器k的脉冲响应,α是参数,则滤波后的参考值计算如下:

                                                 

       每种块大小都要定义一个预测参数集( )。这些参数的总的内存大小是30字节。

     具体来说,就是先对参考采样进行滤波(可以选择3抽头,5抽头或者7抽头滤波器),使用滤波后的参考采样计算预测值,最后再使用未滤波采样和上一步得到的预测值进行位置加权预测,得到最终的预测值;


















推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • Win11扩展卷无法使用?解决扩展卷灰色问题的指南
    本文详细介绍了在Windows 11中遇到扩展卷灰色无法使用时的解决方案,帮助用户快速恢复磁盘扩展功能。 ... [详细]
author-avatar
西红柿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有