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

文档序号:29857113发布日期:2022-04-30 09:41阅读:119来源:国知局
视频译码中的残差的量化的制作方法
视频译码中的残差的量化


背景技术:

1.先前已经在例如wo 2014/170819和wo 2018/046940(其内容以引入的方式并入本文中)中提出了混合式后向兼容译码技术。
2.其中提出了一种方法,其将数据流解析成经编码数据的第一部分和经编码数据的第二部分;实施第一解码器以将经编码数据的第一部分解码成信号的第一再现;实施第二解码器以将经编码数据的第二部分解码成重建数据,所述重建数据指定如何修改所述信号的第一再现;以及将所述重建数据应用于所述信号的第一再现以产生所述信号的第二再现。
3.其中进一步提出了一种新增方法,其中残差要素的集合可用以重建信号的第一时间样本的再现。生成与第一时间样本相关联的时空相关要素的集合。时空相关要素的集合指示多个残差要素之间的空间相关程度和基于所述再现的第一参考数据与基于信号的第二时间样本的再现的第二参考数据之间的时间相关程度。时空相关要素的集合用于生成输出数据。如所提到,所述残差集合经编码以减小总体数据大小。
4.编码应用通常采用量化操作。借助于其中数据值的一个或多个范围中的每一个压缩为单个值的此压缩过程,允许视频数据的集合中的不同值的数目减少,借此致使所述数据更容易压缩。以此方式,量化方案一直可在一些视频中用于将信号改变为量子,使得特定变量可仅采用特定离散量值。通常,视频编解码器将呈视频帧的形式的视觉数据划分为通常具有预定大小或像素数目的离散块。接着通常将变换应用于所述块以便依据频率分量的和表达视觉数据。接着可将经变换数据预乘以量化位阶代码,且接着逐要素除以量化矩阵,其中每一经变换的预乘要素除以矩阵要素得到的输出要素接着经舍入。用除数(即,量化矩阵的不同要素)处理不同的经变换要素通常用于允许对视频对于检视者的视觉外观具有较大影响的那些频率要素相比于不太可感知的分量被有效地分配更多数据或分辨率。
5.寻求优化以进一步减小总体数据大小,同时平衡一旦信号已经重建则不损害用户的总体印象及优化处理速度和复杂性的目标。
6.量化是大体上任何编码方法的基本子过程。确切地说,量化是将来自大体上连续值集合(例如,实数或高位深度数字值集合,“原始集合”)的信号性质(例如,图片的像素的亮度)的值约束到相对小离散集合(例如,有限和低位深度整数值集合,“量化集合”)的程序。
7.量化的重要方面是“逆量化”或“解量化”的相应过程,其用于从量化值(即,属于小离散集合的值)获得属于原始(即,较大)值集合的值。小离散集合中的每一值实际对应于较大值集合中的多个(且可能无限)值,因此解量化的关键问题是限定应挑选多个值中的哪些值。
8.传统编码方法经调用以量化原始集合中的值,而不知晓那些值从统计的视角来看如何分布。因此,典型的解码方法是依据量化集合中的每一量化值选择原始集合中大致位于原始集合中限定的范围中间的值。举例来说,如果量化值q1对应于原始集合中的范围(10,19),则典型的解量化器将向q1指派值14。显然,如果解量化器将拥有指示原始集合的
属于范围(10,19)的值的90%实际上是10或11中的任一个的信息,则作出不同解量化决策将是可取的。令人遗憾的是,关于原始值的统计分布的信息通常在此项技术中到目前为止使用的编码方法中不是现成的。
9.量化方法的另一重要特性是每一量化范围(即,对应于量化集合中的每一量化值的原始集合中的原始值的范围)的限定。再次,在不存在关于原始集合中的值的统计分布的已知且可靠数据的情况下,大多数方法选择统一量化步长,即相等大小的范围。
10.概括地说,在此项技术中可用的量化和解量化方法,归因于其不能基于原始集合中的值的统计分布和/或由所述统计分布驱动,所以在信号的再现的质量(针对有损编码)和压缩性能两个方面不可避免地都是次佳的。


技术实现要素:

11.根据一方面,提供一种将输入信号编码为多个经编码流的方法,其中经编码流可组合以重建输入信号,所述方法包括:接收输入信号;对输入信号进行下取样以创建经下取样信号;指示使用基础编码器编码经下取样信号以创建基础编码流;指示使用基础解码器解码基础编码流以生成经重建信号;将经重建信号与输入视频进行比较以创建残差集合;以及编码残差集合以创建层级编码流,包含:将变换应用于残差集合以创建经变换系数的集合;将量化操作应用于经变换系数的集合以创建经量化系数的集合;以及将编码操作应用于经量化系数。
12.根据另一方面,提供一种将经编码流解码为经重建输出信号的方法,所述方法包括:接收根据第一编解码器从第一基础编码流解码的第一输出信号;接收层级编码流;解码所述层级编码流以获得残差集合;以及将残差集合与第一输出信号组合以生成经重建信号,其中所述解码所述层级编码流包括:从层级编码流解码经量化系数的集合;解量化所述经量化系数的集合。所述组合可包含与第一输出信号的经上取样型式组合。
13.层级编码流可以是第一层级编码流;经量化系数的集合可以是经量化系数的第一集合;且残差集合可以是第一残差集合,且其中所述方法可进一步包括:接收第二层级编码流;解码第二层级编码流以获得第二残差集合;以及将第二残差集合与经重建信号的经上取样型式组合以生成原始分辨率输入信号的重建,其中解码第二层级编码流包括:从第二层级编码流解码经量化系数的第二集合;对经量化系数的第二集合进行解量化。
14.所述方法可有利地允许改进编码和解码过程的效率,方式是借助于基于待译码的视频数据根据若干因素中的任一个更改在量化过程中应用于系数的压缩的程度和/或方式。因此,在编码视频流期间执行通常有损的量化程序的方式可经调适使得可取决于输入视频的性质和内容应用编码或压缩效率与输入视频的视觉可感知压缩之间的适当平衡,其为可跨不同视频帧和流极大地变化的关系。此可调适的形式的量化可与接收解码器处的解量化过程协作使用,例如方式是例如经由具有表示或指示所述信息的值的参数的传输向解码器传信已执行量化的方式或量化已从默认模式更改的程度。
15.在一些实施例中,块组折叠过程也可以用于增强译码效率。确切地说,在此些情况下,量化操作进一步包括将块组折叠操作应用于系数的集合,所述块组折叠操作包括具有超过预定最大值的值的每一系数经量化以便具有对应于具有所限定步宽的多个量化块组中的第一量化块组的量化值,所述最大值由所述第一量化块组的上限限定。可执行此操作
以便将驻留在选定量化块组上方的所有残差或系数值放置到选定块组中。相对于什么可理解为所涉及的值的范围的端点,第一块组可被视为对应于上部值,或对应于最高(绝对)量化值的块组。块组折叠可在上部和下部端点中的任一个或两个处实施。可针对范围内的负值执行类似过程。块组折叠可经配置以便基于网络条件和基础流处理中的至少一个调整或减小位速率。因此,块组折叠过程可本身为可配置的,例如在各种实施例中,条件和从其导出的基础流处理或参数中的任一个或两个用于配置块组折叠,例如限定块组折叠的参数。在一些实施例中,量化操作进一步包括使用解量化偏移。此可包括将解量化偏移应用于多个量化块组,所述多个量化块组具有所限定步宽以通过解量化偏移的值调整所述多个量化块组中的一个或多个所对应于的值中的每一个。
16.在此些实施例中,可调整所述多个量化块组中的每一个所对应于的值。或者,对应于所述多个块组中的第一块组的开始的值和对应于所述多个块组中的最后块组的末尾的值中的任一个或两个不通过量化偏移的值调整,也就是说,其保持未经量化偏移的值调整。第一块组可理解为对应于数值上最低值或所述范围的最小值。同样,最后块组可理解为表示范围的最大值或数值上最大值。这些调整和不调整可与涉及死区的量化操作和块组折叠组合应用,如本公开中稍后描述。
17.通常,解量化偏移的值为可调整或可配置的。在一些实施例中,解量化偏移的值可基于指示执行编码所处的操作条件的数据而变化。
18.在一些实施例中,所述方法进一步包括将量化偏移值传信到将接收经编码流的解码器。此传信可例如在其中量化偏移值在编码期间动态地变化的实施方案中执行。
19.解量化操作通常包括在基于量化步宽的量化之前从残差或系数值减去解量化偏移值。
20.在一些实施例中,基于残差或系数的符号调整解量化偏移的值。此可经实行以便允许关于零值的对称操作。
21.可执行所述方法使得当解量化偏移的值被设定为第一预定值时,停用偏移到块组值的应用。举例来说,可通过将量化或解量化偏移值设定为零来进行此操作。
22.在一些实施例中,基于死区的所限定宽度调整解量化偏移的值。在此些实施例中,可使用死区执行量化操作,如本公开中稍后详述。可基于死区的所限定宽度配置或调整解量化偏移。
23.在一些实施例中,所述方法包括通常从对应于给定数据层的所传信参考stepwidth的单个参考解量化偏移值δ导出经编码系数群组中的每一个的相应解量化偏移值δi。偏移值δi通常至少部分取决于参考偏移δ和系数集合i的量化stepwidthi中的一或两者。
24.在一些实施例中,所有量化步宽的偏移可根据以下关系从参考步宽导出:
25.dequantization_offsetk=f(stepwidthk),
26.以及以下关系:
27.actual_dequantization_offseti=
28.=reference_dequantization_offset+f(stepwidthi)-f(reference_stepwidth)。
29.在此些情况下,通常f(stepwidth)为对数关系。
30.在一些实施例中,所述方法可涉及根据步宽参数改变量化操作中使用的步宽。确切地说,可针对系数的集合中的系数中的一个或多个中的每一个,例如针对系数的2
×
2或4
×
4块内的不同系数,改变步宽。举例来说,可改变步宽使得较小步宽值用于被预先确定为在较大程度上影响经解码信号的感知的系数中的一个或多个。影响的程度通常以实验方式确定,借此可获得指示哪些系数更大程度上影响经解码信号对检视者的感知的信息。
31.步宽通常根据基础步宽参数被指派默认值。可根据基础步宽和步宽修改符参数获得一个或多个经修改步宽。举例来说,此可通过根据公式modified_stepwidth=base_stepwidth*modifier获得经修改步宽来执行,其中修改符可基于块或单元内的特定系数设定。在此些实施例中,相应步宽修改符参数可用于修改用于系数中的一个或多个中的每一个的步宽。在此些实施例中,相应步宽修改符参数可用于修改用于系数中的一个或多个中的每一个的步宽。
32.在一些实施例中,相应步宽值可用于两个或更多个经编码流或增强层级中的每一个,或与之相关联,所述两个或更多个经编码流或增强层级包括基础编码流和一个或多个增强层级编码流。
33.在一些实施例中,根据取决于所采用的增强的层级的增强层级改变步宽修改符参数。可改变步宽修改符使得较小步宽用于第一层级编码流且较大步宽用于基础编码流。
34.在一些优选实施例中,量化操作使用以不同系数和不同增强层级的步宽修改符参数值的集合限定的量化矩阵。因此,所述方法可涉及每一系数和每一增强层级的相应步宽修改参数值。可通过编码器执行所述方法以及通过解码器执行相应解码过程,在不同实施例中借助于各种手段获得量化矩阵。确切地说,可在编码器和解码器中的至少一个处预设量化矩阵,或其中可在编码器和解码器之间传信量化矩阵,且另外或替代地在编码器和解码器中的至少一个处动态地构建量化矩阵。
35.所述方法可进一步包括将量化矩阵构建为一个或多个所存储和一个或多个所传信参数中的至少一个的函数。
36.在一些实施例中,可根据以下公式导出经缩放变换系数d[x][y],其中x=0

ntbs-1,y=0

ntbs-1,以及给定量化矩阵qm[x][y]:
[0037]
d[x][y]=(transformcoeffq[x][y]*((qm[x+(levelidxswap*ntbs)][y]+stepwidthmodiffer[x][y])+appliedoffset[x][y]),
[0038]
其中transformcoeffq为含有熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列,
[0039]
levelidx是指定增强子层的索引的变量,且appliedoffset[x][y]和stepwidthmodifier[x][y]是变量。此外,appliedoffset[x][y]可对应于死区,如本文中其它地方所描述。
[0040]
举例来说,levelidx可针对增强子层1等于1,且lbe针对增强子层2等于2。
[0041]
通常,根据以下导出变量stepwidthmodifier[x][y]:
[0042]
如果dequant_offset_signalled_flag=0,则stepwidthmodifier[x][y]=((((floor(-cconst*ln(qm[x+(levelidxswap*ntbs)][y])))+dconst)*(qm[x+(levelidxswap*ntbs)][y]2)))/32768),其中cconst和dconst为常数,且在一个实例中可分别具有值或5242和99614。
[0043]
在一些实施例中,所述方法包括随指示是否将在执行解量化操作时应用解量化偏移的信令信息传输所述多个经编码流。因此,可提供信令信息,其指示是否已在执行量化操作时应用量化偏移,在一些实施例中,所述解量化偏移对应于或等于量化偏移。通常,偏移是量化步宽的至少一函数。
[0044]
在此些情况下,通常,作为步宽的函数的补充或替代,偏移是量化之前值的概率分布的函数。
[0045]
在一些实施例中,所述方法包括将修改应用于量化步宽以生成经修改量化步宽,以及应用经修改量化步宽来量化一个或多个系数。优选地,基于量化之前值的概率分布确定所述修改。
[0046]
通常,量化操作包括使用线性量化器量化系数,其中所述线性量化器使用可变大小的死区。
[0047]
在此些实施例中,死区的大小可设定为量化操作中使用的步宽的预定倍数,例如设定为步宽值的线性函数。或者,可使用步宽值的非线性函数。
[0048]
在一些优选实施例中,量化操作中使用的步宽的大小为可变的,且死区的大小更优选地根据可变步宽调适。
[0049]
可通过将量化操作中使用的步宽乘以乘数参数来设定死区的大小,且其中乘数参数的值基于指示执行编码所处的操作条件(例如,可用位速率)的数据而变化。因此,在一些实施例中,乘数也可以是自适应的。
[0050]
在一些实施例中,死区的大小根据公式dead zone=dzmultiplier x stepwidth计算为量化步宽的倍数,其中死区乘数dzmultiplier根据dzmultiplier=a*stepwidth+b计算为stepwidth的线性函数,其中a和b为常数,通常是分别执行所述方法和相应解码方法的编码器和解码器两者优选地已知的合适的常数。
[0051]
通常根据一个或多个量化参数执行量化操作。所述一个或多个量化参数通常设定为以下中的至少一种情况:在一个或多个经编码流中控制和提供所要位速率。也就是说,其可经设定以在一个或多个经编码流中控制和/或提供所要位速率。所要位速率是所有流的共同位速率以便生成共同经编码流,或其中针对不同经编码流提供不同位速率。
[0052]
在此些实施例中,优选地设定所述一个或多个量化参数以便在一组预定义位速率约束内提供所要质量水平或使质量水平最大化。此可理解为调整参数以便提供尽可能高或大的质量水平。
[0053]
所述方法可包括通过接收接收所述一个或多个经编码流和基础编码流的缓冲器的状态以及使用所述状态确定量化参数,来确定量化参数。
[0054]
缓冲器优选地用于存储和/或组合经编码基础流和经编码增强流,且被配置成在以恒定速率读取输出的同时以可变位速率接收输入。速率控制器可从缓冲器读取状态以便确保缓冲器不会溢出或变空,且数据始终可供在其输出处读取。缓冲器的状态还可以用于生成所述一个或多个量化参数。可基于缓冲器内的数据量控制所述一个或多个量化参数。
[0055]
通常,量化参数的值与缓冲器中的数据量逆相关。
[0056]
在一些实施例中,确定用于每一帧、残差和/或残差群组的量化参数,也就是说用于以下中的至少一个:每一帧、残差和残差群组。通常,可基于帧的目标数据大小和帧的当前数据大小使用先前量化参数集合确定帧的量化参数。在这些实施例中的任一个中,量化
参数可基于先前量化参数集合。
[0057]
所述方法可包括限定曲线集合以将归一化大小映射到所述一个或多个量化参数上,其中每一曲线包括乘数和取决于当前帧的性质的偏移中的一个或多个。可限定曲线集合以将归一化大小映射到量化参数上。每一曲线可具有乘数和偏移中的一个或多个,所述偏移可取决于当前帧的性质(例如,其可取决于待在帧内编码的信息的复杂性)。乘数和偏移可限定曲线的形状。可将乘数应用于大小归一化函数,所述大小归一化函数是量化参数q的函数。在一种情况下,当前大小(即,以q
t-1
编码的帧t的大小)和q
t-1
可用于限定所述曲线集合的空间内的点。此点可用于从曲线集合选择最接近曲线的集合。这些曲线可以是所述点上方的曲线和所述点下方的曲线或者所述点的最高或最低曲线。最接近曲线的集合可连同所述点一起在内插函数中使用以确定与所述点相关联的新曲线。一旦确定此新曲线,就可确定用于新曲线的乘数和偏移。这些值可接着连同所接收目标大小一起用于确定qt的值(例如,曲线可限定大小的函数和q)。因此,通常,乘数应用于大小归一化函数,所述大小归一化函数是量化参数q的函数。以q
t-1
编码的帧t的当前大小和q
t-1
可用于限定曲线集合的空间内的点,且其中所述点用于从曲线集合选择最接近曲线的集合。最接近曲线可以是所述点上方的曲线和所述点下方的曲线或者所述点的最高或最低曲线。
[0058]
在此些情况下,最接近曲线的集合通常连同所述点一起在内插函数中使用以确定与所述点相关联的新曲线,且可确定所确定的新曲线的乘数和偏移,进一步包括使用所确定的新曲线值的乘数和偏移的值连同所接收目标大小来确定qt的值。
[0059]
曲线的集合可存储在可访问的存储器中且基于针对先前帧确定的曲线的集合而更新。在某些情况下,可针对译码单元或块内的不同系数位置,例如针对4或16个系数的阵列中的不同要素(例如,针对2
×
2或4
×
4变换)以不同方式应用自适应量化。
[0060]
在一些实施例中,使用量化矩阵执行量化操作,所述量化矩阵是根据量化矩阵模式参数的所获得值导出的。优选地,在此些情况下,量化矩阵模式参数指定待用于编码过程中的量化矩阵。
[0061]
通常,相应的优选地不同的量化矩阵用于经编码流的两个或更多个层级中的每一个。更优选地,不同量化矩阵用于每一经编码流,其中预先确定默认量化配置,且在编码器和解码器之间传信相对于默认配置的变化。
[0062]
在这些实施例中,所述方法可包括借助于以下中的至少一个致使将不同量化矩阵用于相应经编码流:默认配置,以及借助于超驰默认配置的信令致使将共同量化矩阵用于相应经编码流。
[0063]
在一些实施例中,量化矩阵仅用于多个增强层级的子集或多个增强层级中的仅一个。量化矩阵通常依据其中布置系数的块内的系数的位置来编索引。
[0064]
在一些实施例中,以值的集合限定基础量化矩阵,且根据缩放因子修改基础量化矩阵,所述缩放因子是增强层级中的一个或多个的步宽的函数。举例来说,缩放因子可计算为步宽参数的箝位函数。在一些实施例中,使用缩放因子的指数函数缩放量化矩阵中的每一条目。
[0065]
在一些实施例中,线性量化器使用非居中解量化偏移。确切地说,线性量化器可相对于量化步长和非居中解量化偏移使用不同大小的死区。
[0066]
通常,从编码器接收解量化偏移的值。所接收偏移值偏移可在基于步宽的解量化
之前添加到所接收量化值。
[0067]
根据另一方面,提供一种将经编码流解码为经重建输出视频的方法,所述方法包括:接收根据第一编解码器从第一基础编码流解码的第一输出信号;接收层级编码流;解码层级编码流以获得残差集合;以及将残差集合与第一输出信号组合以生成经重建信号,其中所接收经编码流包括已经使用线性量化器缩放的变换系数的群组,且所述解码包括应用解量化操作,其中使用死区执行解量化操作,其中根据解量化操作中使用的步宽和从编码器接收的量化参数获得死区的大小。所述组合可包含与第一输出信号的经上取样型式组合。
[0068]
在一些优选实施例中,所述方法包括从信令信息确定是否将在执行解量化操作时应用解量化偏移。信令信息可直接或间接从编码器接收。所述信息可在与信号相关联的位流内。解量化偏移可理解为本公开中早先描述的解量化偏移。
[0069]
在此些实施例中,通常,解量化偏移为量化步宽的至少一函数。优选地,通常,作为步宽的函数的补充或替代,解量化偏移是量化之前值的概率分布的函数。
[0070]
在一些实施例中,所述方法包括将修改应用于量化步宽以生成经修改量化步宽,以及应用经修改量化步宽来解量化一个或多个经量化值。在此些实施例中,通常,基于量化之前值的概率分布确定所述修改。优选地,所述方法包括在解码之前编码输入视频或信号,如例如关于第一方面所描述。所述方法可包括以与解量化不同的方式量化某一值。
[0071]
所述方法可包括在解码之前编码信号,所述方法包括应用量化步宽来量化一个或多个值以生成所述一个或多个经量化值,使得量化和解量化为不对称的。
[0072]
在涉及不对称译码的此些实施例中,所述方法可进一步包括向解码器或解码操作传信编码期间的修改。
[0073]
可以若干方式实行(即,实施)实施不对称的编码器和解码器级。在一些情况下,此可均在较宽编码器侧,也就是说,l1和l2处的编码器可与形成l1路径的部分的解码器不对称。
[0074]
下文陈述不对称量化和解量化的多个另外的非限制性实施方案,其还可与上文所描述的与上述方面相关的特征组合实施。
[0075]
还提供一种将输入视频编码为多个经编码流且解码所述多个经编码流中的至少一个的方法,其中所述编码包括使用第一参数集合来应用第一量化操作,且所述解码包括使用与第一量化操作不同的参数集合来不对称地应用第二解量化。解码可在解码器处执行或作为编码方法的重建路径的一部分执行。
[0076]
还提供一种(用于)将输入视频编码为多个经编码流且解码所述多个经编码流中的至少一个的方法,其中所述编码包括应用第一量化操作且向解码过程传信多个参数,且所述解码包括接收所述多个参数且根据所接收的多个参数使用与第一量化操作不同的参数来应用第二解量化。
[0077]
还提供一种(用于)将输入视频编码为多个经编码流的方法,其中经编码流可组合以重建输入视频,所述方法包括:接收输入视频,其通常是完全分辨率输入视频。所述方法可进一步包括:将量化操作应用于系数的集合以创建经量化系数的集合;以及将编码操作应用于经量化系数的集合,其中应用量化操作包括:基于待量化的第一系数集合调适量化,包含改变用于第一系数集合中的不同系数的步宽,其中所述方法进一步包括传信修改参
数,且其中从所述调适导出的第一参数集合传信到解码器以实现经量化系数的第一集合的解量化的修改,其中修改参数由解码器使用以修改第一参数集合使得所使用的解量化参数与所使用的量化参数不同。
[0078]
还提供一种将经编码流解码为经重建输出视频的方法,所述方法包括:检索解量化修改参数;从第一层级编码流解码经量化系数的集合;获得指示如何解量化经量化系数的第一集合的参数集合;使用检索到的解量化修改参数修改第一参数集合;以及使用所述参数集合解量化经量化系数的集合,其中使用相应解量化参数解量化经量化系数的集合中的不同经量化系数,使得解量化与量化为不对称的。
[0079]
根据另一方面,提供一种用于编码输入视频的编码器,所述编码器被配置成根据第一方面执行所述方法。
[0080]
根据另一方面,提供一种用于将经编码流解码为经重建输出视频的解码器,所述解码器被配置成根据上述方面解码方面执行所述方法。
[0081]
根据另一方面,提供一种包括编码器和解码器的系统。所述系统可适于执行如本公开中早先描述的不对称量化。
[0082]
根据另一方面,提供一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时致使所述处理器执行所述方法。
[0083]
更一般地说,提供一种将输入信号编码为多个经编码流的方法。此方法可利用上文描述的实施细节中的任一个执行。
[0084]
本公开中描述的视频译码技术相对于常规方法提供基于层次的阶层式编码方法的上下文中的更有效且高效的量化和解量化。此可进一步检视下文描述的实施例来理解,下文描述的实施例可利用上文描述的方面中的任一个实施。
[0085]
首先,在本公开中可理解,在基于层次的译码格式的上下文中,信号分解为数据的多个“梯队”(也被称为“阶层式层次”),每一梯队对应于信号的“质量水平”(“loq”),从原始信号的取样速率下的最高梯队到通常具有低于原始信号的取样速率的最低梯队。在非限制性实例中,当信号为图片时,最低梯队可以是原始图片的缩略图,甚至仅仅是单个像元。其它梯队含有关于待应用于重建的再现以便产生最终输出的校正的信息。通过首先解码最低梯队(因此在第一最低质量水平下重建信号),接着预测在第二下一较高质量水平下信号的再现,接着解码重建数据的相应第二梯队(也被称为第二质量水平下的“残差数据”),接着将预测与重建数据组合以便重建第二较高质量水平下信号的再现,等等,直至重建给定质量水平,来重建给定质量水平下的经解码信号。
[0086]
可使用不同译码格式来对不同数据梯队进行译码,且不同质量水平可具有不同取样速率(例如,针对图像或视频信号的情况,分辨率)。后续梯队可指代信号的相同信号分辨率(即,取样速率),或指代逐渐变高的信号分辨率。
[0087]
本文中说明的方法和实施例还包含在基于层次的编码方法中合适地利用残差数据的可预测统计特征的方式。确切地说,在基于层次的阶层结构的上下文中,残差数据通过构造根据已知概率分布模式(例如,借助于非限制性实例,拉普拉斯分布、泊松分布等)分布:因此有可能快速识别关键参数所述概率分布并借助于相对有限的元数据集合向解码器指示。
[0088]
同时,本文中的非限制性实施例还包含基于原始符号的已知概率分布合适地调适
量化和解量化操作的方式,以便同时改进压缩效率、重建质量和处理速度。本文中的非限制性实施例还包含通过利用默认公式导出每一系数群组的最佳解量化偏移应基于其量化步宽的相对量值如何变化来使信令开销最小化的方法。
[0089]
本文中的实施例相对于常规系统和方法偏离,从而提供新颖的方法来基于原始非量化值的概率分布的特性的合适且简洁的指示动态地调适量化和解量化操作。
[0090]
根据其最广方面,本发明是一种(用于)快速评估原始非量化值的概率分布,基于所述分布生成合适的信令元数据,且基于所述元数据调适量化和解量化操作的方法。本发明还包含解码器侧方法以在不存在来自编码器的信令信息的情况下也改进解量化偏移的统计性质。
[0091]
这些方法在基于层次的编码方法的上下文中特别有价值且有效,因为基于层次的阶层结构产生为使得隐式地限定残差值的概率分布的类型,这继而允许以相对少且可快速识别的参数表征每一特定概率分布,并且呈现解量化偏移的若干性质(例如,其与量化步宽的量值的关系)。根据本文中所描述的非限制性实施例,本文中所描述的新颖的解量化方法在基于层次的编码方法的编码和解码阶层内的环路中使用。
[0092]
为简单起见,本文中说明的非限制性实施例将信号称为样本(即,二维图像、视频帧、视频字段、声音帧等)的序列。在描述中,术语“图像”、“图片”或“平面”(既定具有“超平面”的最广含义,即,具有任何数目的维度和给定取样栅格的要素的阵列)将常常用于识别沿着样本序列的信号的样本的数字再现,其中每一平面具有其维度(例如,x和y)中的每一个的给定分辨率,且包括平面要素(或常常称为“像素”的二维图像、常常称为“体元”的体积图像等的“要素”或“像素”或显示要素)的集合,其表征为一个或多个“值”或“设定”(例如,借助于非限制性实例,合适的颜色空间中的颜色设定、指示密度水平的设定、指示温度水平的设定、指示音频变调的设定、指示振幅的设定等)。每一平面要素由合适的坐标集合识别,所述坐标指示图像的取样栅格中所述要素的整数位置。信号维度可包含仅空间维度(例如,在图像的情况下)或还包含时间维度(例如,在随时间演进的信号的情况下)。
[0093]
作为非限制性实例,信号可以是图像、音频信号、多通道音频信号、遥测信号、视频信号、多视图视频信号(例如,3d视频)、体积信号(例如,医学成像、科学成像、全息成像等)、体积视频信号,乃至具有多于四个维度的信号。
[0094]
为简单起见,本文中说明的非限制性实施例常常参考显示为设定的2d平面(例如,合适的颜色空间中的2d图像)的信号,例如视频信号。术语“帧”或“字段”将与术语“图像”可互换地使用,以便指示视频信号的时间上的样本:针对由帧组成的视频信号(渐进视频信号)说明的任何概念和方法还可容易地适用于由字段组成的视频信号(交错视频信号),且反之亦然。尽管本文中说明的实施例聚焦于图像和视频信号,但所属领域的技术人员可容易理解,相同概念和方法还适用于任何其它类型的多维信号(例如,音频信号、体积信号、立体视频信号、3dof/6dof视频信号、全光信号等)。
[0095]
根据本文中描述的一些实施例,信号处理器(例如,计算机处理器硬件)被配置成接收待量化的数据和待用于量化所述数据的相应参考量化步宽。至少部分地基于量化步宽,信号处理器识别对应于量化值零(“dead zone”)的非量化值的范围。本公开中早先描述了死区的使用。在一些非限制性实施例中,编码器基于编码器和解码器两者已知的公式依据参考步宽计算dead zone,这允许改变dead zone量化块组的相对大小而不需要任何信令
开销。在非限制性实施例中,dead zone被计算为量化步宽的倍数(即,dead zone=dzmultiplier*stepwidth),其中deadzone乘数dzmultiplier被计算为stepwidth的线性函数(即,dzmultiplier=a*stepwidth+b,其中a和b是编码器和解码器两者已知的合适的常数)。在其它非限制性实施例中,dzmultiplier之间的关系为非线性的。在一些非限制性实施例中,dzmultiplier用定点整数数字表示,以免使用硬件特定的浮点计算。
[0096]
根据本文中所描述的一些其它实施例,编码器至少部分地基于对待量化的数据计算的度量识别解量化偏移值δ以添加到每一非量化值范围(“量化块组”)的最中心极限以便获得对应于qi的解量化值(r_i)。经量化符号q的解量化由编码器(用于模拟解码)和解码器两者执行如下。
[0097]
如果经量化符号qi为正:
[0098]ri
=qi·
(stepwidth
·
quantizationmatrix)+(δ-deadzone)
[0099]
如果实际上符号qi为负:
[0100]ri
=qi·
(stepwidth
·
quantizationmatrix)-(δ-deadzone)
[0101]
在一些其它实施例中,解码器通过分析信号编码字节流产生解量化偏移值δ。如果对应于解量化偏移的信令位被设定为1,则解码器处理字节流中的随后字节以便产生参考解量化偏移。
[0102]
根据一些其它实施例,对于多个经编码数据集合(例如,经编码的经变换系数的群组),编码器向解码器传信对应于参考量化stepwidth的单个参数,且解码器利用量化矩阵来处理对应于参考stepwidth的参数且针对经变换系数的群组中的每一个导出相异量化stepwidth。为了限制待在字节流中作为元数据传输的解量化偏移的数目,编码器和解码器两者从既定为对应于数据层的所传信参考stepwidth的偏移的单个参考解量化偏移值δ自动导出经编码系数群组中的每一个的特定解量化偏移值δi,所述偏移值δi至少部分取决于所传信的解量化偏移δ和系数集合i的量化stepwidthi。
[0103]
在一些实施例中,编码器和解码器借助于假定如下关系计算从参考stepwidth导出的所有量化stepwidth的偏移:
[0104]
dequantization_offsetk=f(stepwidthk)
[0105]
及因此:
[0106]
actual_dequantization_offseti==
[0107]
=reference_dequantization_offset+f(stepwidthi)-f(reference_stepwidth)
[0108]
在一些实施例中,f(stepwidth)为对数关系。
[0109]
在其它实施例中,编码器借助于rdo(“速率失真优化”)算法导出参考解量化偏移值δ的值。借助于非限制性实例,在一实施例中,编码器通过使用合适的度量(例如,借助于非限制性实例,mse、mae、psnr)对待量化的数据执行对分搜索优化算法以确定通过以给定解量化偏移值δ解量化产生的再现的保真度,来计算参考解量化偏移值δ。在非限制性实施例中,信号处理器选择使原始非量化值和解量化值(r_i)之间的均方误差最小化的值。在其它非限制性实施例中,编码器仅考虑对应于信号的已经根据合适的优先级映射识别为具有相对高优先级的区域的残差执行所述优化。
[0110]
在其它实施例中,编码器选择解量化偏移,且检测有可能远离相应量化桶的解量
化点量化的系数值。相应地,编码器向所述系数指派相邻量化桶的经量化符号,以便减小系数的非量化值和指派到系数的经量化符号的解量化值之间的差的度量。在非限制性实施例中,编码器检测关于边缘的至少一个系数,且向其指派不同经量化符号,以便增强边缘转变。
[0111]
在另外的实施例中,编码器在两个步骤中执行量化:利用相对大步宽和相对小死区的第一遍量化,目的是将相邻残差值分组为丛集;随后,利用相对小目标量化步宽的实际量化,检测系数群组的参考解量化偏移。
[0112]
在一些实施例中,解码器被配置成随着量化桶从残差分布的中心(零符号/死区)移动到分布的两个尾部而生成逐渐变大的解量化偏移。在一些非限制性实施例中,解码器针对每一量化stepwidthi产生取决于stepwidthi的stepwidth_modifieri值。解码器接着产生decoding_stepwidthi=(stepwidthi+stepwidth_modifieri)。接着使用decoding_stepwidthi代替stepwidthi以便执行解量化。
[0113]
在一些实施例中,编码器将解量化偏移值δ传信为经编码位流内的编码元数据。在一实施例中,解码器借助于字节流中的给定信令位检测是否针对经量化系数的给定分组传信解量化偏移:如果所述位被设定为1,则随后字节含有对应于参考解量化偏移的量值的信息。在其它非限制性实施例中,当不传信解量化偏移时,解码器继续计算经变换系数的每一群组的stepwidth_modifier。在其它非限制性实施例中,基于第二信令位,解码器处理字节流以产生参考解量化偏移,且同时产生待添加到stepwidth的一个或多个stepwidth_modifier以便渐进地增加解量化偏移。stepwidth_modifier可用于避免例如蚊式噪声(mosquito noise)等假影。
[0114]
在一些实施例中,借助于定点整数数字执行处理操作和中间变量,从而避免执行依赖于浮点数的处理操作。
[0115]
在一些另外的非限制性实施例中,基于识别非量化值的概率分布的参数产生每一量化块组的偏移值δi。在非限制性实施例中,假定至少部分地基于元数据识别的拉普拉斯(即,双指数)概率分布计算偏移值。在其它非限制性实施例中,偏移值直接从元数据解码。在非限制性实施例中,偏移值δ对于除围绕零值居中的块组外的所有块组相同;所述偏移值δ针对对应于正非量化值的块组添加到量化块组的最中心边缘(因此相对于块组范围的平均值减小解量化值的量值),且针对对应于负非量化值的块组减到块组的平均值(因此再次相对于块组范围的平均值减小解量化值的绝对值)。
[0116]
在其它实施例中,信号处理器被配置成实施随机解量化过程(“统计抖动”或“统计解量化”),从而针对属于同一量化块组i的解量化值再现类似于量化到所述块组中的原始非量化值的概率分布的概率分布。信号处理器接收指示原始非量化值的概率分布的元数据。至少部分地基于所述概率分布的参数,基于每一块组的最小和最大值,以及基于随机生成的值,信号处理器针对每一量化值qi产生解量化值(r_i)。在此些实施例中,同一量化值qi的多次出现可解量化为多个不同解量化值(r_i)。在非限制性实施例中,指示原始非量化值的概率分布的元数据中的参数假定为拉普拉斯分布的参数。
[0117]
在其它实施例中,信号处理器处理对应于经量化数据的所接收元数据且产生指示量化块组的大小的参数stepwidthi和对应于原始非量化数据的概率分布的信息。至少部分地基于所述参数和所述信息,信号处理器产生待用于解量化所接收经量化数据的所有量化
块组的范围。在非限制性实施例中,量化块组的大小为非均一的。在其它非限制性实施例中,量化块组的大小为非均一的,且至少部分地基于信号处理器已知的查找表获得。在其它非限制性实施例中,解量化遵循dead zone加均一步宽(dz+usw)方案,其中dz和usw两者是参数stepwidthi的函数。在非限制性实施例中,解量化偏移也是参数stepwidth的函数,且被计算为f(stepwidth)。
[0118]
根据其它实施例,信号处理器基于所接收元数据预先计算参数集合,且将所述参数存储在查找表中,以便加速经量化数据的解量化过程。
[0119]
根据一些实施例,对应于原始非量化值的概率分布的信息包括对应于拉普拉斯分布的分集参数(“b”)的参数。在其它非限制性实施例中,对应于原始非量化值的概率分布的信息包括对应于一些量化块组(“迷你直方图”)的概率的参数。
[0120]
在一些实施例中,在基于层次的(阶层式)解码方法的上下文中,经量化数据对应于残差数据。被配置成解码器的信号处理器在第一(较低)质量水平下解码信号的再现。解码器接着在第一质量水平下处理信号的再现以产生第二(较高)质量水平下信号的预备再现。解码器接着根据本文中的实施例解码所接收的经量化数据,且产生经解量化的重建数据。至少部分地基于所述经解量化的重建数据,解码器产生残差数据。解码器接着将所述残差数据与第二质量水平下信号的预备再现组合,从而产生第二质量水平下信号的再现。
[0121]
一些实施例包含一种被配置成产生值的集合(“经量化数据”)的信号处理器,所述经量化数据的集合对应于给定较高质量水平下信号的要素的集合与相同质量水平下的相应预测信号之间的差,所述方法包括在编码器内实施:接收较高质量水平下信号的再现;产生较低质量水平下信号的再现;产生较低质量水平下信号的预测再现;产生对应于较低质量水平下信号的再现与较低质量水平下信号的预测再现之间的差的残差数据的集合;至少部分地基于残差数据的集合,产生非量化重建数据的集合;根据本文中所描述的非限制性方法量化非量化重建数据的集合,从而产生经量化数据和相应解量化元数据;根据本文中所描述的非限制性解量化方法处理经量化数据的集合和相应解量化元数据,从而产生经解量化的重建数据;处理经解量化的重建数据,从而产生经解量化的残差数据;将经解量化的残差数据与较低质量水平下信号的预测再现组合,从而产生较低质量水平下信号的重建再现;处理较低质量水平下信号的重建再现以便产生较高质量水平下信号的预测再现;产生对应于较高质量水平下信号的再现与较高质量水平下信号的预测再现之间的差的残差数据的集合;至少部分地基于残差数据的集合,产生非量化重建数据的集合;根据本文中所描述的非限制性方法量化非量化重建数据的集合,从而产生经量化数据和相应解量化元数据。
[0122]
根据另一方面,解码器和编码器可以是不对称的。也就是说,解码过程可使用与相应编码过程不同的或经修改的参数。此适用于在编码方法中执行的解码操作和在解码方法中执行的解码操作。在实例中,在编码操作期间执行的量化操作可使用步宽公式,其中在解码操作期间执行的量化操作可修改或调制步宽公式。下文陈述不对称量化和解量化的多个另外的非限制性实例、方面和实施方案。
[0123]
根据本发明的另一方面,提供一种将输入视频编码为多个经编码流且解码所述多个经编码流中的至少一个的方法,其中所述编码包括使用第一参数集合来应用第一量化操作,且所述解码包括使用与第一量化操作不同的参数集合来不对称地应用第二解量化。解
码可在解码器处执行或作为编码方法的重建路径的一部分执行。
[0124]
根据本发明的另一方面,提供一种将输入视频编码为多个经编码流且解码所述多个经编码流中的至少一个的方法,其中所述编码包括应用第一量化操作且向解码过程传信多个参数,且所述解码包括接收所述多个参数且根据所接收的多个参数使用与第一量化操作不同的参数来应用第二解量化。
[0125]
根据本发明的另一方面,提供一种将输入视频编码为多个经编码流的方法,其中经编码流可组合以重建输入视频,所述方法包括:接收输入视频,其通常为完全分辨率输入视频;对输入视频进行下取样以创建经下取样视频;指示使用基础编码器编码经下取样视频以创建基础编码流;指示使用基础解码器解码基础编码流以生成经重建视频;将经重建视频与经下取样视频进行比较以创建第一残差集合;以及编码第一残差集合以创建第一层级编码流,包含:将变换应用于第一残差集合以创建第一系数集合;将量化操作应用于第一系数集合以创建经量化系数的第一集合;以及将编码操作应用于经量化系数的第一集合,其中应用量化操作包括:基于待量化的第一系数集合调适量化,包含改变用于第一系数集合中的不同系数的步宽,其中所述方法进一步包括传信修改参数,且其中从所述调适导出的第一参数集合传信到解码器以实现经量化系数的第一集合的解量化的修改,其中修改参数由解码器使用以修改第一参数集合使得所使用的解量化参数与所使用的量化参数不同。
[0126]
根据另一方面,可提供一种(用于)将经编码流解码为经重建输出视频的方法,所述方法包括:检索解量化修改参数;接收第一基础编码流;指示使用基础解码器对第一基础编码流的解码操作以生成第一输出视频;接收第一层级编码流;解码第一层级编码流以获得第一残差集合;以及将第一残差集合与第一输出视频组合以生成经重建视频,其中解码第一层级编码流包括:从第一层级编码流解码经量化系数的第一集合;获得指示如何解量化经量化系数的第一集合的第一参数集合;使用检索到的解量化修改参数修改第一参数集合;以及使用第一参数集合解量化经量化系数的第一集合,其中经量化系数的第一集合中的不同经量化系数使用相应解量化参数解量化,使得解量化与量化为不对称的。
附图说明
[0127]
图1展示编码过程的高级示意图;
[0128]
图2展示解码过程的高级示意图;
[0129]
图3展示编码过程和特定编码步骤的高级示意图;
[0130]
图4展示解码过程和特定解码步骤的高级示意图;
[0131]
图5展示编码过程的高级示意图;
[0132]
图6展示另一解码过程的高级示意图;
[0133]
图7展示本文中所描述的概念的流程图;
[0134]
图8a-8d展示根据特定实例可如何执行编码过程中的量化;
[0135]
图9展示实例残差分布;
[0136]
图10展示解量化修改符的生成和使用的实例;
[0137]
图11展示解量化偏移的实例;
[0138]
图12展示示出解量化偏移的实例的另一实例图,类似于图11;以及,
[0139]
图13展示根据实例方法提供数据处理的实例计算机系统的框图;
[0140]
图14是编码器的示意性图示;以及,
[0141]
图15是解码器的示意性图示。
具体实施方式
[0142]
本发明涉及方法。确切地说,本发明涉及编码和解码信号的方法。处理数据可包含但不限于获得、导出、输出、接收和重建数据。
[0143]
本文中所论述的译码技术为灵活、可调适、高效且运算上便宜的译码格式,其组合了视频译码格式、基础编解码器(例如,avc、hevc或任何其它当前或未来编解码器)与使用不同技术编码的增强层级的经译码数据。所述技术使用经下取样源信号,其使用基础编解码器编码以形成基础流。使用例如通过提高分辨率或通过提高帧率校正或增强基础流的残差的经编码集合来形成增强流。阶层式结构中可存在多个增强层级数据。在特定布置中,基础流可由硬件解码器解码,而增强流可适于软件实施方案。
[0144]
新译码技术中使用的任何优化根据增强流的特定要求或约束定制且具有低复杂性是至关重要的。此类要求或约束包含:由对于增强流的软件解码的需要产生的计算能力的可能降低;对于残差的经解码集合与经解码帧的组合的需要;残差数据的可能结构,即相对较高比例的零值与较大范围内的高度可变数据值;系数的输入量化块的细微差别;以及为分离成各种分量的离散残差帧的集合的增强流的结构。应注意,置于增强流上的约束意味着简单且快速的熵译码操作为基本的以使得增强流能够有效地校正或增强基础经解码视频的个别帧。应注意,在一些情境下,基础流在组合之前也基本上同时被解码,这对资源造成了压力。
[0145]
在一种情况下,本文中所描述的方法可应用于反映视频信号的不同颜色分量的所谓的数据平面。举例来说,本文中所描述的方法可应用于反映不同颜色通道的yuv或rgb数据的不同平面。可并行地处理不同颜色通道。因此,对如本文所描述的残差集合的参考可包括多个残差集合,其中每一颜色分量具有形成组合增强流的一部分的不同残差集合。每一流的分量可以任何逻辑次序比对,例如,相同层级处的每一平面可分组在一起且一起发送,或者,每一平面中的不同层级的残差集合可一起发送。
[0146]
此当前文献优选地满足以下iso/iec文献的要求:“寻求针对低复杂性视频译码增强的提议(call for proposals for low complexity video coding enhancements)”iso/iec jtcl/sc29/wg11 n17944,中国澳门,2018年10月,以及“针对低复杂性视频译码增强的要求(requirements for complexity video coding enhancements)”iso/iec jtc1/sc29/wg11 n18098,中国澳门,2018年10月(其以引用的方式并入本文中)。
[0147]
其中可应用当前所描述的技术的所提议编码方案的一般结构使用通过基础编解码器编码的经下取样源信号、将第一层级的校正数据添加到基础编解码器的经解码输出以生成经校正图片,且接着将另一增强层级数据添加到经校正图片的上取样型式。因此,所述流被视为基础流和增强流。此结构形成多个自由度,允许对许多情形具有极大的灵活性和适应性,从而使得译码格式适合于许多用例,包含过顶(over-the-top,ott)传输、实况流式传输、实况超高清(uhd)广播等。尽管基础编解码器的经解码输出并非意图用于检视,但其为较低分辨率下的完全经解码视频,从而使得输出与现有解码器兼容,并且在认为合适的情况下也可用作较低分辨率输出。在某些情况下,基础编解码器可用于创建基础流。基础编
解码器可包括以模块化或“黑匣子”方式控制的独立编解码器。本文描述的方法可借助于计算机程序代码实施,所述计算机程序代码由处理器执行且在硬件和/或软件实施的基础编解码器上进行函数调用。
[0148]
一般来说,如本文所使用的术语“残差”指代参考阵列或参考帧的值与数据的实际阵列或帧之间的差。所述阵列可以是表示译码单元的一维或二维阵列。举例来说,译码单元可以是对应于输入视频帧的类似大小的区域的2
×
2或4
×
4残差值集合。应注意,此一般化实例对于所执行编码操作和输入信号的性质为不可知的。对如本文中所使用的“残差数据”的提及指代从残差集合导出的数据,例如残差集合本身或对残差集合执行的一组数据处理操作的输出。在整个本说明书中,一般来说,残差集合包含多个残差或残差要素,每一残差或残差要素对应于信号要素,即信号或原始数据的要素。所述信号可以是图像或视频。在这些实例中,残差集合对应于视频的图像或帧,其中每一残差与信号的像素相关联,所述像素为信号要素。本文中所公开的实例描述可如何修改(即,处理)这些残差以影响编码管线或最终解码的图像,同时减小总体数据大小。可以每残差要素(或残差)的方式处理残差或集合,或以群组为基础例如以每拼片或每译码单元的方式来处理残差或集合,其中拼片或译码单元是残差集合的相邻子集。在一种情况下,拼片可包括较小译码单元的群组。应注意,可在每一视频帧上或在序列中仅设定数目的帧上执行处理。
[0149]
一般来说,每一增强流或两个增强流可使用网络抽象层单元(nalu)的集合囊封到一个或多个增强位流中。nalu意图囊封增强位流以便将增强应用于正确的基础重建帧。nalu可例如含有到nalu的参考索引,其含有增强必须应用于的基础解码器重建帧位流。以此方式,增强可同步到基础流,且每一位流的帧组合以产生经解码输出视频(即,增强层级的每一帧的残差与基础解码流的帧组合)。图片的群组可表示多个nalu。
[0150]
返回到上文所描述的初始过程,其中基础流连同增强流内的两个层级(或子层级)的增强一起提供,一般化编码过程的实例描绘于图1的框图中。处理输入的全分辨率视频100以生成各种编码流101、102、103。通过向基础编解码器(例如,avc、hevc或任何其它编解码器)馈送输入视频的下取样型式来产生第一编码流(经编码基础流)。经编码基础流可被称为基础层或基础层级。第二编码流(经编码层级1流)通过处理通过取经重建基础编解码器视频与输入视频的下取样型式之间的差而获得的残差来产生。第三编码流(经编码层级2流)通过处理通过取经重建的基础译码视频的经校正型式的上取样型式与输入视频之间的差而获得的残差来产生。在某些情况下,图1的组件可提供一般低复杂性编码器。在某些情况下,可通过形成低复杂性编码器的一部分的编码过程来生成增强流,且低复杂性编码器可被配置成控制独立的基础编码器和解码器(例如,封装为基础编解码器)。在其它情况下,基础编码器和解码器可供应为低复杂性编码器的一部分。在一种情况下,图1的低复杂性编码器可被视为用于基础编解码器的一种形式的封套,其中基础编解码器的功能性可对于实施低复杂性编码器的实体隐藏。
[0151]
由下取样组件105示出的下取样操作可应用于输入视频以产生待由基础编解码器的基础编码器113编码的经下取样视频。下取样可在竖直和水平方向两者上,或替代地仅在水平方向上进行。基础编码器113和基础解码器114可由基础编解码器实施(例如,作为共同编解码器的不同功能)。基础编解码器和/或基础编码器113与基础解码器114中的一个或多个可包括适当地配置的电子电路系统(例如,硬件编码器/解码器)和/或由处理器执行的计
算机程序代码。
[0152]
每一增强流编码过程可不必需包含上取样步骤。举例来说,在图1中,第一增强流在概念上为校正流,而第二增强流经上取样以提供增强层级。
[0153]
更详细地参见生成增强流的过程,为了生成经编码层级1流,由基础解码器114解码经编码基础流(即,解码操作应用于经编码基础流以生成经解码基础流)。解码可由基础编解码器的解码功能或模式执行。接着在层级1比较器110处创建经解码基础流与经下取样输入视频之间的差(即,减法运算应用于经下取样输入视频和经解码基础流以生成第一残差集合)。比较器110的输出可被称为第一残差集合,例如残差数据的表面或帧,其中在基础编码器113、基础解码器114和下取样块105的输出的分辨率下针对每一像元确定残差值。
[0154]
所述差接着由第一编码器115(即,层级1编码器)编码以生成经编码层级1流102(即,编码操作应用于第一残差集合以生成第一增强流)。
[0155]
如上所述,增强流可包括第一增强层级102和第二增强层级103。第一增强层级102可被视为经校正流,例如以比输入视频100低的分辨率向基础编码/解码视频信号提供校正层级的流。第二增强层级103可被视为将经校正流转换为原始输入视频100的另一增强层级,例如其将增强层级或校正应用于从经校正流重建的信号。
[0156]
在图1的实例中,通过对另一残差集合进行编码来创建第二增强层级103。所述另一残差集合由层级2比较器119生成。层级2比较器119确定例如上取样组件117的输出等经解码层级1流的上取样型式与输入视频100之间的差。通过将第一解码器(即,层级1解码器)应用于第一编码器115的输出来生成到上取样组件117的输入。此生成经解码的层级1残差集合。这些残差接着在求和组件120处与基础解码器114的输出组合。此有效地将层级1残差应用于基础解码器114的输出。其允许层级1编码和解码过程中的损失由层级2残差校正。求和组件120的输出可被视为表示对解码器处的经编码基础流101和经编码层级1流102应用层级1处理的输出的模拟信号。
[0157]
如所提到,将经上取样流与输入视频进行比较,这创建另一残差集合(即,差运算应用于经上取样的重新创建的流以生成另一残差集合)。所述另一残差集合接着由第二编码器121(即,层级2编码器)编码为经编码层级2增强流(即,编码操作接着应用于所述另一残差集合以生成另一经编码增强流)。
[0158]
因此,如图1中所示出和上文所描述,编码过程的输出为基础流101和一个或多个增强流102、103,其优选地包括第一增强层级和另一增强层级。三个流101、102和103可在具有或不具有例如控制标头等额外信息的情况下组合以生成用于表示输入视频100的视频编码框架结构的组合流。应注意,图1中展示的组件可对数据的块或译码单元进行操作,所述块或译码单元例如对应于在特定分辨率水平下的帧的2
×
2或4
×
4部分。所述组件在无任何块间相依性的情况下操作,因此其可并行地应用于帧内的多个块或译码单元。此不同于对比的视频编码方案,在对比的视频编码方案中,块之间存在相依性(例如空间相依性或时间相依性)。对比的视频编码方案的相依性限制并行水平且需要高得多的复杂性。
[0159]
在图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。
[0160]
按照低复杂性编码器,图2的低复杂性解码器可在视频信号的给定帧的不同块或译码单元上并行地操作。另外,可并行地执行由基础解码器210、第一解码器211和第二解码器214中的两个或更多个进行的解码。这是可能的,因为不存在块间相依性。
[0161]
在解码过程中,解码器可解析标头204(其可含有全局配置信息、图片或帧配置信息和数据块配置信息)且基于那些标头而配置低复杂性解码器。为了重新创建输入视频,低复杂性解码器可对基础流、第一增强流和另一或第二增强流中的每一个进行解码。所述流的帧可经同步且接着组合以导出经解码视频250。取决于低复杂性编码器和解码器的配置,经解码视频250可为原始输入视频100的有损或无损重建。在许多情况下,经解码视频250可为原始输入视频100的有损重建,其中所述损失对经解码视频250的感知具有减小的影响或最小影响。
[0162]
在图1和2中的每一个中,层级2和层级1编码操作可包含变换、量化和熵编码的步骤(例如,按所述次序)。类似地,在解码级处,可将残差传递通过熵解码器、解量化器和逆变换模块(例如,按所述次序)。可使用任何合适的编码和相应的解码操作。然而,优选地,层级2和层级1编码步骤可在软件中执行(例如,如由编码装置中的一个或多个中央或图形处理单元执行)。
[0163]
如本文中所描述的变换可使用定向分解变换,例如基于哈达玛的变换(hadamard-based transform)。这两者可包括应用于残差的展平译码单元(即,2
×
2或4
×
4残差块)的小内核或矩阵。关于变换的更多细节可例如查阅以引用的方式并入本文中的专利申请pct/ep2013/059847或pct/gb2017/052632。编码器可在待使用的不同变换之间选择,例如在待应用的内核的大小之间选择。
[0164]
所述变换可将残差信息变换到四个表面。举例来说,所述变换可产生以下分量:平均、竖直、水平和对角。如在本公开中较早提及,由变换输出的这些分量可在此些实施例中被采用为待根据所描述的方法量化的系数。
[0165]
概括地说,本文中的方法和设备基于总体方法,其经由现有编码和/或解码算法(例如mpeg标准,比如avc/h.264、hevc/h.265等;以及非标准算法,比如vp9、av1等)构建,用作相应地用于不同编码和/或解码方法的增强层的基线。实例的总体方法背后的概念为以阶层方式对视频帧进行编码/解码,与使用mpeg系列算法中所使用的基于块的方法形成对比。以阶层方式对帧进行编码包含针对全帧生成残差,且接着针对抽取帧生成残差,等等。
[0166]
全尺寸视频帧的视频压缩残差数据可被称为loq-2(例如,对于hd视频帧为1920
×
1080,或针对uhd帧为更高),而经抽取帧的视频压缩残差数据可被称为loq-x,其中x表示对
encoder)处理经编码输出。在某些情况下,当需要熵编码时,可使用这些方案中的仅一个。
[0171]
经编码基础流可被称为基础层级流。
[0172]
如早先所描述,通过将原始形式的图像信号与经重建形式的图像信号进行比较来计算残差。举例来说,在一种情况下,通过从原始形式的图像信号(例如,如图中所指示的输入视频)减去上取样的输出来确定l-2增强流的残差。到上取样的输入可被称为模拟解码之后信号的重建。在另一情况下,通过从经下取样形式的原始图像信号(例如,下取样的输出)减去由基础解码器输出的图像流来确定l-1增强流的残差。
[0173]
在图4的框图中描绘对应于图3的编码器的执行解码过程的解码器400。解码过程拆分成如由虚线所示的两个半部。虚线下方是解码器400的基础层级,其可有用地实施于硬件中。虚线上方是增强层级,其可有用地实施于软件中。解码器400可按需要包括仅增强层级过程,或基础层级过程与增强层级过程的组合。解码器400可有用地实施于软件中,尤其是在增强层级处,且可合适地优于传统解码技术,尤其是传统硬件技术。传统技术是指先前开发和销售的已经在市场中且不便更换和/或更换代价昂贵且仍可用于解码信号的目的的早期的技术。在其它情况下,基础层级可包括任何现有和/或将来视频编码工具或技术。
[0174]
一般水平下的解码器拓扑如下。解码器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。
[0175]
解码器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的经解码视频。
[0176]
如上所述,增强流可包括两个流,即,经编码层级1流(第一增强层级)和经编码层级2流(第二增强层级)。经编码层级1流提供校正数据的集合,其可与基础流的经解码型式组合以生成经校正图片。
[0177]
图5更详细地展示图1的编码器300。经编码基础流由基础编码器320e直接创建,且可根据需要经量化和熵编码。在某些情况下,这些后面的过程可作为基础编码器320e所进行的编码的一部分而执行。为了生成经编码层级1流,在编码器300处解码经编码基础流(即,在基础解码块320d处将解码操作应用于经编码基础流)。基础解码块320d展示为编码
器300的基础层级的一部分,且展示为与相应的基础编码块320e分离。举例来说,基础解码器320d可以是用基础编解码器补充基呈础编码器320e的形式的编码组件的解码组件。在其它实例中,基础解码块320d可实际上是增强层级的一部分,且确切地说可以是处理块300-1的一部分。
[0178]
返回到图5,创建从基础解码块320d输出的经解码基础流和下取样的输入视频之间的差(即,将减法运算310-s应用于下取样的输入视频和经解码基础流以生成第一残差集合)。此处,术语残差以与此项技术中已知的方式相同的方式使用;也就是说,残差表示参考信号或帧与所要信号或帧之间的误差或差。此处,参考信号或帧是经解码基础流,且所要信号或帧是下取样的输入视频。因此,第一增强层级中使用的残差可被视为校正信号,因为它们能够将将来经解码基础流

校正’为基础编码操作中使用的下取样的输入视频的较接近的近似值。这是有用的,因为这可校正基础编解码器的怪异模式(quirk)或其它特性。这些特性尤其包含由基础编解码器应用的运动补偿算法、由基础编解码器应用的量化和熵编码,以及由基础编解码器应用的块调整。
[0179]
在图5中更详细地展示图3中的块300-1的组件。确切地说,第一残差集合经变换、量化和熵编码以产生经编码层级1流。图5中,将变换操作310-1应用于第一残差集合;将量化操作320-1应用于经变换的残差集合以生成经量化残差集合;以及将熵编码操作330-1应用于经量化的残差集合以在第一增强层级处生成经编码层级1流。然而,应注意,在其它实例中,可执行仅量化步骤320-1,或仅变换步骤310-1。可不使用熵编码,或可任选地作为变换步骤110-1和量化步骤320-1中的一或两者的补充而使用熵编码。熵编码操作可以是任何合适类型的熵编码,例如霍夫曼编码操作或游程长度编码(rle)操作,或者霍夫曼编码操作和rle操作两者的组合。
[0180]
例如这些熵译码方案等熵译码方案的选择可与所描述的量化组合对译码性能产生有利的影响。这可鉴于将较高程度的量化应用于如本公开中所描述的残差数据以产生高比例的零值的倾向来理解。如上文所提及的游程长度编码尤其适合于具有此分布的数据的编码,且因此这些方法可协同地改进总体过程的效率。同样,对于其中以较大步宽值应用量化且经量化数据的分布使得存在相对较大数目的多个整数值的实施例,编码过程的效率将通常从尤其适合于此些分布的前缀/霍夫曼编码的使用获益。在其中较高整数值具有较低频率的残差的分布的情况下,尤其如此。这些形式的分布可有效地以霍夫曼编码来编码,霍夫曼编码通过将较少位分配到高频率符号来工作。以此方式,量化与熵编码操作为互补的。
[0181]
如上所述,增强流可包括经编码层级1流(第一增强层级)和经编码层级2流(第二增强层级)。第一增强层级可被视为实现基础层级处的经校正视频,也就是说,例如校正编码器和/或解码器假影。第二增强层级可被视为另一增强层级,其可用于将经校正视频转换为原始输入视频或与其接近的近似值(例如,添加细节或锐度)。举例来说,第二增强层级可添加下取样期间丢失的精细细节和/或帮助校正由变换操作310-1和量化操作320-1中的一个或多个引入的误差。
[0182]
参看图3和图5,为了生成经编码层级2流,在块300-2处通过产生和编码另一残差集合来创建另一增强层级信息。所述另一残差集合是经解码基础流(参考信号或帧)的经校正型式的上取样型式(经由上取样器305u)和输入信号30(所要信号或帧)之间的差。
[0183]
为了实现如将在解码器400处生成的经解码基础流的经校正型式的重建,使块
300-1的至少一些处理步骤逆向以模拟解码器200的过程,且考虑变换和量化过程的至少一些损失和怪异模式。为此,块300-1包括逆量化块320-1i和逆变换块310-li。经量化的第一残差集合在编码器100中的逆量化块320-1i处逆量化且在逆变换块310-1i处逆变换以重新生成第一残差集合的解码器侧型式。
[0184]
来自解码器320d的经解码基础流与第一残差集合的此改进的解码器侧型式组合(即,对经解码基础流和第一残差集合的解码器侧型式执行求和运算310-c)。求和运算310-c生成如很可能将在解码器处生成的输入视频的下取样型式的重建,-即,经重建基础编解码器视频)。如图3和图5中所示出,接着通过上取样器305u对经重建的基础编解码器视频进行上取样。
[0185]
接着将上取样信号(即,参考信号或帧)与输入信号30(即,所要信号或帧)进行比较以创建第二残差集合(即,将差运算300-s应用于经上取样的重新创建的流以生成另一残差集合)。接着在块300-2处处理第二残差集合以变为经编码层级2流(即,接着将编码操作应用于另一或第二残差集合以生成经编码的另一或第二增强流)。
[0186]
确切地说,变换第二残差集合(即,对另一残差集合执行变换操作310-2以生成另一经变换残差集合)。经变换残差接着以上文关于第一残差集合所描述的方式经量化和熵编码(即,将量化操作320-2应用于经变换残差集合以生成另一经量化残差集合;且将熵编码操作320-2应用于经量化的另一残差集合以生成含有另一层级的增强信息的经编码层级2流)。然而,可执行仅量化步骤20-1,或仅变换和量化步骤。可任选地作为补充使用熵编码。优选地,熵编码操作可以是霍夫曼编码操作或游程长度编码(rle)操作或这两者。
[0187]
因此,如图3和5中所示出和上文所描述,编码过程的输出是基础层级处的基础流,以及优选地包括第一增强层级和另一增强层级的增强层级处的一个或多个增强流。如参考先前实例所论述,图5的操作可并行地应用于帧的颜色分量的译码单元或块,因为不存在块间相依性。还可并行地执行对颜色分量集合内的每一颜色分量的编码(例如,使得根据(帧数目)*(颜色分量数目)*(每帧的译码单元数目)复制图5的操作)。还应注意,不同颜色分量可具有每帧不同数目个译码单元,例如可在人类视觉可检测到照度改变大于颜色改变时在比色度(例如,u或v)分量集合高的分辨率下处理亮度(例如,y)分量。
[0188]
在解码器400处接收经编码基础流和一个或多个增强流。图6更详细地展示图4的解码器。
[0189]
在基础解码器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对经重建的基础编解码器视频进行上取样。
[0190]
此外,且任选地并行地,在图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重建低的分辨率。
[0191]
因此,如上文所示出且描述,解码过程的输出是(任选的)基础重建,以及在较高层级处的原始信号重建。此实例尤其非常适合于在不同帧分辨率下创建经编码及经解码视频。举例来说,输入信号30可以是包括1920
×
1080分辨率下的帧的hd视频信号。在某些情况下,基础重建和层级2重建两者可由显示装置使用。举例来说,在网络业务的情况下,层级2流可比层级1流和基础流更多地被中断(因为其可含有至多4
×
数据量,其中下取样将每一方向上的维度减少2)。在此情况下,当业务发生时,显示装置可恢复显示基础重建,而层级2流被中断(例如,当层级2重建不可用时),且接着当网络条件改进时恢复显示层级2重建。当解码装置遭受资源约束时可应用类似方法,例如执行系统更新的机顶盒可具有操作基础解码器220以输出基础重建,但可不具有处理容量来计算层级2重建。
[0192]
编码布置还使得视频分布器能够将视频分布到一组异质装置;仅具有基础解码器220的那些装置检视基础重建,而具有增强层级的那些装置可检视较高质量层级2重建。在对比案例中,需要单独分辨率下的两个完整视频流来服务于两组装置。由于层级2和层级1增强流对残差数据进行编码,可更有效地对层级2和层级1增强流进行编码,例如残差数据的分布通常大部分质量都在0左右(即,不存在差)且通常采取约0的小范围值。量化之后的情况尤其如此。相比而言,不同分辨率下的完整视频流将具有非零均值或中值的不同分布,所述值需要较高位速率以供传输到解码器。
[0193]
在某些实例中,残差可被视为特定质量水平或分辨率下的误差或差。在所描述实例中,存在两个质量水平或分辨率且因此存在两个残差集合(l-1和l-2)。本文中所描述的每一残差集合对不同形式的误差或差建模。举例来说,l-1残差通常校正基础编码器的特性,例如校正作为编码过程的部分由基础编码器引入的假影。相比而言,举例来说,l-2残差通常校正由质量水平中的转变引入的复合效应和由l-1校正引入的差(例如,由l-1编码管线在例如4或16个像素的区域等更广空间尺度上生成的假影)。此意味着以下内容并非是显而易见的:对一个残差集合执行的操作必定会向另一残差集合提供相同的效应,例如每一残差集合可具有不同统计样式和相关集合。
[0194]
在本文中所描述的实例中,残差由编码管线进行编码。这可包含变换、量化和熵编码操作。其还可包含残差分级、加权和滤波。这些管线展示于图1以及3a和3b中。随后将残差传输到解码器,例如作为l-1和l-2增强流,所述增强流可与基础流组合作为混合流(或单独地传输)。在一种情况下,设定用于包括基础流和两个增强流的混合数据流的位速率,且接着基于正处理的数据将不同自适应位速率应用于个别流以满足设定的位速率(例如,以低假影水平所感知的高质量视频可通过自适应地将位速率指派给不同个别流(即使在逐帧层级处)而构造,以使得经约束数据可由感知上最有影响的个别流使用,所述个别流可随着图
像数据改变而改变)。
[0195]
如本文中所描述的残差集合可被视为稀疏数据,例如在许多情况下对于给定像素或区域不存在差,且所得残差值为零。当查看残差的分布时,将许多概率质量分配到接近零定位的小残差值,例如对于-2、-1、0、1、2等的某些视频值发生得最频繁。在某些情况下,残差值的分布关于0对称或近似对称。在某些测试视频案例中,发现残差值的分布关于0呈类似于对数或指数分布的形状(例如,对称地或近似对称地)。残差值的准确分布可取决于输入视频流的内容。
[0196]
残差可本身被视为二维图像,例如差的差量图像。以此方式,可以看到数据的稀疏性涉及在残差图像中可见的比如“点”、小“线”、“边缘”、“拐角”等特征。已发现这些特征通常不完全相关(例如,在空间上和/或在时间上)。所述特征具有不同于其来源于的图像数据的特性(例如,原始视频信号的像素特性)的特性。
[0197]
由于残差的特性不同于所述残差来源于的图像数据的特性,因此通常不可能应用标准编码方法,例如传统动态图片专家组(mpeg)编码和解码标准中发现的那些方法。举例来说,许多对比方案使用较大变换(例如,正常视频帧中的较大像素区域的变换)。归因于例如如上文所描述的残差的特性,对残差图像使用这些对比的大变换将是极低效的。举例来说,使用经设计用于正常图像的区域的大块对残差图像中的小点进行编码将是非常困难的。
[0198]
本文中所描述的某些实例通过代替地使用较小和简单的变换内核(例如,如本文中所呈现的2
×
2或4
×
4内核-定向分解和定向分解平方)来解决这些问题。可使用哈达玛矩阵(例如,用于展平2
×
2译码块的4
×
4矩阵,或用于展平4
×
4译码块的16
×
16矩阵)来应用本文中所描述的变换。这在与对比的视频编码方法不同的方向上移动。将这些新方法应用于残差块会生成压缩效率。举例来说,某些变换生成可有效地压缩的不相关系数(例如,在空间中)。虽然可例如针对残差图像中的线利用系数之间的相关,但这些相关可能导致编码复杂性,使得难以在传统和低资源装置上实施,且这些相关常常生成需要校正的其它复杂假影。通过将某些残差值设定为0(即,不转发这些残差值以供处理)来预处理残差可提供可控制且灵活的方式来管理位速率和流带宽,以及资源使用。
[0199]
为了完整起见,图7以流程图的形式示出本文中所描述的概念的广泛原理。方法1000包含:接收输入视频(步骤1001);对输入视频进行下取样以创建经下取样视频(步骤1002);指示使用基础编码器编码经下取样视频以创建基础编码流(步骤1003);指示使用基础解码器解码基础编码流以生成经重建视频(步骤1004);将经重建视频与经下取样视频进行比较以创建第一残差集合(步骤1005);以及编码第一残差集合以创建第一层级编码流,包含:将变换应用于第一残差集合以创建第一系数集合(步骤1006);将量化操作应用于第一系数集合以创建经量化系数的第一集合(步骤1007);以及将编码操作应用于经量化系数的第一集合(步骤1008),其中应用量化操作包括:基于待量化的第一系数集合调适所述量化,包含改变用于第一系数集合中的不同系数的步宽,其中从所述调适导出的第一参数集合传信到解码器以实现经量化系数的第一集合的解量化。
[0200]
图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仅为根据给定步宽的块组的量化的一个图示。
[0201]
图8b展示可如何实施所谓的“死区”(dz)。此可理解为量化器的零输出值附近的区,即,含有零信号且大小可与步宽相同或不同的带区。因此,对于接近零的输入的此带区,信号可有效地衰减,使得可通常对应于视觉数据中的噪声的低电平信号不会被不必要地分配数据。图8b中,将具有预定义范围内的值的残差或系数设定为0。图8b中,预定义范围是值0附近的范围。图8b中,将小于6且大于-6的值设定为0。死区可设定为固定范围(例如,-6到6)或可基于步宽来设定。在一种情况下,死区可设定为预定义多个步宽,例如设定为步宽值的线性函数。在图8b的实例中,将死区设定为2.4*步宽。因此,在步宽5的情况下,死区从-6延伸到+6。在其它情况中,死区可设定为步宽值的非线性函数。
[0202]
在一种情况下,死区基于动态步宽而设定,例如可以是自适应的。在此情况下,死区可随步宽改变而改变。举例来说,如果步宽更新为3而非5,则2.4*步宽的死区可从范围-6到+6改变为范围-3.6到3.6;或如果步宽更新为10,则死区可改变以从-12延伸到12。在一种情况下,步宽的乘数可介于2和4之间。在一种情况下,乘数还可为自适应的,例如基于例如可用位速率等操作条件。
[0203]
具有死区可帮助减少待经由网络传输的数据量,例如帮助减小位速率。当使用死区时,有效地忽略落到死区内的残差或系数值。此方法还可帮助移除低电平的残差噪声。具有自适应而非恒定的死区意味着,当步宽减小时(例如,如果较多带宽可用)不会过度地对较小残差或系数值进行滤波,且如果步宽增加则位速率合适地减小。死区仅需要在编码器处制定,解码器针对落在死区内的任何残差或系数简单地接收量化值0。
[0204]
图8c展示可如何应用称为块组折叠的方法。在图8c的实例中,连同死区一起使用块组折叠,但在其它情况下,块组折叠可在无死区的情况下使用和/或与其它量化方法一起使用。图8c中,块组折叠用以将驻留在选定量化块组上方的所有残差或系数值放置到选定块组中。举例来说,此可视为一种形式的限幅。
[0205]
图8c中,再次应用步宽5。还应用具有2.4*步宽的范围的死区,使得-6和6之间的值被设定为0。此还可视为沿循到较大第一量化块组(具有值0)中。接着针对正和负值限定具有宽度5的两个量化块组。举例来说,具有量化值1的块组限定在6和11之间(例如,具有步宽5),且具有量化值2的块组限定在11和16之间。在此实例中,为了进行块组折叠,具有将通常落在第二块组(例如,其具有大于16的值)上方的块组中的值的所有残差或系数“折叠”到第二块组中,例如被限幅以具有量化值2。可通过将大于阈值的所有值设定为最大块组值(例
如,2)来执行此操作。针对负值发生类似过程。此在图8c中由大箭头示出。
[0206]
块组折叠可以是编码器处的可选处理选项。其不需要在解码器处的解量化期间制定(例如,经“折叠”或“限幅”的值2经简单地解量化,如同其处于第二块组中那样)。可进行块组折叠以减少经由网络发送到解码器的位数目。块组折叠可基于网络条件和/或基础流处理来配置以便减小位速率。
[0207]
图8d展示在特定情况中可如何使用量化偏移。量化偏移可用于使量化块组的位置移位。图8d展示线,其指示沿着x轴残差或系数值范围的可能的现实世界计数。在此实例中,许多值接近零,其中随着从0移开,较高值的计数减少。如果计数值归一化,则所述线还可指示残差或系数值的概率分布。
[0208]
图8d的左手侧条柱和右手侧上的虚线示出对量化建模的直方图。为便于说明,展示死区之后的第一到第三块组的计数值(对于正值和负值两者,使后者条带化以示出条柱)。举例来说,条柱展示经量化值1、2、3和-1、-2、-3的计数。归因于量化,由直方图建模的分布不同于由线所示的实际分布。举例来说,展示误差e,其显示条柱不同于线的程度。
[0209]
为了改变误差e的性质,可应用量化偏移qo。量化偏移可理解为某一参数,其值限定是否以及在何种程度上量化间隔或块组将从预定或默认位置或值集合移位。对于正值,正量化偏移用以使每一块组向右移位,且负量化偏移用以使每一块组向左移位。量化偏移可与死区组合应用。在一种情况下,可基于第一阈值集合来应用死区,例如,小于(n*步宽)/2且大于(n*步宽*-1)/2的所有值被设定为0。
[0210]
在一些实例中,量化偏移可传信到解码器以供在解量化中使用。
[0211]
在一种情况下,在编码器处,可在基于步宽量化之前从残差或系数值减去量化偏移。因此,在解码器中,传信的偏移可加上所接收量化值以供基于步宽进行解量化。在某些情况下,可基于残差或系数的符号来调整偏移以允许关于0值的对称操作。在一种情况下,可通过将量化或解量化偏移值设定为0来停用偏移的使用。在一种情况下,可基于限定的死区宽度调整所应用的量化偏移。在一种情况下,可在解码器处例如依据从编码器接收的步宽和量化参数来计算死区宽度。
[0212]
在一种情况下,用于量化的步宽可针对2
×
2或4
×
4系数块内的不同系数变化。举例来说,较小步宽可指派到以实验方式确定为更大程度上影响经解码信号的感知的系数,例如在如上文所描述的2
×
2或4
×
4定向分解(dd-平方或“dds”)中,可向a、h、v和d系数指派较小步宽,稍后的系数被指派较大步宽。在此情况下,可限定设定默认步宽的base_stepwidth参数,且接着修改符可应用于此参数以计算modified_stepwidth以供在量化(和解量化)中使用,例如modified_stepwidth=base_stepwidth*修改符(其中“修改符”可基于块或单元内的特定系数来设定,且可从例如下文描述的变量“qm”等信令导出)。
[0213]
在某些情况下,修改符可另外或替代地取决于增强的层级。举例来说,对于层级1增强流来说,步宽可较小,因为其可影响较高质量水平下的多个经重建像素。
[0214]
在某些情况下,可基于块内的系数和增强的层级两者限定修改符。在一种情况下,可针对不同系数和不同增强层级以修改符的集合限定量化矩阵。此量化矩阵可经预设(例如,在编码器和/或解码器处),在编码器和解码器之间传信,和/或在编码器和/或解码器处动态地构建。举例来说,在后一情况下,可依据例如经由配置接口接收的参数等其它所存储和/或传信的参数在编码器和/或解码器处构建量化矩阵。
[0215]
在一种情况下,可限定不同量化模式,或限定待应用于给定系数集合的量化矩阵的不同方案。在一个模式中,共同量化矩阵可用于两个增强层级;在另一模式中,单独的矩阵可用于不同层级;在又一模式中,量化矩阵可用于仅一个增强层级,例如仅用于层级2。量化矩阵可由系数在块内的位置编索引(例如,对于2
×
2块,沿x方向0或1以及沿y方向0或1,或者对于4
×
4块为0到3)。
[0216]
在一种情况下,可以值的集合限定基础量化矩阵。可通过作为增强层级中的一个或多个的步宽的函数的缩放因子来修改此基础量化矩阵。在一种情况下,缩放因子可以是步宽变量的箝位函数。在解码器处,可针对层级2流和层级1流中的一个或多个从编码器接收步宽变量。
[0217]
借助于涉及上文所描述的原理的过程的一些其它实例,可通过进一步检视下文来理解配置和调适量化以便进一步改进编码和解码程序的有利的模式。可应用数据块单元增强有效负载语义,其涉及可借以传信和配置量化和解量化步骤的性质的若干参数。
[0218]
在一实例中,参数dequant_offset_signalled指定是否将在传信解量化时应用偏移参数的值。以此方式,可传信是否发送偏移。在此实例中,如果发送偏移,则其被使用。如果其不被发送,则可使用默认偏移,或可不使用偏移。
[0219]
在将输入视频编码为多个经编码流的方法的实例中,其中经编码流可组合以重建输入视频,所述方法可涉及接收输入视频,以及对输入视频进行下取样以创建经下取样视频。
[0220]
所述方法通常进一步包含指示使用基础编码器编码经下取样视频以创建基础编码流,所述基础编码流;指示使用基础解码器解码基础编码流以生成经重建视频;将经重建视频与经下取样视频进行比较以创建第一残差集合;以及编码第一残差集合以创建第一层级编码流。这优选地包含:将变换应用于残差集合以创建系数的集合;将量化操作应用于系数的集合以创建经量化系数的集合;以及将编码操作应用于经量化系数,其中使用量化矩阵执行量化操作,所述量化矩阵是根据量化矩阵模式参数的所获得值导出的。
[0221]
如早先在本公开中所描述,量化矩阵模式参数可有利地用于指定待用于编码过程中的量化矩阵。在一些实例中,当量化矩阵模式参数值等于预定值时,例如当其等于零0时,所述方法可涉及针对两个质量水平中的每一个使用默认量化矩阵。这些水平通常为或通常对应于层级1和层级2增强流。当量化矩阵模式参数值等于1时,可针对两个质量水平中的每一个使用第一量化矩阵,且第一量化矩阵可例如从编码器传信到解码器或经编码流将传输到的装置。当量化矩阵模式参数值等于2时,可针对质量水平2使用第二量化矩阵,且可传信第二量化矩阵。在此情况下,不针对质量水平1使用量化矩阵,或可针对此水平使用默认值。当量化矩阵模式参数值等于3时,第三量化矩阵优选地用于质量水平1或第一层级编码流,且传信第三量化矩阵。在此情况下,可不针对质量水平2使用量化矩阵,或可针对此水平使用默认值。当量化矩阵模式参数值等于4时,可针对第一层级编码流使用第四量化矩阵,且可针对第二层级编码流使用第五量化矩阵(例如,可使用两个矩阵),其中的每一个可彼此相等或不相等,以及等于或不等于前述第一到第三矩阵中的任一个。在此第五模式中,第四量化矩阵和第五量化矩阵可传信到解码器或经编码流将传输到的其它装置。
[0222]
在本公开中所描述的程序中,如上文提及,传递到此过程的每个变换系数群组通常属于特定平面和层。通常,它们已经使用线性量化器缩放,所述线性量化器在一些实例中
使用非居中解量化偏移。可应用针对变换系数的缩放过程如下。所述过程可获取块的位置信息,连同可借以指示块的性质(例如其大小)、量化操作的性质(例如步宽和偏移值)和其应用于的增强层级的参数集合。举例来说,可使用可用一对坐标值或例如指定当前亮度或色度变换块的左上样本相对于当前图片的左上亮度或色度样本的参数(xtbp,ytbp)指示的位置。此可与表示图像的数据的特定部分相关,且可例如与亮度平面或色度平面相关,这取决于变换系数所属的平面。
[0223]
指定当前变换块的大小的前述参数(在一些实例中,其可称为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。
[0224]
到过程的另一输入通常呈熵解码的经量化系数的阵列的形式。此可称为transcoeffq,且具有与上文提到的大小参数相关的大小,确切地说,具有尺寸(ntbs)x(ntbs),即阵列可包括如本文所描述的译码单元或块。此阵列可称为transcoeffq。步宽值可用称为stepwidth的参数指定。增强层级的索引可由某一参数指定,且在一些实例中可称为idxlevel。如果将使用解量化偏移,则此可用例如称为dquantoffset的参数指定。所述参数通常指定待应用的解量化偏移参数的值。此过程通常产生经解量化变换系数的阵列。此可例如呈含有要素d[x][y]的尺寸(ntbs)x(ntbs)的阵列的形式。
[0225]
可称为d[x][y]的输出阵列中的值通常基于例如如上文所描述的步宽和/或如应用于量化矩阵(其可被称为qm)的增强层级的索引和熵解码的经量化系数(其可称为相应要素的transcoeffq[xtbp][ytbp])中的任一个导出。此外,可另外借助于将偏移应用于前述运算的结果来导出输出阵列要素的值。举例来说,可称为appliedqffset的参数可加上所述值以产生输出要素值。
[0226]
因此,此可涉及以下关系以计算阵列的每一要素d:
[0227]
d[x][y]=(transcoeffq[xtbp][ytbp]*(stepwidth*qm[ytbp+(idxlevel*4)][xtbp]))+appliedoffset
[0228]
在作为可如何在解码器处执行解量化的一个实例的上述计算中,idxlevel可为0或1,分别表示层级2和1。在上述计算中,且如本文中的其它实例中所描述,基于特定系数和特定增强层级选择来自量化矩阵的值。
[0229]
相对于可在一些实例中应用的偏移,如以上关系中所展示,可称为appliedqffset的此参数通常导出如下。
[0230]
在某些情况下,可基于是否将应用残差滤波而有条件地应用appliedoffset。此滤波可在逆变换(例如,图6中的410-1)之后应用,且可以是解块滤波器。在这些情况下,可仅在应用残差滤波的情况下应用偏移。举例来说,如果指定是否应应用解块滤波器的可称为deblocking_signalled的参数具有特定值,例如等于1,则基于指定可称为dquantoffset的解量化偏移的前述参数计算所述偏移。
[0231]
appliedoffset还可从dquantoffset的单个值导出且适于应用于正和负系数值。
举例来说,appliedqffset可被配置成负值或正值,通常具有与解量化偏移参数相同的绝对值且分别具有正或负符号。此可在transcoeffq值具有小于零的值的情况下应用;否则,如果transcoeffq值大于零,则可向所应用偏移指派等于解量化偏移参数的值的值。如果transcoeffq值等于零,则也可向所应用偏移指派零值。
[0232]
因此,在某些实例中,可通过以下算法导出可相加以获得输出阵列要素的偏移(其中transcoeffq可以是通常大小为(ntbs)x(ntbs)的含有熵解码的经量化系数的阵列):
[0233]
如果deblocking_signalled等于1
[0234][0235]
举例来说,参数或参数集合可如上文所描述而传信且用于指定量化矩阵将如何应用于系数的集合。此参数可以是quant_matrix_mode参数,其指定根据下表1哪些量化矩阵待用于解码过程中。参数可为一个字节。quant_matrix_mode参数可用于配置如何导出量化矩阵(例如,如下文稍后描述)。
[0236]
表1-量化矩阵
[0237][0238]
可根据以下特定实例应用量化矩阵数据语义。导出可被称为qm[y][x]的量化矩阵。
[0239]
矩阵qm可具有尺寸k*m乘n。也就是说,矩阵可限定为对应于m乘n矩阵中所含的量化系数,且qm可含有呈例如k个增强层级中的每一个的量化系数的相应m乘n矩阵的形式的此数据。
[0240]
在当前实例中,涉及两个增强层级,即如本公开中所描述的层级1和2,且k等于2。如关于这些程序描述的最大变换为4
×
4,且因此m和n可各自等于4。
[0241]
在一些实例中,通过以对应于最大可用变换(其为如上文提及的这些实例中的4
×
4变换,因此包括16个系数)的m和n值限定qm,可通过从qm读取且在相应m乘n矩阵中应用系数的子集来执行其中采用较小变换的量化矩阵的应用。
[0242]
在特定实例中,如果量化矩阵模式参数的值等于零,即如果quant_matrix_mode等于0,则在量化操作中使用以下默认量化矩阵:
[0243]
qm[y][x]=
[0244]
{0.500 0.500 0.500 0.617}
[0245]
{0.862 0.610 1.064 0.781}
[0246]
{0.500 0.500 0.500 0.617}
[0247]
{3.125 1.851 1.851 1.316}
[0248]
{0.500 0.500 0.50 00.617}
[0249]
{0.862 0.610 1.064 0.781}
[0250]
{0.862 1.064 0.610 0.781}
[0251]
{3.125 1.851 1.851 1.316},
[0252]
其中y=0..3是待用于增强层级2的系数,且y=4..7是待用于增强层级1的系数;且
[0253]
如果量化矩阵模式参数的值等于1,则修改符的一个矩阵经传信,在两个增强层级上使用。在一些应用中可借助于迭代过程构建矩阵。因此,可逐行获得qm[x][y]值,借此对于每一行,所述行中具有某一值,且当处理行时填充矩阵的每一列。步宽修改符参数可在获得这些矩阵值的过程中使用,如下文所描述。在当前的实例中,待填充的行的数目可为8,列的数目等于4,如上文结合此特定实例中的矩阵尺寸所描述。确切地说,针对此实例的迭代过程可写成:
[0254]
for(y=0;y<8;y++)
[0255]
for(x=0;x<4;x++)
[0256]
qm[y][x]=step_width_modifier_2[x+y*4],
[0257]
其中在此实例中可称为step_width_modifier_2的步宽修改符参数是指定待在变换系数的不同层处应用的层级2增强16个系数的值的参数;且
[0258]
如果量化矩阵模式参数的值等于2,则修改符的一个矩阵经传信且在增强层级2上使用。同样,确切地说,可使用对应于上文描述的迭代程序的迭代程序:
[0259]
for(y=0;y<4;y++)
[0260]
for(x=0;x<4;x<4)
[0261]
qm[y][x]=step_width_modifier_2[x+y*4];且
[0262]
如果量化矩阵模式参数的值等于3,则修改符的一个矩阵经传信且在增强层级1上使用:
[0263]
for(y=0;y<4;y++)
[0264]
for(x=0;x<4;x<4)
[0265]
qm[y+4][x]=step_width_modifier_2[x+y*4];且
[0266]
如果量化矩阵模式参数的值等于4,则修改符的两个矩阵经传信,第一个用于增强层级2,第二个用于增强层级1:
[0267][0268]
其中step_width_modifier_1是指定待在变换系数的不同层处应用的层级1增强16个系数的值的参数。
[0269]
如上文所描述,矩阵中的d[x][y]的值可例如计算为矩阵中相关要素处的相应变换系数与列处的相应量化矩阵要素值的总和的乘积,所述列由指定当前变换块的大小的参数与levelidxswap参数的乘积识别,且在相应行中,步宽修改符参数值对应于所述要素,其中上文所描述的偏移通常也相加地应用于所述乘积。
[0270]
可根据以下有序的步骤来执行上文所描述的解量化过程。可调用按照前述实例的解量化过程,其中亮度位置(xtby,ytby)、设定成等于ntbs的变换大小(即,当前变换块的大小)、大小(ntbs)x(ntbs)的如上文所描述的阵列transcoeffq,和步宽参数作为输入。所述输出可因而为尺寸(ntbs)x(ntbs)的解量化系数(例如,解量化的经变换残差)的阵列,其在此实例中可称为dequantcoeff。
[0271]
现描述其中采用不对称量化的另外的实例方法。为简单起见,依据描述,所说明的实例通常采用视频序列的用例,即,由2d图像(在交错视频信号的情况下,通常称为“帧”或“字段”)的序列组成的基于时间的信号,其中每一要素(在此非限制性实例情况中,通常被称作“像素”)表征为合适的颜色空间(例如,yuv、rgb、hsv等)中的颜色设定的集合。不同颜色平面(例如,亮度-y平面和两个色度-u和v-平面)常常单独地编码,且常常以不同分辨率编码(归因于人类眼睛对色度信息的较低敏感度)。
[0272]
在其它情况下,信号表示为n维样本的序列,且实例参考以下事实:信号的完全表示为(n+1)维信号(例如,如果维度之一为时间,则此对应于表示具有单个时空再现的空间再现的序列)。这些将被认为是可使用本文中所描述的创新方法滤波和/或压缩的信号的可能种类的非限制性实例。对于除图像或视频外的信号,所属领域的技术人员可容易通过合适地调适针对图像和视频信号的用例描述的方法来应用本文中所描述的方法。在非限制性实例中,信号的时间样本还可以是具有除2以外的不同数目的维度的要素的超平面(例如,一维时间样本、三维时间样本等),和/或有可能应用于不同于对应于本文中针对时间维度描述的方法的时间方法的维度。
[0273]
信号的时间上的每个样本用超平面表示(或更简单地“平面”,在其最广含义上既定为“被组织为具有一个或多个维度的阵列的要素的集合”):举例来说,多通道声音信号、2d hd视频帧或3d体积医疗图像可全部用平面要素的阵列表示(确切地说,要素的1d平面用于多通道声音信号、要素的2d平面用于hd视频帧,且要素的三维超平面用于体积医疗图像)。
[0274]
沿着时间,样本在给定(本地)样本速率下发生。在常规方法中,样本速率始终恒定。相反,本文中说明的创新方法还允许可变样本速率。确切地说,对于低于最顶部水平的
质量水平,给定质量水平的时间样本的持续时间(即,所述给定质量水平的样本速率)可以是可变的,从而有效地表示可变样本速率。为了允许随具有不同持续时间的时间样本的合适的信号重放,时间样本中的每一个还表征为“图片编号”或“图片识别符”,从而表示应开始显示时间样本的时间。
[0275]
本文中说明的方法和实施例可彼此结合和/或与其它方法结合使用。本文中说明的许多优选实施例描述的技术和算法的目标是实现压缩,即,以最小数量的位编码和/或解码信号的合适的再现。这也是非限制性实例:其它实施例可实现不同目的,例如多尺度编码和解码、功能适度劣化和恢复、自适应流式传输、稳健和有效滤波、信号去噪(例如,图像去噪、视频去噪等)、信号增强(例如,信号超级取样、解交错等)、信号质量度量的生成、内容识别、机器视觉、信号加密(例如,安全通信)等。
[0276]
如上文提及,编码器处的量化和解码器处的解量化可不对称地执行。也就是说,本公开中提议的量化或解量化步骤可以不同方式或根据不同或经修改的参数执行。此些解决方案提供特定实用工具来改变重建数据中的细节且提供统计分布的特定区域中的更多细节。确切地说,此不对称性提供负责经重建数据集中的细节的信息的较精确量化(例如,其中经编码数据是残差数据,其与图像数据组合以重建图像,负责边缘处的细节的残差数据可更精确地解量化)。
[0277]
此不对称量化可具有例如本公开中早先描述的基于层次的译码方案中的特定实用工具。在某些实例中,可当重建经编码信息时在重建路径中的编码器侧和解码侧执行解码过程。在其它实例中,参数通过编码器过程传信到解码器过程以指示或促进解量化过程的不对称修改。在其中编码器以特定步宽量化的特定实例中,相应解码可利用此步宽且根据由解码器从编码器接收的所传信参数修改。
[0278]
如所提到,本公开中提议的量化或解量化步骤可以不同方式或根据不同或经修改的参数执行。确切地说,上文提议的解量化偏移或步宽修改符可仅在解码器处提供,使得编码期间不应用偏移和/或修改符。举例来说,步宽可在编码量化中使用且不根据上文公开内容中提供的实例修改。
[0279]
下文提供不对称量化的阐释和一组非限制性实例。
[0280]
在一实例中,不对称意味着编码器以stepwidth(swenc)量化,且解码器以稍微不同的步宽(swenc+swmodifier)解量化。swmodifier不是固定的,但根据非线性函数,至少部分地基于可传信的参数(或者部分地基于所述参数的默认值)而自适应地取决于swenc。步宽修改符的实例在附图中陈述。
[0281]
在此实例的特定实施方案中,每一定向步宽(根据自适应量化矩阵逻辑依据主步宽计算)变为不同修改符,且可依据任选的所传信参数调制公式。不对称解量化允许相对于桶中较接近拉普拉斯分布的中心(零)的系数的解量化统计上“下冲”,同时越朝向尾部桶,则朝向桶的中心乃至最尾部端发生越多的解量化。也就是说,死区和+/-1桶之间的转变的蚊式噪声风险较低,且负责较清晰/较高对比度边缘的残差的解量化较精确。
[0282]
编码器“调节”自适应swmodifier的旋钮的可能性允许编码器更精确地重建关键的残差。根据本文中提议的原理的编码器还具有传信另一实例模式的可能性。此此模式解量化步宽与编码对称,且使用由编码器传信的解量化偏移。然而,同样在此情况下,事情并非如此简单:解量化偏移可参考主步宽设定,且可基于从主步宽导出的每一定向步宽自适
应地调制。也就是说,量化矩阵中的每一步宽可获得不同偏移,且调制运作的方式遵循拉普拉斯分布的假设(即,残差分布的指数下降)。根据本文中提议的原理的实例编码器具有许多方式有利地运用此特征。举例来说,编码器可忽略此特征且使用默认量化矩阵和默认解量化偏移/swmodifier导出,或编码器可以稍许更智能,且在编码期间尝试不同的所传信解量化逻辑,最终挑选产生最佳度量的解量化逻辑(例如,mse,psnr的基础)。这是因为,量化可保持相同,且编码器可容易地尝试根据不同替代方案解量化。简单的二进制速查可快速收敛到所述帧的最佳模式和/或最佳传信参数。(即,相同速率下的简单失真优化,do)。
[0283]
如果编码器也开始运用量化矩阵,则在某些非限制性实例中可任选地使此些方法更加复杂。在这种情况下,编码器可基于残差的统计数据向解码过程传信量化矩阵。接着,还执行上文所提及的优化以便进一步改进重建的准确性。另一审慎考虑的替代方案是,代替于传信不同的解量化参数,编码器可调制量化步宽以便对于给定的默认解量化方法为最佳的。也就是说,在此实例中,编码器可用稍微不同的步宽编码若干次,且挑选优化速率和失真之间的折衷的步宽。在某些实施方案中提议,相比于良好平均默认值,自定义量化矩阵与自定义解量化参数的组合的值可以是增强压缩的大约5-10%或更多。
[0284]
进一步设想,在挑选待传信的最佳平均解量化参数之后,编码器可能想要改变远离其桶的解量化点的一些“不走运”系数的值。举例来说,如果实例编码器将以stepwidth=1,000、deadzone=2.4x stepwidth(即,deadzoneoffset=0.2x stepwidth)量化,且对于帧平均来说,桶10的良好解量化点为10%(即,10x步宽+deadzoneoffset+10%x步宽)且一个系数处于所述桶的98%,则编码器可能想要决定将所述系数逐步推进到桶11,使得其将较接近原始值而解量化。
[0285]
另一所提议的非限制性实例过程可使死区相对于系数stepwidth(即,死区(桶0)的宽度)为自适应的,且基于某一公式取决于stepwidth。有趣的是,不对称解量化与死区缠结,因为死区变为取决于(stepwidth+swmodifier)。
[0286]
相关过程的实例可由以下表述来概括:
[0287]
·
不对称解量化意味着解量化点可对于每一桶是不同的,其中最中心桶具有“保守”的解量化点,且最尾部桶具有逐渐远离中心的解量化点
[0288]
·
具有较大stepwidth的系数的解量化以与具有较小stepwidth的系数的解量化不同的方式发生。即,量化矩阵还对解量化修改符存在影响
[0289]
·
编码器可传信如何解量化(模式0或1)以及影响自适应公式
[0290]
·
其全部与量化矩阵紧密链接
[0291]
·
知晓将由解码器采用的解量化方法,编码器可通过利用较接近系数的原始值的解量化点将一些系数逐步推进到相邻桶中来进一步优化这些系数的重建。
[0292]
实例实施方案
[0293]
根据特定实例,经缩放的经变换系数可给定为d[x][y]且可根据下式确定:
[0294]
d[x][y]=(transformcoeffq[x][y]*((qm[x+(levelidxswap*ntbs)][y]+stepwidthmodifier[x][y])+appliedoffset[x][y])
[0295]
其中:
[0296]
transformcoeffq[x][y]表示系数的阵列;
[0297]
qm[x][y]表示量化参数或步宽的量化矩阵;
[0298]
stepwidthmodiffier[x][y]表示修改参数的阵列;以及,
[0299]
appliedoffset[x][y]为充当本文中其它地方描述的死区的阵列,也就是说,在某些传信的情境中,解量化偏移可用于改变死区或可为0。
[0300]
如果旗标传信不使用解量化偏移,则步宽修改符可以是步宽的函数,例如:
[0301]
step widthmodifier[x][y]=((((floor(-cconst*ln(qm[x+(levelidxswap*ntbs)][y])))+dconst)*(qm[x+(levelidxswap*ntbs)][y]2)))/32768)>>16
[0302]
如果旗标传信使用解量化偏移,则步宽修改符可基于偏移值的集合,例如:
[0303]
stepwidthmodifier[x][y]=(floor((dquantoffsetactual[x][y])*(qm[x+(levelidxswap*ntbs)][y]))/32768)
[0304]
其中偏移值是步宽(即,qm[x][y])的函数,例如:
[0305]
dquantoffsetactual[x][y]=((floor(-cconst*ln(qm[x+(levelidxswap*ntbs)][y])+(dquantoffset<<9)+floor(cconst*ln(stepwidth))))*(qm[x+(levelidxswap*ntbs)][y]))>>16
[0306]
解量化偏移
[0307]
本文中说明的方法和实施例还包含在基于层次的编码方法中合适地利用残差数据的可预测统计特征的方式。确切地说,在基于层次的阶层结构的上下文中,残差数据通过构造根据已知概率分布模式(例如,借助于非限制性实例,拉普拉斯分布、泊松分布等)分布:因此有可能快速识别关键参数所述概率分布并借助于相对有限的元数据集合向解码器指示。
[0308]
同时,本文中的非限制性实施例还包含基于原始符号的已知概率分布合适地调适量化和解量化操作的方式,以便同时改进压缩效率、重建质量和处理速度。本文中的非限制性实施例还包含通过利用默认公式导出每一系数群组的最佳解量化偏移应基于其量化步宽的相对量值如何变化来使信令开销最小化的方法。
[0309]
本文中的实施例相对于常规系统和方法偏离,从而提供新颖的方法来基于原始非量化值的概率分布的特性的合适且简洁的指示动态地调适量化和解量化操作。
[0310]
根据广义方面,公开一种用于快速评估原始非量化值的概率分布,基于所述分布生成合适的信令元数据,且基于所述元数据调适量化和解量化操作的方法。本公开还包含解码器侧方法以在不存在来自编码器的信令信息的情况下也改进解量化偏移的统计性质。
[0311]
所述概念在基于层次的编码方法的上下文中特别有价值且有效,因为基于层次的阶层结构产生为使得隐式地限定残差值的概率分布的类型,这继而允许以相对少且可快速识别的参数表征每一特定概率分布,并且呈现解量化偏移的若干性质(例如,其与量化步宽的量值的关系)。根据本文中所描述的非限制性实施例,本文中所描述的新颖的解量化方法在基于层次的编码方法的编码和解码阶层内的环路中使用。
[0312]
为简单起见,本文中说明的非限制性实施例将信号称为样本(即,二维图像、视频帧、视频字段、声音帧等)的序列。在描述中,术语“图像”、“图片”或“平面”(既定具有“超平面”的最广含义,即,具有任何数目的维度和给定取样栅格的要素的阵列)将常常用于识别沿着样本序列的信号的样本的数字再现,其中每一平面具有其维度(例如,x和y)中的每一个的给定分辨率,且包括平面要素(或常常称为“像素”的二维图像、常常称为“体元”的体积图像等的“要素”或“像素”或显示要素)的集合,其表征为一个或多个“值”或“设定”(例如,
借助于非限制性实例,合适的颜色空间中的颜色设定、指示密度水平的设定、指示温度水平的设定、指示音频变调的设定、指示振幅的设定等)。每一平面要素由合适的坐标集合识别,所述坐标指示图像的取样栅格中所述要素的整数位置。信号维度可包含仅空间维度(例如,在图像的情况下)或还包含时间维度(例如,在随时间演进的信号的情况下)。
[0313]
作为非限制性实例,信号可以是图像、音频信号、多通道音频信号、遥测信号、视频信号、多视图视频信号(例如,3d视频)、体积信号(例如,医学成像、科学成像、全息成像等)、体积视频信号,乃至具有多于四个维度的信号。
[0314]
为简单起见,本文中说明的非限制性实施例常常参考显示为设定的2d平面(例如,合适的颜色空间中的2d图像)的信号,例如视频信号。术语“帧”或“字段”将与术语“图像”可互换地使用,以便指示视频信号的时间上的样本:针对由帧组成的视频信号(渐进视频信号)说明的任何概念和方法还可容易地适用于由字段组成的视频信号(交错视频信号),且反之亦然。尽管本文中说明的实施例聚焦于图像和视频信号,但所属领域的技术人员可容易理解,相同概念和方法还适用于任何其它类型的多维信号(例如,音频信号、体积信号、立体视频信号、3dof/6dof视频信号、全光信号等)。
[0315]
根据本文中描述的非限制性实施例,信号处理器(例如,计算机处理器硬件)被配置成接收待量化的数据和待用于量化所述数据的相应参考量化步宽。至少部分地基于量化步宽,信号处理器识别对应于量化值零(“dead zone”)的非量化值的范围。在一些非限制性实施例中,编码器基于编码器和解码器两者已知的公式依据参考步宽计算deadzone,这允许改变dead zone量化块组的相对大小而不需要任何信令开销。在非限制性实施例中,dead zone被计算为量化步宽的倍数(即,deadzone=dzmultiplier*stepwidth),其中deadzone乘数dzmultiplier被计算为stepwidth的线性函数(即,dzmultiplier=a*stepwidth+b,其中a和b是编码器和解码器两者已知的合适的常数)。在其它非限制性实施例中,dzmultiplier之间的关系为非线性的。在一些非限制性实施例中,dzmultiplier用定点整数数字表示,以免使用硬件特定的浮点计算。
[0316]
根据本文中所描述的非限制性实施例,编码器至少部分地基于对待量化的数据计算的度量识别解量化偏移值δ以添加到每一非量化值范围(“量化块组”)的最中心极限以便获得对应于qi的解量化值经量化符号q的解量化由编码器(用于模拟解码)和解码器两者执行如下。
[0317]
如果经量化符号qi为正:
[0318]ri
=qi·
(stepwidth
·
quantizationmatrix)+(δ-deadzone)
[0319]
如果实际上符号qi为负:
[0320]ri
=qi·
(stepwidth
·
quantizationmatrix)-(δ-deadzone)
[0321]
在一些非限制性实施例中,解码器通过分析信号编码字节流产生解量化偏移值δ。如果对应于解量化偏移的信令位被设定为1,则解码器处理字节流中的随后字节以便产生参考解量化偏移。
[0322]
根据第三非限制性实施例,对于多个经编码数据集合(例如,经编码的经变换系数的群组),编码器向解码器传信对应于参考量化stepwidth的单个参数,且解码器利用量化矩阵来处理对应于参考stepwidth的参数且针对经变换系数的群组中的每一个导出相异量化stepwidth。为了限制待在字节流中作为元数据传输的解量化偏移的数目,编码器和解码
器两者从既定为对应于数据层的所传信参考stepwidth的偏移的单个参考解量化偏移值δ自动导出经编码系数群组中的每一个的特定解量化偏移值δi,所述偏移值δi至少部分取决于所传信的解量化偏移δ和系数集合i的量化stepwidthi。
[0323]
在非限制性实施例中,编码器和解码器借助于假定如下关系计算从参考stepwidth导出的所有量化stepwidth的偏移:
[0324]
dequantization_offsetk=f(step widthk)
[0325]
及因此:
[0326]
actual_dequantization_offseti=
[0327]
=reference_dequantization_offfset+f(step widthi)-f(reference_step width)
[0328]
在一些非限制性实施例中,f(stepwidth)为对数关系。
[0329]
在其它非限制性实施例中,编码器借助于rdo(“速率失真优化”)算法导出参考解量化偏移值δ的值。借助于非限制性实例,在一实施例中,编码器通过使用合适的度量(例如,借助于非限制性实例,mse、mae、psnr)对待量化的数据执行对分搜索优化算法以确定通过以给定解量化偏移值δ解量化产生的再现的保真度,来计算参考解量化偏移值δ。在非限制性实施例中,信号处理器选择使原始非量化值和解量化值之间的均方误差最小化的值。在其它非限制性实施例中,编码器仅考虑对应于信号的已经根据合适的优先级映射识别为具有相对高优先级的区域的残差执行所述优化。
[0330]
在其它非限制性实施例中,编码器选择解量化偏移,且检测有可能远离相应量化桶的解量化点量化的系数值。相应地,编码器向所述系数指派相邻量化桶的经量化符号,以便减小系数的非量化值和指派到系数的经量化符号的解量化值之间的差的度量。在非限制性实施例中,编码器检测关于边缘的至少一个系数,且向其指派不同经量化符号,以便增强边缘转变。
[0331]
在其它非限制性实施例中,编码器在两个步骤中执行量化:利用相对大步宽和相对小死区的第一遍量化,目的是将相邻残差值分组为丛集;随后,利用相对小目标量化步宽的实际量化,检测系数群组的参考解量化偏移。
[0332]
根据另外的非限制性实施例,解码器被配置成随着量化桶从残差分布的中心(零符号/死区)移动到分布的两个尾部而生成逐渐变大的解量化偏移。在一些非限制性实施例中,解码器针对每一量化stepwidthi产生取决于stepwidthi的stepwidth_modifieri值。解码器接着产生decoding_step widthi=(step widthi+step width_modifieri)。接着使用decoding_stepwidthi代替stepwidthx以便执行解量化。
[0333]
在一些非限制性实施例中,编码器将解量化偏移值δ传信为经编码位流内的编码元数据。在一实施例中,解码器借助于字节流中的给定信令位检测是否针对经量化系数的给定分组传信解量化偏移:如果所述位被设定为1,则随后字节含有对应于参考解量化偏移的量值的信息。在其它非限制性实施例中,当不传信解量化偏移时,解码器继续计算经变换系数的每一群组的stepwidth_modifier。在其它非限制性实施例中,基于第二信令位,解码器处理字节流以产生参考解量化偏移,且同时产生待添加到stepwidth的一个或多个stepwidth_modifier以便渐进地增加解量化偏移。stepwidth_modifier可用于避免例如蚊式噪声等假影。
[0334]
在一些非限制性实施例中,借助于定点整数数字执行处理操作和中间变量,从而避免执行依赖于浮点数的处理操作。
[0335]
根据一些另外的非限制性实施例,基于识别非量化值的概率分布的参数产生每一量化块组的偏移值δi。在非限制性实施例中,假定至少部分地基于元数据识别的拉普拉斯(即,双指数)概率分布计算偏移值。在其它非限制性实施例中,偏移值直接从元数据解码。在非限制性实施例中,偏移值δ对于除围绕零值居中的块组外的所有块组相同;所述偏移值δ针对对应于正非量化值的块组添加到量化块组的最中心边缘(因此相对于块组范围的平均值减小解量化值的量值),且针对对应于负非量化值的块组减到块组的平均值(因此再次相对于块组范围的平均值减小解量化值的绝对值)。
[0336]
在本文中所描述的其它非限制性实施例中,信号处理器被配置成实施随机解量化过程(“统计抖动”或“统计解量化”),从而针对属于同一量化块组i的解量化值再现类似于量化到所述块组中的原非始量化值的概率分布的概率分布。信号处理器接收指示原始非量化值的概率分布的元数据。至少部分地基于所述概率分布的参数,基于每一块组的最小和最大值,以及基于随机生成的值,信号处理器针对每一量化值qi产生解量化值在此些实施例中,同一量化值qi的多次出现可解量化为多个不同解量化值在非限制性实施例中,指示原始非量化值的概率分布的元数据中的参数假定为拉普拉斯分布的参数。
[0337]
在本文中所描述的其它非限制性实施例中,信号处理器处理对应于经量化数据的所接收元数据且产生指示量化块组的大小的参数stepwidthi和对应于原始非量化数据的概率分布的信息。至少部分地基于所述参数和所述信息,信号处理器产生待用于解量化所接收经量化数据的所有量化块组的范围。在非限制性实施例中,量化块组的大小为非均一的。在其它非限制性实施例中,量化块组的大小为非均一的,且至少部分地基于信号处理器已知的查找表获得。在其它非限制性实施例中,解量化遵循dead zone加均一步宽(dz+usw)方案,其中dz和usw两者是参数stepwidthi的函数。在非限制性实施例中,解量化偏移也是参数stepwidth的函数,且被计算为f(stepwidth)。
[0338]
根据本文中所描述的其它非限制性实施例,信号处理器基于所接收元数据预先计算参数集合,且将所述参数存储在查找表中,以便加速经量化数据的解量化过程。
[0339]
根据本文中所描述的一些非限制性实施例,对应于原始非量化值的概率分布的信息包括对应于拉普拉斯分布的分集参数(“b”)的参数。在其它非限制性实施例中,对应于原始非量化值的概率分布的信息包括对应于一些量化块组(“迷你直方图”)的概率的参数。
[0340]
图9示出分布和量化块组。可以看到,最佳解量化点不在量化桶的中间,也不在量化桶的最中心极限处。在残差的类似拉普拉斯分布的假设中,解量化偏移应针对每个量化桶大体上相同。最佳平均解量化偏移随步宽变化。较小步宽需要相对较大的偏移。较大步宽需要小偏移。不同经变换系数群组归因于量化矩阵以不同步宽编码。如此,如果偏移针对一方向在统计上是精确的,则其可能针对另一方向是不正确的。本文中所描述的非限制性实施例基于定向step-width修改偏移。本文中所描述的其它非限制性实施例相对于用于编码的量化步宽扩展解码量化步宽,以便渐进地增加解量化偏移。
[0341]
图10示意性地示出量化和解量化过程,如本公开中其它地方所描述。
[0342]
下文陈述可如何执行量化和解量化过程的特定实施方案。如果解量化偏移不由编码器在信令中指定(默认),则解码器保守地运作,且
[0343]
1.假定可能的残差分布(即,具有相对小的最佳解码偏移)
[0344]
2.以相比于用于编码的stepwidth扩展解码stepwidth的形式渐进地应用解码偏移。此生成逐渐增加的《《有效解量化偏移》》,对于量化桶1来说极小且对于残差分布的尾部处的桶来说逐渐变大。
[0345]
在实例非限制性实施例中,利用以下公式计算给定经变换系数stepwidth i的目标《《最尾部桶》》解量化偏移,其假定具有β=500的残差的拉普拉斯分布:
[0346]
tailmost_dequant_offseti=-0.14
·
ln(stepwidthi)+1.22
[0347]
stepwidth修改符接着计算如下:
[0348][0349][0350]
且最后:
[0351]
decoding_stepwidthi=stepwidthi+stepwidth_modifieri[0352]
可从此公式导出stepwidth修改符的公式:
[0353]
stepwidthi
·
tailmost_dequant_offseti=stepwidth_modifieri
·
max_num_buckets
[0354]
应注意,这些公式与上文描述的实例实施方案一致。
[0355]
在其它非限制性实施例中,如果待用于解量化中的解量化偏移由编码器在信令中指定(例如,借助于双态切换信令位)且高于零,则其由解码器在指定loq目标步宽(《《参考解量化偏移》》)处应用于解量化
[0356]
如果应用量化矩阵,则根据公式修改每一方向的解量化偏移(其将以不同步宽解码),类似于以下非限制性实例中的一个:
[0357]
actual_dequant_offseti[0358]
=-0.14
·
ln(stepwidthi)+reference_dequant-iffset+0.14
[0359]
·
ln(loq_target_stepwidth)
[0360][0361]
图11和12示出假定各个《《b》》(β)参数水平下完美的拉普拉斯分布的非限制性实例值。所述值取300-2,000范围内的β。
[0362]
在另一非限制性实例中,提议一种模式,其类似于默认操作,但目标《《tailmost_bucket》》解量化偏移计算如下:
[0363]
[0364]
在此非限制性实例中,stepwidth修改符接着计算如下:
[0365][0366][0367]
且最后:
[0368][0369]
再次,应注意,在一实例中,stepwidth修改符的公式可从此公式导出:
[0370][0371]
图13展示用于实施如本文所描述的过程的系统的框图。
[0372]
另外的实施方案
[0373]
在如本文所描述的某些实施例中,在实例实施方案中,应注意,为了进行无损压缩,可实施以下过程:
[0374]
其中,如果stepwidth》16,则导出deadzonewidthoffset如下:
[0375]
deadzonewidthoffset[x][y]=(((1<<16)-((aconst*(qm[x+(levelidxswap*ntbs)][y]+stepwidthmodifier [x][y]))+bconst)>>1)*(qm[x+(levelidxswap*ntbs)][y]+step widthmodifier[x][y]))>>16
[0376]
其中,如果stepwidth<=16,则导出deadzonewidthoffset如下:
[0377]
deadzone widthoffset[x][y]=step width>>1
[0378]
也就是说,在步宽小于16的情况下,deadzonewidthoffset不取决于参数的矩阵。
[0379]
另外的实例实施方案
[0380]
下文的附录提供体现本文中其它地方描述的原理的实例非限制性实施方案。此实例可用于提供所描述的特征的上下文。
[0381]
另外的实例编码器和解码器
[0382]
图25和26分别展示图1、3a和3b的编码器架构以及图2、5a和5b的解码器架构的变型。
[0383]
在图14中展示用以创建位流的编码过程2500。首先,输入序列2502馈送到第一下取样器2504,接着是第二下取样器2506(即,图中称为向下缩放器的连续下取样器)且根据所挑选的缩放模式处理。图14的变型不同于先前实例的变型之处在于,存在基础层之前的额外下取样和上取样级,例如在将数据传递到基础编码器2512之前展示为第二向下缩放器2506的额外下取样级是可能的,且在从基础层接收经解码数据之后,额外上取样级(展示为图14中的第一向上缩放器2508)是可能的。在某些实例中,给定缩放模式可用于接通和断开每一级处的向下缩放器和向上缩放器对。在一种情况下,缩放模式可指示缩放方向,例如按照本文中所描述的仅水平下取样/上取样。如果第二向下缩放器2506和第一向上缩放器2508断开,则空间缩放类似于图1、3a和3b的空间缩放。
[0384]
图14中,按照先前实例,使用基础编解码器,其根据其自身的规范产生基础位流2516。此经编码基础可被包含作为当前视频译码框架结构的组合位流的一部分。
[0385]
在具有或不具有额外向上缩放的情况下,在第一减法组件2520处从一阶向下缩放的输入序列减去例如基础编码帧的经解码型式等经重建基础图片以便生成子层1残差(如本文描述的层级1残差数据)。这些残差形成第一增强层的编码过程的开始点。如本文所描述的变换组件2521、量化组件2523和熵编码组件2524(以及其它)处理第一(层级1)残差集合以生成(层级1)经熵编码的经量化变换系数2526。
[0386]
在图14中,按照先前实例,来自子层1的经熵编码的经量化变换系数由环路内解码器处理,所述环路内解码器执行逆操作或解码操作。这些操作模拟原本将在解码器处执行的第一残差集合的解码过程。在图14的实例中,这些包括熵解码组件2525、逆量化组件2527、逆变换组件2528和层级1滤波器2530。这些可类似于先前描述的组件。经处理或“经解码”的第一残差集合在求和组件2532处添加到从基础编码器的输出导出(例如,经解码且任选地向上缩放)的数据以生成经重建帧。图14中,经重建帧由第二向上缩放器2534处理。向上缩放器的使用可再次取决于所挑选的缩放模式。最后,在第二减法组件2536处通过输入序列和向上缩放重建的减法来计算第二子层2(其还可称为l2层)的残差。这些形成第二(层级2)残差集合,且这些残差还由一组译码组件或工具处理,所述译码组件或工具包含变换组件2541、时间预测组件2542、量化组件2543和熵编码组件2544。输出为层级2系数层2546的集合。如其它实例中所描述,如果激活时间模式,则可由时间预测组件2542在变换系数上应用额外时间预测以便移除某些时间上冗余的信息且减少层级2残差流的能量(例如,值的数目和非零残差值的数目)。子层2以及指定以块为基础使用时间预测的时间层2556的经熵编码的经量化变换系数包含在增强位流中。时间层2556可包括参考先前实例描述的时间信令。其可由熵编码组件2557进行熵编码。熵编码组件2557可应用至少游程长度编码,如参考实例所论述。
[0387]
编码器2500可配置有编码器配置信息2565的集合,例如如参考图14a到14c的实例所描述。此信息可作为输出位流的标头2566的集合传输到解码器。图14中,编码器的组合位流可包括标头2566、时间层2556、层级2(l2)编码系数2546、层级1(l1)编码系数2526和经编码基础流2516。
[0388]
图15展示根据一实例的解码器2600的变型。解码器可包括本文中其它图中的任一个中展示的解码器的变型。图15的解码器可连同图14的编码器一起使用。
[0389]
首先,为了创建帧的输出序列,解码器2600分析位流。如图15中可以看出,过程可再次划分成三个部分。
[0390]
为了生成经解码基础图片(例如,层0处),向基础解码器2618馈送所提取基础位流2616。根据所挑选的缩放模式,此经重建图片可由额外第一向上缩放器2608在求和组件2630之前向上缩放,所述求和组件将第一(层级1)残差集合相加。从第一向上缩放器2608到求和组件2630的输入可被称为预备中间图片。
[0391]
在基础层解码之后(或与之并行),需要解码增强层位流(包含两个残差子层)。首先,使用编码过程期间使用的译码组件或工具的逆型式解码属于子层1(l1)的系数2626。因此,层级1系数层2626依次由熵解码组件2671、逆量化组件2672和逆变换组件2673处理。此外,可能应用子层1(l1)滤波器2632以便使变换块(即,译码单元)的边界平滑。子层1(l1)解
码过程的输出可被称为增强子层1输出。此增强子层1输出在第一(较低)求和组件2630处添加到预备中间图片,从而产生组合中间图片。再次,取决于缩放模式,可应用第二向上缩放器2687,且产生所得预备输出图片。预备输出图片提供到第二上部求和组件2658。其具有与总体输出图片相同的尺寸。
[0392]
作为最终步骤,解码第二增强子层2的经编码系数2646。再次,此使用如本文的其它实例中所描述的一组逆译码组件或工具。图15中,这些组件包含熵解码组件2681、逆量化组件2682和逆变换组件2683。如果激活时间模式,则时间预测组件2685可应用时间预测。可在第二增强子层2内的任一点处应用时间预测。在一种情况下,其应用于经量化变换系数。可基于作为时间层2656接收的信令来应用时间预测。图15中,时间层2656由熵解码组件2690解码(例如,可经游程长度解码)。时间预测的输出作为增强子层2输出提供到第二上部求和组件2658中。其接着由所述求和组件2658添加到预备输出图片以形成组合输出图片2660作为解码过程的最终输出。
[0393]
再次,可根据在位流的标头2666内传输的解码器配置2692来控制解码过程。
[0394]
如参考以上实例所描述,不同于对比的可缩放编解码器,本文中所描述的新方法可对于用于编码下层的编解码器完全不可知。这是因为可在没有关于下层的任何信息的情况下解码上层。如图15中所展示,解码器接收由编码器生成的多个流。这些可以是大约五个流,其包含:通过向基础编解码器(例如,avc、hevc或任何其它编解码器)馈送输入视频的下取样型式而产生的第一编码流(经编码基础);通过处理借助于取经重建基础编解码器视频和输入视频的下取样型式之间的差获得的残差(层级1残差)而产生的第二编码流(层级1系数层);通过处理借助于取经重建基础译码视频的经校正型式的上取样型式和输入视频之间的差获得的残差(层级2残差)而产生的第三编码流(层级2系数层);由时间处理产生以指示解码器的第四经编码流(例如,呈时间层的形式);以及经产生用于配置解码器的第五流(标头)。通过基础解码器实施对应于由编码器中使用的基础编解码器实施的编码算法的解码算法来解码经编码基础流,且此解码的输出为经解码基础。单独地且独立地,解码层级1系数群组以便获得层级1残差数据。此外,单独地且独立地,解码层级2系数群组以便获得层级2残差数据。接着组合经解码基础、层级1残差数据和层级2残差数据。确切地说,经解码基础与层级1残差数据组合以生成中间图片。可接着对中间图片进行上取样且进一步与层级2残差数据组合。
[0395]
此外,新方法使用编码和解码过程,所述编码和解码过程处理图片而不使用任何块间预测。实际上,其通过变换像元的n
×
n块(例如,2
×
2或4
×
4)且彼此独立地处理所述块来处理图片。这实现有效处理以及不依赖于相邻块,因此允许图片的处理并行化。
[0396]
概括来说,参考图15,展示了展示了非限制性示例性实施例。图15中,描绘了示例性解码模块2600。解码模块2600接收多个输入位流,包括经编码基础2616、层级1系数群组2626、层级2系数群组2646、时间系数群组2656和标头2666。
[0397]
一般来说,解码模块2600处理两层数据。第一层,即基础层,包括包含经编码基础的所接收数据流2616。经编码基础2616接着发送到基础解码模块2618,其解码经编码基础2616以产生经解码基础图片。基础解码可以是解码器实施任何现有的基础编解码器算法,例如avc、hevc、av1、vvc、evc、vc-6、vp9等,这取决于经编码基础的编码格式。
[0398]
第二层,即增强层,进一步由两个增强子层组成。解码模块接收第一系数群组,即
层级1系数群组2626,其接着传递到熵解码模块2671以生成经解码系数群组。这些接着传递到逆量化模块2672,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。这些接着传递到逆变换模块2673,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层1处的残差(层级1残差)。残差可接着由平滑滤波器2632滤波。层级1残差(即,经解码的第一增强子层)应用于基础图片的经处理输出。
[0399]
解码模块接收第二系数群组,即层级2系数群组2646,其接着传递到熵解码模块2681以生成经解码系数群组。这些接着传递到逆量化模块2682,所述逆量化模块使用一个或多个解量化参数以生成解量化系数群组。用于增强子层2的解量化参数可不同于用于增强子层1的解量化参数。解量化系数群组接着传递到逆变换模块2683,所述逆变换模块对解量化系数群组执行逆变换以生成增强子层2处的残差(层级2残差)。
[0400]
实施方案
[0401]
在例如实施于流式传输服务器或客户端装置或从数据存储器解码的客户端装置中的编码器和解码器两者处,本文中所描述的方法和过程可体现为代码(例如,软件代码)和/或数据。编码器和解码器可以硬件或软件实施,如数据压缩所属的领域中众所周知。举例来说,使用专门编程的图形处理单元(gpu)或专门设计的现场可编程门阵列(fpga)的硬件加速可提供某些效率。出于完整性,此类代码和数据可存储于一个或多个计算机可读介质上,所述计算机可读介质可包含可存储代码和/或数据以供计算机系统使用的任何装置或介质。当计算机系统读取并且执行存储于计算机可读介质上的代码和/或数据时,计算机系统执行体现为存储在计算机可读存储介质内的数据结构和代码的方法和过程。在某些实施例中,本文中所描述的方法和过程的步骤中的一个或多个可由处理器(例如,计算机系统或数据存储系统的处理器)执行。
[0402]
一般来说,此文本中所描述或图式中所示出的功能性中的任一个可使用软件、固件(例如,固定逻辑电路系统)、可编程或不可编程硬件,或这些实施方案的组合来实施。一般来说,如本文中所使用的术语“组件”或“功能”表示软件、固件、硬件或这些的组合。举例来说,在软件实施方案的情况下,术语“组件”或“功能”可指代在被执行于一个或多个处理装置上时执行指定任务的程序代码。组件和功能分离成相异单元的所说明分离可反映此类软件和/或硬件和任务的任何实际或概念性的物理分组和分配。
[0403]
附件
[0404]
下文陈述体现本文中其它地方描述的原理的实例非限制性实施方案。此实例可用于提供所描述的特征的上下文。
[0405]
语法及语义
[0406]
语法表指定所有所允许位流的语法的超集。可直接或间接地按需要指定对于语法的额外约束。
[0407]
注意实际解码器应实施用于识别到位流中的进入点的某一构件,以及用以识别和处理非相符位流的某一构件。用于识别和处理错误和其它此类的方法
[0408]
过程有效负载-图片配置
[0409]
[0410][0411]
数据块单元图片配置语义
[0412]
no_enhancement_bit_flag指定对于图片中的所有layeridx<nlayers不存在增强数据。
[0413]
quant-matrix_mode指定根据下表哪一量化矩阵待用于解码过程中。当quant_matrix_mode不存在时,其推断为等于0。
[0414]
量化矩阵
[0415][0416]
dequant_offset_signalled_flag指定是否传信偏移方法和将在解量化时应用的偏移参数的值。如果等于1,则传信用于解量化偏移的方法和解量化偏移参数的值。当dequam_offset_signalled_flag不存在时,其推断为等于0。
[0417]
picture_type_bit_flag指定根据下表以帧为基础(例如,渐进模式或交错模式)还是以字段为基础(例如,交错模式)发送经编码数据错误!未找到参考源。.
[0418]
图片类型
[0419]
picture_type_bit_flag类型的值0帧1字段
[0420]
field_type_bit_flag指定,根据下表,如果picture_type等于1,则所发送的数据
针对顶部还是底部字段错误!未找到参考源。
[0421]
字段类型
[0422]
field_type_bit_flag类型的值0顶部1底部
[0423]
temporal_refresh_bit_flag指定是否应针对图片刷新时间缓冲器。如果等于1,则应刷新时间缓冲器。对于idr图片,temporal_refresh_bit_flag将设定为1。
[0424]
temporal_signalling_present_flag指定时间信令系数群组是否存在于位流中。当temporal_signalling_present_flag不存在时,如果temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0则其推断为等于1,否则其推断为等于0。
[0425]
step_width_level2指定针对亮度平面将在解码增强子层2中的经编码残差时使用的步宽值的值。针对色度平面将在解码增强子层2中的经编码残差时使用的步宽值将计算为clip3(1,32,767,((step_width_level2*chroma_step_width_multiplier)>>6))。
[0426]
step_width_level1_enabled_flag指定将在解码增强子层1中的经编码残差时使用的步宽的值为默认值还是经传信。其应为0(默认值)或1(由step_width_levell传信的值)。默认值为32,767。当step_width_level1_enabled_flag不存在时,其推断为等于0。
[0427]
dithering_control_flag指定是否应应用抖动。其应为0(停用抖动)或1(启用抖动)。当dithering_control_flag不存在时,其推断为等于0。
[0428]
step_width_level1指定将在解码增强子层1中的经编码残差时使用的步宽值的值。
[0429]
level1_filtering_enabled_flag指定是否应使用层级1解块滤波器。其应为0(停用滤波)或1(启用滤波)。当level1_filtering_enabled_flag不存在时,其推断为等于0。
[0430]
qm_coefficient_0[layeridx]指定当quant_matrix_mode等于2、3或5时量化矩阵缩放参数的值。
[0431]
qm_coefficient_1[layeridx]指定当quant_matrix_mode等于4或5时量化矩阵缩放参数的值。
[0432]
dequant_offset_mode_flag指定用于应用解量化偏移的方法。如果等于0,则使用传信的dequant_offset作为参数,默认方法适用。如果等于1,则使用传信的dequant_offset参数,恒定偏移方法适用。
[0433]
dequant_offset指定待应用的解量化偏移参数的值。解量化偏移参数的值应在0和127之间(包含端点)。
[0434]
dithering_type指定根据下表将什么类型的抖动应用于最终经重建图片错误!未找到参考源。.
[0435]
抖动
[0436]
dithering_type类型的值0无1统一2-3保留
[0437]
dithering_strength指定0和31之间的值。
[0438]
解码过程
[0439]
指定解码过程,使得当针对符合指定简档和层级的位流调用与所述简档相关联的解码过程时符合所述简档的所有解码器将产生数值上相同的经裁剪的经解码输出图片。产生与由本文中所描述的过程所产生的相同的经裁剪的经解码输出图片的任何解码过程(以正确的输出次序或输出定时,如所指定)符合解码过程要求。
[0440]
针对l-2经编码数据块的一般解码过程
[0441]
到此过程的输入为:
[0442]
指定当前变换块的左上样本相对于当前图片的左上样本的样本位置(xtb0,ytb0)、依据变量transform_type的值的指定子条款错误!未找到参考源。中导出的当前变换块的大小的变量ntbs(如果transform_type等于0,则ntbs=2,且如果transform_type等于1,则ntbs=4),
[0443]
如其它地方导出的变量temporal_enabled_flag和如其它地方导出的变量temporal_refresh_bit_flag、如其它地方导出的变量temporal_signalling_present_flag和如其它地方指定的temporal_step_width_modifier
[0444]
指定由当前块的其它地方指定的过程产生的经上取样的经重建样本的大小(ntbs)x(ntbs)的阵列recl2modifiedupsampledsamples,
[0445]
指定l-2熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列transformcoeffq,
[0446]
如果变量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,
[0447]
依据变量step_width_level2的值的其它地方导出的步宽值,
[0448]
指定变换系数属于哪一平面的变量idxplanes。
[0449]
到此过程的输出为具有要素resl2residuals[x][y]的l-2残差resl2residuals的(ntbs)x(ntbs)阵列。
[0450]
指定当前变换块的左上样本相对于当前图片的左上样本的样本位置(xtbp,ytbp)导出如下:
[0451]
(xtbp,ytbp)=(idxplanes==0)?(xtb0,ytb0):(xtb0>>shiftwidthc,ytb0>>shifiheightc)
[0452]
p可与亮度或色度平面相关,这取决于变换系数属于哪一平面。其中shiftwidthc和shiftheightc在其它地方指定。
[0453]
如果no_enhancement_bit_flag被设定为0,则以下有序步骤适用:
[0454]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于0,则以亮度位置(xtby,ytby)调用如其它地方指定的时间预测过程,变换大小设定成等于ntbs,变量transformtempsig和变量tiletempsig作为输入,且输出为大小(ntbs)x(ntbs)的阵列temppredl2residuals。
[0455]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则
大小(ntbs)x(ntbs)的阵列temppredl2residuals被设定为仅含有零。
[0456]
如果变量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。
[0457]
以亮度位置(xtby,ytby)、设定成等于ntbs的变换大小、大小(ntbs)x(ntbs)的阵列dequantcoeff作为输入调用如其它地方指定的变换过程,且输出为(ntbs)x(ntbs)阵列resl2residuals。
[0458]
如果变量temporal_enabled_flag等于1,大小(ntbs)x(ntbs)的temppredl2residuals的阵列相加到(ntbs)x(ntbs)阵列resl2residuals,且resl2residuals阵列在亮度位置(xtby,ytby)处存储到temporalbuffer。
[0459]
如果no_enhancement_bit_flag被设定为1,则以下有序步骤适用:
[0460]
如果变量temporal_enabled_flag等于1,temporal_refresh_bit_flag等于0,且变量temporal_signalling_present_flag等于1,则以亮度位置(xtby,ytby)、设定成等于ntbs的变换大小,变量transformtempsig和变量tiletempsig作为输入调用如其它地方指定的时间预测过程,且输出为大小(ntbs)x(ntbs)的阵列temppredl2residuals。
[0461]
如果变量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。
[0462]
如果变量temporal_enabled_flag等于1且temporal_refresh_bit_flag等于1,则大小(ntbs)x(ntbs)的阵列temppredl2residuals被设定为仅含有零。
[0463]
如果变量temporal_enabled_flag等于1,则大小(ntbs)x(ntbs)的temppredl2residuals的阵列存储于(ntbs)x(ntbs)阵列resl2residuals中,且resl2residuals阵列在亮度位置(xtby,ytby)处存储到temporalbuffer。
[0464]
否则,大小(ntbs)x(ntbs)的阵列resl2residuals被设定为仅含有零。
[0465]
如子条款中所指定的每一平面的图片重建过程错误!未找到参考源。以变换块位置(xtb0,ytb0)、变换块大小ntbs、变量idxplanes、(ntbs)x(ntbs)阵列resl2residuals和(xtby)x(ytby)recl2modifiedupsampledsamples作为输入而调用。
[0466]
用于解量化的解码过程
[0467]
传递到此过程的每个变换系数群组属于特定平面和增强子层。其已使用统一量化器以死区缩放。量化器可使用非居中解量化偏移。
[0468]
用于变换系数的缩放过程
[0469]
到此过程的输入为:
[0470]
指定当前变换块的大小的变量ntbs(如果transform_type等于零,则ntbs=2,且如果transform_type等于1,则ntbs=4),
[0471]
含有熵解码的经量化变换系数的大小(ntbs)x(ntbs)的阵列transformcoeffq,
[0472]
指定步宽值参数的变量stepwidth,
[0473]
指定增强子层的索引的变量levelidx(对于增强子层1,levelidx=1,且对于增强子层2,levelidx=2),
[0474]
指定解量化偏移的变量dquantoffset和变量dequant_offset),
[0475]
如果quantmatrix_mode不同于0,则大小1x ntbs2的阵列qmcoeff0(等于阵列变量qm_coefficient_0),且另外,如果quant_matrix_mode等于4,则大小1x ntbs2的阵列qmcoeff1(等于阵列qm_coefficient_1),
[0476]
如果ntbs==2,则含有前一图片中使用的缩放参数阵列的大小(3*ntbs)x(ntbs)的阵列quantscalerddbuffer;
[0477]
如果ntbs==4,则含有前一图片中使用的缩放参数阵列的大小(3*ntbs)x(ntbs)的阵列quantscalerddsbuffer。
[0478]
此过程的输出为具有要素d[x][y]和经更新阵列quantmatrixbuffer的经解量化变换系数的(ntbs)x(ntbs)阵列d。
[0479]
为了导出经缩放变换系数d[x][y],其中x=0

ntbs-1,y=0

ntbs-1,且给定如子条款8.6.2中所指定的矩阵qm[x][y],使用以下公式:
[0480]
d[x][y]=(transformcoeffq[x][y]*((qm[x+(levelidxswap*ntbs)][y]+stepwidthmodifier[x][y])+appliedoffset[x][y])(1)
[0481]
解量化偏移和步宽修改符的导出
[0482]
变量appliedoffset[x][y]和stepwidthmodifier[x][y]导出如下:
[0483]
[0484][0485]
其中,如果stepwidth》16,则导出deadzonewidthoffset如下:
[0486]
deadzonewidthoffset[x][y]=(((1<<16)-((aconst*(qm[x+(levelidxswap*ntbs)][y]+stepwidthmodifier[x][y]))+bconst)>>1)*(qm[x+(levelidxswap*ntbs)][y]+stepwidthmodifier[x][y]))>>16
[0487]
其中,如果stepwidth<=16,则导出deadzonewidthoffset如下:
[0488]
deadzonewidthoffset[x][y]=stepwidth>>1
[0489]
其中:
[0490]
aconst=39
[0491]
bconst=126484
[0492]
cconst=5242
[0493]
dconst=99614
[0494]
其中dquantoffsetactual[x][y]计算如下:
[0495]
[0496][0497]
其中levelidxswap导出如下:
[0498][0499]
量化矩阵的导出
[0500]
量化矩阵qm[x][y]含有待用于解码每一系数群组的实际量化步宽。
[0501][0502]
其中qm_p[x][y]计算如下:
[0503]
[0504][0505]
且其中quantscalerddbuffer[x][y]在其它地方导出,且quantscalerddsbuffer[x][y]在其它地方导出。
[0506]
针对2
×
2变换的缩放参数的导出
[0507]
如果变量ntbs等于2,则默认缩放参数如下:
[0508]
default_scaling_dd[x][y]=
[0509]
{
[0510]
{0,2}
[0511]
{0,0}
[0512]
{32,3)
[0513]
{0,32}
[0514]
{0,3}
[0515]
{0,32}
[0516]
}
[0517]
作为第一步骤,阵列quantscalerddbuffer[x][y]初始化如下:
[0518]
如果当前图片为idr图片,则quantscalerddbuffer[x][y]初始化为等于default_scaling_dd[x][y]。如果当前图片不是idr图片,则quantscalerddbuffer[x][y]矩阵保持不变。
[0519]
在初始化之后,基于quant_matrix_mode的值,阵列quantscalerddbuffer[x][y]处理如下:
[0520]
如果quant_matrix_mode等于0且当前图片不是idr图片,则quantscalerddbuffer[x][y]保持不变。
[0521]
如果quant_matrix_mode等于1,则quantscalerddbuffer[x][y]等于default_scaling_dd[x][y]。
[0522]
如果quant_matrix_mode等于2,则quantscalerddbuffer[x][y]修改如下:
[0523][0524]
如果quant_matrix_mode等于3,则quantscalerddbuffer[x][y]修改如下:
[0525][0526]
如果quant_matrix_mode等于4,则quantscalerddbuffer[x][y]修改如下:
[0527]
for(x=0;x<2;x++)
[0528]
for(y=0;y<2;y++)
[0529]
quantscalerddbuffer[x+4][y]=qmcoeff1[(x*2)+y]
[0530]
如果quant_matrix_mode等于5,则quantscalerddbuffer修改如下:
[0531][0532]
针对4
×
4变换的缩放参数的导出
[0533]
如果变量ntbs等于4,则默认缩放参数如下:
[0534]
default_scaling_dds[x][y]=
[0535]
{
[0536]
{13,26,19,32}
[0537]
{52,1,78,9}
[0538]
{13,26,19,32}
[0539]
{150,91,91,19}
[0540]
{13,26,19,32}
[0541]
{52,1,78,9}
[0542]
{26,72,0,3}
[0543]
{150,91,91,19}
[0544]
{0,0,0,2}
[0545]
{52,1,78,9}
[0546]
{26,72,0,3}
[0547]
{150,91,91,19}
[0548]
}
[0549]
作为第一步骤,阵列quantscalerddsbuffer[][]初始化如下:
[0550]
如果当前图片为idr图片,则quantscalerddsbuffer[x][y]初始化为等于default_scaling_dds[x][y]。如果当前图片不是idr图片,则quantscalerddsbuffer[x][y]矩阵保持不变。
[0551]
在初始化之后,基于quant_matrix_mode的值,阵列quantscalerddsbuffer[x][y]处理如下:
[0552]
如果quant_matrix_mode等于0且当前图片不是idr图片,则quantscalerddsbuffer保持不变。
[0553]
如果quant_matrix_mode等于1,则quantscalerdd sbuffer等于default_scaling_dds[x][y]。
[0554]
如果quant_matrix_mode等于2,则quantscalerddsbuffer修改如下:
[0555][0556]
如果quant_matrix_mode等于3,则quantscalerddsbuffer修改如下:
[0557][0558]
如果quant_matrix_mode等于4,则quantscalerddsbuffer修改如下:for(x=0;x<4;x++)
[0559]
for(y=0;y<4;y++)
[0560]
quantscalerddsbuffer[x+8][y]=qmcoeff1[(x*4)+y]如果quant_matrix_mode等于5,则quantscalerddsbuffer修改如下:
[0561]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1