一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频编码中的残差的量化的制作方法

2022-05-26 20:43:23 来源:中国专利 TAG:


1.本发明涉及用于数据压缩,确切地说图像和视频信号的压缩及解码的方法。数据压缩可包含但不限于获得、导出、编码、输出、接收、解码和重建借助于阶层式(基于层次的)编码格式编码的数据,其中视频信号以数据的梯队(例如,层或层次)编码且以后续较高质量等级的层次解码。还可根据不同编码格式编码信号的不同层次。


背景技术:

2.先前已经在例如wo 2014/170819和wo 2018/046940(其内容以引入的方式并入本文中)中提出了混合式后向兼容编码技术。
3.其中提出了一种方法,其将数据流解析成经编码数据的第一部分和经编码数据的第二部分;实施第一解码器以将经编码数据的第一部分解码成信号的第一再现;实施第二解码器以将经编码数据的第二部分解码成重建数据,所述重建数据指定如何修改所述信号的第一再现;以及将所述重建数据应用于所述信号的第一再现以产生所述信号的第二再现。
4.其中进一步提出了一种新增方法,其中残差要素的集合可用以重建信号的第一时间样本的再现。生成与第一时间样本相关联的时空相关要素的集合。时空相关要素的集合指示多个残差要素之间的空间相关程度和基于所述再现的第一参考数据与基于信号的第二时间样本的再现的第二参考数据之间的时间相关程度。时空相关要素的集合用于生成输出数据。如所提到,所述残差集合经编码以减小总体数据大小。
5.编码应用通常采用量化操作。借助于其中数据值的一个或多个范围中的每一个压缩为单个值的此压缩过程,允许视频数据的集合中的不同值的数目减少,借此致使所述数据更容易压缩。以此方式,量化方案一直可在一些视频中用于将信号改变为量子,使得特定变量可仅采用特定离散量值。通常,视频编解码器将呈视频帧的形式的视觉数据划分为通常具有预定大小或像素数目的离散块。接着通常将变换应用于所述块以便依据频率分量的和表达视觉数据。接着可将经变换数据预乘以量化位阶代码,且接着逐要素除以量化矩阵,其中每一经变换的预乘要素除以矩阵要素得到的输出要素接着经舍入。用除数(即,量化矩阵的不同要素)处理不同的经变换要素通常用于允许对视频对于检视者的视觉外观具有较大影响的那些频率要素相比于不太可感知的分量被有效地分配更多数据或分辨率。
6.寻求优化以进一步减小总体数据大小,同时平衡一旦信号已经重建则不损害用户的总体印象及优化处理速度和复杂性的目标。
7.大多数数据压缩方法包含通常在相对于显示器设置坐标(例如,亮度和色度值、rgb值等)可逆的经变换系数的域中应用的量化级。当在解码模块处接收经量化数据时,解码模块必须能够实施解量化过程以便重建原始系数。
8.在以下描述中,为简单起见,我们将参考视频信号论述所有实施例。然而,应理解,相同实施例加以必要的变通还适用于其它类型的数据。此外,为简单起见,我们将把编码和解码算法/过程称为“编解码器”。
9.典型的编解码器使用单层基于块的方法操作,借此使用若干编码工具处理原始信号以便产生经编码信号,所述经编码信号可接着通过相应解码过程重建。此些典型的编解码器包含(但不限于):mpeg-2、avc/h.264、hevc/h.265、vp8、vp9、av1,以及当前由例如mpeg/iso/itu以及比如开放媒体联盟(aom)等产业联盟等国际标准组织在发展中的编解码器。
10.还存在使用多层基于块的方法操作的一类编解码器。这些编解码器,在行业内被称为“可缩放的”,通常复制由单层基于块的方法对若干层进行的操作,所述若干层是通过对原始信号进行下取样且接着再使用来自下层的尽可能多的信息编码(和解码)上层而获得的。重要的是,这些可缩放编解码器意图在如下意义上向操作者提供可缩放性特征:其需要保证向下缩放的经解码信号(例如,较低分辨率信号)的质量满足现有服务的质量要求,以及确保未经缩放的经解码信号(例如,较高分辨率信号)的质量与由相应单层编解码器产生的质量相当。
11.此些编解码器的实例为svc(见例如“h.264/avc标准的可缩放视频编码扩展”,h.schwarz和m.wien,ieee信号处理杂志,2008年3月),avc的可缩放型式,借此使用相同的基于avc的过程处理每一可缩放层,且上层从下层接收尽可能多的信息(例如,包含残差信息和运动信息的层间预测),所述信息用于编码上层以减少上层处的经编码信息。相反,为了解码,svc解码器需要接收各种开销信息以及解码下层以便能够解码上层。
12.另一实例为shvc(见例如“shvc的概要:高效视频编码标准的可缩放扩展”,j.boyce、y.ye、j.chen和a.ramasubramonian,关于用于视频技术的电路和系统的ieee 汇刊,第26卷,第1期,2016年1月),hevc的可缩放型式。类似于svc,shvc也针对上层使用相同的基于hevc的过程,但其允许下层使用avc或hevc任一个。至关重要的是,同样在shvc中,上层在上层的编码过程中从下层接收尽可能多的信息(例如,包含运动信息的层间处理,经上取样下层作为用于上层编码的额外参考图片)以减少上层处的经编码信息。再次,类似于svc,shvc解码器需要接收各种开销信息以及解码下层以便能够解码上层。
13.近年来,已开发新的多层非基于块的方法-见例如美国专利号us8,977,065、us8,948,248、us8,711,943、us9,129,411、us8,531,321、us9,510,018、us9,300,980和us9,626,772,以及pct申请号pct/ep2013/059833、pct/ep2013/059847、pct/ep2013/059880、pct/ep2013/059853、pct/ep2013/059885、pct/ep2013/059886和pct/ib2014/060716,其全部以引用的方式包含在本文中。此新方法当前正由mpeg/iso开发为国际标准,作为mpeg-5第2部分低复杂性增强视频编码(lcevc)。
14.不同于可缩放编解码器,此新方法对于用于编码下层的编解码器完全不可知。这是因为,上层可在无任何关于下层的信息的情况下解码,如图1中展示。解码器接收由编码器生成的五个流。五个流包含:通过向基础编解码器(例如,avc、hevc,或任何其它编解码器)馈送输入视频的经下取样型式产生第一编码流(经编码基础);通过处理通过取经重建基础编解码器视频和输入视频的经下取样型式之间的差获得的残差(l1残差)产生第二编码流(l1系数层);通过处理通过取经重建基础编码视频的经校正型式的经上取样型式和输入视频之间的差获得的残差(l0残差)产生第三编码流(l0系数层);通过时间处理以指示解码器来产生第四编码流(时间层);以及产生用于配置解码器的第五流(标头)。通过基础解码器实施对应于由编码器中使用的基础编解码器实施的编码算法的解码算法来解码经编
码基础流,且此解码的输出为经解码基础。单独地且独立地,解码l1系数群组以便获得l1残差数据。此外,单独地且独立地,解码l0系数群组以便获得l0残差数据。接着组合经解码基础、l1残差数据和l0残差数据。确切地说,经解码基础与l1残差数据组合以生成中间图片。可接着对中间图片进行上取样且进一步与l0残差数据组合。
15.此外,新方法使用编码和解码过程,所述编码和解码过程处理图片而不使用任何块间预测。实际上,其通过变换像元的n
×
n块(例如,2
×
2或4
×
4)且彼此独立地处理所述块来处理图片。这实现有效处理以及不依赖于相邻块,因此允许图片的处理并行化。


技术实现要素:

16.根据一方面,可提供一种解码经编码信号的方法,所述经编码信号在位流内接收,所述方法包括:接收与经编码信号相关联的经量化数据的集合;确定至少一个解量化参数;以及至少部分基于所述至少一个解量化参数解量化所述经量化数据。
17.根据另一方面,提供一种将经编码流解码为经重建输出信号的方法,所述方法包括:接收根据第一编解码器从第一基础编码流解码的第一输出信号;接收层级编码流;解码所述层级编码流以获得残差集合;以及将残差集合与第一输出信号组合以生成经重建信号,其中所述解码所述层级编码流包括:从层级编码流解码经量化系数的集合;解量化所述经量化系数的集合。所述组合可包含与第一输出信号的经上取样型式组合。
18.层级编码流可以是第一层级编码流;经量化系数的集合可以是经量化系数的第一集合;且残差集合可以是第一残差集合,且其中所述方法可进一步包括:接收第二层级编码流;解码第二层级编码流以获得第二残差集合;以及将第二残差集合与经重建信号的经上取样型式组合以生成原始分辨率输入信号的重建,其中解码第二层级编码流包括:从第二层级编码流解码经量化系数的第二集合;对经量化系数的第二集合进行解量化。
19.所述方法可有利地允许改进编码和解码过程的效率,方式是借助于基于待编码的视频数据根据若干因素中的任一个更改在量化过程中应用于系数的压缩的程度和/或方式。因此,在编码视频流期间执行通常有损的量化程序的方式可经调适使得可取决于输入视频的性质和内容应用编码或压缩效率与输入视频的视觉可感知压缩之间的适当平衡,其为可跨不同视频帧和流极大地变化的关系。确切地说,所述方法允许借助于已执行量化的方式或其已相对于默认模式更改(例如,传信到解码器)的程度例如在与先前编码过程协同操作中在解量化过程处在接收解码器处使用此可调适形式的量化。此可经由发射具有表示或指示所述信息的值的参数来实现。已发现,将此些信息或参数包含在例如解码器处接收的数据中,同时增加数据有效负载的大小,可以实现压缩改进,即使可能在从编码器到解码器的压缩数据流中频繁地调用也如此。
20.在一些实施例中,所述确定步骤进一步包括:从包括经编码流的位流导出待应用于经量化数据的解量化的解量化操作的指示;以及至少部分地基于所述指示确定所述至少一个解量化参数。解量化操作可包括使用至少一个预定解量化参数来确定所述至少一个解量化参数。
21.在此些情况下,通常所述至少一个预定解量化参数对应于默认解量化参数。在此些情况下,优选地,经编码流包括样本的序列,且所述至少一个预定解量化参数对应于用于解码先前样本的解量化参数。
22.在一些实施例中,解量化操作包括使用包括经编码流的位流中接收的至少一个经更新参数更新所述至少一个预定解量化参数。
23.在一些实施例中,所述至少一个解量化参数包括量化步宽参数,所述量化步宽参数在位流中接收。在此些情况下,优选地,所述至少一个解量化参数进一步包括至少一个缩放因子。在此些实施例中,所述确定所述至少一个解量化参数可包括用所述至少一个缩放因子处理量化步长。
24.经量化数据,确切地说,经量化系数的集合,可在一些实施例中包括经量化数据的多个子集,且其中所述至少一个解量化参数包括多个解量化参数,所述多个解量化参数中的每一个对应于经量化数据的所述多个子集中的一个相应子集。此对应性可理解为所述多个量化参数中的每一个与相应子集相关联或对应于相应子集,例如使得根据对应的相应解量化参数解量化给定子集。
25.在此些实施例中,通常,解量化操作进一步包括至少部分地基于来自所述多个解量化参数的其相应解量化参数解量化经量化数据的所述多个子集中的每一个。所述多个解量化参数可包括至少一量化步宽参数,所述量化步宽参数在位流中接收,以及至少一个缩放因子。在此些情况下,优选地,所述至少一个缩放因子包括多个缩放因子,所述多个缩放因子中的每一个对应于经量化数据的所述多个子集中的一个相应子集。所述确定所述至少一个解量化参数可在一些此类实施例中包括导出多个解量化参数,通过用所述多个缩放因子中的一个相应缩放因子处理量化步宽参数获得所述多个解量化参数中的每一个。
26.所述方法可包括例如基于预定函数从所接收量化步宽参数计算实际量化参数。在一些实施例中,通过用缩放因子sf(s)
computed
处理所接收量化步宽参数sw
signalled
,根据下式依据这两个因子的函数计算实际量化参数sw(s)
actual

27.sw(s)
actual
=f(sw
signalled
,sf(s)
computed
,...)。
28.在此些实施例中,通常,函数f(
·
)为根据下式的乘法:
29.sw(s)
actual
=sw
signalled
*sf(s)
computed
30.在此些情况下,优选地,解量化操作包括计算为的经解量化数据,其中qi(
·
)为经量化数据子集,且为第i经量化数据子集的实际量化步长。
31.在一些实施例中,进一步基于步宽修改符(sw(s)
modifier
计算实际量化参数sw(s)
actual
,且根据下式,解量化偏移可用于解量化操作:
32.sw(s)
actual
=f(sw
signalled
,sf(s)
computed
,sw(s)
modifier
)。
33.在此些实施例中,优选地,f(
·
)为根据下式的函数:
34.sw(s)
actual
=((sw
signalled
*sf(s)
computed
) sw(s)
modifier
)。
35.解量化操作可包括计算为以下的经解量化数据
[0036][0037]
其中qi(
·
)为经量化数据子集,且为第i经量化数据子集的实际量化步长,且doi为特定第i经量化数据子集的解量化偏移。
[0038]
在一些实施例中,线性量化器使用非居中解量化偏移。相对于量化步长和非居中解量化偏移,线性量化器可使用不同大小的死区。在一些实施例中,解量化偏移的值可从编
码器接收。优选地,将所接收偏移值偏移在基于步宽的解量化之前添加到所接收量化值。
[0039]
在另一方面中,可提供一种将输入信号编码为多个经编码流的方法,其中经编码流可组合以重建输入信号,所述方法包括:接收输入信号;对输入信号进行下取样以创建经下取样信号;指示使用基础编码器编码经下取样信号以创建基础编码流;指示使用基础解码器解码基础编码流以生成经重建信号;将经重建信号与输入视频进行比较以创建残差集合;以及编码残差集合以创建层级编码流,包含:将变换应用于残差集合以创建经变换系数的集合;将量化操作应用于经变换系数的集合以创建经量化系数的集合;以及将编码操作应用于经量化系数。
[0040]
残差集合可以是第一残差集合,且比较的步骤可包括将经重建信号与经下取样信号进行比较以创建第一残差集合,使得经编码流为第一层级编码流,所述方法进一步包括:解码第一残差集合以生成经解码第一残差集合;使用经解码第一残差集合校正经重建信号以生成经校正的经重建信号;对经校正的经重建信号进行上取样以生成经上取样的经重建信号;将经上取样的经重建信号与输入信号进行比较以创建第二残差集合;以及编码第二残差集合以创建第二层级编码流,包含:将变换应用于第二残差集合以创建第二系数集合;将量化操作应用于第二系数集合以创建经量化系数的第二集合;以及将编码操作应用于经量化系数的第二集合。
[0041]
在一些实施例中,块组折叠过程也可以用于增强编码效率。确切地说,在此些情况下,量化操作进一步包括将块组折叠操作应用于系数的集合,所述块组折叠操作包括具有超过预定最大值的值的每一系数经量化以便具有对应于具有所限定步宽的多个量化块组中的第一量化块组的量化值,所述最大值由所述第一量化块组的上限限定。可执行此操作以便将驻留在选定量化块组上方的所有残差或系数值放置到选定块组中。相对于什么可理解为所涉及的值的范围的端点,第一块组可被视为对应于上部值,或对应于最高(绝对)量化值的块组。块组折叠可在上部和下部端点中的任一个或两个处实施。可针对范围内的负值执行类似过程。块组折叠可经配置以便基于网络条件和基础流处理中的至少一个调整或减小位速率。因此,块组折叠过程可本身为可配置的,例如在各种实施例中,条件和从其导出的基础流处理或参数中的任一个或两个用于配置块组折叠,例如限定块组折叠的参数。
[0042]
在一些实施例中,量化操作进一步包括使用量化偏移,其可确切地说为非居中量化偏移。
[0043]
通常,使用量化偏移包括将量化偏移应用于多个量化块组,所述多个量化块组具有所限定步宽以通过或基于量化偏移的值调整所述多个量化块组中的一个或多个所对应于的值中的每一个。在此些实施例中,可调整所述多个量化块组中的每一个所对应于的值。或者,对应于所述多个块组中的第一块组的开始的值和对应于所述多个块组中的最后块组的末尾的值中的任一个或两个不通过量化偏移的值调整,也就是说,其保持未经量化偏移的值调整。第一块组可理解为对应于数值上最低值或所述范围的最小值。同样,最后块组可理解为表示范围的最大值或数值上最大值。这些调整和不调整可与涉及死区的量化操作和块组折叠组合应用,如本公开中稍后描述。
[0044]
通常,量化偏移的值为可调整或可配置的。在一些实施例中,量化偏移的值可基于指示执行编码所处的操作条件的数据而变化。
[0045]
在一些实施例中,所述方法进一步包括将量化偏移值传信到将接收经编码流的解
码器。此传信可例如在其中量化偏移值在编码期间动态地变化的实施方案中执行。
[0046]
量化操作通常包括在基于量化步宽的量化之前从残差或系数值减去量化偏移值。
[0047]
在一些实施例中,基于残差或系数的符号调整量化偏移的值。此可经实行(即,实施)以便允许关于零值的对称操作。
[0048]
可执行所述方法使得当量化偏移的值被设定为第一预定值时,停用偏移到块组值的应用。举例来说,可通过将量化或解量化偏移值设定为零来进行此操作。
[0049]
在一些实施例中,基于死区的所限定宽度调整量化偏移的值。在此些实施例中,可使用死区执行量化操作,如本公开中稍后详述。
[0050]
在一些实施例中,所述方法可涉及根据步宽参数改变量化操作中使用的步宽。确切地说,可针对系数的集合中的系数中的一个或多个中的每一个,例如针对系数的2
×
2或4
×
4块内的不同系数,改变步宽。举例来说,可改变步宽使得较小步宽值用于被预先确定为在较大程度上影响经解码信号的感知的系数中的一个或多个。影响的程度通常以实验方式确定,借此可获得指示哪些系数更大程度上影响经解码信号对检视者的感知的信息。
[0051]
步宽通常根据基础步宽参数被指派默认值。可根据基础步宽和步宽修改符参数获得一个或多个经修改步宽。举例来说,此可通过根据公式modiffed_stepwidth=base_stepwidth*modiffer获得经修改步宽来执行,其中修改符可基于块或单元内的特定系数设定。
[0052]
在此些实施例中,相应步宽修改符参数可用于修改用于系数中的一个或多个中的每一个的步宽。
[0053]
在一些实施例中,相应步宽值可用于两个或更多个经编码流或增强层级中的每一个,或与之相关联,所述两个或更多个经编码流或增强层级包括基础编码流和一个或多个增强层级编码流。
[0054]
在一些实施例中,根据取决于所采用的增强的层级的增强层级改变步宽修改符参数。可改变步宽修改符使得较小步宽用于第一层级编码流且较大步宽用于基础编码流。
[0055]
在一些优选实施例中,量化操作使用以不同系数和不同增强层级的步宽修改符参数值的集合限定的量化矩阵。因此,所述方法可涉及每一系数和每一增强层级的相应步宽修改参数值。可通过编码器执行所述方法以及通过解码器执行相应解码过程,在不同实施例中借助于各种手段获得量化矩阵。确切地说,可在编码器和解码器中的至少一个处预设量化矩阵,或其中可在编码器和解码器之间传信量化矩阵,且另外或替代地在编码器和解码器中的至少一个处动态地构建量化矩阵。
[0056]
所述方法可进一步包括将量化矩阵构建为一个或多个所存储和一个或多个所传信参数中的至少一个的函数。
[0057]
在一些实施例中,可根据以下公式导出经缩放变换系数d[x][y],其中x=0...ntbs-1,y=0...ntbs-1,以及给定量化矩阵qm[x][y]:
[0058]
d[x][y]=(transformcoeffq[x][y]*((qm[x (levelidxswap*ntbs)][y] stepwidthmodiffer[x][y]) appliedoffset[x][y]),
[0059]
其中transformcoeffq为含有熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列,
[0060]
levelidx是指定增强子层的索引的变量,且appliedoffset[x][y]和
stepwidthmodiffer[x][y]是变量。appliedoffset[x][y]可对应于死区,如本文中其它地方所描述。
[0061]
举例来说,levelidx可针对增强子层1等于1,且1be针对增强子层2等于2。
[0062]
通常,根据以下导出变量stepwidthmodiffer[x][y]:
[0063]
如果dequant_offset_signalled_flag=0,则
[0064]
stepwidthmodiffer[x][y]=((((floor(-cconst*ln(qm[x (levelidxswap*ntbs)][y]))) dconst)*(qm[x (levelidxswap*ntbs)][y]2)))/32768),其中cconst和dconst为常数,且在一个实例中可分别具有值或5242和99614。
[0065]
在一些实施例中,量化操作可包括使用线性量化器量化系数,其中所述线性量化器优选地使用可变大小的死区。在此些实施例中,死区的大小可设定为量化操作中使用的步宽的预定倍数,例如设定为步宽值的线性函数。或者,可使用步宽值的非线性函数。
[0066]
在一些优选实施例中,量化操作中使用的步宽的大小是可变的,且死区的大小更优选地根据可变步宽调适。
[0067]
可通过将量化操作中使用的步宽乘以乘数参数来设定死区的大小,且其中乘数参数的值基于指示执行编码所处的操作条件(例如,可用位速率)的数据而变化。因此,在一些实施例中,乘数也可以是自适应的。
[0068]
通常根据一个或多个量化参数执行量化操作。所述一个或多个量化参数通常设定为以下中的至少一种情况:在一个或多个经编码流中控制和提供所要位速率。也就是说,其可经设定以在一个或多个经编码流中控制和/或提供所要位速率。所要位速率是所有流的共同位速率以便生成共同经编码流,或其中针对不同经编码流提供不同位速率。
[0069]
在一些实施例中,设定所述一个或多个量化参数以便在一组预定义位速率约束内提供所要质量水平或使质量水平最大化。
[0070]
所述方法可包括通过接收接收所述一个或多个经编码流和基础编码流的缓冲器的状态以及使用所述状态确定量化参数,来确定量化参数。
[0071]
缓冲器优选地用于存储和/或组合经编码基础流和经编码增强流,且被配置成在以恒定速率读取输出的同时以可变位速率接收输入。速率控制器可从缓冲器读取状态以便确保缓冲器不会溢出或变空,且数据始终可供在其输出处读取。缓冲器的状态还可以用于生成所述一个或多个量化参数。可基于缓冲器内的数据量控制所述一个或多个量化参数。
[0072]
通常,量化参数的值与缓冲器中的数据量逆相关。
[0073]
在一些实施例中,确定用于每一帧、残差和/或残差群组的量化参数,也就是说以下中的至少一个:每一帧、残差和残差群组。通常,可基于帧的目标数据大小和帧的当前数据大小使用先前量化参数集合确定帧的量化参数。在这些实施例中的任一个中,量化参数可基于先前量化参数集合。
[0074]
所述方法可包括限定曲线集合以将归一化大小映射到所述一个或多个量化参数上,其中每一曲线包括乘数和取决于当前帧的性质的偏移中的一个或多个。可限定曲线集合以将归一化大小映射到量化参数上。每一曲线可具有乘数和偏移中的一个或多个,所述偏移可取决于当前帧的性质(例如,其可取决于待在帧内编码的信息的复杂性)。乘数和偏移可限定曲线的形状。可将乘数应用于大小归一化函数,所述大小归一化函数是量化参数q的函数。在一种情况下,当前大小(即,以q
t-1
编码的帧t的大小)和q
t-1
可用于限定所述曲线
集合的空间内的点。此点可用于从曲线集合选择最接近曲线的集合。这些曲线可以是所述点上方的曲线和所述点下方的曲线或者所述点的最高或最低曲线。最接近曲线的集合可连同所述点一起在内插函数中使用以确定与所述点相关联的新曲线。一旦确定此新曲线,就可确定用于新曲线的乘数和偏移。这些值可接着连同所接收目标大小一起用于确定qt的值(例如,曲线可限定大小的函数和q)。因此,通常,乘数应用于大小归一化函数,所述大小归一化函数是量化参数q的函数。以q
t-1
编码的帧t的当前大小和q
t-1
可用于限定曲线集合的空间内的点,且其中所述点用于从曲线集合选择最接近曲线的集合。最接近曲线可以是所述点上方的曲线和所述点下方的曲线或者所述点的最高或最低曲线。
[0075]
在此些情况下,最接近曲线的集合通常连同所述点一起在内插函数中使用以确定与所述点相关联的新曲线,且可确定所确定的新曲线的乘数和偏移,进一步包括使用所确定的新曲线值的乘数和偏移的值连同所接收目标大小来确定q
t
的值。
[0076]
曲线的集合可存储在可访问的存储器中且基于针对先前帧确定的曲线的集合而更新。在某些情况下,可针对编码单元或块内的不同系数位置,例如针对4或16个系数的阵列中的不同要素(例如,针对2
×
2或4
×
4变换)以不同方式应用自适应量化。
[0077]
在一些实施例中,使用量化矩阵执行量化操作,所述量化矩阵是根据量化矩阵模式参数的所获得值导出的。优选地,在此些情况下,量化矩阵模式参数指定待用于编码过程中的量化矩阵。
[0078]
通常,相应的优选地不同的量化矩阵用于经编码流的两个或更多个层级中的每一个。更优选地,不同量化矩阵用于每一经编码流,其中预先确定默认量化配置,且在编码器和解码器之间传信相对于默认配置的变化。
[0079]
在这些实施例中,所述方法可包括借助于以下中的至少一个致使将不同量化矩阵用于相应经编码流:默认配置,以及借助于超驰默认配置的信令致使将共同量化矩阵用于相应经编码流。
[0080]
在一些实施例中,量化矩阵仅用于多个增强层级中的一个。量化矩阵通常依据其中布置系数的块内的系数的位置来编索引。
[0081]
在一些实施例中,以值的集合限定基础量化矩阵,且根据缩放因子修改基础量化矩阵,所述缩放因子是增强层级中的一个或多个的步宽的函数。举例来说,缩放因子可计算为步宽参数的箝位函数。在一些实施例中,使用缩放因子的指数函数缩放量化矩阵中的每一条目。
[0082]
根据第四方面,提供一种用于将经编码流解码为经重建输出视频的解码器,所述解码器被配置成执行第一或第二方面的方法。
[0083]
根据另一方面,可提供一种(用于)将经编码流解码为经重建输出信号的方法,所述方法包括:接收根据第一编解码器从第一基础编码流解码的第一输出信号;接收层级编码流;解码所述层级编码流以获得残差集合;以及将残差集合与第一输出信号组合以生成经重建信号,其中所述解码所述层级编码流包括:从层级编码流解码经量化系数的集合;解量化所述经量化系数的集合。所述组合可包含与第一输出信号的经上取样型式组合。层级编码流可以是第一层级编码流;经量化系数的集合是经量化系数的第一集合;且残差集合是第一残差集合,且其中所述方法可进一步包括:接收第二层级编码流;解码第二层级编码流以获得第二残差集合;以及将第二残差集合与经重建信号的经上取样型式组合以生成原
始分辨率输入信号的重建,其中解码第二层级编码流包括:从第二层级编码流解码经量化系数的第二集合;对经量化系数的第二集合进行解量化。
[0084]
根据另一方面,提供一种用于编码输入信号的编码器。根据另一方面,提供一种用于解码输入信号的解码器。
[0085]
根据另一方面,提供一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时致使所述处理器执行所述方法。
[0086]
根据另一方面,提供一种呈位流的形式的信号,所述信号至少含有第一部分和第二部分,其中所述第一部分当由解码模块解码时产生经解码信号,且其中所述第二部分提供解码第一部分所需的信息,且其中所述第二部分包括指示待用于解量化第一部分中的一个或多个数据的解量化参数的第一子部分;以及指示待用于解量化第一部分中的所述一个或多个数据的过程的第二子部分。所述第二部分可进一步包括第三子部分,所述第三子部分的存在以第二子部分中指示的过程为条件,所述第三子部分指示将用于解量化第一部分中的所述一个或多个数据的新的解量化参数。举例来说,如果第二子部分中指示的过程要求传信和提供新解量化参数集合,则第三子部分可仅存在于位流中。
[0087]
上文所描述的方面提供技术优点。确切地说,本公开的方法实现解码和接收所传信的解量化参数的有效且灵活的方式。代替于始终针对所有经量化数据使用相同量化参数,此方法实现基于预定信息和所传信信息的组合灵活地使用量化参数来解量化经量化数据。这继而实现更有效、精细且精确的解量化,从而产生较好的经解码数据。第二,可执行数据的传信以便优化位流且在不需要时保存数据。举例来说,在一些实施方案中,仅当需要修改量化参数时才发送修改参数。
附图说明
[0088]
图1展示编码过程的高级示意图;
[0089]
图2展示解码过程的高级示意图;
[0090]
图3展示编码过程和特定编码步骤的高级示意图;
[0091]
图4展示解码过程和特定解码步骤的高级示意图;
[0092]
图5展示编码过程的高级示意图;
[0093]
图6展示另一解码过程的高级示意图;
[0094]
图7展示本文中所描述的概念的流程图;
[0095]
图8a-8d展示根据特定实例可如何执行编码过程中的量化;
[0096]
图9展示实例解码模块;
[0097]
图10展示实例解码过程;
[0098]
图11展示实例编码模块;
[0099]
图12是编码器的示意性图示;以及,
[0100]
图13是解码器的示意性图示。
具体实施方式
[0101]
本发明涉及方法。确切地说,本发明涉及(用于)编码和解码信号的方法。处理数据可包含但不限于获得、导出、输出、接收和重建数据。
[0102]
本文中所论述的编码技术为灵活、可调适、高效且运算上便宜的编码格式,其组合了视频编码格式、基础编解码器(例如,avc、hevc或任何其它当前或未来编解码器)与使用不同技术编码的增强层级的经编码数据。所述技术使用经下取样源信号,其使用基础编解码器编码以形成基础流。使用例如通过提高分辨率或通过提高帧率校正或增强基础流的残差的经编码集合来形成增强流。阶层式结构中可存在多个增强层级数据。在特定布置中,基础流可由硬件解码器解码,而增强流可适于软件实施方案。
[0103]
新编码技术中使用的任何优化根据增强流的特定要求或约束定制且具有低复杂性是至关重要的。此类要求或约束包含:由对于增强流的软件解码的需要产生的计算能力的可能降低;对于残差的经解码集合与经解码帧的组合的需要;残差数据的可能结构,即相对较高比例的零值与较大范围内的高度可变数据值;系数的输入量化块的细微差别;以及为分离成各种分量的离散残差帧的集合的增强流的结构。应注意,置于增强流上的约束意味着简单且快速的熵编码操作为基本的以使得增强流能够有效地校正或增强基础经解码视频的个别帧。应注意,在一些情境下,基础流在组合之前也基本上同时被解码,这对资源造成了压力。
[0104]
在一种情况下,本文中所描述的方法可应用于反映视频信号的不同颜色分量的所谓的数据平面。举例来说,本文中所描述的方法可应用于反映不同颜色通道的yuv或rgb数据的不同平面。可并行地处理不同颜色通道。因此,对如本文所描述的残差集合的参考可包括多个残差集合,其中每一颜色分量具有形成组合增强流的一部分的不同残差集合。每一流的分量可以任何逻辑次序比对,例如,相同层级处的每一平面可分组在一起且一起发送,或者,每一平面中的不同层级的残差集合可一起发送。
[0105]
此当前文献优选地满足以下iso/iec文献的要求:“寻求针对低复杂性视频编码增强的提议(call for proposals for low complexity video coding enhancements)”iso/iecjtc1/sc29/wg11 n17944,中国澳门,2018年10月,以及“针对低复杂性视频编码增强的要求(requirements for low complexity video coding enhancements)”iso/iecjtc1/sc29/wg11 n18098,中国澳门,2018年10月(其以引用的方式并入本文中)。
[0106]
其中可应用当前所描述的技术的所提议编码方案的一般结构使用通过基础编解码器编码的经下取样源信号、将第一层级的校正数据添加到基础编解码器的经解码输出以生成经校正图片,且接着将另一增强层级数据添加到经校正图片的上取样型式。因此,所述流被视为基础流和增强流。此结构形成多个自由度,允许对许多情形具有极大的灵活性和适应性,从而使得编码格式适合于许多用例,包含过顶(over-the-top,ott)传输、实况流式传输、实况超高清(uhd)广播等。尽管基础编解码器的经解码输出并非意图用于检视,但其为较低分辨率下的完全经解码视频,从而使得输出与现有解码器兼容,并且在认为合适的情况下也可用作较低分辨率输出。在某些情况下,基础编解码器可用于创建基础流。基础编解码器可包括以模块化或“黑匣子”方式控制的独立编解码器。本文描述的方法可借助于计算机程序代码实施,所述计算机程序代码由处理器执行且在硬件和/或软件实施的基础编解码器上进行函数调用。
[0107]
一般来说,如本文所使用的术语“残差”指代参考阵列或参考帧的值与数据的实际阵列或帧之间的差。所述阵列可以是表示编码单元的一维或二维阵列。举例来说,编码单元可以是对应于输入视频帧的类似大小的区域的2
×
2或4
×
4残差值集合。应注意,此一般化
实例对于所执行编码操作和输入信号的性质为不可知的。对如本文中所使用的“残差数据”的提及指代从残差集合导出的数据,例如残差集合本身或对残差集合执行的一组数据处理操作的输出。在整个本说明书中,一般来说,残差集合包含多个残差或残差要素,每一残差或残差要素对应于信号要素,即信号或原始数据的要素。所述信号可以是图像或视频。在这些实例中,残差集合对应于视频的图像或帧,其中每一残差与信号的像素相关联,所述像素为信号要素。本文中所公开的实例描述可如何修改(即,处理)这些残差以影响编码管线或最终解码的图像,同时减小总体数据大小。可以每残差要素(或残差)的方式处理残差或集合,或以群组为基础例如以每拼片或每编码单元的方式来处理残差或集合,其中拼片或编码单元是残差集合的相邻子集。在一种情况下,拼片可包括较小编码单元的群组。应注意,可在每一视频帧上或在序列中仅设定数目的帧上执行处理。
[0108]
一般来说,每一增强流或两个增强流可使用网络抽象层单元(nalu)的集合囊封到一个或多个增强位流中。nalu意图囊封增强位流以便将增强应用于正确的基础重建帧。nalu可例如含有到nalu的参考索引,其含有增强必须应用于的基础解码器重建帧位流。以此方式,增强可同步到基础流,且每一位流的帧组合以产生经解码输出视频(即,增强层级的每一帧的残差与基础解码流的帧组合)。图片的群组可表示多个nalu。
[0109]
返回到上文所描述的初始过程,其中基础流连同增强流内的两个层级(或子层级)的增强一起提供,一般化编码过程的实例描绘于图1的框图中。处理输入的全分辨率视频100以生成各种编码流101、102、103。通过向基础编解码器(例如,avc、hevc或任何其它编解码器)馈送输入视频的下取样型式来产生第一编码流(经编码基础流)。经编码基础流可被称为基础层或基础层级。第二编码流(经编码层级1流)通过处理通过取经重建基础编解码器视频与输入视频的下取样型式之间的差而获得的残差来产生。第三编码流(经编码层级2流)通过处理通过取经重建的基础编码视频的经校正型式的上取样型式与输入视频之间的差而获得的残差来产生。在某些情况下,图1的组件可提供一般低复杂性编码器。在某些情况下,可通过形成低复杂性编码器的一部分的编码过程来生成增强流,且低复杂性编码器可被配置成控制独立的基础编码器和解码器(例如,封装为基础编解码器)。在其它情况下,基础编码器和解码器可供应为低复杂性编码器的一部分。在一种情况下,图1的低复杂性编码器可被视为用于基础编解码器的一种形式的封套,其中基础编解码器的功能性可对于实施低复杂性编码器的实体隐藏。
[0110]
由下取样组件105示出的下取样操作可应用于输入视频以产生待由基础编解码器的基础编码器113编码的经下取样视频。下取样可在竖直和水平方向两者上,或替代地仅在水平方向上进行。基础编码器113和基础解码器114可由基础编解码器实施(例如,作为共同编解码器的不同功能)。基础编解码器和/或基础编码器113与基础解码器114中的一个或多个可包括适当地配置的电子电路系统(例如,硬件编码器/解码器)和/或由处理器执行的计算机程序代码。
[0111]
每一增强流编码过程可不必需包含上取样步骤。举例来说,在图1中,第一增强流在概念上为校正流,而第二增强流经上取样以提供增强层级。
[0112]
更详细地参见生成增强流的过程,为了生成经编码层级1流,由基础解码器114解码经编码基础流(即,解码操作应用于经编码基础流以生成经解码基础流)。解码可由基础编解码器的解码功能或模式执行。接着在层级1比较器110处创建经解码基础流与经下取样
输入视频之间的差(即,减法运算应用于经下取样输入视频和经解码基础流以生成第一残差集合)。比较器110的输出可被称为第一残差集合,例如残差数据的表面或帧,其中在基础编码器113、基础解码器114和下取样块105的输出的分辨率下针对每一像元确定残差值。
[0113]
所述差接着由第一编码器115(即,层级1编码器)编码以生成经编码层级1流102(即,编码操作应用于第一残差集合以生成第一增强流)。
[0114]
如上所述,增强流可包括第一增强层级102和第二增强层级103。第一增强层级102可被视为经校正流,例如以比输入视频100低的分辨率向基础编码/解码视频信号提供校正层级的流。第二增强层级103可被视为将经校正流转换为原始输入视频100的另一增强层级,例如其将增强层级或校正应用于从经校正流重建的信号。
[0115]
在图1的实例中,通过对另一残差集合进行编码来创建第二增强层级103。所述另一残差集合由层级2比较器119生成。层级2比较器119确定例如上取样组件117的输出等经解码层级1流的上取样型式与输入视频100之间的差。通过将第一解码器(即,层级1解码器)应用于第一编码器115的输出来生成到上取样组件117的输入。此生成经解码的层级1残差集合。这些残差接着在求和组件120处与基础解码器114的输出组合。此有效地将层级1残差应用于基础解码器114的输出。其允许层级1编码和解码过程中的损失由层级2残差校正。求和组件120的输出可被视为表示对解码器处的经编码基础流101和经编码层级1流102应用层级1处理的输出的模拟信号。
[0116]
如所提到,将经上取样流与输入视频进行比较,这创建另一残差集合(即,差运算应用于经上取样的重新创建的流以生成另一残差集合)。所述另一残差集合接着由第二编码器121(即,层级2编码器)编码为经编码层级2增强流(即,编码操作接着应用于所述另一残差集合以生成另一经编码增强流)。
[0117]
因此,如图1中所示出和上文所描述,编码过程的输出为基础流101和一个或多个增强流102、103,其优选地包括第一增强层级和另一增强层级。三个流101、102和103可在具有或不具有例如控制标头等额外信息的情况下组合以生成用于表示输入视频100的视频编码框架结构的组合流。应注意,图1中展示的组件可对数据的块或编码单元进行操作,所述块或编码单元例如对应于在特定分辨率水平下的帧的2
×
2或4
×
4部分。所述组件在无任何块间相依性的情况下操作,因此其可并行地应用于帧内的多个块或编码单元。此不同于对比的视频编码方案,在对比的视频编码方案中,块之间存在相依性(例如空间相依性或时间相依性)。对比的视频编码方案的相依性限制并行水平且需要高得多的复杂性。
[0118]
在图2的框图中描绘相应的一般化解码过程。可以说,图2展示对应于图1的低复杂性编码器的低复杂性解码器。低复杂性解码器接收由低复杂性编码器生成的三个流101、102、103连同含有另外的解码信息的标头204。经编码基础流101由对应于在低复杂性编码器中使用的基础编解码器的基础解码器210解码。经编码层级1流102由第一解码器211(即,层级1解码器)接收,所述第一解码器对如由图1的第一编码器115编码的第一残差集合进行解码。在第一求和组件212处,将基础解码器210的输出与从第一解码器211获得的经解码残差组合。通过上取样组件213对可称为层级1经重建视频信号的组合视频进行上取样。经编码层级2流103由第二解码器214(即,层级2解码器)接收。第二解码器214对如由图1的第二编码器121编码的第二残差集合进行解码。尽管标头204在图2中展示为由第二解码器214使用,但其也可由第一解码器211以及基础解码器210使用。第二解码器214的输出是经解码残
差的第二集合。这些可处于比第一残差集合和到上取样组件213的输入更高的分辨率。在第二求和组件215处,来自第二解码器214的第二残差集合与上取样组件213的输出(即,上取样的经重建层级1信号)组合以重建经解码视频250。
[0119]
按照低复杂性编码器,图2的低复杂性解码器可在视频信号的给定帧的不同块或编码单元上并行地操作。另外,可并行地执行由基础解码器210、第一解码器211和第二解码器214中的两个或更多个进行的解码。这是可能的,因为不存在块间相依性。
[0120]
在解码过程中,解码器可解析标头204(其可含有全局配置信息、图片或帧配置信息和数据块配置信息)且基于那些标头而配置低复杂性解码器。为了重新创建输入视频,低复杂性解码器可对基础流、第一增强流和另一或第二增强流中的每一个进行解码。所述流的帧可经同步且接着组合以导出经解码视频250。取决于低复杂性编码器和解码器的配置,经解码视频250可为原始输入视频100的有损或无损重建。在许多情况下,经解码视频250可为原始输入视频100的有损重建,其中所述损失对经解码视频250的感知具有减小的影响或最小影响。
[0121]
在图1和2中的每一个中,层级2和层级1编码操作可包含变换、量化和熵编码的步骤(例如,按所述次序)。类似地,在解码级处,可将残差传递通过熵解码器、解量化器和逆变换模块(例如,按所述次序)。可使用任何合适的编码和相应的解码操作。然而,优选地,层级2和层级1编码步骤可在软件中执行(例如,如由编码装置中的一个或多个中央或图形处理单元执行)。
[0122]
如本文中所描述的变换可使用定向分解变换,例如基于哈达玛的变换(hadamard-based transform)。这两者可包括应用于残差的展平编码单元(即,2
×
2或4
×
4残差块)的小内核或矩阵。关于变换的更多细节可例如查阅以引用的方式并入本文中的专利申请pct/ep2013/059847或pct/gb2017/052632。编码器可在待使用的不同变换之间选择,例如在待应用的内核的大小之间选择。
[0123]
所述变换可将残差信息变换到四个表面。举例来说,所述变换可产生以下分量:平均、竖直、水平和对角。如在本公开中较早提及,由变换输出的这些分量可在此些实施例中被采用为待根据所描述的方法量化的系数。
[0124]
概括地说,本文中的方法和设备基于总体方法,其经由现有编码和/或解码算法(例如mpeg标准,比如avc/h.264、hevc/h.265等;以及非标准算法,比如vp9、av1等)构建,用作相应地用于不同编码和/或解码方法的增强层的基线。实例的总体方法背后的概念为以阶层方式对视频帧进行编码/解码,与使用mpeg系列算法中所使用的基于块的方法形成对比。以阶层方式对帧进行编码包含针对全帧生成残差,且接着针对抽取帧生成残差,等等。
[0125]
全尺寸视频帧的视频压缩残差数据可被称为loq-2(例如,对于hd视频帧为1920
×
1080,或针对uhd帧为更高),而经抽取帧的视频压缩残差数据可被称为loq-x,其中x表示对应于阶层式抽取的数目。在图1和2的所描述的实例中,变量x可具有表示第一和第二增强流的值1和2。因此,存在对于其将生成压缩残差的2个阶层式层级。还可在不具有任何功能性改变的情况下应用层级的其它命名方案(例如,本文中所描述的层级1和层级2增强流可替代地被称作层级1和层级2流-表示从最高分辨率开始倒计数)。
[0126]
图3的框图中描绘了更详细的编码过程。编码过程拆分成如由虚线所示的两个半部。虚线下方是编码器300的基础层级,其可有用地实施于硬件或软件中。虚线上方是增强
层级,其可有用地实施于软件中。编码器300可按需要包括仅增强层级过程,或基础层级过程与增强层级过程的组合。编码器300可有用地实施于软件中,尤其是在增强层级处。此布置允许例如使用固件(例如,软件)更新升级提供基础层级的传统硬件编码器,其中固件被配置成提供增强层级。在较新的装置中,基础层级和增强层级两者可设置于硬件和/或硬件与软件的组合中。
[0127]
一般水平下的编码器拓扑如下。编码器300包括用于接收输入信号30的输入i。输入信号30可包括输入视频信号,其中逐帧地应用编码器。输入i连接到下取样器305d和处理块300-2。下取样器305d可对应于图1的下取样组件105,且处理块300-2可对应于图1的第二编码器121。下取样器305d在编码器300的基础层级处输出到基础编解码器320。基础编解码器320可实施图1的基础编码器113和基础解码器114。下取样器305d还输出到处理块300-1。处理块300-1可对应于图1的第一编码器115。处理块300-1将输出传递到上取样器305u,其继而输出到处理块300-2。上取样器305u可对应于图1的上取样组件117。处理块300-2和300-1中的每一个包括以下模块中的一个或多个:变换块310、量化块320、熵编码块330和残差处理块350。残差块350可在变换块310之前发生,和/或控制处理块300中的残差处理。处理的次序可如图中所陈述。
[0128]
输入信号30,例如在此实例中完全(或最高)分辨率视频,由编码器300处理以生成各种编码流。通过使用下取样器305d向基础层级处的基础编解码器320(例如,avc、hevc或任何其它编解码器)馈送输入视频30的下取样型式来产生基础编码流。基础编码流可包括基础编解码器320的基础编码器的输出。通过重建经编码基础流以创建基础重建,且接着取基础重建和输入视频30的下取样型式之间的差,来创建第一编码流(经编码层级1流)。重建经编码基础流可包括从基础编解码器接收经解码基础流(即,到处理块300-1的输入包括如图1所示的基础解码流)。接着在块300-1处处理差信号以创建经编码层级1流。块300-1包括变换块310-1、量化块320-1和熵编码块330-1。通过使用上取样器305u对基础重建的经校正型式进行上取样,且取基础重建的经校正型式和输入信号30之间的差,来创建第二编码流(经编码层级2流)。接着在块300-2处处理此差信号以创建经编码层级2流。块300-2包括变换块310-2、量化块320-2、熵编码块330-2和残差处理块350-2。按照处理块300-1,可按图中展示的次序执行各块(例如,残差处理继之以变换继之以量化继之以熵编码)。
[0129]
量化方案可用于将残差信号创建为量,使得特定变量可采用仅特定离散量值。在一种情况下,量化包括除以预定步宽。此可在两个层级(1和2)处应用。举例来说,块320处的量化可包括将经变换残差值除以步宽(例如,其中使用整数商来生成量化值且忽略余数)。步宽可以是预先确定的,例如基于所要量化水平选择。在一种情况下,除以步宽可转换为乘以逆步宽,其可更高效地实施于硬件中。在此情况下,例如块320处的解量化可包括乘以步宽。如本文所描述的熵编码可包括游程长度编码(rle),接着使用霍夫曼编码器(huffman encoder)处理经编码输出。在某些情况下,当需要熵编码时,可使用这些方案中的仅一个。
[0130]
经编码基础流可被称为基础层级流。
[0131]
如早先所描述,通过将原始形式的图像信号与经重建形式的图像信号进行比较来计算残差。举例来说,在一种情况下,通过从原始形式的图像信号(例如,如图中所指示的输入视频)减去上取样的输出来确定l-2增强流的残差。到上取样的输入可被称为模拟解码之后信号的重建。在另一情况下,通过从经下取样形式的原始图像信号(例如,下取样的输出)
减去由基础解码器输出的图像流来确定l-1增强流的残差。
[0132]
在图4的框图中描绘对应于图3的编码器的执行解码过程的解码器400。解码过程拆分成如由虚线所示的两个半部。虚线下方是解码器400的基础层级,其可有用地实施于硬件中。虚线上方是增强层级,其可有用地实施于软件中。解码器400可按需要包括仅增强层级过程,或基础层级过程与增强层级过程的组合。解码器400可有用地实施于软件中,尤其是在增强层级处,且可合适地优于传统解码技术,尤其是传统硬件技术。传统技术是指先前开发和销售的已经在市场中且不便更换和/或更换代价昂贵且仍可用于解码信号的目的的早期的技术。在其它情况下,基础层级可包括任何现有和/或将来视频编码工具或技术。
[0133]
一般水平下的解码器拓扑如下。解码器400包括输入(未图示),其用于接收包括经编码基础流、经编码层级1流和经编码层级2流的一个或多个输入信号连同含有另外的解码信息的任选标头。解码器400包括基础层级处的基础解码器420,以及增强层级处的处理块400-1和400-2。上取样器405u还设置在处理块400-1和400-2之间以向处理块400-2提供由处理块400-1输出的信号的上取样型式。基础解码器420可对应于图2的基础解码器210,处理块400-1可对应于图2的第一解码器211,处理块400-2可对应于图2的第二解码器214,且上取样器405u可对应于图2的上取样器213。
[0134]
解码器400接收所述一个或多个输入信号,且引导由编码器300生成的三个流。经编码基础流导向基础解码器420且由基础解码器420解码,所述基础解码器对应于编码器300中使用的基础编解码器420,且用以使基础层级处的编码过程逆向。经编码层级1流由解码器400的块400-1处理以重新创建由编码器300创建的第一残差集合。块400-1对应于编码器300中的处理块300-1,且在基本层级处用以使块300-1的处理逆向或大体上逆向。基础解码器420的输出与从经编码层级1流获得的第一残差集合组合。组合信号由上取样器405u上取样。经编码层级2流由块400-2处理以重新创建由编码器300创建的另外的残差。块400-2对应于编码器300的处理块300-2,且在基本层级处用以使块300-2的处理逆向或大体上逆向。来自上取样器405u的上取样信号与从经编码层级2流获得的另外的残差组合以创建输入信号30的层级2重建。处理块400-2的输出可视为类似于图2的经解码视频250的经解码视频。
[0135]
如上所述,增强流可包括两个流,即,经编码层级1流(第一增强层级)和经编码层级2流(第二增强层级)。经编码层级1流提供校正数据的集合,其可与基础流的经解码型式组合以生成经校正图片。
[0136]
图5更详细地展示图1的编码器300。经编码基础流由基础编码器320e直接创建,且可根据需要经量化和熵编码。在某些情况下,这些后面的过程可作为基础编码器320e所进行的编码的一部分而执行。为了生成经编码层级1流,在编码器300处解码经编码基础流(即,在基础解码块320d处将解码操作应用于经编码基础流)。基础解码块320d展示为编码器300的基础层级的一部分,且展示为与相应的基础编码块320e分离。举例来说,基础解码器320d可以是用基础编解码器补充基呈础编码器320e的形式的编码组件的解码组件。在其它实例中,基础解码块320d可实际上是增强层级的一部分,且确切地说可以是处理块300-1的一部分。
[0137]
返回到图5,创建从基础解码块320d输出的经解码基础流和下取样的输入视频之间的差(即,将减法运算310-s应用于下取样的输入视频和经解码基础流以生成第一残差集
c生成如很可能将在解码器处生成的输入视频的下取样型式的重建,-即,经重建基础编解码器视频)。如图3和图5中所示出,接着通过上取样器305u对经重建的基础编解码器视频进行上取样。
[0144]
接着将上取样信号(即,参考信号或帧)与输入信号30(即,所要信号或帧)进行比较以创建第二残差集合(即,将差运算300-s应用于经上取样的重新创建的流以生成另一残差集合)。接着在块300-2处处理第二残差集合以变为经编码层级2流(即,接着将编码操作应用于另一或第二残差集合以生成经编码的另一或第二增强流)。
[0145]
确切地说,变换第二残差集合(即,对另一残差集合执行变换操作310-2以生成另一经变换残差集合)。经变换残差接着以上文关于第一残差集合所描述的方式经量化和熵编码(即,将量化操作320-2应用于经变换残差集合以生成另一经量化残差集合;且将熵编码操作320-2应用于经量化的另一残差集合以生成含有另一层级的增强信息的经编码层级2流)。然而,可执行仅量化步骤20-1,或仅变换和量化步骤。可任选地作为补充使用熵编码。优选地,熵编码操作可以是霍夫曼编码操作或游程长度编码(rle)操作或这两者。
[0146]
因此,如图3和5中所示出和上文所描述,编码过程的输出是基础层级处的基础流,以及优选地包括第一增强层级和另一增强层级的增强层级处的一个或多个增强流。如参考先前实例所论述,图5的操作可并行地应用于帧的颜色分量的编码单元或块,因为不存在块间相依性。还可并行地执行对颜色分量集合内的每一颜色分量的编码(例如,使得根据(帧数目)*(颜色分量数目)*(每帧的编码单元数目)复制图5的操作)。还应注意,不同颜色分量可具有每帧不同数目个编码单元,例如可在人类视觉可检测到照度改变大于颜色改变时在比色度(例如,u或v)分量集合高的分辨率下处理亮度(例如,y)分量。
[0147]
在解码器400处接收经编码基础流和一个或多个增强流。图6更详细地展示图4的解码器。
[0148]
在基础解码器420处解码经编码基础流以便产生编码器300处接收的输入信号30的基础重建。此基础重建可在实践中使用以在较低质量水平下提供信号30的可检视再现。然而,此基础重建信号的主要目的是提供输入信号30的较高质量再现的基础。为此,将经解码基础流提供到处理块400-1。处理块400-1还接收经编码层级1流且使已由编码器300应用的任何编码、量化和变换逆向。块400-1包括熵解码过程430-1、逆量化过程420-1和逆变换过程410-1。可选地,可取决于编码器处的相应块300-1处实行的操作执行这些步骤中的仅一个或多个。通过执行这些相应步骤,使包括第一残差集合的经解码层级1流在解码器400处可用。第一残差集合与来自基础解码器420的经解码基础流组合(即,在经解码基础流和经解码第一残差集合上执行求和运算410-c以生成输入视频的下取样型式的重建-即,经重建基础编解码器视频)。如图4和图6中所示出,接着由上取样器405u对经重建的基础编解码器视频进行上取样。
[0149]
此外,且任选地并行地,在图2的块400-2处处理经编码层级2流以便产生经解码的另一残差集合。类似于处理块300-2,处理块400-2包括熵解码过程430-2、逆量化过程420-2和逆变换过程410-2。当然,这些操作将对应于在编码器300中的块300-2处执行的操作,且可视需要省略这些步骤中的一个或多个。块400-2产生包括另一残差集合的经解码层级2流,且这些残差在操作400-c处与来自上取样器405u的输出求和以便创建输入信号30的层级2重建。层级2重建可视为例如图2中的250等输出的经解码视频。在某些实例中,还有可能
获得和检视传递到上取样器405u的经重建视频-此将具有第一增强层级但可以处于比层级2重建低的分辨率。
[0150]
因此,如上文所示出且描述,解码过程的输出是(任选的)基础重建,以及在较高层级处的原始信号重建。此实例尤其非常适合于在不同帧分辨率下创建经编码及经解码视频。举例来说,输入信号30可以是包括1920
×
1080分辨率下的帧的hd视频信号。在某些情况下,基础重建和层级2重建两者可由显示装置使用。举例来说,在网络业务的情况下,层级2流可比层级1流和基础流更多地被中断(因为其可含有至多4
×
数据量,其中下取样将每一方向上的维度减少2)。在此情况下,当业务发生时,显示装置可恢复显示基础重建,而层级2流被中断(例如,当层级2重建不可用时),且接着当网络条件改进时恢复显示层级2重建。当解码装置遭受资源约束时可应用类似方法,例如执行系统更新的机顶盒可具有操作基础解码器220以输出基础重建,但可不具有处理容量来计算层级2重建。
[0151]
编码布置还使得视频分布器能够将视频分布到一组异质装置;仅具有基础解码器220的那些装置检视基础重建,而具有增强层级的那些装置可检视较高质量层级2重建。在对比案例中,需要单独分辨率下的两个完整视频流来服务于两组装置。由于层级2和层级1增强流对残差数据进行编码,可更有效地对层级2和层级1增强流进行编码,例如残差数据的分布通常大部分质量都在0左右(即,不存在差)且通常采取约0的小范围值。量化之后的情况尤其如此。相比而言,不同分辨率下的完整视频流将具有非零均值或中值的不同分布,所述值需要较高位速率以供传输到解码器。
[0152]
在某些实例中,残差可被视为特定质量水平或分辨率下的误差或差。在所描述实例中,存在两个质量水平或分辨率且因此存在两个残差集合(l-1和l-2)。本文中所描述的每一残差集合对不同形式的误差或差建模。举例来说,l-1残差通常校正基础编码器的特性,例如校正作为编码过程的部分由基础编码器引入的假影。相比而言,举例来说,l-2残差通常校正由质量水平中的转变引入的复合效应和由l-1校正引入的差(例如,由l-1编码管线在例如4或16个像素的区域等更广空间尺度上生成的假影)。此意味着以下内容并非是显而易见的:对一个残差集合执行的操作必定会向另一残差集合提供相同的效应,例如每一残差集合可具有不同统计样式和相关集合。
[0153]
在本文中所描述的实例中,残差由编码管线进行编码。这可包含变换、量化和熵编码操作。其还可包含残差分级、加权和滤波。这些管线展示于图1以及3a和3b中。随后将残差传输到解码器,例如作为l-1和l-2增强流,所述增强流可与基础流组合作为混合流(或单独地传输)。在一种情况下,设定用于包括基础流和两个增强流的混合数据流的位速率,且接着基于正处理的数据将不同自适应位速率应用于个别流以满足设定的位速率(例如,以低假影水平所感知的高质量视频可通过自适应地将位速率指派给不同个别流(即使在逐帧层级处)而构造,以使得经约束数据可由感知上最有影响的个别流使用,所述个别流可随着图像数据改变而改变)。
[0154]
如本文中所描述的残差集合可被视为稀疏数据,例如在许多情况下对于给定像素或区域不存在差,且所得残差值为零。当查看残差的分布时,将许多概率质量分配到接近零定位的小残差值,例如对于-2、-1、0、1、2等的某些视频值发生得最频繁。在某些情况下,残差值的分布关于0对称或近似对称。在某些测试视频案例中,发现残差值的分布关于0呈类似于对数或指数分布的形状(例如,对称地或近似对称地)。残差值的准确分布可取决于输
入视频流的内容。
[0155]
残差可本身被视为二维图像,例如差的差量图像。以此方式,可以看到数据的稀疏性涉及在残差图像中可见的比如“点”、小“线”、“边缘”、“拐角”等特征。已发现这些特征通常不完全相关(例如,在空间上和/或在时间上)。所述特征具有不同于其来源于的图像数据的特性(例如,原始视频信号的像素特性)的特性。
[0156]
由于残差的特性不同于所述残差来源于的图像数据的特性,因此通常不可能应用标准编码方法,例如传统动态图片专家组(mpeg)编码和解码标准中发现的那些方法。举例来说,许多对比方案使用较大变换(例如,正常视频帧中的较大像素区域的变换)。归因于例如如上文所描述的残差的特性,对残差图像使用这些对比的大变换将是极低效的。举例来说,使用经设计用于正常图像的区域的大块对残差图像中的小点进行编码将是非常困难的。
[0157]
本文中所描述的某些实例通过代替地使用较小和简单的变换内核(例如,如本文中所呈现的2
×
2或4
×
4内核-定向分解和定向分解平方)来解决这些问题。可使用哈达玛矩阵(例如,用于展平2
×
2编码块的4
×
4矩阵,或用于展平4
×
4编码块的16
×
16矩阵)来应用本文中所描述的变换。这在与对比的视频编码方法不同的方向上移动。将这些新方法应用于残差块会生成压缩效率。举例来说,某些变换生成可有效地压缩的不相关系数(例如,在空间中)。虽然可例如针对残差图像中的线利用系数之间的相关,但这些相关可能导致编码复杂性,使得难以在传统和低资源装置上实施,且这些相关常常生成需要校正的其它复杂假影。通过将某些残差值设定为0(即,不转发这些残差值以供处理)来预处理残差可提供可控制且灵活的方式来管理位速率和流带宽,以及资源使用。
[0158]
为了完整起见,图7以流程图的形式示出本文中所描述的概念的广泛原理。方法1000包含:接收输入视频(步骤1001);对输入视频进行下取样以创建经下取样视频(步骤1002);指示使用基础编码器编码经下取样视频以创建基础编码流(步骤1003);指示使用基础解码器解码基础编码流以生成经重建视频(步骤1004);将经重建视频与经下取样视频进行比较以创建第一残差集合(步骤1005);以及编码第一残差集合以创建第一层级编码流,包含:将变换应用于第一残差集合以创建第一系数集合(步骤1006);将量化操作应用于第一系数集合以创建经量化系数的第一集合(步骤1007);以及将编码操作应用于经量化系数的第一集合(步骤1008),其中应用量化操作包括:基于待量化的第一系数集合调适所述量化,包含改变用于第一系数集合中的不同系数的步宽,其中从所述调适导出的第一参数集合传信到解码器以实现经量化系数的第一集合的解量化。
[0159]
图8a提供可如何基于具有限定的步宽的块组执行残差和/或系数(经变换残差)的量化的实例。图8a的x轴表示残差或系数值。在此实例中,以步宽5限定块组的数目。步宽可理解为量化步长,如图式中所展示。步宽的大小可例如基于参数值来选择。在某些情况下,可动态地例如基于上文描述的速率控制实例来设定步宽的大小。图8a中,步宽产生对应于0-4、5-9、10-14、15-19的范围内的残差值的块组(即,0到4包含0和4两者)块组宽度可被配置成视需要包含或排除端点。在此实例中,通过用整数值替换落到块组内的所有值来执行量化(例如,0和4之间(包含端点)的残差值具有量化值1)。图8a中,可通过以下操作来执行量化:除以步宽(例如,5),取结果的本底(即,对于正值,小于某一小数的最接近的整数),且接着加一(例如,3/5=0.6,floor(0.6)=0,0 1=1;或16/5=3.2,floor(3.2)=3,3 1=
4)。可以类似方式处理负值,例如通过作用于绝对值,接着在计算之后转换为负值(例如,abs(-9)=9,9/5=1.8,floor(1.8)=1,1 1=2,2*-1=-2)。图8a展示其中所有块组具有共同步宽的线性量化的案例。应注意,可制定基于此方法的各种不同实施方案,举例来说,第一块组可具有量化值0而非1,或可包括值1到5(包含端点)。图8a仅为根据给定步宽的块组的量化的一个图示。
[0160]
图8b展示可如何实施所谓的“死区”(dz)。此可理解为量化器的零输出值附近的区,即,含有零信号且大小可与步宽相同或不同的带区。因此,对于接近零的输入的此带区,信号可有效地衰减,使得可通常对应于视觉数据中的噪声的低电平信号不会被不必要地分配数据。图8b中,将具有预定义范围内的值的残差或系数设定为0。图8b中,预定义范围是值0附近的范围。图8b中,将小于6且大于-6的值设定为0。死区可设定为固定范围(例如,-6到6)或可基于步宽来设定。在一种情况下,死区可设定为预定义多个步宽,例如设定为步宽值的线性函数。在图8b的实例中,将死区设定为2.4*步宽。因此,在步宽5的情况下,死区从-6延伸到 6。在其它情况中,死区可设定为步宽值的非线性函数。
[0161]
在一种情况下,死区基于动态步宽而设定,例如可以是自适应的。在此情况下,死区可随步宽改变而改变。举例来说,如果步宽更新为3而非5,则2.4*步宽的死区可从范围-6到 6改变为范围-3.6到3.6;或如果步宽更新为10,则死区可改变以从-12延伸到12。在一种情况下,步宽的乘数可介于2和4之间。在一种情况下,乘数还可为自适应的,例如基于例如可用位速率等操作条件。
[0162]
具有死区可帮助减少待经由网络传输的数据量,例如帮助减小位速率。当使用死区时,有效地忽略落到死区内的残差或系数值。此方法还可帮助移除低电平的残差噪声。具有自适应而非恒定的死区意味着,当步宽减小时(例如,如果较多带宽可用)不会过度地对较小残差或系数值进行滤波,且如果步宽增加则位速率合适地减小。死区仅需要在编码器处制定,解码器针对落在死区内的任何残差或系数简单地接收量化值0。
[0163]
图8c展示可如何应用称为块组折叠的方法。在图8c的实例中,连同死区一起使用块组折叠,但在其它情况下,块组折叠可在无死区的情况下使用和/或与其它量化方法一起使用。图8c中,块组折叠用以将驻留在选定量化块组上方的所有残差或系数值放置到选定块组中。举例来说,此可视为一种形式的限幅。
[0164]
图8c中,再次应用步宽5。还应用具有2.4*步宽的范围的死区,使得-6和6之间的值被设定为0。此还可视为沿循到较大第一量化块组(具有值0)中。接着针对正和负值限定具有宽度5的两个量化块组。举例来说,具有量化值1的块组限定在6和11之间(例如,具有步宽5),且具有量化值2的块组限定在11和16之间。在此实例中,为了进行块组折叠,具有将通常落在第二块组(例如,其具有大于16的值)上方的块组中的值的所有残差或系数“折叠”到第二块组中,例如被限幅以具有量化值2。可通过将大于阈值的所有值设定为最大块组值(例如,2)来执行此操作。针对负值发生类似过程。此在图8c中由大箭头示出。
[0165]
块组折叠可以是编码器处的可选处理选项。其不需要在解码器处的解量化期间制定(例如,经“折叠”或“限幅”的值2经简单地解量化,如同其处于第二块组中那样)。可进行块组折叠以减少经由网络发送到解码器的位数目。块组折叠可基于网络条件和/或基础流处理来配置以便减小位速率。
[0166]
图8d展示在特定情况中可如何使用量化偏移。量化偏移可用于使量化块组的位置
移位。图8d展示线,其指示沿着x轴残差或系数值范围的可能的现实世界计数。在此实例中,许多值接近零,其中随着从0移开,较高值的计数减少。如果计数值归一化,则所述线还可指示残差或系数值的概率分布。
[0167]
图8d的左手侧条柱和右手侧上的虚线示出对量化建模的直方图。为便于说明,展示死区之后的第一到第三块组的计数值(对于正值和负值两者,使后者条带化以示出条柱)。举例来说,条柱展示经量化值1、2、3和-1、-2、-3的计数。归因于量化,由直方图建模的分布不同于由线所示的实际分布。举例来说,展示误差e,其显示条柱不同于线的程度。
[0168]
为了改变误差e的性质,可应用量化偏移qo。量化偏移可理解为某一参数,其值限定是否以及在何种程度上量化间隔或块组将从预定或默认位置或值集合移位。对于正值,正量化偏移用以使每一块组向右移位,且负量化偏移用以使每一块组向左移位。量化偏移可与死区组合应用。在一种情况下,可基于第一阈值集合来应用死区,例如,小于(n*步宽)/2且大于(n*步宽*-1)/2的所有值被设定为0。
[0169]
在一些实例中,量化偏移可传信到解码器以供在解量化中使用。
[0170]
在一种情况下,在编码器处,可在基于步宽量化之前从残差或系数值减去量化偏移。因此,在解码器中,传信的偏移可加上所接收量化值以供基于步宽进行解量化。在某些情况下,可基于残差或系数的符号来调整偏移以允许关于0值的对称操作。在一种情况下,可通过将量化或解量化偏移值设定为0来停用偏移的使用。在一种情况下,可基于限定的死区宽度调整所应用的量化偏移。在一种情况下,可在解码器处例如依据从编码器接收的步宽和量化参数来计算死区宽度。
[0171]
在一种情况下,用于量化的步宽可针对2
×
2或4
×
4系数块内的不同系数变化。举例来说,较小步宽可指派到以实验方式确定为更大程度上影响经解码信号的感知的系数,例如在如上文所描述的2
×
2或4
×
4定向分解(dd-平方或“dds”)中,可向a、h、v和d系数指派较小步宽,稍后的系数被指派较大步宽。在此情况下,可限定设定默认步宽的base_stepwidth参数,且接着修改符可应用于此参数以计算modified_stepwidth以供在量化(和解量化)中使用,例如modified_stepwidth=base_stepwidth*修改符(其中“修改符”可基于块或单元内的特定系数来设定,且可从例如下文描述的变量“qm”等信令导出)。
[0172]
在某些情况下,修改符可另外或替代地取决于增强的层级。举例来说,对于层级1增强流来说,步宽可较小,因为其可影响较高质量水平下的多个经重建像素。
[0173]
在某些情况下,可基于块内的系数和增强的层级两者限定修改符。在一种情况下,可针对不同系数和不同增强层级以修改符的集合限定量化矩阵。此量化矩阵可经预设(例如,在编码器和/或解码器处),在编码器和解码器之间传信,和/或在编码器和/或解码器处动态地构建。举例来说,在后一情况下,可依据例如经由配置接口接收的参数等其它所存储和/或传信的参数在编码器和/或解码器处构建量化矩阵。
[0174]
在一种情况下,可限定不同量化模式,或限定待应用于给定系数集合的量化矩阵的不同方案。在一个模式中,共同量化矩阵可用于两个增强层级;在另一模式中,单独的矩阵可用于不同层级;在又一模式中,量化矩阵可用于仅一个增强层级,例如仅用于层级2。量化矩阵可由系数在块内的位置编索引(例如,对于2
×
2块,沿x方向0或1以及沿y方向0或1,或者对于4
×
4块为0到3)。
[0175]
在一种情况下,可以值的集合限定基础量化矩阵。可通过作为增强层级中的一个
或多个的步宽的函数的缩放因子来修改此基础量化矩阵。在一种情况下,缩放因子可以是步宽变量的箝位函数。在解码器处,可针对层级2流和层级1流中的一个或多个从编码器接收步宽变量。
[0176]
借助于涉及上文所描述的原理的过程的一些其它实例,可通过进一步检视下文来理解配置和调适量化以便进一步改进编码和解码程序的有利的模式。可应用数据块单元增强有效负载语义,其涉及可借以传信和配置量化和解量化步骤的性质的若干参数。
[0177]
在一实例中,参数dequant_offset_signalled指定是否将在传信解量化时应用偏移参数的值。以此方式,可传信是否发送偏移。在此实例中,如果发送偏移,则其被使用。如果其不被发送,则可使用默认偏移,或可不使用偏移。
[0178]
在将输入视频编码为多个经编码流的方法的实例中,其中经编码流可组合以重建输入视频,所述方法可涉及接收输入视频,以及对输入视频进行下取样以创建经下取样视频。
[0179]
所述方法通常进一步包含指示使用基础编码器编码经下取样视频以创建基础编码流,所述基础编码流;指示使用基础解码器解码基础编码流以生成经重建视频;将经重建视频与经下取样视频进行比较以创建第一残差集合;以及编码第一残差集合以创建第一层级编码流。这优选地包含:将变换应用于残差集合以创建系数的集合;将量化操作应用于系数的集合以创建经量化系数的集合;以及将编码操作应用于经量化系数,其中使用量化矩阵执行量化操作,所述量化矩阵是根据量化矩阵模式参数的所获得值导出的。
[0180]
如早先在本公开中所描述,量化矩阵模式参数可有利地用于指定待用于编码过程中的量化矩阵。在一些实例中,当量化矩阵模式参数值等于预定值时,例如当其等于零0时,所述方法可涉及针对两个质量水平中的每一个使用默认量化矩阵。这些水平通常为或通常对应于层级1和层级2增强流。当量化矩阵模式参数值等于1时,可针对两个质量水平中的每一个使用第一量化矩阵,且第一量化矩阵可例如从编码器传信到解码器或经编码流将传输到的装置。当量化矩阵模式参数值等于2时,可针对质量水平2使用第二量化矩阵,且可传信第二量化矩阵。在此情况下,不针对质量水平1使用量化矩阵,或可针对此水平使用默认值。当量化矩阵模式参数值等于3时,第三量化矩阵优选地用于质量水平1或第一层级编码流,且传信第三量化矩阵。在此情况下,可不针对质量水平2使用量化矩阵,或可针对此水平使用默认值。当量化矩阵模式参数值等于4时,可针对第一层级编码流使用第四量化矩阵,且可针对第二层级编码流使用第五量化矩阵(例如,可使用两个矩阵),其中的每一个可彼此相等或不相等,以及等于或不等于前述第一到第三矩阵中的任一个。在此第五模式中,第四量化矩阵和第五量化矩阵可传信到解码器或经编码流将传输到的其它装置。
[0181]
在本公开中所描述的程序中,如上文提及,传递到此过程的每个变换系数群组通常属于特定平面和层。通常,它们已经使用线性量化器缩放,所述线性量化器在一些实例中使用非居中解量化偏移。可应用针对变换系数的缩放过程如下。所述过程可获取块的位置信息,连同可借以指示块的性质(例如其大小)、量化操作的性质(例如步宽和偏移值)和其应用于的增强层级的参数集合。举例来说,可使用可用一对坐标值或例如指定当前亮度或色度变换块的左上样本相对于当前图片的左上亮度或色度样本的参数(xtbp,ytbp)指示的位置。此可与表示图像的数据的特定部分相关,且可例如与亮度平面或色度平面相关,这取决于变换系数所属的平面。
[0182]
指定当前变换块的大小的前述参数(在一些实例中,其可称为ntbs)可具有某一值,所述值取决于变换的类型,且确切地说取决于限定用于解码的变换的参数的值。此类型参数在一些实例中可称为transform_type且在一些应用中可具有值0、1或2-3,分别对应于2
×
2定向分解变换、4
×
4定向分解变换,或指定值为零(因为那些要素不在位流中使用)的值或参数。在一些实例中,具有值0的此transform_type参数可对应于层数目等于4,且如果transform_type等于1,则层的相应数目值可为16。大小ntbs参数可在transform_type等于零的情况下具有值2,且在transform_type等于1的情况下可具有值4。
[0183]
到过程的另一输入通常呈熵解码的经量化系数的阵列的形式。此可称为transcoeffq,且具有与上文提到的大小参数相关的大小,确切地说,具有尺寸(ntbs)x(ntbs),即阵列可包括如本文所描述的编码单元或块。此阵列可称为transcoeffq。步宽值可用称为stepwidth的参数指定。增强层级的索引可由某一参数指定,且在一些实例中可称为idxlevel。如果将使用解量化偏移,则此可用例如称为dquantoffset的参数指定。所述参数通常指定待应用的解量化偏移参数的值。此过程通常产生经解量化变换系数的阵列。此可例如呈含有要素d[x][y]的尺寸(ntbs)x(ntbs)的阵列的形式。
[0184]
可称为d[x][y]的输出阵列中的值通常基于例如如上文所描述的步宽和/或如应用于量化矩阵(其可被称为qm)的增强层级的索引和熵解码的经量化系数(其可称为相应要素的transcoeffq[xtbp][ytbp])中的任一个导出。此外,可另外借助于将偏移应用于前述运算的结果来导出输出阵列要素的值。举例来说,可称为appliedoffset的参数可加上所述值以产生输出要素值。
[0185]
因此,此可涉及以下关系以计算阵列的每一要素d:
[0186]
d[x][y]=(transcoeffq[xtbp][ytbp]*(stepwidth*qm[ytbp (idxlevel*4)][xtbp])) appliedoffset
[0187]
在作为可如何在解码器处执行解量化的一个实例的上述计算中,idxlevel可为0或1,分别表示层级2和1。在上述计算中,且如本文中的其它实例中所描述,基于特定系数和特定增强层级选择来自量化矩阵的值。
[0188]
相对于可在一些实例中应用的偏移,如以上关系中所展示,可称为appliedofffset的此参数通常导出如下。
[0189]
在某些情况下,可基于是否将应用残差滤波而有条件地应用appliedoffset。此滤波可在逆变换(例如,图6中的410-1)之后应用,且可以是解块滤波器。在这些情况下,可仅在应用残差滤波的情况下应用偏移。举例来说,如果指定是否应应用解块滤波器的可称为deblocking_signalled的参数具有特定值,例如等于1,则基于指定可称为dquantoffset的解量化偏移的前述参数计算所述偏移。
[0190]
appliedoffset还可从dquantoffset的单个值导出且适于应用于正和负系数值。举例来说,appliedoffset可被配置成负值或正值,通常具有与解量化偏移参数相同的绝对值且分别具有正或负符号。此可在transcoeffq值具有小于零的值的情况下应用;否则,如果transcoeffq值大于零,则可向所应用偏移指派等于解量化偏移参数的值的值。如果transcoeffq值等于零,则也可向所应用偏移指派零值。
[0191]
因此,在某些实例中,可通过以下算法导出可相加以获得输出阵列要素的偏移(其中transcoeffq可以是通常大小为(ntbs)x(ntbs)的含有熵解码的经量化系数的阵列):
[0192]
如果deblocking_signalled等于1
[0193][0194][0195]
举例来说,参数或参数集合可如上文所描述而传信且用于指定量化矩阵将如何应用于系数的集合。此参数可以是quant_matrix_mode参数,其指定根据下表1哪些量化矩阵待用于解码过程中。参数可为一个字节。quant_matrix_mode参数可用于配置如何导出量化矩阵(例如,如下文稍后描述)。
[0196]
表1-量化矩阵
[0197][0198]
可根据以下特定实例应用量化矩阵数据语义。导出可被称为qm[y][x]的量化矩阵。
[0199]
矩阵qm可具有尺寸k*m乘n。也就是说,矩阵可限定为对应于m乘n矩阵中所含的量化系数,且qm可含有呈例如k个增强层级中的每一个的量化系数的相应m乘n矩阵的形式的此数据。
[0200]
在当前实例中,涉及两个增强层级,即如本公开中所描述的层级1和2,且k等于2。如关于这些程序描述的最大变换为4
×
4,且因此m和n可各自等于4。
[0201]
在一些实例中,通过以对应于最大可用变换(其为如上文提及的这些实例中的4
×
4变换,因此包括16个系数)的m和n值限定qm,可通过从qm读取且在相应m乘n矩阵中应用系数的子集来执行其中采用较小变换的量化矩阵的应用。
[0202]
在特定实例中,如果量化矩阵模式参数的值等于零,即如果quant_matrix_mode等于0,则在量化操作中使用以下默认量化矩阵:
[0203]
qm[y][x]=
[0204]
{0.500 0.500 0.500 0.617}
[0205]
{0.862 0.610 1.064 0.781}
[0206]
{0.500 0.500 0.500 0.617}
[0207]
{3.125 1.851 1.851 1.316}
[0208]
{0.500 0.500 0.500 0.617}
[0209]
{0.862 0.610 1.064 0.781}
[0210]
{0.862 1.064 0.610 0.781}
[0211]
{3.125 1.851 1.851 1.316},
[0212]
其中y=0..3是待用于增强层级2的系数,且y=4..7是待用于增强层级1的系数;且
[0213]
如果量化矩阵模式参数的值等于1,则修改符的一个矩阵经传信,在两个增强层级上使用。在一些应用中可借助于迭代过程构建矩阵。因此,可逐行获得qm[x][y]值,借此对于每一行,所述行中具有某一值,且当处理行时填充矩阵的每一列。步宽修改符参数可在获得这些矩阵值的过程中使用,如下文所描述。在当前的实例中,待填充的行的数目可为8,列的数目等于4,如上文结合此特定实例中的矩阵尺寸所描述。确切地说,针对此实例的迭代过程可写成:
[0214]
for(y=0;y<8;y )
[0215]
ꢀꢀꢀ
for(x=0;x<4;x )
[0216]
ꢀꢀꢀꢀꢀꢀꢀ
qm[y][x]=step_width_modifier_2[x y*4],
[0217]
其中在此实例中可称为step_width_modifier_2的步宽修改符参数是指定待在变换系数的不同层处应用的层级2增强16个系数的值的参数;且
[0218]
如果量化矩阵模式参数的值等于2,则修改符的一个矩阵经传信且在增强层级2上使用。同样,确切地说,可使用对应于上文描述的迭代程序的迭代程序:
[0219]
for(y=0;y<4;y )
[0220]
ꢀꢀꢀ
for(x=0;x<4;x<4)
[0221]
ꢀꢀꢀꢀꢀꢀ
qm[y][x]=step_width_modifier_2[x y*4];且
[0222]
如果量化矩阵模式参数的值等于3,则修改符的一个矩阵经传信且在增强层级1上使用:
[0223]
for(y=0;y<4;y )
[0224]
ꢀꢀꢀ
for(x=0;x<4;x<4)
[0225]
ꢀꢀꢀꢀꢀꢀ
qm[y 4][x]=step_width_modifier_2[x y*4];且
[0226]
如果量化矩阵模式参数的值等于4,则修改符的两个矩阵经传信,第一个用于增强层级2,第二个用于增强层级1:
[0227][0228][0229]
其中step_width_modifier_1是指定待在变换系数的不同层处应用的层级1增强
16个系数的值的参数。
[0230]
如上文所描述,矩阵中的d[x][y]的值可例如计算为矩阵中相关要素处的相应变换系数与列处的相应量化矩阵要素值的总和的乘积,所述列由指定当前变换块的大小的参数与levelidxswap参数的乘积识别,且在相应行中,步宽修改符参数值对应于所述要素,其中上文所描述的偏移通常也相加地应用于所述乘积。
[0231]
可根据以下有序的步骤来执行上文所描述的解量化过程。可调用按照前述实例的解量化过程,其中亮度位置(xtby,ytby)、设定成等于ntbs的变换大小(即,当前变换块的大小)、大小(ntbs)x(ntbs)的如上文所描述的阵列transcoeffq,和步宽参数作为输入。所述输出可因而为尺寸(ntbs)x(ntbs)的解量化系数(例如,解量化的经变换残差)的阵列,其在此实例中可称为dequantcoeff。
[0232]
在以下其它实例中,为了便于理解,信号被称作视频信号。在这些实例中,信号由样本的序列组成,在视频信号的情况下,这些可以是帧。每一样本(例如,帧)由多个数据要素组成,在视频的情况下为像元或像素。
[0233]
此外,在这些实例中,参考经量化数据。这些经量化数据可由经编码数据的多个子集组成。如上文所提及,经量化数据可对应于经变换系数,即已经通过将变换过程应用于信号中的原始数据的集合而产生的数据。这些数据可以是数据要素(例如,像素等)。这些数据可以是残差数据,其可作为样本或数据要素的预测和所述同一样本或数据要素的参考之间的差而获得。变换可以是dct式变换、小波变换、哈达玛式变换、例如专利申请pct/ep2013/059847和pct/gb2017/052632(其两者均以引用的方式包含在本文中)中描述的定向分解变换,或适于特定信号的任何其它类型的变换。经量化数据的所述多个子集中的每一个可对应于特定经变换的经量化数据的系数中的一个。借助于非限制性实例,在4
×
4变换的情况下,可生成16个系数,且因此可存在经量化数据的16个子集。
[0234]
经量化数据可进一步包括经量化数据的两个或更多个层。举例来说,在例如mpeg-5部分2(lcevc)等多层编码方案中,可存在至少两个增强子层,如上文所描述。这些增强子层中的每一个将具有其自身的经量化数据,其中的每一个以彼此不同的方式量化。
[0235]
参考图9,展示了解码模块1100的实例。解码模块1100接收多个输入位流,包括经编码基础1101、l1系数群组1121、l0系数群组1131、时间系数群组1136和标头1140。
[0236]
一般来说,解码模块1100处理两层数据。第一层,即基础层1110,包括包含经编码基础的所接收数据流1111。经编码基础1111接着发送到基础解码模块1112,所述基础解码模块解码经编码基础1111以产生经解码基础图片1113。基础解码可以是解码器实施任何现有的基础编解码器算法,例如avc、hevc、av1、vvc、evc、vc-6、vp9等,这取决于经编码基础1111的编码格式。
[0237]
第二层,即增强层,进一步由两个增强子层组成。解码模块接收第一系数群组,即l1系数群组1121,其接着传递到熵解码模块1122以生成经解码系数群组。这些接着传递到逆量化模块1123,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。这些接着传递到逆变换模块1124,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层1处的残差(l1残差)。残差可接着由平滑滤波器1125滤波。将l1残差(即,经解码第一增强子层)应用于基础图片1113的经处理输出。
[0238]
解码模块接收第二系数群组,即l0系数群组1131,其接着传递到熵解码模块1132
以生成经解码系数群组。这些接着传递到逆量化模块1134,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。用于增强子层0的解量化参数可不同于用于增强子层1的解量化参数。解量化系数群组接着传递到逆变换模块1135,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层0处的残差(l0残差)。
[0239]
参考图10,展示解码过程的实例。从基础解码器获得经解码基础图片。此图片可任选地经上取样以生成预备中间图片。残差的第一层添加到预备中间图片以生成组合中间图片。残差的所述第一层(l1残差)用以例如通过校正由经解码基础图片产生的阻挡假影等来校正经解码基础图片。组合中间图片可接着经上取样以便生成预备输出图片。残差的第二层添加到预备输出图片以生成组合输出图片。残差的所述第二层(l0残差)用以为预备输出图片增加细节和锐度。时间缓冲器中还可存在连同l0残差一起使用的数据。
[0240]
参考图11,展示根据本发明的非限制性示例性实施例。位流200由解码模块接收。位流含有对应于元数据和/或经编码数据的一系列位,以及可对于解码经编码数据有用的任何其它信息。在一实例中,位流可遵守标准视频编码的位流。在非限制性实例中,标准可以是mpeg系列标准,例如mpeg 5部分2(lcevc)、mpeg 5部分1(evc)、vvc、avc、hevc等;或由其它标准组织产生的标准,例如aom(例如,av1)或smpte(例如vc-6/st-2117)。
[0241]
在位流1200中,可存在与确定解码经量化数据的一个或多个子集所需的解量化参数相关的一些信息。
[0242]
位流1200中的信息可由解码模块获得。第一信息可包含量化步长1210。量化步长与数据的量化过程中使用的步宽相关联。借助于非限制性实例,如果原始数据可取 32,768和-32,768之间的值,则量化步长256将意味着将存在从那些原始值生成的256个符号,每一符号包括256范围内的值。如此,举例来说,0和255之间的值将全部以相同符号量化,256和512之间的值将以相同符号量化,依次类推。量化步长可每信号样本(例如,逐帧)传信,且可在子层之间不同(例如,在多层编码方案的情况下)。举例来说,可存在第一增强子层的第一步宽和第二增强子层的第二步宽。
[0243]
位流1200中的信息还可包含传信待使用的解量化过程的类型的信息220。此信息可例如采取查找表(lut)1230的形式,所述查找表基于信息中提供的值指示使用哪一过程。举例来说,值0可与过程#0相关联,值1可与过程#1相关联,等等。借助于非限制性实例,过程#0可指示先前样本中使用的相同解量化参数集合应用于当前样本。借助于非限制性实例,过程#1可指示默认解量化参数集合应用于当前样本。借助于非限制性实例,过程#2可指示传信的量化参数集合应用于当前样本,而非默认量化参数集合。在一实例中,量化参数集合可包含两个或更多个子集,每一子集对应于一经量化数据层。举例来说,第一量化参数子集可对应于经量化数据的第一增强子层,且第二量化参数子集可对应于经量化数据的第二增强子层。借助于非限制性实例,过程#3可指示应使用传信的量化参数子集来改变默认量化参数集合的一部分(例如,子集中的一个)以生成经修改量化参数集合,所述经修改量化参数集合待用于当前样本而非默认量化参数集合。在一实例中,量化参数集合可由若干缩放因子组成。缩放因子可接着用于生成待用于经量化数据的解量化的经缩放量化参数。
[0244]
位流1200中的信息还可包含传信待使用的量化参数的新集合的信息1240。在一实例中,量化参数集合可由若干缩放因子组成。如果指示使用所传信的量化参数的过程正经由信息1220传信,则此信息可仅包含在位流1200中。以此方式,仅当需要时发送此信息,因
此避免当不需要时增加位流1200的大小。
[0245]
解码模块可接着使用解量化参数模块1270以便生成将在解量化经量化数据时使用的实际解量化参数1280。解量化参数模块1270可接收各种信息作为输入。举例来说,在一个实施例中,模块1270可接收量化步长1210、解量化选择指示220、缩放因子1240、预定缩放因子1250和其它参数1260。预定缩放因子1250可对应于先前样本中使用的缩放因子或可对应于默认缩放因子集合。其它参数可包含修改量化参数的其它元素,例如基于数据块要素被视为静态、准静态还是非静态来修改步宽的一个或多个参数(还如专利申请gb 1911545.0中所描述,该专利申请的内容以引用的方式包含在本文中),或待应用的一个或多个解量化偏移(还如专利申请gb 1914413.8中所描述,该专利申请的内容以引用的方式包含在本文中)。
[0246]
如上文所描述,实际量化参数(sw(s)
actual
)可通过以缩放因子(sf(s)
computed
)处理所接收量化步长210(sw
signalled
)来计算,所述缩放因子是基于如上文所描述的所传信过程而确定的。计算可通过至少这两个因子的函数进行,例如
[0247]
sw(s)
actual
=f(sw
signalled
,sf(s)
computed
,...)
[0248]
其中f(
·
)可以是乘法,例如
[0249]
sw(s)
actual
=sw
signalled
*sf(s)
computed
[0250]
解量化数据di(
·
)可接着计算为
[0251][0252]
其中qi(
·
)为经量化数据子集,且为第i经量化数据子集的实际量化步长。
[0253]
实际量化参数可接着用于经量化数据的解量化。在经量化数据包括多个经量化数据子集的情况下,可存在多个实际量化参数,其中的每一个与所述多个量化子集中的一个不同量化子集相关联。
[0254]
同样如上文描述,在另一实例中,实际量化参数(sw(s)
actual
)可进一步基于例如步宽修改符(sw(s)
modifier
)等其它信息计算,且我们可使用解量化偏移(do(s))来进行解量化,例如
[0255]
sw(s)
actual
=f(sw
signalled
,sf(s)
computed
,sw(s)
modifier
)
[0256]
其中f(
·
)可以是
[0257]
sw(s)
actual
=((sw
signalled
*sf(s)
computed
) sw(s)
modifier
)
[0258]
经解量化数据di(
·
)可接着计算为
[0259][0260]
其中qi(
·
)为经量化数据子集,且为第i经量化数据子集的实际量化步长,且doi为特定第i经量化数据子集的解量化偏移。
[0261]
实例实施方案
[0262]
根据特定实例,经缩放的经变换系数可给定为d[x][y]且可根据下式确定:
[0263]
d[x][y]=(transformcoeffq[x][y]*((qm[x (levelidxswap*ntbs)][y] step widthmodifier[x][y]) appliedoffset[x][y])
[0264]
其中:
[0265]
transformcoeffq[x][y]表示系数的阵列;
[0266]
qm[x][y]表示量化参数或步宽的量化矩阵;
[0267]
stepwidthmodifier[x][y]表示修改参数的阵列;以及,
[0268]
appliedoffset[x][y]为充当本文中其它地方描述的死区的阵列,也就是说,在某些传信的情境中,解量化偏移可用于改变死区或可为0。
[0269]
如果旗标传信不使用解量化偏移,则步宽修改符可以是步宽的函数,例如:
[0270]
step widthmodifier[x][y]=((((floor(-cconst*ln(qm[x (levelidxswap*ntbs)][y]))) dconst)*(qm[x (levelidxswap*ntbs)][y]2)))/32768)>>16
[0271]
如果旗标传信使用解量化偏移,则步宽修改符可基于偏移值的集合,例如:
[0272]
stepwidthmodifier[x][y]=(floor((dquantoffsetactual[x][y])*(qm[x (levelidxswap*ntbs)][y]))/32768)
[0273]
其中偏移值是步宽(即,qm[x][y])的函数,例如:
[0274]
dquantoffsetactual[x][y]=((floor(-cconst*ln(qm[x (levelidxswap*ntbs)][y]) (dquantoffset<<9) floor(cconst*ln(stepwidth))))*(qm[x (levelidxswap*ntbs)][y]))>>16
[0275]
在特定实例中,量化矩阵qm[x][y]含有待用于解码每一系数群组的实际量化步宽。在某些模式中,矩阵可基于(quantscalerddbuffer[x][y]*stepwidth),其中quantscalerddbuffer[x][y]是缩放值的阵列。
[0276]
此处,缓冲器基本上为修改步宽的缩放缓冲器。在此特定实施方案中,值缩放宽度而非充当掩码,如替代性实施方案中所指定。缓冲器受模式信令影响。也就是说,矩阵可以是默认2x6矩阵或针对不同层和向上缩放而不同。举例来说,对于1d或2d向上缩放。如果针对每一帧传信参数,则必然地存在仅用以传信矩阵的高传信成本。默认缩放因子可能更高效。然而,通过针对特定帧传信不同矩阵或从默认改变矩阵,可存在改进。此处,缓冲器可对于图片的群组或特定子集为永久的。还可提供用以使用模式信令参数将矩阵改变回到默认的机制。代替于再次传信矩阵,改变模式信令允许再次从缓冲器使用缩放因子。本文中所描述的信令实现维持先前传信的矩阵。除非以其它方式传信,否则本文中所描述的信令实现图片的群组的末尾处的参数的复位(或刷新)。
[0277]
应注意,本文描述的矩阵的信令提供显著益处。举例来说,如果存在16个值,则将需要一个字节来传信参数。给定对于某一视频可存在每秒60帧,为了针对每一帧发送参数,单独传信可需要7.6kbps。
[0278]
下表陈述实例信令模式。应注意,这些可以是上表1的替代或补充。
[0279]
表2-量化矩阵
[0280][0281]
应注意,在此表中,idr指代其中连同帧一起发送全局配置的帧。idr图片是不涉及任何其它图片的帧。idr图片一个特定益处是,其允许reser(或刷新)且可例如在存在场景改变的情况下使用。应注意,虽然idr可视为i帧,但i帧不是idr,因为它们具有不同性质。
[0282]
此处可见,模式0用于传信待使用的参数是先前传信的参数。以此方式,使用代价最小的信令来传信应保持和使用缓冲器。也就是说,所述信令最有效。在其中使用0的实例中,其可经有效地熵编码。
[0283]
因此,根据不同模式组合,可执行有效缩放。因此,可传信默认值以跳过存储在存储器中的缩放。存储器可通过来自编码器的信令更新或可预先确定或计算。模式和缩放因子可针对每一帧、针对图片的每一群组或以每拼片的方式传信。模式信令允许系统使可用于残差集合的小位速率的结果最大化。
[0284]
另外的实施方案
[0285]
在如本文所描述的某些实施例中,在实例实施方案中,应注意,为了进行无损压缩,可实施以下过程:
[0286]
其中,如果stepwidth>16,则导出deadzonewidthoffset如下:
[0287]
deadzonewidthoffset[x][y]=(((1<<16)-((aconst*(qm[x (levelidxswap*ntbs)][y] step widthmodifier[x][y])) bconst)>>1)*(qm[x (levelidxswap*ntbs)][y] stepwidthmodifier[x][y]))>>16
[0288]
其中,如果stepwidth<=16,则导出deadzonewidthoffset如下:
[0289]
deadzonewidthoffset[x][y]=stepwidth>>1
[0290]
也就是说,在步宽小于16的情况下,deadzonewidthoffset不取决于参数的矩阵。
[0291]
另外的实例实施方案
[0292]
下文的附录提供体现本文中其它地方描述的原理的实例非限制性实施方案。此实例可用于提供所描述的特征的上下文。
[0293]
另外的实例编码器和解码器
[0294]
图25和26分别展示图1、3a和3b的编码器架构以及图2、5a和5b的解码器架构的变型。
[0295]
在图12中展示用以创建位流的编码过程2500。首先,输入序列2502馈送到第一下取样器2504,接着是第二下取样器2506(即,图中称为向下缩放器的连续下取样器)且根据所挑选的缩放模式处理。图12的变型不同于先前实例的变型之处在于,存在基础层之前的额外下取样和上取样级,例如在将数据传递到基础编码器2512之前展示为第二向下缩放器2506的额外下取样级是可能的,且在从基础层接收经解码数据之后,额外上取样级(展示为
图12中的第一向上缩放器2508)是可能的。在某些实例中,给定缩放模式可用于接通和断开每一级处的向下缩放器和向上缩放器对。在一种情况下,缩放模式可指示缩放方向,例如按照本文中所描述的仅水平下取样/上取样。如果第二向下缩放器2506和第一向上缩放器2508断开,则空间缩放类似于图1、3a和3b的空间缩放。
[0296]
图12中,按照先前实例,使用基础编解码器,其根据其自身的规范产生基础位流2516。此经编码基础可被包含作为当前视频编码框架结构的组合位流的一部分。
[0297]
在具有或不具有额外向上缩放的情况下,在第一减法组件2520处从一阶向下缩放的输入序列减去例如基础编码帧的经解码型式等经重建基础图片以便生成子层1残差(如本文描述的层级1残差数据)。这些残差形成第一增强层的编码过程的开始点。如本文所描述的变换组件2521、量化组件2523和熵编码组件2524(以及其它)处理第一(层级1)残差集合以生成(层级1)经熵编码的经量化变换系数2526。
[0298]
在图12中,按照先前实例,来自子层1的经熵编码的经量化变换系数由环路内解码器处理,所述环路内解码器执行逆操作或解码操作。这些操作模拟将在解码器处执行的第一残差集合的解码过程。在图12的实例中,这些包括熵解码组件2525、逆量化组件2527、逆变换组件2528和层级1滤波器2530。这些可类似于先前描述的组件。经处理或“经解码”的第一残差集合在求和组件2532处添加到从基础编码器的输出导出(例如,经解码且任选地向上缩放)的数据以生成经重建帧。图12中,经重建帧由第二向上缩放器2534处理。向上缩放器的使用可再次取决于所挑选的缩放模式。最后,在第二减法组件2536处通过输入序列和向上缩放重建的减法来计算第二子层2(其还可称为l2层)的残差。这些形成第二(层级2)残差集合,且这些残差还由一组编码组件或工具处理,所述编码组件或工具包含变换组件2541、时间预测组件2542、量化组件2543和熵编码组件2544。输出为层级2系数层2546的集合。如其它实例中所描述,如果激活时间模式,则可由时间预测组件2542在变换系数上应用额外时间预测以便移除某些时间上冗余的信息且减少层级2残差流的能量(例如,值的数目和非零残差值的数目)。子层2以及指定以块为基础使用时间预测的时间层2556的经熵编码的经量化变换系数包含在增强位流中。时间层2556可包括参考先前实例描述的时间信令。其可由熵编码组件2557进行熵编码。熵编码组件2557可应用至少游程长度编码,如参考实例所论述。
[0299]
编码器2500可配置有编码器配置信息2565的集合,例如如参考图14a到14c的实例所描述。此信息可作为输出位流的标头2566的集合传输到解码器。图12中,编码器的组合位流可包括标头2566、时间层2556、层级2(l2)编码系数2546、层级1(l1)编码系数2526和经编码基础流2516。
[0300]
图13展示根据一实例的解码器2600的变型。解码器可包括本文中其它图中的任一个中展示的解码器的变型。图13的解码器可连同图12的编码器一起使用。
[0301]
首先,为了创建帧的输出序列,解码器2600分析位流。如图13中可以看出,过程可再次划分成三个部分。
[0302]
为了生成经解码基础图片(例如,层0处),向基础解码器2618馈送所提取基础位流2616。根据所挑选的缩放模式,此经重建图片可由额外第一向上缩放器2608在求和组件2630之前向上缩放,所述求和组件将第一(层级1)残差集合相加。从第一向上缩放器2608到求和组件2630的输入可被称为预备中间图片。
[0303]
在基础层解码之后(或与之并行),需要解码增强层位流(包含两个残差子层)。首先,使用编码过程期间使用的编码组件或工具的逆型式解码属于子层1(l1)的系数2626。因此,层级1系数层2626依次由熵解码组件2671、逆量化组件2672和逆变换组件2673处理。此外,可能应用子层1(l1)滤波器2632以便使变换块(即,编码单元)的边界平滑。子层1(l1)解码过程的输出可被称为增强子层1输出。此增强子层1输出在第一(较低)求和组件2630处添加到预备中间图片,从而产生组合中间图片。再次,取决于缩放模式,可应用第二向上缩放器2687,且产生所得预备输出图片。预备输出图片提供到第二上部求和组件2658。其具有与总体输出图片相同的尺寸。
[0304]
作为最终步骤,解码第二增强子层2的经编码系数2646。再次,此使用如本文的其它实例中所描述的一组逆编码组件或工具。图13中,这些组件包含熵解码组件2681、逆量化组件2682和逆变换组件2683。如果激活时间模式,则时间预测组件2685可应用时间预测。可在第二增强子层2内的任一点处应用时间预测。在一种情况下,其应用于经量化变换系数。可基于作为时间层2656接收的信令来应用时间预测。图13中,时间层2656由熵解码组件2690解码(例如,可经游程长度解码)。时间预测的输出作为增强子层2输出提供到第二上部求和组件2658中。其接着由所述求和组件2658添加到预备输出图片以形成组合输出图片2660作为解码过程的最终输出。
[0305]
再次,可根据在位流的标头2666内传输的解码器配置2692来控制解码过程。
[0306]
如参考以上实例所描述,不同于对比的可缩放编解码器,本文中所描述的新方法可对于用于编码下层的编解码器完全不可知。这是因为可在没有关于下层的任何信息的情况下解码上层。如图13中所展示,解码器接收由编码器生成的多个流。这些可以是大约五个流,其包含:通过向基础编解码器(例如,avc、hevc或任何其它编解码器)馈送输入视频的下取样型式而产生的第一编码流(经编码基础);通过处理借助于取经重建基础编解码器视频和输入视频的下取样型式之间的差获得的残差(层级1残差)而产生的第二编码流(层级1系数层);通过处理借助于取经重建基础编码视频的经校正型式的上取样型式和输入视频之间的差获得的残差(层级2残差)而产生的第三编码流(层级2系数层);由时间处理产生以指示解码器的第四经编码流(例如,呈时间层的形式);以及经产生用于配置解码器的第五流(标头)。通过基础解码器实施对应于由编码器中使用的基础编解码器实施的编码算法的解码算法来解码经编码基础流,且此解码的输出为经解码基础。单独地且独立地,解码层级1系数群组以便获得层级1残差数据。此外,单独地且独立地,解码层级2系数群组以便获得层级2残差数据。接着组合经解码基础、层级1残差数据和层级2残差数据。确切地说,经解码基础与层级1残差数据组合以生成中间图片。可接着对中间图片进行上取样且进一步与层级2残差数据组合。
[0307]
此外,新方法使用编码和解码过程,所述编码和解码过程处理图片而不使用任何块间预测。实际上,其通过变换像元的n
×
n块(例如,2
×
2或4
×
4)且彼此独立地处理所述块来处理图片。这实现有效处理以及不依赖于相邻块,因此允许图片的处理并行化。
[0308]
概括来说,参考图13,展示了展示了非限制性示例性实施例。图13中,描绘了示例性解码模块2600。解码模块2600接收多个输入位流,包括经编码基础2616、层级1系数群组2626、层级2系数群组2646、时间系数群组2656和标头2666。
[0309]
一般来说,解码模块2600处理两层数据。第一层,即基础层,包括包含经编码基础
的所接收数据流2616。经编码基础2616接着发送到基础解码模块2618,其解码经编码基础2616以产生经解码基础图片。基础解码可以是解码器实施任何现有的基础编解码器算法,例如avc、hevc、av1、vvc、evc、vc-6、vp9等,这取决于经编码基础的编码格式。
[0310]
第二层,即增强层,进一步由两个增强子层组成。解码模块接收第一系数群组,即层级1系数群组2626,其接着传递到熵解码模块2671以生成经解码系数群组。这些接着传递到逆量化模块2672,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。这些接着传递到逆变换模块2673,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层1处的残差(层级1残差)。残差可接着由平滑滤波器2632滤波。层级1残差(即,经解码的第一增强子层)应用于基础图片的经处理输出。
[0311]
解码模块接收第二系数群组,即层级2系数群组2646,其接着传递到熵解码模块2681以生成经解码系数群组。这些接着传递到逆量化模块2682,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。用于增强子层2的解量化参数可不同于用于增强子层1的解量化参数。解量化系数群组接着传递到逆变换模块2683,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层2处的残差(层级2残差)。
[0312]
实施方案
[0313]
在例如实施于流式传输服务器或客户端装置或从数据存储器解码的客户端装置中的编码器和解码器两者处,本文中所描述的方法和过程可体现为代码(例如,软件代码)和/或数据。编码器和解码器可以硬件或软件实施,如数据压缩所属的领域中众所周知。举例来说,使用专门编程的图形处理单元(gpu)或专门设计的现场可编程门阵列(fpga)的硬件加速可提供某些效率。出于完整性,此类代码和数据可存储于一个或多个计算机可读介质上,所述计算机可读介质可包含可存储代码和/或数据以供计算机系统使用的任何装置或介质。当计算机系统读取并且执行存储于计算机可读介质上的代码和/或数据时,计算机系统执行体现为存储在计算机可读存储介质内的数据结构和代码的方法和过程。在某些实施例中,本文中所描述的方法和过程的步骤中的一个或多个可由处理器(例如,计算机系统或数据存储系统的处理器)执行。
[0314]
一般来说,此文本中所描述或图式中所示出的功能性中的任一个可使用软件、固件(例如,固定逻辑电路系统)、可编程或不可编程硬件,或这些实施方案的组合来实施。一般来说,如本文中所使用的术语“组件”或“功能”表示软件、固件、硬件或这些的组合。举例来说,在软件实施方案的情况下,术语“组件”或“功能”可指代在被执行于一个或多个处理装置上时执行指定任务的程序代码。组件和功能分离成相异单元的所说明分离可反映此类软件和/或硬件和任务的任何实际或概念性的物理分组和分配。
[0315]
附件
[0316]
下文陈述体现本文中其它地方描述的原理的实例非限制性实施方案。此实例可用于提供所描述的特征的上下文。
[0317]
语法及语义
[0318]
语法表指定所有所允许位流的语法的超集。可直接或间接地按需要指定对于语法的额外约束。
[0319]
注意实际解码器应实施用于识别到位流中的进入点的某一构件,以及用以识别和处理非相符位流的某一构件。用于识别和处理错误和其它此类的方法
[0320]
过程有效负载-图片配置
[0321]
[0322][0323]
数据块单元图片配置语义
[0324]
no_enhancement_bit_flag指定对于图片中的所有layeridx<nlayers不存在增强数据。
[0325]
quant_matrix_mode指定根据下表哪一量化矩阵待用于解码过程中。当quant_matrix_mode不存在时,其推断为等于0。
[0326]
量化矩阵
[0327][0328]
dequant_offset_signalled_flag指定是否传信偏移方法和将在解量化时应用的偏移参数的值。如果等于1,则传信用于解量化偏移的方法和解量化偏移参数的值。当dequant_offset_signalled_flag不存在时,其推断为等于0。
[0329]
picture_type_bit_flag指定根据下表以帧为基础(例如,渐进模式或交错模式)
还是以字段为基础(例如,交错模式)发送经编码数据错误!未找到参考源。
[0330]
图片类型
[0331]
picture_type_bit_flag类型的值0帧1字段
[0332]
field_type_bit_flag指定,根据下表,如果picture_type等于1,则所发送的数据针对顶部还是底部字段错误!未找到参考源。
[0333]
字段类型
[0334]
field_type_bit_flag类型的值0顶部1底部
[0335]
temporal_refresh_bit_flag指定是否应针对图片刷新时间缓冲器。如果等于1,则应刷新时间缓冲器。对于idr图片,temporal_refresh_bit_flag将设定为1。
[0336]
temporal_signalling_present_flag指定时间信令系数群组是否存在于位流中。当temporal_signalling_present_flag不存在时,如果temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0则其推断为等于1,否则其推断为等于0。
[0337]
step_width_level2指定针对亮度平面将在解码增强子层2中的经编码残差时使用的步宽值的值。针对色度平面将在解码增强子层2中的经编码残差时使用的步宽值将计算为clip3(1,32,767,((step_width_level2*chroma_step_width_multiplier)>>6))。
[0338]
step_width_level1_enabled_flag指定将在解码增强子层1中的经编码残差时使用的步宽的值为默认值还是经传信。其应为0(默认值)或1(由step_width_level1传信的值)。默认值为32,767。当step_width_levell_enabled_flag不存在时,其推断为等于0。
[0339]
dithering_control_flag指定是否应应用抖动。其应为0(停用抖动)或1(启用抖动)。当dithering_control_flag不存在时,其推断为等于0。
[0340]
step_width_level1指定将在解码增强子层1中的经编码残差时使用的步宽值的值。
[0341]
level1_filtering_enabled_flag指定是否应使用层级1解块滤波器。其应为0(停用滤波)或1(启用滤波)。当level1_filtering_enabled_flag不存在时,其推断为等于0。
[0342]
qm_coefficient_0[layeridx]指定当quant_matrix_mode等于2、3或5时量化矩阵缩放参数的值。
[0343]
qm_coefficient_1[layeridx]指定当quant_matrix_mode等于4或5时量化矩阵缩放参数的值。
[0344]
dequant_offset_mode_flag指定用于应用解量化偏移的方法。如果等于0,则使用传信的dequant_offset作为参数,默认方法适用。如果等于1,则使用传信的dequant_offset参数,恒定偏移方法适用。
[0345]
dequant_offset指定待应用的解量化偏移参数的值。解量化偏移参数的值应在0和127之间(包含端点)。
[0346]
dithering_type指定根据下表将什么类型的抖动应用于最终经重建图片错误!未找到参考源。
[0347]
抖动
[0348]
dithering_type类型的值0无1统一2-3保留
[0349]
dithering_strength指定0和31之间的值。
[0350]
解码过程
[0351]
指定解码过程,使得当针对符合指定简档和层级的位流调用与所述简档相关联的解码过程时符合所述简档的所有解码器将产生数值上相同的经裁剪的经解码输出图片。产生与由本文中所描述的过程所产生的相同的经裁剪的经解码输出图片的任何解码过程(以正确的输出次序或输出定时,如所指定)符合解码过程要求。
[0352]
针对l-2经编码数据块的一般解码过程
[0353]
到此过程的输入为:
[0354]
指定当前变换块的左上样本相对于当前图片的左上样本的样本位置(xtb0,ytb0)、依据变量transform_type的值的指定子条款错误!未找到参考源中导出的当前变换块的大小的变量ntbs(如果transform_type等于0,则ntbs=2,且如果transform_type等于1,则ntbs=4),
[0355]
如其它地方导出的变量temporal_enabled_flag和如其它地方导出的变量temporal_refresh_bit_flag、如其它地方导出的变量temporal_signalling_present_flag和如其它地方指定的temporal_step_width_modifier
[0356]
指定由当前块的其它地方指定的过程产生的经上取样的经重建样本的大小(ntbs)x(ntbs)的阵列recl2modifiedupsampledsamples,
[0357]
指定l-2熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列transformcoeffq,
[0358]
如果变量temporal_signalling_present_flag等于1且temporal_tile_intra_signalling_enabled_flag等于1,则对应于位置(xtb0>>ntbs,ytb0>>ntbs)处tempsigsurface中的值的变量transformtempsig;以及如果另外,temporal_tile_intra_signalling_enabled_flag被设定为1,则对应于位置((xtb0%32)*32,(ytb0%32)*32)处tempsigsurface中的值的变量tiletempsig,
[0359]
依据变量step_width_level2的值的其它地方导出的步宽值,
[0360]
指定变换系数属于哪一平面的变量idxplanes。
[0361]
到此过程的输出为具有要素resl2residuals[x][y]的l-2残差resl2residuals的(ntbs)x(ntbs)阵列。
[0362]
指定当前变换块的左上样本相对于当前图片的左上样本的样本位置(xtbp,ytbp)导出如下:
[0363]
(xtbp,ytbp)=(idxplanes==0)?(xtb0,ytb0):(xtb0>>shiftwidthc,ytb0>>shiftheightc)
[0364]
p可与亮度或色度平面相关,这取决于变换系数属于哪一平面。其中shiftwidthc和shiftheightc在其它地方指定。
[0365]
如果no_enhancement_bit_flag被设定为0,则以下有序步骤适用:
[0366]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0,则以亮度位置(xtb y,ytby)调用如其它地方指定的时间预测过程,变换大小设定成等于ntbs,变量transformtempsig和变量tiletempsig作为输入,且输出为大小(ntbs)x(ntbs)的阵列temppredl2residuals。
[0367]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则大小(ntbs)x(ntbs)的阵列temppredl2residuals被设定为仅含有零。
[0368]
如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0且temporal_tile_intra_signalling_enabled_flag等于1(子条款0)且transformtempsig等于0,则变量stepwidth修改为floor(stepwidth*(1-(clip3(0,0.5,(temporal_step_width_modifier/255)))))。以设定成等于ntbs的变换大小、大小(ntbs)x(ntbs)的阵列transformcoeffq和变量stepwidth作为输入调用如其它地方指定的解量化过程,且输出为(ntbs)x(ntbs)阵列dequantcoeff。
[0369]
以亮度位置(xtby,ytby)、设定成等于ntbs的变换大小、大小(ntbs)x(ntbs)的阵列dequantcoeff作为输入调用如其它地方指定的变换过程,且输出为(ntbs)x(ntbs)阵列resl2residuals。
[0370]
如果变量temporal_enabled_flag等于1,大小(ntbs)x(ntbs)的temppredl2residuals的阵列相加到(ntbs)x(ntbs)阵列resl2residuals,且resl2residuals阵列在亮度位置(xtby,ytby)处存储到temporalbuffer。
[0371]
如果no_enhancement_bit_flag被设定为1,则以下有序步骤适用:
[0372]
如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0,且变量temporal_signalling_present_flag等于1,则以亮度位置(xtby,ytby)、设定成等于ntbs的变换大小,变量transformtempsig和变量tiletempsig作为输入调用如其它地方指定的时间预测过程,且输出为大小(ntbs)x(ntbs)的阵列temppredl2residuals。
[0373]
如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0,且变量temporal_signalling_present_flag等于0,则以亮度位置(xtby,ytby)、设定成等于ntbs的变换大小、设定成等于0的变量transformtempsig及设定成等于0的变量tiletempsig设定作为输入调用如其它地方指定的时间预测过程,且输出为大小(ntbs)x(ntbs)的阵列temppredl2residuals。
[0374]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则大小(ntbs)x(ntbs)的阵列temppredl2residuals被设定为仅含有零。
[0375]
如果变量temporal_enabled_flag等于1,则大小(ntbs)x(ntbs)的temppredl2residuals的阵列存储于(ntbs)x(ntbs)阵列resl2residuals中,且resl2residuals阵列在亮度位置(xtby,ytby)处存储到temporalbuffer。
[0376]
否则,大小(ntbs)x(ntbs)的阵列resl2residuals被设定为仅含有零。
[0377]
如子条款错误!未找到参考源中所指定的每一平面的图片重建过程以变换块位置(xtb0,ytb0)、变换块大小ntbs、变量idxplanes、(ntbs)x(ntbs)阵列resl2residuals和(xtby)x(ytby)recl2modifiedupsampledsamples作为输入而调用。
[0378]
用于解量化的解码过程
[0379]
传递到此过程的每个变换系数群组属于特定平面和增强子层。其已使用统一量化器以死区缩放。量化器可使用非居中解量化偏移。
[0380]
用于变换系数的缩放过程
[0381]
到此过程的输入为:
[0382]
指定当前变换块的大小的变量ntbs(如果transform_type等于零,则ntbs=2,且如果transform_type等于1,则ntbs=4),
[0383]
含有熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列transformcoeffq,
[0384]
指定步宽值参数的变量stepwidth,
[0385]
指定增强子层的索引的变量levelidx(对于增强子层1,leve1idx=1,且对于增强子层2,levelidx=2),
[0386]
指定解量化偏移的变量dquantoffset和变量dequant_offset),
[0387]
如果quant_matrix_mode不同于0,则大小1xntbs2的阵列qmcoeff0(等于阵列变量qm_coefficient_0),且另外,如果quant_matrix_mode等于4,则大小1xntbs2的阵列qmcoeff1(等于阵列qm_coefficient_1),
[0388]
如果ntbs==2,则含有前一图片中使用的缩放参数阵列的大小(3*ntbs)x(ntbs)的阵列quantscalerddbuffer;
[0389]
如果ntbs==4,则含有前一图片中使用的缩放参数阵列的大小(3*ntbs)x(ntbs)的阵列quantscalerddsbuffer。
[0390]
此过程的输出为具有要素d[x][y]和经更新阵列quantmatrixbuffer的经解量化变换系数的(ntbs)x(ntbs)阵列d。
[0391]
为了导出经缩放变换系数d[x][y],其中x=0...ntbs-1,y=0...ntbs-1,且给定如子条款8.6.2中所指定的矩阵qm[x][y],使用以下公式:
[0392]
d[x][y]=(transformcoeffq[x][y]*((qm[x (levelidxswap*ntbs)][y] stepwidthmodiffer[x][y]) appliedoffset[x][y])(1)
[0393]
解量化偏移和步宽修改符的导出
[0394]
变量appliedoffset[x][y]和stepwidthmodiffer[x][y]导出如下:
[0395]
[0396][0397]
其中,如果stepwidth》16,则导出deadzonewidthoffset如下:
[0398]
deadzonewidtho(fset[x][y]=(((1<<16)-((aconst*(qm[x (levelidxswap*ntbs)][y] stepwidthmodifier[x][y])) bconst)>>1)*(qm[x (levelidxswap*ntbs)][y] stepwidthmodifier[x][y]))>>16
[0399]
其中,如果stepwidth<=16,则导出deadzonewidthoffset如下:
[0400]
deadzonewidthoffset[x][y]=stepwidth>>1
[0401]
其中:
[0402]
aconst=39
[0403]
bconst=126484
[0404]
cconst=5242
[0405]
dconst=99614
[0406]
其中dquantoffsetactual[x][y]计算如下:
[0407][0408]
其中levelidxswap导出如下:
[0409][0410]
量化矩阵的导出
[0411]
量化矩阵qm[x][y]含有待用于解码每一系数群组的实际量化步宽。
[0412]
[0413][0414]
其中qm_p[x][y]计算如下:
[0415][0416]
且其中quantscalerddbuffer[x][y]在其它地方导出,且quantscalerddsbuffer[x][y]在其它地方导出。
[0417]
针对2
×
2变换的缩放参数的导出
[0418]
如果变量ntbs等于2,则默认缩放参数如下:
[0419]
default_scaling_dd[x][y]=
[0420]
{
[0421]
{0,2}
[0422]
{0,0}
[0423]
{32,3)
[0424]
{0,32}
[0425]
{0,3}
[0426]
{0,32}
[0427]
}
[0428]
作为第一步骤,阵列quantscalerddbuffer[x][y]初始化如下:
[0429]
如果当前图片为idr图片,则quantscalerddbuffer[x][y]初始化为等于default_scaling_dd[x][y]。如果当前图片不是idr图片,则quantscalerddbuffer[x][y]矩阵保持不变。
[0430]
在初始化之后,基于quant_matrix_mode的值,阵列quantscalerddbuffer[x][y]处理如下:
[0431]
如果quant_matrix_mode等于0且当前图片不是idr图片,则quantscalerddbuffer[x][y]保持不变。
[0432]
如果quant_matrix_mode等于1,则quantscalerddbuffer[x][y]等于default_scaling_dd[x][y]。
[0433]
如果quant_matrix_mode等于2,则quantscalerddbuffer[x][y]修改如下:
[0434][0435]
如果quant_matrix_mode等于3,则quantscalerddbuffer[x][y]修改如下:
[0436][0437]
如果quant_matrix_mode等于4,则quantscalerddbuffer[x][y]修改如下:
[0438]
for(x=0;x<2;x )
[0439]
ꢀꢀꢀꢀꢀꢀꢀ
for(y=0;y<2;y )
[0440]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
quantscalerddbuffer[x 4][y]=qmcoeff1[(x*2) y]
[0441]
如果quant_matrix_mode等于5,则quantscalerddbuffer修改如下:
[0442][0443][0444]
针对4
×
4变换的缩放参数的导出
[0445]
如果变量ntbs等于4,则默认缩放参数如下:
[0446]
default_scaling_dds[x][y]=
[0447]
{
[0448]
{13,26,19,32}
[0449]
{52,1,78,9}
[0450]
{13,26,19,32}
[0451]
{150,91,91,19}
[0452]
{13,26,19,32}
[0453]
{52,1,78,9}
[0454]
{26,72,0,3}
[0455]
{150,91,91,19}
[0456]
{0,0,0,2}
[0457]
{52,1,78,9}
[0458]
{26,72,0,3}
[0459]
{150,91,91,19}
[0460]
}
[0461]
作为第一步骤,阵列quantscalerddsbuffer[][]初始化如下:
[0462]
如果当前图片为idr图片,则quantscalerddsbuffer[x][y]初始化为等于default_scaling_dds[x][y]。如果当前图片不是idr图片,则quantscalerddsbuffer[x][y]矩阵保持不变。
[0463]
在初始化之后,基于quant_matrix_mode的值,阵列quantscalerddsbuffer[x][y]处理如下:
[0464]
如果quant_matrix_mode等于0且当前图片不是idr图片,则quantscalerddsbuffer保持不变。
[0465]
如果quant_matrix_mode等于1,则quantscalerddsbuffer等于default_scaling_dds[x][y]。
[0466]
如果quant_matrix_mode等于2,则quantscalerddsbuffer修改如下:
[0467][0468][0469]
如果quant_matrix_mode等于3,则quantscalerddsbuffer修改如下:
[0470][0471]
如果quant_matrix_mode等于4,则quantscalerddsbuffer修改如下:
[0472]
for(x=0;x<4;x )
[0473]
ꢀꢀꢀꢀꢀꢀꢀ
for(y=0;y<4;y )
[0474]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
quantscalerddsbuffer[x 8][y]=qmcoeff1[(x*4) y]
[0475]
如果quant_matrix_mode等于5,则quantscalerddsbuffer修改如下:
[0476]
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献