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

使用缩放处理的视频信号处理方法及装置与流程

2022-05-21 12:02:57 来源:中国专利 TAG:


1.本发明涉及视频信号处理方法和装置,并且更具体地,涉及用于对视频信号进行编码或解码的视频信号处理方法和装置。


背景技术:

2.压缩编译指代用于通过通信线路发送数字化信息或以适合于存储介质的形式存储信息的一系列信号处理技术。压缩编码的对象包括诸如语音、视频和文本的对象,并且特别地,用于对图像执行压缩编码的技术被称为视频压缩。考虑到空间相关性、时间相关性和随机相关性,通过去除过多的信息来执行对视频信号的压缩编译。然而,随着各种媒体和数据传输媒体的最新发展,需要更有效的视频信号处理方法和装置。


技术实现要素:

3.技术问题
4.本公开的目的是为了提高视频信号编译效率。
5.技术方案
6.为了解决上述问题,根据本公开的实施例的一种视频信号解码方法(其是用于获得用于缩放当前块的中间缩放因子阵列(m[x][y])的方法)可以包括:当指示是否应用低频不可分离变换(lfnst)的标志指示将低频不可分离变换应用于当前块并且缩放因子阵列不使用标志指示不使用用于当前块的缩放矩阵时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值,基于中间缩放因子阵列缩放用于当前块的变换系数,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,通过将低频不可分离变换的逆变换和初次变换的逆变换应用于缩放的变换系数来获得用于当前块的残差,其中,初次变换是在低频不可分离变换之前应用于空间域的残差信号的变换,当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块时,通过将初次变换的逆变换应用于缩放的变换系数来获得用于当前块的残差,以及基于残差和当前块的预测子来重构当前块。
[0007]
在根据本公开的实施例的视频信号解码方法中,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,可以通过帧内预测获得当前块的预测子。
[0008]
根据本公开的实施例的视频信号解码方法可以进一步包括基于低频不可分离变换索引确定指示是否应用低频不可分离变换的标志,其中,低频不可分离变换索引指示是否应用低频不可分离变换以及要用于低频不可分离变换的核。
[0009]
根据本公开的实施例的视频信号解码方法可以进一步包括当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块或者缩放因子阵列不使用标志指示缩放矩阵被用于当前块时,并且当指示是否将变换应用于当前块的标志指示不应用变换时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值。
[0010]
根据本公开的实施例的视频信号解码方法可以进一步包括当未能将中间缩放因子阵列中包括的所有因子配置为一个预定值时,基于从比特流获得的值推导中间缩放因子阵列。
[0011]
在根据本公开的实施例的视频信号解码方法中,缩放因子阵列不使用标志可以从序列参数集(sps)、图片参数集(pps)、图片报头和切片报头之中的至少一个比特流获得。
[0012]
根据本公开的实施例的视频信号解码方法可以进一步包括进一步基于指示当前正被处理的树的类型的信息,确定指示是否应用低频不可分离变换的标志。
[0013]
在根据本公开的实施例的视频信号解码方法中,确定指示是否应用低频不可分离变换的标志包括:确定指示当前正被处理的树的类型的信息是否是single_tree或dual_tree_luma,当指示当前正被处理的树的类型的信息是single_tree或dual_tree_luma时,确定低频不可分离变换索引是否是0,当低频不可分离变换索引不是0时,将指示是否对当前块的亮度分量应用低频不可分离变换的标志配置为指示应用低频不可分离变换,以及当低频不可分离变换索引是0时,将指示是否对当前块的亮度分量应用低频不可分离变换的标志配置为指示不应用低频不可分离变换,并且single_tree指示在分区包括当前块的较高区域时使用单树,并且dual_tree_luma指示在分区包括当前块的较高区域时使用双树并且指示与当前块相关的分量是亮度分量。
[0014]
在根据本公开的实施例的视频信号解码方法中,当指示当前正被处理的树的类型的信息是single_tree时,当前块可以包括亮度分量。
[0015]
在根据本公开的实施例的视频信号解码方法中,确定指示是否应用低频不可分离变换的标志包括:当指示当前正被处理的树的类型的信息是dual_tree_chroma并且低频不可分离变换索引不是0时,将指示是否对当前块的色度分量应用低频不可分离变换的标志配置为指示应用低频不可分离变换,并且当指示当前正被处理的树的类型的信息不是dual_tree_chroma或低频不可分离变换索引是0时,将指示是否对当前块的色度分量应用低频不可分离变换的标志配置为指示不应用低频不可分离变换,并且dual_tree_chroma指示在分区包括当前块的较高区域时使用双树并且指示与当前块相关的分量是色度分量。
[0016]
在根据本公开的实施例的视频信号解码方法中,一个预定值可以是2^n,并且n可以是自然数。
[0017]
在根据本公开的实施例的视频信号解码方法中,一个预定值可以是16。
[0018]
根据本公开的实施例的视频信号处理装置(其是用于获得中间缩放因子阵列m[x][y]的视频信号处理装置)可以包括处理器和存储器,其中,处理器基于存储在存储器中的指令被配置为:当指示是否应用低频不可分离变换(lfnst)的标志指示将低频不可分离变换应用于当前块并且缩放因子阵列不使用标志指示不使用用于当前块的缩放矩阵时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值,基于中间缩放因子阵列缩放用于当前块的变换系数,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,通过将低频不可分离变换的逆变换和初次变换的逆变换应用于缩放的变换系数来获得用于当前块的残差,其中,初次变换是在低频不可分离变换之前应用于空间域的残差信号的变换,当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块时,通过将初次变换的逆变换应用于缩放的变换系数来获得用于当前块的残差,以及基于残差和当前块的预测子来重构当前块。
[0019]
在根据本公开的实施例的视频信号处理装置中,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,可以通过帧内预测获得当前块的预测子。
[0020]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为基于低频不可分离变换索引确定指示是否应用低频不可分离变换的标志,其中,低频不可分离变换索引指示是否应用低频不可分离变换以及要用于低频不可分离变换的核。
[0021]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为:在指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块或者缩放因子阵列不使用标志指示缩放矩阵被用于当前块的情况下,当指示是否将变换应用于当前块的标志指示对其不应用变换时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值。
[0022]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为当未能将中间缩放因子阵列中包括的所有因子配置为一个预定值时,基于从比特流获得的值推导中间缩放因子阵列。
[0023]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为从序列参数集(sps)、图片参数集(pps)、图片报头和切片报头之中的至少一个比特流获得缩放因子阵列不使用标志。
[0024]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为进一步基于指示当前正被处理的树的类型的信息确定指示是否应用低频不可分离变换的标志。
[0025]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为:确定指示当前正被处理的树的类型的信息是否是single_tree或dual_tree_luma,当指示当前正被处理的树的类型的信息是single_tree或dual_tree_luma时,确定低频不可分离变换索引是否是0,当低频不可分离变换索引不是0时,将指示是否对当前块的亮度分量应用低频不可分离变换的标志配置为指示应用低频不可分离变换,并且当低频不可分离变换索引是0时,将指示是否对当前块的亮度分量应用低频不可分离变换的标志配置为指示不应用低频不可分离变换,并且single_tree指示在分区包括当前块的较高区域时使用单树,并且dual_tree_luma指示在分区包括当前块的较高区域时使用双树并且指示与当前块相关的分量是亮度分量。
[0026]
在根据本公开的实施例的视频信号处理装置中,当指示当前正被处理的树的类型的信息是single_tree时,当前块可以包括亮度分量。
[0027]
在根据本公开的实施例的视频信号处理装置中,处理器可以基于存储在存储器中的指令被配置为:当指示当前正被处理的树的类型的信息是dual_tree_chroma并且低频不可分离变换索引不是0时,将指示是否对当前块的色度分量应用低频不可分离变换的标志配置为指示应用低频不可分离变换,并且当指示当前正被处理的树的类型的信息不是dual_tree_chroma或低频不可分离变换索引是0时,将指示是否对当前块的色度分量应用低频不可分离变换的标志配置为指示不应用低频不可分离变换,并且dual_tree_chroma指示在分区包括当前块的较高区域时使用双树并且指示与当前块相关的分量是色度分量。
[0028]
在根据本公开的实施例的视频信号处理装置中,一个预定值可以是2^n,并且n可以是自然数。
[0029]
在根据本公开的实施例的视频信号处理装置中,一个预定值可以是16。
[0030]
根据本公开的实施例的一种用于编码视频信号的方法包括:当指示是否应用低频不可分离变换(lfnst)的标志指示将低频不可分离变换应用于当前块并且缩放因子阵列不使用标志指示不使用用于当前块的缩放矩阵时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值,基于当前块的原始和当前块的预测子生成用于当前块的残差,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,通过将初次变换和低频不可分离变换应用于残差来获得用于当前块的变换系数,其中,初次变换是在低频不可分离变换之前应用于空间域的残差信号的变换,当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块时,通过将初次变换应用于残差来获得用于当前块的变换系数,基于中间缩放因子阵列缩放变换系数,并且基于缩放的变换系数生成比特流。
[0031]
根据本公开的实施例的一种视频信号处理装置包括处理器和存储器,其中,处理器基于存储在存储器中的指令被配置为:当指示是否应用低频不可分离变换(lfnst)的标志指示将低频不可分离变换应用于当前块并且缩放因子阵列不使用标志指示不使用用于当前块的缩放矩阵时,将包括在中间缩放因子阵列中的所有因子配置为一个预定值,基于当前块的原始和当前块的预测子生成用于当前块的残差,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,通过将初次变换和低频不可分离变换应用于残差来获得用于当前块的变换系数,其中,初次变换是在低频不可分离变换之前应用于空间域的残差信号的变换,当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块时,通过将初次变换应用于残差来获得用于当前块的变换系数,基于中间缩放因子阵列缩放变换系数,并且基于缩放的变换系数生成比特流。
[0032]
根据本公开的实施例,一种非暂时性计算机可读记录介质存储用于重构当前块的比特流,该比特流包括低频不可分离变换索引、缩放因子阵列不使用标志以及缩放的变换系数,并且缩放的变换系数通过以下来生成:当基于低频不可分离变换(lfnst)索引的指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块并且缩放因子阵列不使用标志指示不使用用于当前块的缩放矩阵时,将中间缩放因子阵列中包括的所有因子配置为一个预定值,基于当前块的原始和当前块的预测子生成当前块的残差,当指示是否应用低频不可分离变换的标志指示将低频不可分离变换应用于当前块时,通过将初次变换和低频不可分离变换应用于残差而获得用于当前块的变换系数,其中初次变换是在低频不可分离变换之前应用于空间域的残差信号的变换,当指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块时,通过将初次变换应用于残差来获得用于当前块的变换系数,以及基于中间缩放因子阵列缩放变换系数。
[0033]
有益效果
[0034]
根据本公开的实施例,可以提高视频信号编译效率。
附图说明
[0035]
图1是根据本发明的实施例的视频信号编码装置的示意性框图。
[0036]
图2是根据本发明的实施例的视频信号解码装置的示意性框图。
[0037]
图3示出其中在图片中编译树单元被划分为编译单元的实施例。
[0038]
图4示出用于用信号发送四叉树和多类型树的划分的方法的实施例。
[0039]
图5和图6更具体地图示根据本发明的实施例的帧内预测方法。
[0040]
图7是具体地图示用于通过编码器变换残差信号的方法的图。
[0041]
图8是具体地图示用于通过编码器和解码器对变换系数进行逆变换来获取残差信号的方法的图。
[0042]
图9图示与每个变换类型相对应的基函数。
[0043]
图10图示用于dct-ii、dct-v、dct-viii、dst-i和dst-vii的变换类型的每个索引的信号幅度。
[0044]
图11图示用于dst-iv、dct-iv、dst-vii和dct-viii的变换类型的每个索引的信号幅度。
[0045]
图12图示根据当前块的预测模式配置变换候选集的方法。
[0046]
图13图示根据集索引确定的水平变换核和垂直变换核。
[0047]
图14图示在被配置为执行二次变换的解码器中在块级别重构残差信号的过程。
[0048]
图15图示使用减少数目的样本来应用二次变换的方法。
[0049]
图16图示用于确定右上对角扫描顺序的方法。
[0050]
图17图示根据块大小的在图16中定义的右上对角扫描顺序。
[0051]
图18图示自适应参数集(aps)语法结构。
[0052]
图19图示切片报头语法结构。
[0053]
图20图示在缩放列表数据语法结构中使用的参数。
[0054]
图21图示缩放列表数据语法结构。
[0055]
图22图示考虑亮度变换块的最大大小的缩放列表数据语法结构。
[0056]
图23图示应用于变换系数的缩放处理。
[0057]
图24图示根据本公开的另一实施例的应用于变换系数的缩放处理。
[0058]
图25图示根据本公开的另一实施例的应用于变换系数的缩放处理。
具体实施方式
[0059]
考虑到本发明中的功能,本说明书中使用的术语可以是当前广泛使用的通用术语,但是可以根据本领域的技术人员的意图、习俗或新技术的出现而改变。另外,在某些情况下,可能存在申请人任意选择的术语,并且在这种情况下,其含义在本发明的相应描述部分中进行了描述。因此,应基于整个说明书中的术语和内容的实质含义来解释本说明书中使用的术语。
[0060]
在本说明书中,一些术语可以解释如下。在一些情况下,编译可以解释为编码或解码。在本说明书中,通过执行视频信号的编码(编译)来生成视频信号比特流的装置被称为编码装置或编码器,并且执行视频信号比特流的解码(解码)以重构视频信号的装置被称为解码装置或解码器。另外,在本说明书中,视频信号处理装置被用作包括编码器和解码器两者的概念的术语。信息是包括所有值、参数、系数、元素等的术语。在一些情况下,含义被不同地解释,因此本发明不限于此。“单元”被用作指代图像处理的基本单位或图片的特定位
置的含义,并且指代包括亮度分量和色度分量中的至少一个的图像区域。另外,“块”指代包括亮度分量和色度分量(即,cb和cr)当中的特定分量的图像区域。然而,取决于实施例,诸如“单元”、“块”、“分区(partition)”和“区域”的术语可以互换使用。另外,在本说明书中,单元可以用作包括编译单元、预测单元和变换单元的全部的概念。图片指示场或帧,并且根据实施例,这些术语可以互换使用。
[0061]
图1是根据本发明的实施例的视频信号编码装置100的示意性框图。参考图1,本发明的编码装置100包括变换单元110、量化单元115、逆量化单元120、逆变换单元125、滤波单元130、预测单元150和熵编译单元160。
[0062]
变换单元110通过对残差信号进行变换来获得变换系数的值,该残差信号是输入的视频信号与由预测单元150生成的预测信号之间的差。例如,可以使用离散余弦变换(dct)、离散正弦变换(dst)或小波变换。dct和dst通过将输入图片信号分割成多个块来执行变换。在变换中,编译效率可以根据变换区域中的值的分布和特性而变化。量化单元115对从变换单元110输出的变换系数值的值进行量化。
[0063]
为了改进编译效率,代替照原样对图片信号进行编译的方法,使用一种方法,其使用通过预测单元150已经编译的区域来预测图片,并通过将在原始图片和预测的图片之间的残差值添加到预测的图片来获得重构图片。为了防止编码器和解码器中的不匹配,当在编码器中执行预测时,应该使用可以在解码器中使用的信息。为此,编码器再次执行重构编码的当前块的处理。逆量化单元120对变换系数的值进行逆量化(缩放),并且逆变换单元125使用逆量化(缩放)的变换系数值来重构残差值。同时,滤波单元130执行滤波操作以改善重构图片的质量并改善编译效率。例如,可以包括去块滤波器、样本自适应偏移(sao)和自适应环路滤波器。滤波后的图片被输出或存储在解码图片缓冲器(dpb)156中,以用作参考图片。
[0064]
为了增加编译效率,代替照原样对图片信号进行编译,使用用于获取重构图片的方法,其中,使用已经通过预测单元150被编译的区域来预测图片,并且将原始图片和预测图片之间的残差值添加到预测图片。帧内预测单元152在当前图片内执行帧内预测,并且帧间预测单元154通过使用存储在解码图片缓冲器156中的参考图片来预测当前图片。帧内预测单元152从当前图片中的重构区域执行帧内预测,并将帧内编码信息发送到熵编译单元160。再次,帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a通过参考重构的特定区域来获得当前区域的运动向量值。运动估计单元154a可以将参考区域的位置信息(参考帧、运动向量等)发送到熵编译单元160以被包括在比特流中。运动补偿单元154b使用从运动估计单元154a发送的运动向量值执行帧间运动补偿。
[0065]
预测单元150包括帧内预测单元152和帧间预测单元154。帧内预测单元152在当前图片中执行帧内预测,并且帧间预测单元154执行帧间预测以通过使用存储在dpb 156中的参考图片来预测当前图片。帧内预测单元152根据当前图片中的重构样本执行帧内预测,并将帧内编译信息发送到熵编译单元160。帧内编码信息可以包括帧内预测模式、最可能模式(mpm)标志和mpm索引中的至少一种。帧内编码信息可以包括关于参考样本的信息。帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a参考重构的参考图片的特定区域以获得当前区域的运动向量值。运动估计单元154a将关于参考区域的运动信息集(参考图片索引、运动向量信息等)发送到熵编译单元160。运动补偿单元154b
使用从运动估计单元154a发送的运动向量值来执行运动补偿。帧间预测单元154将包括关于参考区域的运动信息集的帧间编码信息发送到熵编译单元160。
[0066]
根据另一实施例,预测单元150可以包括帧内块复制(bc)预测单元(未图示)。帧内bc预测单元从当前图片中的重构样本执行帧内bc预测,并将帧内bc编码信息发送到熵编译单元160。帧内bc预测单元参考当前图片中的特定区域并获得块向量值,其指示将被用于当前区域的预测的参考区域。帧内bc预测单元可以使用所获得的块向量值来执行帧内bc预测。帧内bc预测单元将帧内bc编码信息发送到熵编译单元160。帧内bc编码信息可以包括块向量信息。
[0067]
当执行上述图片预测时,变换单元110变换在原始图片和预测图片之间的残差值以获得变换系数值。在这种情况下,可以以图片内的特定块为单位执行变换,并且可以在预设范围内改变特定块的大小。量化单元115对在变换单元110中生成的变换系数值进行量化,并将其发送到熵编译单元160。
[0068]
熵编译单元160对量化的变换系数信息、帧内编译信息和帧间编译信息进行熵编译以生成视频信号比特流。在熵编译单元160中,可以使用可变长度编译(vlc)方法、算术编译方法等。vlc方法将输入的符号变换成连续的码字,并且码字的长度可以是可变的。例如,频繁出现的符号被表达为短码字,而不太频繁出现的符号被表达为长码字。作为vlc方法,可以使用基于上下文的自适应可变长度编译(cavlc)方法。算术编译将连续的数据符号变换成单个小数,并且算术编译可以获得表示每个符号所需的最佳小数位数。作为算术编译,可以使用基于上下文的自适应算术编译(cabac)。例如,熵编译单元160可以对表示量化的变换系数的信息进行二值化。另外,熵编译单元160可以通过对二进制信息进行算术编译来生成比特流。
[0069]
使用网络抽象层(nal)单元作为基本单位来封装所生成的比特流。nal单元包括整数个编译的编译树单元。为了在视频解码器中对比特流进行解码,首先,必须将比特流分离成nal单元,并且然后必须对每个分离的nal单元进行解码。同时,可以通过诸如图片参数集(pps)、序列参数集(sps)、视频参数集(vps)等等的高层集合的原始字节序列有效载荷(rbsp)来发送对视频信号比特流进行解码所需的信息。
[0070]
同时,图1的框图示出根据本发明的实施例的编码装置100,并且分开显示的块在逻辑上区分并示出编码装置100的元件。因此,取决于设备的设计上述编码装置100的元件可以被安装为一个芯片或多个芯片。根据实施例,上述编码装置100的每个元件的操作可以由处理器(未示出)执行。
[0071]
编码装置100可以将生成的比特流发送到解码装置200。此外,解码装置200可以接收比特流。这样,由编码装置100生成的比特流到解码装置200的传输被称为“信令”。
[0072]
图2是根据本公开的实施例的视频信号解码装置200的示意性框图。参照图2,本公开的解码装置200包括熵解码单元210、解量化单元220、逆变换单元225、滤波单元230和预测单元250。
[0073]
熵解码单元210对视频信号比特流进行熵解码,以提取每个区域的变换系数信息、帧内编码信息、帧间编码信息等。例如,熵解码单元210可以从视频信号比特流获得用于特定区域的变换系数信息的二进制码。此外,熵解码单元210通过对二进制码进行逆二值化来获得量化的变换系数。解量化单元220对量化的变换系数进行解量化。解量化可以对应于缩
放。逆变换单元225通过使用解量化的变换系数来重构残差值。逆变换单元225可以通过对解量化的变换系数进行逆变换来获取残差。视频信号处理设备200通过将由逆变换单元225获得的残差值与由预测单元250获得的预测值相加来重构原始像素值。这里,由预测单元250获得的预测值可以是预测子。
[0074]
同时,滤波单元230对图片执行滤波以改善图像质量。这可以包括用于减少块失真的去块滤波器和/或用于去除整个图片的失真的自适应环路滤波器。滤波后的图片被输出或存储在dpb 256中,以用作下一个图片的参考图片。
[0075]
预测单元250包括帧内预测单元252和帧间预测单元254。预测单元250通过使用通过上述熵解码单元210解码的编码类型、每个区域的变换系数和帧内/帧间编码信息来生成预测图片。为了重构其中执行解码的当前块,可以使用当前图片或包括当前块的其他图片的解码区域。仅将当前图片用于重构(即,执行帧内预测或帧内bc预测)的图片(或图块(tile)/切片(slice))称为帧内图片或i图片(或图块/切片),并且执行所有帧内预测、帧间预测以及帧内bc预测的图片(或图块/切片)被称为帧间图片(或图块/切片)。为了预测帧间图片(或图块/切片)当中的每个块的样本值,使用最多一个运动向量和参考图片索引的图片(或者图块/切片)被称为预测图片或p图片(或图块/切片),并且使用最多两个运动向量和参考图片索引的图片(或图块/切片)称为双向预测图片或b图片(或图块/切片)。换句话说,p图片(或图块/切片)使用最多一个运动信息集来预测每个块,并且b图片(或图块/切片)使用最多两个运动信息集来预测每个块。这里,运动信息集包括一个或多个运动向量和一个参考图片索引。
[0076]
帧内预测单元252使用帧内编码信息和当前图片中的恢复的样本来生成预测块。如上所述,帧内编码信息可以包括帧内预测模式、最可能模式(mpm)标志和mpm索引中的至少一种。帧内预测单元252通过使用位于当前块的左侧和/或上侧的恢复的样本作为参考样本来预测当前块的样本值。在本公开中,恢复的样本、参考样本和当前块的样本可以表示像素。而且,样本值可以表示像素值。
[0077]
根据实施例,参考样本可以是当前块的邻近块中包括的样本。例如,参考样本可以是与当前块的左边界相邻的样本和/或与上边界相邻的样本。另外,参考样本可以是在当前块的邻近块的样本当中的在距当前块的左边界预定距离内的线上的样本和/或位于距当前块的上边界预定距离内的线上的样本。在这种情况下,当前块的邻近块可以包括左(l)块、上(a)块、左下(bl)块、右上(ar)块或左上(al)块。
[0078]
帧间预测单元254使用参考图片和存储在dpb 256中的帧间编码信息来生成预测块。帧间编译信息可以包括用于参考块的当前块的运动信息集(参考图片索引、运动向量信息等)。帧间预测可以包括l0预测、l1预测和双向预测。l0预测意指使用l0图片列表中包括的一个参考图片进行预测,并且l1预测意指使用l1图片列表中包括的一个参考图片进行预测。为此,可能需要一个集合的运动信息(例如,运动向量和参考图片索引)。在双向预测方法中,可以使用多达两个参考区域,并且两个参考区域可以存在于同一参考图片中或可以存在于不同图片中。即,在双向预测方法中,可以使用多达两个集合的运动信息(例如,运动向量和参考图片索引),并且两个运动向量可以对应于相同的参考图片索引或不同的参考图片索引。在这种情况下,参考图片可以在时间方面在当前图片之前和之后显示(或输出)。根据实施例,在双向预测方案中使用的两个参考区域可以是从l0图片列表和l1图片列表中
的每一个中选择的区域。
[0079]
帧间预测单元254可以使用运动向量和参考图片索引来获得当前块的参考块。参考块在与参考图片索引相对应的参考图片中。而且,由运动向量指定的块的样本值或其内插值可以用作当前块的预测子。对于具有子像素(sub-pel)单位像素精度的运动预测,例如,可以使用用于亮度信号的8抽头内插滤波器和用于色度信号的4抽头内插滤波器。然而,以子像素为单位的用于运动预测的内插滤波器不限于此。以这种方式,帧间预测单元254执行运动补偿以根据先前使用运动信息重构的运动图片来预测当前单元的纹理。在这种情况下,帧间预测单元可以使用运动信息集。
[0080]
根据另一实施例,预测单元250可以包括帧内bc预测单元(未被图示)。帧内bc预测单元可以通过参考包括当前图片中的重构样本的特定区域来重构当前区域。帧内bc预测单元从熵解码单元210获得关于当前区域的帧内bc编码信息。帧内bc预测单元获得指示当前图片中的特定区域的当前区域的块向量值。帧内bc预测单元可以使用所获得的块向量值来执行帧内bc预测。帧内bc编码信息可以包括块向量信息。
[0081]
通过将从帧内预测单元252或帧间预测单元254输出的预测值(预测子)与从逆变换单元225输出的残差值相加生成重构的视频图片。即,视频信号解码装置200使用由预测单元250生成的预测块和从逆变换单元225获得的残差来重构当前块。
[0082]
同时,图2的框图示出根据本发明的实施例的解码装置200,并且分开显示的块在逻辑上区分并示出解码装置200的元件。因此,取决于设备的设计上述解码装置200的元件可以被安装为一个芯片或多个芯片。根据实施例,上述解码装置200的每个元件的操作可以由处理器(未示出)执行。
[0083]
图3图示其中在图片中编译树单元(ctu)被分割成编译单元(cu)的实施例。在视频信号的编译过程中,可以将图片分割成一系列编译树单元(ctu)。编译树单元由亮度样本的nxn块和与其相对应的色度样本的两个块组成。编译树单元可以被分割成多个编译单元。编译树单元可以不被分割,并且可以是叶节点。在这种情况下,编译树单元本身可以是编译单元。编译单元指代在上述视频信号的处理过程中,即,帧内/帧间预测、变换、量化和/或熵编译中用于处理图片的基本单元。一个图片中编译单元的大小和形状可能不恒定。编译单元可以具有正方形或矩形形状。矩形编译单元(或矩形块)包括垂直编译单元(或垂直块)和水平编译单元(或水平块)。在本说明书中,垂直块是其高度大于宽度的块,并且水平块是其宽度大于高度的块。此外,在本说明书中,非正方形块可以指代矩形块,但是本发明不限于此。
[0084]
参考图3,首先将编译树单元分割成四叉树(qt)结构。即,在四叉树结构中具有2nx2n大小的一个节点可以被分割成具有nxn大小的四个节点。在本说明书中,四叉树也可以称为四元树。可以递归地执行四叉树分割,并非所有节点都需要以相同的深度分割。
[0085]
同时,上述四叉树的叶节点可以进一步被分割成多类型树(mtt)结构。根据本发明的实施例,在多类型树结构中,一个节点可以被分割成水平或垂直划分的二叉或三叉树结构。即,在多类型树结构中,存在四个分割结构,诸如垂直二元分割、水平二元分割、垂直三元分割和水平三元分割。根据本发明的实施例,在每个树结构中,节点的宽度和高度都可以具有2的幂。例如,在二叉树(bt)结构中,2nx2n大小的节点可以通过垂直二元分割被分割成两个nx2n节点,并通过水平二元分割将其分割成两个2nxn节点。另外,在三叉树(tt)结构中,将2nx2n大小的节点通过垂直三元分割被分割成(n/2)x2n、nx2n和(n/2)x2n节点,并通
过水平三元分割被分割成2nx(n/2)、2nxn和2nx(n/2)节点。可以递归地执行此多类型树分割。
[0086]
多类型树的叶节点可以是编译单元。如果没有指示用于编译单元的分割或者编译单元与最大变换长度相比不大,则编译单元被用作预测和变换的单元而不进一步分割。另一方面,可以通过诸如pps、sps、vps等的更高级别集合的rbsp来预定义或发送上述四叉树和多类型树中的以下参数中的至少一个。1)ctu大小:四叉树的根节点大小,2)最小qt大小minqtsize:允许的最小qt叶节点大小,3)最大bt大小maxbtsize:最大允许的bt根节点大小,4)最大tt大小maxttsize:最大允许的tt根节点大小,5)最大mtt深度maxmttdepth:从qt的叶节点分割的mtt的最大允许深度,6)最小bt大小minbtsize:最小允许的bt叶节点大小,7)最小tt大小minttsize:最小允许的tt叶节点大小。
[0087]
图4图示用于用信号发送四叉树和多类型树分割的方法的实施例。可以使用预设标志来用信号发送上述四叉树和多类型树分割。参考图4,指示节点是否被分割的标志“split_cu_flag”、指示四叉树节点是否被分割的标志“split_qt_flag”、指示多类型树节点的分割方向的标志“mtt_split_cu_vertical_flag”或者指示多类型树节点的分割形状的标志“mtt_split_cu_binary_flag”中的至少一个可以被使用。
[0088]
根据本发明的实施例,可以首先用信号发送“split_cu_flag”,其是指示当前节点是否被分割的标志。当“split_cu_flag”的值为0时,其指示当前节点未被分割,并且当前节点成为编译单元。当当前节点是编译树单元时,编译树单元包括一个非分割编译单元。当当前节点是四叉树节点“qt节点”时,当前节点是四叉树的叶节点“qt叶节点”,并成为编译单元。当当前节点是多类型树节点“mtt节点”时,当前节点是多类型树的叶节点“mtt叶节点”,并且成为编译单元。
[0089]
当“split_cu_flag”的值是1时,可以根据“split_qt_flag”的值将当前节点分割成四叉树或多型树的节点。编译树单元是四叉树的根节点,并且可以首先被分割成四叉树结构。在四叉树结构中,为每个节点“qt节点”用信号发送“split_qt_flag”。当“split_qt_flag”的值为1时,该节点被分割成4个正方形节点,而当“split_qt_flag”的值为0时,该节点成为四叉树“qt leaf node”的叶节点,并且该节点被分割成多类型树节点。根据本发明的实施例,可以根据当前节点的类型来限制四叉树分割。当当前节点是编译树单元(四叉树的根节点)或四叉树节点时,可以允许进行四叉树分割,而当当前节点是多类型树节点时,可能不允许四叉树分割。
[0090]
每个四叉树叶节点“qt叶节点”可以进一步被分割成多类型树结构。如上所述,当“split_qt_flag”为0时,当前节点可以被分割成多类型节点。为了指示分割方向和分割形状,可以用信号发送“mtt_split_cu_vertical_flag”和“mtt_split_cu_binary_flag”。当“mtt_split_cu_vertical_flag”的值是1时,指示节点“mtt节点”的垂直分割,并且当“mtt_split_cu_vertical_flag”的值是0时,指示节点“mtt节点”的水平分割。另外,当“mtt_split_cu_binary_flag”的值是1时,节点“mtt节点”被分割成两个矩形节点,并且当“mtt_split_cu_binary_flag”的值是0时,节点“mtt节点”被分割成三个矩形节点。
[0091]
对不再分割的编译单元(即,编码单元树的叶节点)执行用于编译的图片预测(运动补偿)。在下文中将执行这种预测的基本单元称为预测单元或预测块。
[0092]
在下文中,在本说明书中使用的术语单元可以用作代替预测单元的术语,该预测
单元是用于执行预测的基本单元。然而,本发明不限于此,并且可以更广泛地理解为包括编译单元的概念。
[0093]
图5和图6更加具体地图示根据本发明的实施例的帧内预测方法。如上所述,帧内预测单元通过使用位于当前块的左侧和/或上侧的恢复的样本作为参考样本来预测当前块的样本值。
[0094]
首先,图5示出在帧内预测模式中用于当前块的预测的参考样本的实施例。根据实施例,参考样本可以是与当前块的左边界相邻的样本和/或与上边界相邻的样本。如图5中所示,当当前块的大小是wxh并且与当前块相邻的单个参考线的样本被用于帧内预测时,可以使用位于当前块的左侧和上侧的最大2w 2h 1个邻近样本来配置参考样本。
[0095]
另外,如果尚未恢复要被用作参考样本的样本中的至少一些,则帧内预测单元可以通过执行参考样本填充过程来获得参考样本。另外,帧内预测单元可以执行参考样本滤波处理以减少帧内预测中的误差。即,可以对通过参考样本填充过程获得的周围样本和/或参考样本执行滤波,以获得滤波后的参考样本。帧内预测单元使用由此获得的参考样本来预测当前块的样本。帧内预测单元通过使用尚未被滤波的参考样本或已被滤波的参考样本来预测当前块的样本。在本公开中,周围样本可以包括至少一条参考线上的样本。例如,周围样本可以包括在与当前块的边界相邻的线上的相邻样本。
[0096]
接下来,图6示出用于帧内预测的预测模式的实施例。对于帧内预测,可以用信号发送指示帧内预测方向的帧内预测模式信息。帧内预测模式信息指示被包括在帧内预测模式集中的多个帧内预测模式中的一个。当当前块是帧内预测块时,解码器从比特流接收当前块的帧内预测模式信息。解码器的帧内预测单元基于提取的帧内预测模式信息对当前块执行帧内预测。
[0097]
根据本发明的实施例,帧内预测模式集可以包括在帧内预测中使用的所有帧内预测模式(例如,总共67个帧内预测模式)。更具体地,帧内预测模式集可以包括平面模式、dc模式以及多个(例如,65个)角度模式(即,方向模式)。可以通过预设索引(即,帧内预测模式索引)来指示每个帧内预测模式。例如,如图6中所示,帧内预测模式索引0指示平面模式,并且帧内预测模式索引1指示dc模式。此外,帧内预测模式索引2至66可以分别指示不同的角度模式。角度模式分别指示在预设角度范围内彼此不同的角度。例如,角度模式可以指示以顺时针方向在45度和-135度之间的角度范围(即,第一角度范围)内的角度。可以基于12点钟方向定义角度模式。在这种情况下,帧内预测模式索引2指示水平对角线(hdia)模式,帧内预测模式索引18指示水平(水平,hor)模式,帧内预测模式索引34指示对角线(dia)模式,帧内预测模式索引50指示垂直(ver)模式,并且帧内预测模式索引66指示垂直对角线(vdia)模式。
[0098]
另一方面,为了增加编译效率,代替照原样对上述残差信号进行编译,可以使用对通过对残差信号进行变换而获得的变换系数值进行量化并对量化后的变换系数进行编译的方法。如上所述,变换单元可以通过对残差信号进行变换来获得变换系数值。在这种情况下,特定块的残差信号可以分布在当前块的整个区域上。因此,能够通过对残差信号进行频域变换将能量集中在低频域中,来改进编译效率。在下文中,将详细描述用于对残差信号进行变换或逆变换的方法。
[0099]
图7是具体地图示用于通过编码器变换残差信号的方法的图。如上所述,空间域中
的残差信号可以被变换到频域。编码器可以通过对所获得的残差信号进行变换来获得变换系数。首先,编码器可以获取包括当前块的残差信号的至少一个残差块。残差块可以是当前块或当前块被划分成的块中的任何一个。在本公开中,残差块可以被称为包括当前块的残差样本的残差阵列或残差矩阵。另外,在本公开中,残差块可以表示变换单元或具有与变换块的大小相同的大小的块。
[0100]
接下来,编码器可以使用变换核来变换残差块。用于对残差块进行变换的变换核可以是具有可分离为垂直变换和水平变换的特性的变换核。在这种情况下,对残差块的变换可以被分离成垂直变换和水平变换。例如,编码器可以通过在残差块的垂直方向上应用变换核来执行垂直变换。另外,编码器可以通过在残差块的水平方向上应用变换核来执行水平变换。在本公开中,变换核可以用作术语来指代用于变换残差信号的参数集,诸如变换矩阵、变换阵列和变换函数。根据实施例,变换核可以是多个可用核中的任何一个。此外,基于不同变换类型的变换核可以用于垂直变换和水平变换中的每一个。将参照图12至图13稍后描述用于选择多个可用变换核中的一个的方法。
[0101]
编码器可以将从残差块变换的变换块发送到量化单元以对其进行量化。在这种情况下,变换块可以包括多个变换系数。具体地,变换块可以由以二维布置的多个变换系数组成。类似于残差块,变换块的大小可以与当前块或当前块被划分为的块中的任何一个的大小相同。传送到量化单元的变换系数可以被表达为量化值。
[0102]
另外,编码器可以在对变换系数进行量化之前执行附加的变换。如图7中所图示,上述变换方法可以被称为初次变换,并且附加变换可以被称为二次变换。二次变换对于每个残差块可以是选择性的。根据实施例,编码器可以通过对仅通过初次变换难以将能量集中在低频域中的区域执行二次变换来改善编译效率。例如,可以将二次变换附加到其中残差值在除残差块的水平或垂直方向以外的方向上相对较大地显现的块中。与帧间预测的块的残差值相比,帧内预测的块的残差值可以具有在除水平或垂直方向之外的方向上变化的相对较高的概率。因此,编码器可以附加地对帧内预测的块的残差信号执行二次变换。另外,编码器可以省略对帧间预测的块的残差信号的二次变换。
[0103]
对于另一示例,可以根据当前块或残差块的大小来确定是否执行二次变换。另外,可以根据当前块或残差块的大小来使用具有不同大小的变换核。例如,可以将8
×
8二次变换应用于其中宽度或高度中的较短边等于或大于第一预设长度的块。另外,可以将4
×
4二次变换应用于其中宽度或高度中的较短边等于或大于第二预设长度并且小于第一预设长度的块。在这种情况下,第一预设长度可以是大于第二预设长度的值;然而,本公开不限于此。此外,与初次变换不同,二次变换可能不能分离成垂直变换和水平变换。该二次变换可以被称为低频不可分离变换(lfnst)。
[0104]
另外,在特定区域中的视频信号的情况下,由于亮度的突然改变,即使执行频率变换,也不会减少高频带中的能量。因此,因量化的压缩性能的性能可能劣化。另外,当对残差值很少存在的区域执行变换时,编码时间和解码时间可能不必要地增加。因此,可以省略对特定区域的残差信号的变换。可以通过与特定区域的变换有关的语法元素来确定是否对特定区域的残差信号执行变换。例如,语法元素可以包括变换跳过信息。变换跳过信息可以是变换跳过标志。当关于残差块的变换跳过信息指示变换跳过时,不执行对残差块的变换。在这种情况下,编码器可以立即量化尚未对其进行区域变换的残差信号。参考图7描述的编码
器的操作可以通过图1的变换单元来执行。
[0105]
与变换有关的上述语法元素可以是从视频信号比特流解析的信息。解码器可以对视频信号比特流进行熵解码以获得与变换有关的语法元素。另外,编码器可以通过对与变换有关的语法元素进行熵编码来生成视频信号比特流。
[0106]
图8是具体地图示用于通过编码器和解码器对变换系数进行逆变换来获取残差信号的方法的图。在下文中,为了便于描述,将描述通过编码器和解码器中的每一个的逆变换单元执行逆变换操作。逆变换单元可以通过对逆量化的变换系数进行逆变换来获得残差信号。首先,逆变换单元可以从特定区域的与变换有关的语法元素中检测是否执行了特定区域的逆变换。根据实施例,当特定变换块上的与变换有关的语法元素指示变换跳过时,可以省略对变换块的变换。在这种情况下,对于变换块,逆初次变换和逆二次变换两者都可以被省略。另外,逆量化变换系数可以用作残差信号。例如,解码器可以通过使用逆量化的变换系数作为残差信号来重构当前块。上述逆初次变换表示用于初次变换的逆变换,并且可以被称为初次逆变换。逆二次变换表示用于二次变换的逆变换,并且可以被称为二次逆变换或逆lfnst。
[0107]
根据另一实施例,用于特定变换块的与变换有关的语法元素可以不指示变换跳过。这里,逆变换单元可以确定是否执行用于二次变换的逆二次变换。例如,如果变换块是帧内预测的块的变换块,可以对变换块执行逆二次变换。另外,可以基于与变换块相对应的帧内预测模式来确定用于对应变换块的二次变换核。作为另一个示例,可以基于变换块的大小来确定是否执行逆二次变换。作为又一个示例,如果指示是否应用低频不可分离变换的标志指示对当前块应用低频不可分离变换,则可以执行通过执行缩放的变换系数的逆二次变换来获得一个或多个二次逆变换的系数的操作。逆二次变换可以在解量化之后并且在逆初次变换之前执行。
[0108]
逆变换单元可以执行解量化的变换系数或逆二次变换的变换系数的逆初次变换。这里,解量化的变换系数可以表示缩放的变换系数。像初次变换一样,逆初次变换可以分离成垂直变换和水平变换。例如,逆变换单元可以对变换块执行垂直逆变换和水平逆变换以获得残差块。逆变换单元可以基于用于对变换块进行变换的变换核来对变换块进行逆变换。例如,编码器可以显式地或隐式地用信号发送指示多个可用变换核中的应用于当前变换块的变换核的信息。解码器可以通过使用指示用信号发送的变换核的信息,在多个可用变换核中选择要用于变换块的逆变换的变换核。逆变换单元可以通过使用通过对变换系数进行逆变换而获得的残差信号来重构当前块。
[0109]
另一方面,图片的残差信号的分布对于每个区域可以是不同的。例如,特定区域中的残差信号的值的分布可以根据预测方法而变化。当使用相同的变换核对多个不同的变换区域进行变换时,对每个变换区域,编译效率可以根据变换区域中的值的分布和特性而变化。因此,当从多个可用的变换核中自适应地选择用于变换特定变换块的变换核时,可以进一步改善编译效率。即,编码器和解码器可以被配置成在变换视频信号时附加地使用除了基本变换核之外的变换核。用于自适应地选择变换核的方法可以被称为自适应多核变换(amt)或多变换选择(mts)。稍后将参考相关附图描述自适应地选择变换核的方法。在本公开中,为了便于解释,变换和逆变换可以统称为变换。在解码过程期间由编码器和解码器的逆变换单元执行的变换可以理解为逆变换,并且在编码过程期间由编码器的变换单元执行
的变换可以理解为变换。此外,将变换核和逆变换核统称为变换核。
[0110]
在下文中,将参考图9描述可以用于视频信号的变换的多个变换核。根据本公开的实施例,变换核可以是基于特定基函数推导的核。可以基于不同的基函数来获得多个不同变换核中的每一个。可以基于与不同变换类型中的每一个相对应的基函数来获得多个变换核。
[0111]
图9图示与每个变换类型相对应的基函数。根据实施例,可用于变换视频残差信号的变换核可以包括以下中的至少一个:基于离散余弦变换类型2(dct-ii)的变换核、基于离散余弦变换类型5(dct-v)的变换核、基于离散余弦变换类型8(dct-viii)的变换核、基于离散正弦变换类型1(dst-i)的变换核及基于离散正弦变换类型7(dst-vii)的变换核。
[0112]
参照图9,与上述dct-ii、dct-v、dct-viii、dst-i和dst-vii的相应变换类型相对应的基函数可以被表示为余弦或正弦函数。例如,与相应的dct-ii、dct-v和dct-viii相对应的基函数可以是余弦型函数,并且与相应的dst-i和dst-vii相对应的基函数可以是正弦型函数。此外,可以以用于每个频率bin的基函数的形式来表达与特定变换类型相对应的基函数。例如,基函数ti(j)可以是对应于第i个频率bin的基函数。即,当由i指示的值较小时,指示与较低频率相对应的基函数。此外,当由i指示的值较大时,指示与较高频率相对应的基函数。在图9中,j可以指示从0到n-1的整数。
[0113]
基函数ti(j)可以被表达为表示第i行第j列中的元素的二维矩阵。这里,使用基于图9的变换类型的变换核的变换在执行变换时具有可分离的特性。也就是说,可以在水平方向和垂直方向中的每一个分别变换对残差信号的变换。例如,使用关于残差块x的变换矩阵t的变换可以被表达为矩阵运算txt’。这里,t’是指变换矩阵t的转置矩阵。此外,使用关于变换块y的变换矩阵t的逆变换可以表达为t’yt。
[0114]
由图9中所图示的基函数定义的变换矩阵的值可以呈小数形式而非整数形式。可能难以在视频编码装置和解码装置中的硬件中实现小数值。因此,从包括小数形式的值的原始变换核整数近似的变换核可以用于编码和解码视频信号。可以经由缩放和舍入原始变换核来生成包括整数值的近似变换核。近似变换核中包括的整数值可以是由预配置的位数可表示的范围内的值。预配置的位数可以是8或10。根据近似,可以不维持dct和dst的正交特性。然而,由此导致的编译效率损失不大,因此,在硬件实现方面,以整数形式近似变换核可能是有利的。
[0115]
图10图示dct-ii、dct-v、dct-viii、dst-i和dst-vii的变换类型的每个索引的信号幅度。图10图示每个频率bin的基函数当中的与最低频率bin相对应的基函数的形式。图10图示每个频率bin的基函数中的与第0频率bin相对应的基函数。在图10中,水平轴表示基函数中的索引j(j=0,1,

,n-1),而垂直轴表示信号的幅度值。n表示要进行变换的特定区域中的样本的数量。
[0116]
如图10所示,在dst-vii中,随着索引j增加,信号幅度趋于增加。因此,像帧内预测块的残差块,dst-vii对于其中残差信号的幅度随着水平和垂直方向上的距离相对于残差块的左上方增加而增加的残差块的变换可能是有效的。
[0117]
另一方面,在dct-viii中,随着索引j增加,信号幅度趋向于减小。也就是说,dct-viii满足与dst-vii的二元性特征。因此,dct-viii对于其中残差信号的幅度随着水平和垂直方向上的距离相对于残差块的左上方增加而减小的残差块的变换可能是有效。
[0118]
在dst-i中,随着基函数中的索引j增加,信号幅度增加,然后信号幅度从特定索引开始减小。因此,dst-i对于在其中心处具有大残差信号幅度的残差块的变换可能是有效的。
[0119]
dct-ii的第0个基函数表示dc。因此,它对于在内部具有均匀信号幅度分布的残差块的变换可能是有效的。
[0120]
dct-v类似于dct-ii。然而,在dct-v中,当索引j为0时的信号幅度具有比当索引j不为0时的信号幅度更小的值,即,当索引j为1时,dct-v具有其中直线弯曲的信号模型。
[0121]
如上所述,如果使用具有可分离特性的变换核,则可以在残差块的水平和垂直方向中的每一个上执行变换。具体地,可以通过进行两次2d矩阵乘法运算来执行残差块的变换。矩阵乘法运算可以涉及对应于等于或高于预配置水平的水平的计算量。因此,当使用基于dct-ii的变换核来变换残差块时,可以通过使用蝶形结构来减少计算量。然而,由于相对高的实施方式复杂度,dst-vii和dct-viii的实施方式在计算量方面可能是困难的。因此,可以使用分别具有与dst-vii和dct-viii的特性类似的特性并且具有相对低的实施方式复杂度的变换类型。
[0122]
根据实施例,离散正弦变换类型iv(dst-iv)和离散余弦变换类型iv(dct-iv)可以分别代替dst-vii和dct-viii。图11图示变换类型(例如,dst-iv、dct-iv、dst-vii和dct-viii)的每个索引的信号幅度。图11(a)图示与dst-iv相对应的基函数和与dct-iv相对应的基函数。可以从用于样本数量2n的dct-ii推导用于样本数量n的dst-iv和dct-iv。也就是说,用于样本数量2n的dct-ii部分蝶形结构包括用于样本数量n的dct-iv。可以通过从用于样本数量n的dct-iv以逆序布置符号逆运算以及对应的基函数来实现用于样本数目n的dst-iv。
[0123]
如图11(b)所示,dst-iv指示与dst-vii类似的信号模型。因此,像帧内预测块的残差块,dst-iv对于其中残差信号幅度随着水平和垂直方向上的距离相对于残差块的左上方增加而增加的残差块的变换可能是有效的。dct-iv示出与dct-viii的信令模型类似的信令模型。因此,dct-iv对于用于变换具有在特定边界处最大且在从所述特定边界进一步朝另一边界的方向上减小的残差信号量值的残差块的变换可能是有效的。
[0124]
如果仅基于上述变换类型之一的变换核用于变换视频信号,则难以根据原始信号的特性和根据预测模式而变化的残差信号的图样来执行自适应变换。因此,在残差信号的变换中,根据本公开的实施例的编码器和解码器可以通过使用从多个可用的变换核中针对每个区域所选择的变换核来提高编译效率。
[0125]
在现有的高效率视频编译(hevc)标准中,使用上述多种变换类型中的基于dct-ii的变换核来变换残差信号,并且通过仅针对大小为4
×
4的帧内预测块有限地使用基于dst-vii的变换核来执行残差信号变换。如上所述,dct-ii可以适合于帧间预测块的残差信号的变换,但可能不适合于帧内预测块的残差信号的变换。也就是说,根据预测当前块的方法,残差块内的残差信号的图样可以不同。
[0126]
因此,从多个可用变换核中选择的至少一个变换核可以用于变换特定变换块。根据实施例,编码器和解码器可以基于预测当前块的方法来选择用于当前块的至少一个变换区域的变换核。该方法可以被称为上述的自适应多核变换(amt)。如果根据用于特定区域的预测方法所确定的变换核用于变换对应区域,则与通过使用基于dct-ii的变换核来对所有
区域执行变换的情况相比,可以提高编译效率。
[0127]
图12图示根据当前块的预测模式来配置变换候选集的方法。根据本公开的实施例,编码器和解码器可以基于与当前块相对应的变换候选集来选择用于当前块的至少一个变换区域的变换核。变换候选集可以包括多个候选变换核。变换候选集可以根据所述当前块的预测模式而包括不同候选变换核。
[0128]
根据实施例,当前块可以是基于多个帧内预测模式中的一个来预测的块。这里,当前块的残差信号的图样可以根据用于当前块的预测的帧内预测模式而不同。如上所述,帧内预测模式信息可以指示帧内预测方向。因此,当前块的残差信号的图样可以根据由当前块的帧内预测模式信息所指示的预测方向而不同。编码器和解码器可以通过根据预测方向使用多个不同的变换候选集来提高编译效率。
[0129]
因此,编码器和解码器可以从与当前块的帧内预测模式相对应的变换候选集中确定将在当前块的变换区域中使用的变换核。例如,可以经由指示变换候选集中包括的多个候选变换核中的一个候选变换核的候选索引用信号发送要在变换区域中使用的变换核。如果对应于当前块的帧内预测模式的变换候选集包括两个候选变换核,则指示在变换区域中使用的变换核的候选索引可以被表达为1位。
[0130]
此外,可以针对变换区域的垂直和水平方向中的每一个使用不同的变换候选集。由于基于方向性而执行的帧内预测方法的特性,预测区域的残差信号的垂直方向图样和水平方向图样可以彼此不同。因此,可以从单独的变换候选集获得用于使用特定帧内预测模式预测的块的垂直变换核和水平变换核。在本公开中,用于特定变换区域的垂直变换的变换核可以被称为垂直变换核。用于特定变换区域的水平变换的变换核可以被称为水平变换核。图12(a)图示分别与67个帧内预测模式索引相对应的变换候选集。在图12(a)中,垂直(v)表示用于垂直变换核的变换候选集。水平(h)表示用于水平变换核的变换候选集。
[0131]
图12(b)图示根据变换候选集所定义的候选变换核。根据实施例,第一变换候选集(例如,图12b中的变换集0)可以包括基于dst-vii的候选变换核和基于dct-viii的候选变换核。第二变换候选集(例如,图12(b)中的变换集1)可以包括基于dst-vii的候选变换核和基于dst-i的候选变换核。第三变换候选集(例如,图12(b)中的变换集2)可以包括基于dst-vii的候选变换核和基于dct-v的候选变换核。图12图示变换候选集包括两个候选变换核,但本公开不限于此。
[0132]
根据另一实施例,当前块可以是帧间预测块。这里,可以从预配置的变换候选集获得在当前块的变换区域中使用的变换核。例如,预配置的变换候选集可以是上述多个变换候选集之一。图12(c)图示如果当前块是帧间预测块则与当前块相对应的变换候选集。例如,对应于帧间预测块的预配置的变换候选集可以包括基于dct-viii的候选变换核和基于dst-vii的候选变换核。也就是说,用于帧间预测块的变换区域的变换核可以是基于dct-viii的候选变换核和基于dst-vii的候选变换核中的一个。
[0133]
根据附加实施例,上述实施例可以有限地仅应用于亮度分量的变换块。这里,预配置的默认变换核可以用于色度分量的变换块。例如,默认变换核可以是基于dct-ii的变换核。
[0134]
根据附加实施例,编码器可以根据变换区域中的非零变换系数的数目,不用信号发送候选索引。这里,解码器可以通过将变换区域中的非零变换系数的数目与预配置的数
目进行比较来确定变换核。例如,如果非零变换系数的数目为一或二,则可以不用信号发送候选索引。这里,逆变换单元可以通过使用预配置的变换核来执行对应区域的变换。预配置的变换核可以是基于dst-vii的变换核。
[0135]
图13图示根据集索引确定的水平变换核和垂直变换核。根据本公开的实施例,可以用信号发送指示多个可用变换核当中的用于特定区域的残差信号的变换核的信息。这里,可以用信号发送指示多个可用变换核中的一个可用变换核的信息,而不管与对应区域相对应的预测模式如何。例如,编码器可以用信号发送指示用于特定区域的残差信号的变换核的变换核信息。解码器可以通过使用用信号发送的变换核信息来获得用于对应区域的变换核。变换核信息可以包括以下中的至少一个:指示对应区域的水平变换核的信息和指示对应区域的垂直变换核的信息。该方法可以被称为上述的多变换选择(mts)。
[0136]
变换核可以分别由指示多个可用变换核的核索引中的一个核索引来指示。根据实施例,与核索引“0”相对应的变换核可以是基于dct-ii的变换核,与核索引“1”相对应的变换核可以是基于dst-vii的变换核,并且与核索引“2”相对应的变换核可以是基于dct-viii的变换核。
[0137]
根据实施例,变换核信息可以指示变换核集的集索引。变换核集可以表示要用作垂直变换核的变换核与要用作水平变换核的变换核的组合。集索引可以指示指示水平变换核的核索引与指示垂直变换核的核索引的组合。参照图13(a),当特定区域的变换核信息指示表示第一变换核集的集索引(例如,在图13(a)的其中tu_mts_idx[x0][y0]为0的情况下)时,对应区域的垂直变换核可以是与核索引“0”相对应的变换核。该区域的水平变换核可以是与核索引“0”相对应的变换核。
[0138]
此外,图13(b)图示与核索引相对应的变换核。参照图13(b),与第一核索引“0”相对应的变换核可以指示基于dct-ii的变换核。参照图13(b),与第二核索引“1”相对应的变换核可以指示基于dst-vii的变换核。参照图13(b),与第三核索引“2”相对应的变换核可以指示基于dct-viii的变换核。
[0139]
根据附加实施例,上述实施例可以有限地仅应用于亮度块。这里,预配置的默认变换核可以用于色度分量。例如,默认变换核可以是基于dct-ii的变换核。可以以变换块为单位用信号发送上述集索引。
[0140]
此外,可以经由包括当前块的高级别的报头来用信号发送指示是否用信号发送集索引的信息。这里,高级别可以指示包括当前块的切片/图块、图片或序列。可以经由用于每种预测方法的单独的标志来用信号发送指示是否用信号发送集索引的信息。例如,在确定块的变换核时,可以针对帧内预测块和帧间预测块中的每一个独立地配置指示是否使用集索引的标志。
[0141]
根据实施例,如果指示是否用信号发送包括变换块的高级别的集索引的信息指示没有显式地用信号发送集索引,则可以使用不同的方法来确定关于对应变换块的变换核。例如,可以基于从除了集索引之外的信息推导出的信息来确定要应用于当前变换块的逆变换的变换核。具体地,解码器可以从关于当前变换块用信号发送的信息中推导指示用于当前变换块的变换核的信息。也就是说,可以隐式地用信号发送指示垂直变换核的信息和指示水平变换核的信息,这些信息将在变换块中使用。根据另一实施例,如果指示是否用信号发送包括变换块的高级别的集索引的信息指示显式地用信号发送集索引,则解码器可以基
于用信号发送的集索引来获得用于变换块的变换核。
[0142]
根据附加实施例,可以根据变换区域中的非零变换系数的数量来确定编码器是否用信号发送集索引。这里,解码器可以通过将变换区域中的非零变换系数的数目与预配置的数目进行比较来确定变换核。例如,如果非零变换系数的数目为二或更小,则可以不用信号发送集索引。这里,逆变换单元可以通过使用预配置的变换核来执行对应区域的变换。预配置的变换核可以是基于dst-vii的变换核。
[0143]
由于作为原始信号和预测信号(预测子)之间的差的残差信号示出信号的能量分布根据预测方法而变化的特性,所以如果根据诸如mts的预测方法自适应地选择变换核,则可以提高编译效率。此外,当仅使用mts或dct-ii核的变换被称为初次变换时,可以对初次变换的系数块附加地执行二次变换,由此提高编码效率。该二次变换可以改善能量压缩,尤其是对于图片内预测的残差信号块,其中强能量很可能存在于除了残差信号块的水平或垂直方向之外的方向。
[0144]
图14图示在被配置为在块级别执行二次变换的解码器中重构残差信号的过程。可以以变换单元(tu)或tu内的子块为单位执行残差信号的重构。图14图示重构对其应用二次变换的残差信号块的过程,并且可以首先对解量化的变换系数块执行逆二次变换。尽管解码器可以对tu中的w
×
h(w:水平样本的数量,h:垂直样本的数量)的所有样本执行逆二次变换,但是通过考虑复杂度,可以仅对作为低频区域的左上方的具有大小为w’xh’的子块执行逆二次变换。这里,w’小于或等于w,并且h’小于或等于h。根据tu的大小,可以不同地配置左上方的子块的大小w’xh’。例如,如果min(w,h)=4,则w’和h’两者可以被配置为4,并且如果min(w,h)=8,则w’和h’两者可以被配置为8。在执行逆二次变换之后,解码器可以获取tu中的左上方的具有大小w’xh’的子块变换系数,并且可以对具有wxh的整个大小的变换系数块执行初次逆变换,从而重构残差信号块。
[0145]
可以通过包括在诸如sps、pps、切片报头或图块组报头等高级语法(hls)中的至少一个中,以1位标志的形式指示是否执行二次变换。
[0146]
如果hls指示执行二次变换,则可以由1位标志来指示是否在编译单元(cu)级别应用二次变换。另外,当将二次变换应用于当前块时,可以指示表示用于二次变换的变换核的索引,并且可以使用根据预测模式的预配置的变换核集内的由该索引指示的变换核来执行二次变换。可以使用截断一元或固定长度二值化方法来二值化表示变换核的索引。可以使用一个语法元素来指示表示是否在cu级别应用二次变换的1位标志和指示变换核的索引,并且在本公开中,这被称为二次变换索引(lfnst_idx)或低频不可分离变换索引(lfnst_idx)。也就是说,lfnst_idx可以指示是否应用二次变换以及在应用二次变换时使用的变换核。例如,如果lfnst_idx是0,则其可以指示不使用二次变换。另一方面,如果lfnst_idx大于0,则其可以指示应用二次变换,并且可以基于lfnst_idx来选择用于二次变换的变换核。这种lfnst_idx可以通过熵编译器来编码,诸如基于上下文执行自适应编码的上下文自适应二进制算术编译(cabac)和上下文自适应可变长度编译(cavlc)。如果当前cu被分区成小于cu大小的多个tu,则可以不应用二次变换,并且作为与二次变换相关的语法元素的lfnst_idx可以在解码器中在没有显式信令的情况下被配置为0。
[0147]
同时,由于在初次变换中使用的dct-ii、dst-vii和dct-viii核具有可分离的特性,所以可以对大小为nxn的残差块中的样本执行水平/垂直方向上的两个变换,并且变换
核的大小可以是nxn。另一方面,在二次变换的情况下,由于变换核具有不可分离的特性,所以如果在二次变换中考虑的样本的数目为nxn,则可以执行一个变换,并且变换核的大小可以是(n^2)x(n^2)。例如,当对左上方的4
×
4系数块执行二次变换时,可以应用16
×
16大小的变换核,并且当对左上方的8
×
8系数块执行二次变换时,可以应用64
×
64大小的变换核。由于64
×
64大小的变换核涉及大量乘法运算,因此其可能是编码器和解码器上的沉重负担。因此,当在二次变换中考虑的样本的数量减少时,可以减少存储变换核所需的计算量和存储器。
[0148]
图15图示用于使用减少数量的样本来应用二次变换的方法。可以通过将二次变换核矩阵与初次变换系数向量的相乘来表达二次变换,并且可以将二次变换解释为将初次变换系数映射到另一空间。这里,当要进行二次变换系数的数量减少时,即,当配置二次变换核的基向量的数量减少时,二次变换所需的计算量和存储变换核所需的存储器容量可能减少。例如,当对左上方的8
×
8系数块执行二次变换时,可以在要二次变换的系数的数目减少到16时应用大小为16
×
64的二次变换核,并且可以应用大小为64
×
16的逆二次变换。
[0149]
参照图15,编码器可以首先对残差信号块执行初次变换(前向初次变换)以获得初次变换系数块。当初次变换系数块的大小为m
×
n时,关于具有min(m,n)的值为4的帧内预测块,可以对初次变换系数块中的左上方的4
×
4样本执行4
×
4二次变换(前向二次变换)。4
×
4二次变换的核大小可以是16
×
16。关于具有等于或大于8的min(m,n)值的帧内预测块,可以对左上方的初次变换系数块的8
×
8样本执行8
×
8二次变换。由于8
×
8二次变换涉及大计算量和存储器,因此可以仅利用8
×
8样本中的一些。具体地,当初次变换系数块中的左上方的8
×
8块的第i行以及第j列的元素被表达为x(i,j)时,存在于两个区域{0《=i《=3,0《=j《=7}和{4《=i《=7,0《=i《=3}中的48个初次变换系数可以是二次变换的输入。这里,8
×
8二次变换的变换核大小可以是16
×
48。作为用于减少二次变换所需的计算量的另一实施例,可以仅计算二次变换中考虑的左上子块区域中所包括的初次变换系数,并且可以将剩余区域配置为0而不进行运算。因此,可以减少量化所需的计算量,并且比特流中所包括的非零变换系数的数量可以是预配置的值或更小。关于预配置的值,编码器和解码器两者可以使用相同值,并且该值可以取决于变换块的大小而不同。例如,如果变换块的大小是4
×
4或8
×
8,则预配置的值可以是8,否则(当变换块的大小既不是4
×
4也不是8
×
8时),预配置的值可以是16。
[0150]
由于可以通过二次变换核矩阵与输入向量的相乘来计算二次变换,因此编码器可以首先将初次变换系数块中的左上方的子块中的系数(二维阵列形式)配置为一维向量形式。用于将系数配置为向量的方法可以取决于帧内预测模式。当通过帧间预测获得当前块的预测子时,二次变换索引(lfnst_idx[xtby][ytby])可以是0。即,当二次变换索引(lfnst_idx[xtby][ytby])不是0时,可以通过帧内预测来获得当前块的预测子。附加地,当二次变换索引(lfnst_idx[xtby][ytby])是0时,指示是否应用低频不可分离变换的标志(lfnstenabledflag)可以指示不应用低频不可分离变换。即,当指示是否应用低频不可分离变换的标志(lfnstenabledflag)指示应用低频不可分离变换时,二次变换索引(lfnst_idx[xtby][ytby])可以不是0。附加地,当指示是否应用低频不可分离变换的标志(lfnstenabledflag)指示应用低频不可分离变换时,可以通过帧内预测来获得当前块的预测子。可以基于二次变换索引来获得指示是否应用低频不分离变换的标志。将参考图25描
述基于二次变换索引来获得指示是否应用低频不分离变换的标志(lfnstenabledflag)的过程。
[0151]
例如,当帧内预测模式小于或等于图6中所图示的帧内预测模式当中的第34角度模式,或者是使用亮度和色度之间的线性关系用于预测色度样本的intra_lt_cclm、intra_t_cclm和intra_l_cclm模式时,可以通过在水平方向上扫描初次变换系数块中的左上方的子块来将系数配置为向量。当初次变换系数块中的左上方的n
×
n块的第i行第j列的元素被表达为x(i,j)时,向量化系数可以被表达为[x(0,0),x(0,1),...,x(0,n-1),x(1,0),x(1,1),...,x(1,n-1),...,x(n-1,0),x(n-1,1),...,x(n-1,n-1)]。另一方面,如果帧内预测模式大于第34角度模式,则可以通过在垂直方向上扫描初次变换系数块中的左上方的子块来将系数配置为向量。向量化系数可以表达为[x(0,0),x(1,0),...,x(n-1,0),x(0,1),x(1,1),...,x(n-1,1),...,x(0,n-1),x(1,n-1),...,x(n-1,n-1)]。当在8
×
8二次变换中仅利用8
×
8样本中的一些时,其中i》3且j》3的系数x(i,j)可以不包括在上述向量配置方法中,并且变换核的大小可以是16
×
48。
[0152]
编码器可以通过向量化的初次变换系数块中的左上方的子块样本与二次变换核矩阵的相乘来获取二次变换系数。可以根据变换单元的大小、帧内模式和指示变换核的语法元素来确定二次变换核。
[0153]
二次变换系数是向量形式,因此可以将该系数表达为二维形式的数据。可以根据预配置的扫描顺序将已经二次变换的系数配置为左上方的系数子块。预配置的扫描顺序可以是右上对角扫描顺序,并且本公开不限于此,并且右上对角扫描顺序可以基于稍后描述的图16和图17中描述的方法来确定。
[0154]
包括二次变换系数的总变换单元大小的变换系数可以被包括在比特流中并且在量化之后被发送。比特流可以包括与二次变换相关的语法元素。具体地,比特流可以包括关于二次变换是否应用于当前块的信息和指示变换核的信息。比特流可以包括量化的变换系数,并且非零变换系数的数目可以小于或等于预配置的值。关于预配置的值,编码器和解码器两者可以使用相同的值,并且该值可以取决于变换块的大小而不同。例如,如果变换块的大小是4
×
4或8
×
8,则预配置的值可以是8,否则(当变换块的大小既不是4
×
4也不是8
×
8时),预配置的值可以是16。
[0155]
解码器可以首先从比特流解析量化的变换系数,并且包括在比特流中的非零变换系数可以根据变换块大小而不同。解码器可以通过解量化来获得变换系数。解码器可以基于与二次变换相关的语法元素来确定是否对当前块执行逆二次变换。当将逆二次变换应用于当前变换单元时,取决于变换单元的大小,8或16个变换系数可以是逆二次变换的输入。要作为逆二次变换的输入的系数的数目可以与从编码器的二次变换所输出的系数的数目匹配。例如,当变换单元的大小为4
×
4或8
×
8时,8个变换系数可以是逆二次变换的输入,否则,16个变换系数可以是逆二次变换的输入。当变换单元的大小为m
×
n时,关于具有min(m,n)的值为4的帧内预测块,可以对变换系数块中的左上方的4
×
4子块的16或8个系数执行4
×
4逆二次变换。4
×
4逆二次变换的变换核大小可以是16
×
16,并且逆二次变换核矩阵可以是二次变换核矩阵的转置矩阵。关于具有min(m,n)为8或更大的帧内预测块,可以对变换系数块中的左上方的4
×
4子块的16或8个系数执行8
×
8逆二次变换。8
×
8逆二次变换的变换核大小可以是48
×
16,并且逆二次变换核矩阵可以是二次变换核矩阵的转置矩阵。
[0156]
由于可以通过将逆二次变换核矩阵与输入向量的相乘来计算逆二次变换,因此解码器可以根据预配置的扫描顺序以向量形式配置已经首先输入的解量化的变换系数块。预配置的扫描顺序可以是右上对角扫描顺序,但本公开不限于此,并且右上对角扫描顺序可以基于稍后描述的图16和图17中描述的方法来确定。
[0157]
解码器可以通过向量化变换系数与逆二次变换核矩阵的乘法来获得初次变换系数,并且可以根据变换单元的大小、帧内模式和指示变换核的语法元素来确定逆二次变换核。逆二次变换核矩阵可以是二次变换核矩阵的转置矩阵。考虑到实施方式复杂度,核矩阵的元素可以是由10位或8位精度表达的整数。
[0158]
由于通过逆二次变换所获得的初次变换系数是向量形式,因此解码器可以再次将系数表达为二维形式的数据,这可以取决于帧内模式。这里,可以同样地应用基于由编码器应用的帧内模式的映射关系。
[0159]
解码器可以通过对包括通过执行逆二次变换所获得的变换系数的整个变换单元大小的变换系数块执行逆初次变换来获得残差信号。
[0160]
尽管图15中未示出,但是可以在每个过程之间执行位移位操作和裁剪操作以便将操作的结果表达为预配置的位数。预配置的位数可以是16。
[0161]
图16图示用于确定在编码器和解码器中使用的右上对角扫描顺序的方法。可以执行在编码或解码期间初始化扫描顺序的过程,并且可以根据块大小来初始化包括扫描顺序信息的阵列。具体地,变量log2blockwidth和log2blockheight可以是在[0,4]的范围中的值并且可以执行图16中所图示的6.5.2右上对角扫描顺序阵列初始化过程,其中针对log2blockwidth和log2blockheight的所有可用组合输入1《《log2blockwidth和1《《log2blockheight。可以将右上对角扫描顺序阵列初始化过程的输出指派给diagscanorder[log2blockwidth][log2blockheight]。通过6.5.2右上对角扫描顺序阵列初始化过程,编码器/解码器可以输出关于作为输入块的宽度的blkwidth和作为该块的高度的blkheight的阵列diagscan[spos][scomp]。阵列索引spos可以表示扫描位置,并且可以是[0,blkwidth*blkheight-1]范围内的值。当作为阵列索引的scomp是0时,spos可以表示水平分量(x),并且当scomp是1时,spos可以表示垂直分量(y)。在图16所示的算法中,根据右上对角扫描顺序,扫描位置spos处的二维坐标上的x坐标值和y坐标值可以被理解为分别被指派给diagscan[spos][0]和diagscan[spos][1]。即,存储在diagscanorder[log2blockwidth][log2blockheight][spos][scomp]阵列中的值可以指与按照宽度和高度分别为1《《log2blockwidth和1《《log2blockheight的块的右上对角扫描顺序在spos扫描位置处的scomp相对应的坐标值。
[0162]
图17图示根据块大小在图16中定义的右上对角扫描顺序。当log2blockwidth和log2blockheight均为2时,其可以表示4
×
4大小的块,并且图17中在灰色阴影区中显示的数字指示扫描位置spos。在spos位置处的x和y坐标值可以分别被指派给diagscanorder[log2blockwidth][log2blockheight][spos][0]和diagscanorder[log2blockwidth][log2blockheight][spos][1]。
[0163]
可以基于上述扫描顺序来编译变换系数信息,并且本公开描述基于其中使用右上对角扫描方法的情况的实施例,但本公开也可以应用于其它扫描方法。例如,其它扫描方法可以是水平方向或垂直方向扫描方法。
[0164]
另一方面,人类视觉系统(hvs)在低频带中与在高频带中相比具有敏感特性。即,由于存在于高频带中的失真往往不容易被人辨识,所以当使用人类视觉系统的特性来量化变换系数时,可以有效地对变换系数信息进行编译。具体地,可以根据变换系数的频率位置(索引)来控制量化程度。例如,由于人不容易辨识高频带的失真,所以变换系数越高(频率索引越大),可以乘以的缩放值越大。这可以被理解为由于量化而引起的误差随着频率的增加而增加,但是人类不太可能辨识到该误差。因此,与根据频率位置应用相同量化程度的情况相比,可以在类似地维持主观图像质量的同时以较低比特率对图像进行编译。或者,在相同的比特率下可以维持较好的主观图像质量。这是因为,通过使用根据频率位置的可变缩放值,可以减少诸如人类可以容易地辨识的块效应或dc闪烁的失真。
[0165]
编码器和解码器可以定义具有与变换块的大小相同的大小的缩放矩阵,以便根据变换系数的频率位置(索引)使用不同的缩放值。这种缩放矩阵可以是预配置的矩阵,或者可以在被包括在比特流中的同时被发送而无需显式信令。可以基于预配置的值或缩放矩阵来获得中间缩放因子阵列m[x][y]。
[0166]
在下文中,在本公开中,将描述用于发送和推导缩放矩阵的方法以及用于应用该矩阵的方法。
[0167]
图18图示自适应参数集(aps)语法结构。aps是包括在图片或切片级别所需的参数的集合,并且可以在sps和pps之后被发送。编码器可以在比特流中发送包括在sps、pps和aps中的参数,并且解码器可以在比特流中接收包括在sps、pps和aps中的参数。此外,由于在切片报头之前发送参数,所以可以在切片报头中参考aps。在aps语法结构中,可以首先指示adaptation_parameter_set_id。aps可以具有唯一id值,并且当在另一语法结构中参考aps数据时可以使用此id。例如,切片报头可以包括相应的切片数据将参考的aps的id。
[0168]
可以指示表示aps参数的类型的aps_params_type,并且可以根据aps_params_type确定adaptation_parameter_set_id值的范围。当aps_params_type是0时,aps参数类型可以是自适应环路滤波器(alf)参数alf_aps,当aps_params_type是1时,aps参数类型可以是亮度映射与色度缩放(lmcs)参数lmcs_aps,并且当aps_params_type是2时,aps参数类型可以是用于缩放矩阵推导所需的缩放列表参数scaling_aps。根据aps_params_type,可以执行alf_data()、lmcs_data()或scaling_list_data()的处理。
[0169]
图19图示切片报头语法结构。sps_scaling_list_enabled_flag是sps中包括和指示的元素。当sps_scaling_list_enabled_flag是1时,其可以指示在变换系数的缩放过程中使用缩放列表。当sps_scaling_list_enabled_flag是0时,其可以指示在变换系数缩放过程中不使用缩放列表。当在变换系数缩放过程中使用缩放列表时(如果sps_scaling_list_enabled_flag是1),可以指示表示推导缩放矩阵的方法的slice_scaling_list_present_flag。如果slice_scaling_list_present_flag是1,则可以参考包括缩放列表数据的aps(aps的aps_params_type对应于scaling_aps)来推导用于当前切片的缩放列表。如果slice_scaling_list_present_flag是1,则可以用信号发送slice_scaling_list_aps_id以指示要参考的缩放列表aps。slice_scaling_list_aps_id可以指示所参考的缩放列表aps的adaptation_parameter_set_id。如果slice_scaling_list_present_flag是0,则其可以指示在不使用通过aps发送的缩放列表的情况下从预配置的值推导缩放列表。为此,解码器可以存储用于缩放列表的预配置的值。如果slice_scaling_list_present_flag不存
在(如果没有显式地用信号发送),则该标志可以被配置为0。
[0170]
图20图示在缩放列表数据语法结构中使用的参数。在图20(a)中,sizeid可以定义为0到6,并且缩放矩阵(量化矩阵)的大小可以根据sizeid的值定义如下。
[0171]
在sizeid是0的情况下:1
×
1缩放矩阵
[0172]
在sizeid是1的情况下:2
×
2缩放矩阵
[0173]
在sizeid是2的情况下:4
×
4缩放矩阵
[0174]
在sizeid是3的情况下:8
×
8缩放矩阵
[0175]
在sizeid是4的情况下:16
×
16缩放矩阵
[0176]
在sizeid是5的情况下:32
×
32缩放矩阵
[0177]
在sizeid是6的情况下:64
×
64缩放矩阵
[0178]
在图20(b)中,可以根据sizeid、cupredmode(指示预测模式的变量)和cidx(指示颜色分量的变量)来定义matrixid。cupredmode是指示预测模式的变量,并且如果cupredmode是mode_intra,则其可以指示帧内预测,如果cupredmode是mode_inter,则其可以指示帧间预测,并且如果cupredmode是mode_ibc,则其可以指示帧内块复制(ibc)预测。cidx是表示颜色分量的变量,并且如果cidx为0,则其可以指示亮度y分量,如果cidx为1,则其可以指示色度cb分量,并且如果cidx为2,则其可以指示色度cr分量。根据sizeid、cupredmode和cidx,可以如下定义matrixid。
[0179]
sizeid={2,3,4,5,6},cupredmode=mode_intra,cidx=0:matrixid=0
[0180]
sizeid={1,2,3,4,5,6},cupredmode=mode_intra,cidx=1:matrixid=1
[0181]
sizeid={1,2,3,4,5,6},cupredmode=mode_intra,cidx=2:matrixid=2
[0182]
sizeid={2,3,4,5,6},cupredmode={mode_inter,mode_ibc},cidx=0:matrixid=3
[0183]
sizeid={1,2,3,4,5,6},cupredmode={mode_inter,mode_ibc},cidx=1:matrixid=4
[0184]
sizeid={1,2,3,4,5,6},cupredmode={mode_inter,mode_ibc}cidx=2:matrixid=5
[0185]
图21图示缩放列表数据语法结构。在图18中,如果aps_params_type是scaling_aps,则可以处理scaling_list_data()。在scaling_list_data()中,作为缩放矩阵(量化矩阵)的scalingfactor[sizeid][sizeid][matrixid][x][y]可以从作为所发送的或预配置的缩放列表的scalinglist[sizeid][matrixid][i]推导。这里,i可以是[0,min(63,(1《《(sizeid《《1))-1)]的范围内的值,并且x和y可以是[0,(1《《sizeid)-1]的范围内的值。与scalinglist相关的语法元素的解析和配置scalinglist的过程可以利用从1到6的sizeid和从0到5的matrixid执行。然而,如果它是与亮度相关的matrixid(在matrixid是0或3的情况下,这可以指示matrixid%3运算的结果是0)并且sizeid是1,则scalinglist[sizeid][matrixid][i]没有被定义,因此可以不执行与scalinglist相关的语法元素的解析和配置scalinglist的过程。附加地,如果它是与色度相关的matrixid(在matrixid是1,2,4和5的情况下,其可以指示matrixid%3运算的结果不是0),并且如果sizeid是6,则根据预配置的方法来推导scalinglist[sizeid][matrixid][i]而不解析语法元素,并且因此可以不执行与scalinglist相关的语法元素的解析和配置scalinglist的过程。
[0186]
同时,由于scalinglist需要根据matrixid和sizeid来定义,所以如果所有scalinglist[sizeid][matrixid][i]被显式地用信号发送,则信令开销可能相当大。因此,当scalinglist从预配置的值推导或从另一参考scalinglist复制时,可以减少用信号发送scalinglist所需的位数。为此,可以用信号发送scaling_list_pred_mode_flag[sizeid][matrixid]。如果scaling_list_pred_mode_flag[sizeid][matrixid]是0,则其可以指示缩放列表的值与参考缩放列表的值相同(即,当前缩放列表从参考缩放列表中推导),并且可以用信号发送scaling_list_pred_matrix_id_delta[sizeid][matrixid]以便指示所参考的缩放列表。如果scaling_list_pred_matrix_id_delta[sizeid][matrixid]是0,则scalinglist[sizeid][matrixid][i]可以从预配置的值推导。为此,解码器可以根据sizeid,matrixid和i来存储缩放值。如果scaling_list_pred_matrix_id_delta[sizeid][matrixid]不是0,则作为参考matrixid的refmatrixid可以基于scaling_list_pred_matrix_id_delta[sizeid][matrixid]、matrixid、sizeid来配置,并且scalinglist[sizeid][matrixid][i]可以被配置为与scalinglist[sizeid][refmatrixid][i]相同的值。
[0187]
如果scaling_list_pred_mode_flag[sizeid][matrixid]是1,则其可以指示显式地用信号发送缩放列表的值,并且可以通过附加语法元素信令来推导缩放列表。与缩放列表相关的语法可以包括应用于dc系数的缩放值和缩放列表元素的当前值(索引i处的值)和先前值(索引i-1处的值)之间的差因子。通过将8添加到scaling_list_dc_coeff_minus8[sizeid-4][matrixid]而获得的值可以指示应用于dc系数的缩放值。具体地,如果sizeid是4,则scaling_list_dc_coeff_minus8[0][matrixid] 8可以被指派给scalingfactor[4][4][matrixid][0][0]。如果sizeid是5,则scaling_list_dc_coeff_minus8[1][matrixid] 8可以被指派给scalingfactor[5][5][matrixid][0][0]。如果sizeid是6,则scaling_list_dc_coeff_minus8[2][matrixid] 8可以被指派给scalingfactor[6][6][matrixid][0][0]。如果scaling_list_pred_matrix_id_delta[sizeid][matrixid]不是0并且sizeid大于3,则scaling_list_dc_coeff_minus8[sizeid-4][matrixid]的值可以被配置为等于scaling_list_dc_coeff_minus8[sizeid-4][refmatrixid]的值。
[0188]
scaling_list_delta_coeff可以表示当scaling_list_pred_mode_flag[sizeid][matrixid]是1时在scalinglist[sizeid][matrixid][i]与scalinglist[sizeid][matrixid][i-1]之间的差值,并且可以是[-128,127]的范围内的值。scalinglist[sizeid][matrixid]是大于0的值,并且如果当scaling_list_pred_mode_flag[sizeid][matrixid]为1时scaling_list_delta_coeff不存在(如果没有显式地用信号发送),则scalinglist[sizeid][matrixid]可以被配置为0。
[0189]
nextcoeff的初始值可以被配置为8,并且表示scalinglist的元素的数量的coefnum可以被配置为min(64,(1《《(sizeid《《1)))。只有当sizeid大于3,scaling_list_dc_coeff_minus[sizeid-4][matrixid]才可以被用信号发送,并且这里,nextcoeff的初始值可以被配置为scaling_list_dc_coeff_minus[sizeid-4][matrixid] 8。
[0190]
在for-loop语句中,为了确定scalinglist[sizeid][matrixid][i],可以执行将差值添加到先前值的过程。diagscanorder[3][3][i][0]和diagscanorder[3][3][i][1]可以分别表示按照以8
×
8大小所定义的右上对角扫描顺序与扫描索引i相对应的x坐标和y坐
标。如果sizeid是6,并且x和y坐标两者都等于或大于4,则scaling_list_delta_coef不被显式地用信号发送,并且scalinglist[sizeid][matrixid][i]可以被配置为0。否则,scaling_list_delta_coef可以被用信号发送,并且nextcoef可以通过将scaling_list_delta_coef添加到先前值nextcoeff来确定。为了将nextcoef表示为预配置的位数,可以添加偏移并且可以执行模运算。更新的nextcoef可以被指派给scalinglist[sizeid][matrixid][i]。
[0191]
作为缩放矩阵(量化矩阵)的scalingfactor[sizeid][sizeid][matrixid][x][y]可以基于scalinglist[sizeid][matrixid][i]和scaling_list_dc_coef_minus8[sizeid-4][matrixid]来推导。x和y两者都可以是[0,(1《《sizeid)-1]范围内的值,x可以对应于水平频率索引,并且y可以对应于垂直频率索引。即,随着x增加,指代水平方向上的高频带,并且随着y增加,指代垂直方向上的高频带。如果x和y两者都是0,则它可以表示dc。
[0192]
2x2缩放矩阵scalingfactor[1][1][matrixid][x][y](i在[0,3]的范围内,并且matrixid是1,2,4和5)可以推导如下。
[0193]
x=diagscanorder[1][1][i][0]
[0194]
y=diagscanorder[1][1][i][1]
[0195]
scalingfactor[1][1][matrixid][x][y]=scalinglist[1][matrixid][i]
[0196]
4x4缩放矩阵scalingfactor[2][2][matrixid][x][y](i在[0,15]的范围内,并且matrixid是0,1,2,3,4和5)可以推导如下。
[0197]
x=diagscanorder[2][2][i][0]
[0198]
y=diagscanorder[2][2][i][1]
[0199]
scalingfactor[2][2][matrixid][x][y]=scalinglist[2][matrixid][i]
[0200]
8x8缩放矩阵scalingfactor[3][3][matrixid][x][y](i在[0,63]的范围内,并且matrixid是0,1,2,3,4和5)可以推导如下。
[0201]
x=diagscanorder[3][3][i][0]
[0202]
y=diagscanorder[3][3][i][1]
[0203]
scalingfactor[3][3][matrixid][x][y]=scalinglist[3][matrixid][i]
[0204]
16x16缩放矩阵scalingfactor[4][4][matrixid][x][y](i在[0,63]的范围内,j在[0,1]的范围内,k在[0,1]的范围内,并且matrixid是0,1,2,3,4和5)可以推导如下。
[0205]
x=diagscanorder[3][3][i][0]
[0206]
y=diagscanorder[3][3][i][1]
[0207]
scalingfactor[4][4][matrixid][x*2 k][y*2 j]=scalinglist[4][matrixid][i]
[0208]
scalingfactor[4][4][matrixid][0][0]=scaling_list_dc_coef_minus8[0][matrixid] 8
[0209]
32
×
32缩放矩阵scalingfactor[5][5][matrixid][x][y](i在[0,63]的范围内,j在[0,3]的范围内,k在[0,3]的范围内,并且matrixid是0,1,2,3,4和5)可以推导如下。
[0210]
x=diagscanorder[3][3][i][0]
[0211]
y=diagscanorder[3][3][i][1]
[0212]
scalingfactor[5][5][matrixid][x*4 k][y*4 j]=scalinglist[5][matrixid]
[i]
[0213]
scalingfactor[5][5][matrixid][0][0]=scaling_list_dc_coef_minus8[1][matrixid] 8
[0214]
64
×
64缩放矩阵scalingfactor[6][6][matrixid][x][y](i在[0,63]的范围内,j在[0,7]的范围内,k在[0,7]的范围内,并且matrixid是0和3)可以推导如下。
[0215]
x=diagscanorder[3][3][i][0]
[0216]
y=diagscanorder[3][3][i][1]
[0217]
scalingfactor[6][6][matrixid][x*8 k][y*8 j]=scalinglist[6][matrixid][i]
[0218]
scalingfactor[6][6][matrixid][0][0]=scaling_list_dc_coef_minus8[2][matrixid] 8
[0219]
当颜色格式是4:4:4时,64x 64缩放矩阵scalingfactor[6][6][matrixid][x][y](i在[0,63]的范围内,j在[0,7]的范围内,k在[0,7]的范围内,并且matrixid是1,2,4和5)可以推导如下。
[0220]
x=diagscanorder[3][3][i][0]
[0221]
y=diagscanorder[3][3][i][1]
[0222]
scalingfactor[6][6][matrixid][x*8 k][y*8 j]=scalinglist[5][matrixid][i]
[0223]
scalingfactor[6][6][matrixid][0][0]=scaling_list_dc_coef_minus8[1][matrixid] 8
[0224]
上述scalingfactor[sizeid][sizeid][matrixid][x][y]可以应用于具有变换块的宽度(1《《sizeid)和高度(1《《sizeid)的正方形变换块。另一方面,由于变换块可能不是正方形的,因此即使当变换块的宽度和高度不同时,scalingfactor也应该是可应用的。为此,当变换块不是正方形时,scalingfactor可以基于其面积大于当前块的面积的正方形的缩放列表来推导。
[0225]
同时,关于亮度变换块的最大大小的信息可以通过被包括在sps和pps中的一个中来指示。例如,sps_max_luma_transform_size_64_flag可以被包括在sps中并且用信号发送。当sps_max_luma_transform_size_64_flag是1时,其可以指示亮度样本的最大变换大小是64,并且当sps_max_luma_transform_size_64_flag是0时,其可以指示亮度样本的最大变换大小是32。基于sps_max_luma_transform_size_64_flag,变量maxtblog2sizey和maxtbsizey可以被配置如下。
[0226]
maxtblog2sizey=sps_max_luma_transform_size_64_flag?6:5
[0227]
maxtbsizey=1《《maxtblog2sizey
[0228]
变量maxtbsizey表示亮度变换块的最大大小,而maxtblog2sizey是通过对maxtbsizey取以2为底的对数而获得的值。在以上实施例中,已经描述关于亮度变换块的最大大小的信息在sps级别以标志的形式用信号发送,并且亮度变换块的最大大小被确定为64或32,但本公开不限于此。例如,可以直接用信号发送通过对亮度变换块的最大大小取以2为底的对数而获得的值。
[0229]
在以上实施例中,maxtblog2sizey和maxtbsizey可以在sps级别处被确定,并且参
数还可以应用于作为比sps更低的级别的图片、图块以及切片级别。
[0230]
在缩放矩阵的情况下,应该定义可用在图片和切片中的所有变换块的大小组合,并且变换块的大小组合可以根据亮度变换块的最大大小而不同。例如,如果maxtblog2sizey是5并且maxtbsizey是32,其可以理解为亮度变换块的最大大小为32且关于当前序列以下的所有图片、图块和切片的亮度变换块的最大大小为32。即,当前序列中不能使用64
×
64大小的变换核,并且变换块的宽度或高度不能大于32。因此,由于不存在当前序列中所使用的scalingfactor[wid][hid][matrixid][x][y](wid是6或hid是6),因此不显式地用信号发送推导scalingfactor[wid][hid]所需的语法元素,并且因此可以大大减少缩放列表信令所需的开销。
[0231]
图22图示考虑亮度变换块的最大大小的缩放列表数据语法结构。图22中没有描述的细节可以参考图21来理解。与图21的语法结构不同,sizeid可以在用于sizeid的for-loop语句中增加到的最大值可以基于关于在sps级别所确定的亮度变换块的最大大小的信息来配置而不是固定值。例如,sizeid可以增加到的最大值可以被配置为基于sps_max_luma_transform_size_64_flag配置的maxtblog2sizey。因此,可以不显式地用信号发送用于推导在当前序列中未参考的64
×
64缩放矩阵所需的语法元素,并且可以减少用信号发送缩放列表所需的位数。具体地,可以不用信号发送scaling_list_pred_mode_flag[6][matrixid]、scaling_list_pred_matrix_id_delta[6][matrixid]、scaling_list_dc_coef_minus8[2][matrixid]以及scaling_list_delta_coef。附加地,可以不执行图21中描述的scalingfactor[6][6][matrixid][x][y]推导过程,并且可以不执行从scalingfactor[6][6][matrixid][x][y]推导scalingfactor[wid][hid][matrixid][x][y](当wid=6时,hid《6或wid《6,hid=6)的过程。因此,可以减少在图片和切片解码之前准备解码所需的参数的过程的复杂度。
[0232]
同时,在编码和解码过程中,随着小大小的块的数量增加,吞吐量降低,因此编码器和解码器所允许的块的最小大小可能受到限制。例如,对于色度块,可以限制具有2
×
2、2
×
4和4
×
2的大小的块的生成。这里,由于没有使用scalingfactor[1][1][matrixid][x][y]、scalingfactor[1][2][matrixid][x][y]、scalingfactor[2][1][matrixid][x][y],相关语法元素可能不被显式地用信号发送。为此,在图21和22的sizeid的for循环语句中,sizeid的初始值可以被配置为2。可以不用信号发送scaling_list_pred_mode_flag[1][matrixid]、scaling_list_pred_matrix_id_delta[1][matrixid]以及scaling_list_delta_coef元素,并且可以不执行推导scalingfactor[1][1][matrixid][x][y]、scalingfactor[1][2]matrixid][x][y]和scalingfactor[2][1][matrixid][x][y]的过程。
[0233]
在下文中,在本公开中,描述了一种用于通过使用缩放(量化)矩阵来将缩放应用于变换系数的方法。
[0234]
图23图示应用于变换系数的缩放处理。该缩放处理可以接收(xtby,ytby)、ntbw、ntbh、cidx和bitdepth作为输入。每个变量的描述如下。
[0235]
(xtby、ytby):亮度位置,其可以指示当前亮度变换块的左上坐标并且可以是基于当前图片中的左上方的亮度样本的坐标。
[0236]
ntbw:变换块的宽度
[0237]
ntbh:变换块的高度
[0238]
cidx:是指示当前变换块的颜色分量的变量,并且如果cidx是0,则颜色分量可以是亮度y分量,如果cidx为1,则颜色分量可以是色度cb分量,并且如果cidx是2,则颜色分量可以是色度cr分量。
[0239]
bitdepth:当前颜色分量的位深度
[0240]
缩放处理可以对变换系数(量化的变换系数)执行缩放以获得缩放的变换系数(解量化的变换系数),并且可以对缩放的变换系数执行逆变换以重构残差信号。作为缩放处理的输出的缩放的变换系数d[x][y]可以是具有(ntbw)x(ntbh)大小的数据阵列。
[0241]
在缩放处理中,首先,可以推导缩放所需的量化参数(qp,qp变量)。可以根据量化参数值来确定量化步长,并且当qp值增加6时,量化步长可以具有增加两倍的特性。
[0242]
变量rectnontsflag可以推导如下。
[0243]
rectnontsflag=(((log2(ntbw) log2(ntbh))&1)==1&&transform_skip_flag[xtby][ytby]==0)
[0244]
作为指示是否将变换应用于当前块的标志的transform_skip_flag[xtby][ytby]可以指示是否将变换应用于当前亮度变换块。当transform_skip_flag[xtby][ytby]是1时,其可以指示不存在应用于当前亮度变换块的变换。当transform_skip_flag[xtby][ytby]是0时,其可以指示另一语法元素确定是否将变换应用于当前亮度变换块。
[0245]
基于正弦和余弦的变换核本身可能不是整数形式。为了以整数形式表达变换核,将变换核乘以2的指数幂(指数可以不是整数)并且舍入,从而可以获得近似的整数变换核。变换核的正交属性可以取决于近似误差而减弱。然而,由此导致的编译效率损失小,并且在硬件编码器和解码器中基于整数变换核的变换编译的实施方式复杂度显著低,因此,可以将变换核近似为整数形式。
[0246]
由于被整数化的变换核本身按2的指数幂按比例放大,因此在执行变换之后需要再次降低尺度的处理,并且该按比例缩小可以在缩放处理和变换处理中执行。稍后将描述的rectnontsflag和bdshift变量可以被理解为用于在缩放处理中执行的按比例缩小的参数。当rectnontsflag中的(log2(ntbw) log2(ntbh))&1的运算结果是1时,可以将执行水平变换和垂直变换之后的变换系数按比例放大2^(n 0.5)。当(log2(ntbw) log2(notch))&1的运算结果是0时,可以将在执行水平变换和垂直变换之后的变换系数按比例放大2^(m),且n和m为自然数。即,为了在执行逆变换时考虑根据变换块的宽度和高度的sqrt(2)缩放因子,如果当对当前变换块执行变换时(log2(ntbw) log2(ntbh))&1的运算结果是1(transform_skip_flag[xtby][ytby]==0),则可以将rectnontsflag配置为1。
[0247]
bdshift和bdoffset变量可以被配置如下。
[0248]
bdshift=bitdepth ((rectnontsflag?1:0) (log2(ntbw) log2(ntbh))/2)-5 dep_quant_enabled_flag
[0249]
bdoffset=(1《《bdshift)》》1
[0250]
可以在切片报头中指示dep_quant_enabled_flag,并且当dep_quant_enabled_flag是0时,它可以指示在对应切片中禁用相关量化。当dep_quant_enabled_flag是1时,它可以指示在对应切片中启用相关量化。
[0251]
levelscale[j][k]列表可以指示缩放的量化步长。量化步长基本上是实数的形
式,并且实数可以近似为整数的形式。附加地,当qp增加6时,量化步长增加2倍,因此qp定义了范围从0到5的量化步长。此外,关于其他qp持续时间,可以通过qp%6运算和qp/6运算来推导量化步长。
[0252]
(ntbw)x(ntbh)大小阵列dz可以被配置为与作为(ntbw)x(ntbh)大小阵列的transcoefflevel[xtby][ytby][cidx]相同,并且transcoefflevel[xtbt][ytby][cidx]表示在残差编译中获得的量化的变换系数。
[0253]
缩放的变换系数d[x][y](x=0,

,ntbw-1,y=0,

ntbh-1)可以通过以下过程来获得。
[0254]
首先,中间缩放因子阵列m[x][y]可以被配置如下。
[0255]
当sps_scaling_list_enabled_flag是0或transform_skip_flag[xtby][ytby]是1时,m[x][y]可以被配置为16。视频信号处理装置可以基于中间缩放因子阵列m[x][y]来缩放当前块。这指示相同缩放值用于所有频率索引x和y。如果没有应用于当前变换块的变换,则不能应用根据频率索引应用缩放值的方法,因为dz阵列不是频域信号。
[0256]
另一方面,当sps_scaling_list_enabled_flag是1并且transform_skip_flag[xtby][ytby]是0时,m[x][y]可以被配置为作为缩放(量化)矩阵的scalingfactor[log2(ntbw)][log2(ntbh)][matrixid][x][y]。
[0257]
最终缩放因子阵列ls[x][y]可以基于m[x][y]和levelscale[j][k]来配置。具体地,当dep_quant_enabled_flag是1时,ls[x][y]可以被配置为(m[x][y]*levelscale[rectnontsflag][(qp 1)%6])《《((qp 1)/6)。当recnontsflag是1时,可以应用其中与当rectnontsflag是0时相比尺度增加sqrt(2)的levelscale。当dep_quant_enabled_flag是1时,可以通过(qp 1)%6运算来确定levelscale[rectnontsflag][(qp 1)%6],并且可以通过((qp 1)/6)位左移运算来确定量化步长。当dep_quant_enabled_flag是0时,ls[x][y]可以被配置为(m[x][y]*levelscale[rectnontsflag][qp%6])《《(qp/6)。
[0258]
同时,在基于块的增量脉冲编码调制(bdpcm)预测的情况下,以预配置模式执行帧内预测,并且根据预配置模式,量化的变换系数可以被表达为先前位置处的样本和当前位置处的样本的和。即,在bdpcm模式中,结合量化的变换系数,根据预配置模式发送当前位置的样本和先前位置的样本之间的差。预配置模式可以是水平方向模式或垂直方向模式。当bdpcm被应用于当前编译块时,bdpcmflag[xtby][ytby]可以是1,并且bdpcmdir[xtby][ytby]可以指示预配置模式。
[0259]
如果bdpcmflag[xtby][ytby]是1并且bdpcmdir[xtby][ytby]是0,则其可以指示应用水平方向模式中的bdpcm,并且dz[x][y]可以被配置为clip3(coeffmin,coeffmax,dz[x-1][y] dz[x][y])。clip3(x,y,z)算子是用于将z值修剪为x和y之间的值的算子。如果z<x,clip3(x,y,z)=x,如果z>y,clip3(x,y,z)=y,否则(x《=z《=y),其可以被表达为clip3(x,y,z)=z。变换系数可以以预配置的位精度来表达,其可以是16位。这里,coeffmin可以被配置为-2^(16),并且coeffmax可以被配置为2^(16)-1。当bdpcmflag[xtby][ytby]是1并且bdpcmdir[xtby][ytby]是1时,它可以指示应用垂直方向模式上的bdpcm,并且dz[x][y]可以被配置为clip3(coeffmin,coeffmax,dz[x][y-1] dz[x][y])。
[0260]
dnc[x][y]可以通过(dz[x][y]*ls[x][y] bdoffset)》》bdshift来计算,并且缩放的变换系数d[x][y]可以通过clip3(coeffmin,coeffmax,dnc[x][y])来获得。
[0261]
图24图示根据本公开的另一实施例的应用于变换系数的缩放处理。图24中未描述的细节可以遵循图23中描述的细节。
[0262]
如图23中所描述,rectnontsflag是用于考虑到尺度因变换核而增加的变量,并且可以基于变换块的宽度和高度以及transform_skip_flag[xtby][ytby]来确定。当transform_skip_flag[xtby][ytby]是1时,其可以指示可以将变换应用于色度变换块并且不存在应用于亮度变换块的变换。因此,根据在图23中描述的rectnontsflag配置方法,当transform_skip_flag[xtby][ytby]是1时,即使变换应用于色度变换块(当cidx是1或2时),rectnontsflag也被配置为0,因此由于变换核的尺度增加。因此,不能准确地考虑由于bdshift和levelscale处的变换核而增加的尺度,这可能增加量化误差。
[0263]
在图24的缩放处理中,recnontsflag可以被配置如下。
[0264]
rectnontsflag=(((log2(ntbw) log2(ntbh))&1)==1&&!(transform_skip_flag[xtby][ytby]&&cidx==0))
[0265]
在上述rectnontsflag确定公式中,在亮度变换块的情况下(如果cidx是0),rectnontsflag可以基于transform_skip_flag[xtby][ytby]、变换块的宽度ntbw和变换块的高度ntbh来确定。在色度变换块的情况下(如果cidx是1或2),rectnontsflag可以基于变换块的宽度ntbw和变换块的高度ntbh来确定,而不管transform_skip_flag[xtby][ytby]如何。即,rectnontsflag可以基于cidx、ntbw、ntbh和transform_skip_flag[xtby][ytby]来确定。
[0266]
配置图23的中间缩放因子阵列m[x][y]的方法可以基于sps_scaling_list_enabled_flag和transform_skip_flag[xtby][ytby]来配置。即,如果sps_scaling_list_enabled_flag是0或transform_skip_flag[xtby][ytby]是1,则m[x][y]可以被配置为16,其在所有频率位置x和y中为相同值,并且这可以指示不取决于频率位置(索引)应用不同的缩放因子。如在用于配置rectnontsflag变量的方法中所述,即使transform_skip_flag[xtby][ytby]是1,也可以将变换应用于cidx为1或2的色度变换块,并且可以通过取决于频率位置(索引)应用不同的缩放因子来执行高效的变换系数缩放。为此,当cidx是1或2时,可以根据另一语法元素来确定m[x][y],而不管transform_skip_flag[xtby][ytby]如何。
[0267]
缩放(量化)矩阵(阵列)被设计成使得根据在初次变换的频域中的空间频率索引来应用不同的缩放因子(不同的缩放值)。由于hvs对高频区域不敏感并且对低频区域敏感,所以当在高频区域中使用大缩放值并且在低频区域中使用小缩放值时,可以有效地执行量化。这是因为,在高频区域中使用大缩放值所引起的量化误差极不可能被人辨识。
[0268]
同时,二次变换可以被理解为将初次变换系数映射到另一空间,并且二次变换系数的特性与初次变换系数的特性完全不同。例如,当不应用二次变换并且仅执行基于dct-ii核的初次变换时,d[0][0]可以表示dc系数。另一方面,当对基于dct-ii核的初次变换系数执行二次变换时,d[0][0]不表示dc系数。为了获得初次变换系数的dc系数,需要执行二次变换系数向量与逆二次变换核的第一基向量的内积,并且这可以理解为所有二次变换系数可能影响初次变换系数的低频区域。因此,根据索引x和y考虑关于二次变换系数的不同缩放因子可能使量化器的性能以及主观图像质量恶化。这是因为,通过将二次变换系数乘以缩放矩阵,与初次变换系数的低频区域相对应的系数上的量化误差增大。由于hvs对低频带中的失真敏感,所以主观图像质量可能恶化。因此,当将二次变换应用于当前变换块时,m
[x][y]可以在所有索引x和y中使用相同值。该值可以是16,并且m[x][y]具有平坦信号特性。通过lfnst_idx[xtby][ytby]语法元素来识别是否将二次变换应用于当前块,并且因此m[x][y]可以基于lfnst_idx[xtby][ytby]、变换块的宽度ntbw和变换块的高度ntbh来配置。
[0269]
根据以上描述,图24的中间缩放因子阵列m[x][y]可以基于sps_scaling_list_enabled_flag,transform_skip_flag[xtby][ytby]、cidx、lfnst_idx[xtby][ytby]、ntbw和ntbh来配置。当以下条件1、2和3中的至少一个为真时,中间缩放因子阵列m[x][y]可以被配置为在所有索引x和y中为相同值。该相同值可以是预定值,并且可以是16,这可以被理解为在所有x和y位置处应用相同的缩放因子(缩放值)。
[0270]
条件1(由行2410指示):在sps_scaling_list_enabled_flag是0的情况下
[0271]
条件2(由行2420指示):在transform_skip_flag[xtby][ytby]是1并且亮度变换块(cidx)是0的情况下
[0272]
条件3(由行2430指示):在lfnst_idx[xtby][ytby]不是0并且ntbw和ntbh两者都等于或大于4的情况下
[0273]
在条件3(由行2430指示)中,即使二次变换索引lfnst_idx[xtby][ytby]不是0,二次变换也可以不应用于变换块。用于将二次变换应用于当前变换块的条件可以是lfnst_idx[xtby][ytby]不是0并且变换块的宽度和高度两者等于或大于4的情况,例如,如果lfnst_idx[xtby][ytby]不是0并且亮度变换块的大小为16x4,则结合4:2:0颜色格式,与其相对应的色度变换块的大小可以是8x2。这里,将二次变换应用于亮度变换块,但即使lfnst_idx[xtby][ytby])不是0,二次变换也可以不应用于色度变换块。
[0274]
根据本公开的实施例,可以基于条件3中的二次变换索引lfnst_idx[xtby][ytby]来获取指示是否应用低频不可分离变换(lfnst)的标志。低频不可分离变换可以指二次变换或逆二次变换。如果指示是否应用低频不可分离变换的标志为1,则其可以指示低频不可分离变换应用于当前块。变换单元可以基于初次变换系数来执行低频不可分离变换(二次变换)。逆变换单元可以基于缩放(解量化)的变换系数来执行与低频不可分离变换相关的逆变换(逆二次变换)。
[0275]
如果指示是否应用低频不可分离变换的标志是0,则其可以指示低频不可分离变换不应用于当前块。解码器可以通过使用指示是否应用低频不可分离变换的标志而不是二次变换索引lfnst_idx[xtby][ytby]来获取中间缩放因子阵列m[x][y]。
[0276]
此外,根据本公开的实施例,基于ntbw和ntbh两者是否等于或大于4,可以确定是否从比特流获得中间缩放因子阵列m[x][y]。例如,当使用低频不可分离变换时,如果当前块的一侧的两个长度(ntbw和ntbh)都等于或大于4,则从比特流获得缩放因子可能是低效的。因此,当ntbw和ntbh中的一个小于4时,其可以指示从比特流获得中间缩放因子阵列m[x][y]。此外,当ntbw和ntbh两者等于或大于4时,其可以指示不从比特流获得中间缩放因子阵列m[x][y]。即,当ntbw和ntbh两者都等于或大于4时,中间缩放因子阵列m[x][y]可以被配置为预定值。该预定值可以是2^n。这里,n可以是自然数。预定值可以是例如16。
[0277]
总之,在条件3中,在指示是否应用低频不可分离变换的标志指示对当前块应用低频不可分离变换并且不从比特流提取中间缩放因子阵列(m[x][y])的情况下,中间缩放因子阵列可以被配置为预定值。即,视频信号处理装置可以将包括在中间缩放因子阵列m[x]
[y]中的所有因子配置为预定值16。这可以被理解为将所有频率索引x和y的变换系数缩放到相同的程度。因此,可以最小化在应用了低频不分离变换的块的低频带中可能发生的失真。
[0278]
即使不满足条件3,当满足条件2时,中间缩放因子阵列m[x][y]也可以被配置为预定值。即,即使指示是否应用低频不可分离变换的标志指示低频不可分离变换不被应用于当前块或者缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0,但是当指示是否对当前块应用变换的标志(transform_skip_flag)指示不应用变换时,视频信号处理装置也可以执行将中间缩放因子阵列中包括的所有因子配置为预定值的操作。当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0时,可以理解为缩放矩阵用于对其应用了低频不分离变换的块。即,即使指示是否应用低频不可分离变换的标志指示不将低频不可分离变换应用于当前块,或者缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)指示将缩放矩阵用于当前块,但是当指示是否将变换应用于当前块的标志(transform_skip_flag)指示不应用变换时,视频信号处理装置也可以执行将中间缩放因子阵列中包括的所有因子配置为预定值的操作。
[0279]
解码器可以基于中间缩放因子阵列来执行缩放用于当前块的变换系数的操作。解码器可以执行缩放的变换系数的逆变换以获得残差。此外,解码器可以执行基于当前块的残差和预测子来重构当前块的操作。
[0280]
当条件1、2和3都是假时,m[x][y]可以被配置为scalingfactor[log2(ntbw)][log2(ntbh)][matrixid][x][y]。scalingfactor可以基于比特流来获得。例如,当条件1、2和3都是假并且包括在中间缩放因子阵列m[x][y]中的所有因子未被配置为预定值时,解码器可以执行基于从比特流获得的值(scalingfactor)来推导中间缩放因子阵列m[x][y]的操作。由于已经结合图21和图22描述了获取scalingfactor的过程,因此将省略冗余描述。
[0281]
图25图示根据本公开的另一实施例的应用于变换系数的缩放处理。
[0282]
解码器可以执行基于中间缩放因子阵列m[x][y]来缩放当前块的变换系数的操作。此外,解码器可以执行对缩放的变换系数进行逆变换以获得当前块的残差的操作。此外,解码器可以执行基于当前块的残差和当前块的预测子来重构当前块的操作。在下文中,将详细描述这些操作。
[0283]
缩放处理可以接收(xtby,ytby)、treetype、ntbw、ntbh、predmode和cidx作为输入,并且每个变量的描述如下。
[0284]-(xtby,ytby):亮度位置,其可以指示当前亮度变换块中的左上方的样本并且可以是基于当前图片中的左上方的亮度样本的位置。
[0285]-treetype:由于亮度分量和色度分量之间存在高相关性,所以如果亮度和色度利用相同编译树结构来编码,则高效的图像编译是可能的。作为另一方法,当利用不同编译树结构对亮度和色度分量进行编码时,可以提高编译效率。变量treetype可以是指示当前处理的树的类型的变量(信息)。当treetype是single_tree时,可以理解为亮度和色度分量利用相同的单个编译树(单树)来编码。这里,编译单元可以包括亮度块,并且可以附加地包括根据颜色格式的色度块。当treetype是dual_tree_luma时,可以理解为亮度和色度分量利用不同的编译树(双树)来编码,并且当前处理的分量是亮度分量树。这里,编译单元可以仅包括亮度块。当treetype是dual_tree_chroma时,可以理解为亮度和色度分量利用不同的
编译树来编码,并且当前处理的分量是色度分量树。这里,编译单元可以仅包括色度块。
[0286]-ntbw:变换块的宽度
[0287]-ntbh:变换块的高度
[0288]-predmode:是指示当前编译单元的预测模式的变量。如果predmode是mode_intra,则其可以指示帧内预测,如果predmode是mode_inter,则其可以指示帧间预测,并且如果predmode是mode_ibc,则其可以指示ibc预测(一种用于根据由当前图片中的块向量所指示的参考块来生成预测块的预测方法)。
[0289]-cidx:是指示当前变换块的颜色分量的变量,并且如果cidx是0,则颜色分量可以是亮度y分量,如果cidx是1,则颜色分量可以是色度cb分量,并且如果cidx是2,则颜色分量可以是色度cr分量。
[0290]
缩放处理可以对变换系数(量化的变换系数)执行缩放以获得缩放的变换系数(解量化的变换系数)。作为缩放处理的输出的缩放的变换系数d[x][y]可以是具有(ntbw)x(ntbh)大小的阵列。
[0291]
在缩放处理中,首先,可以推导缩放所需的量化参数(qp,qp变量)。可以根据量化参数值来确定量化步长,并且当qp值增加6时,量化步长可以具有增加两倍的特性。
[0292]
取决于是否应用变换跳过,变量rectnontsflag和bdshift可以推导如下。
[0293]-如果不应用变换跳过(如果transform_skip_flag[xtby][ytby][cidx]是0):transform_skip_flag[xtby][ytby][cidx]语法元素可以指示是否将变换跳过应用于当前变换块,并且如果transform_skip_flag[xtby][ytby][cidx]是0,则其可以指示不将变换跳过应用于当前变换块。这可以理解为通过对缩放的(解量化)的变换系数执行逆变换来获得残差样本。
[0294]
rectnontsflag=(((log2(ntbw) log2(ntbh))&1)==1)?1:0;基于正弦和余弦的变换核本身可以不以如参照图9所描述的整数形式,并且为了降低实施方式复杂度,可以将变换核近似为整数形式。为了以整数形式表达变换核,将变换核乘以2的指数幂(指数可以不是整数)并且舍入,因此可以获得近似的整数变换核。变换核的正交属性可以取决于近似误差而减弱。然而,由此导致的编译效率损失小,并且在硬件编码器和解码器中基于整数变换核的变换编码的实施方式复杂度显著低,因此可以使用包括近似误差的整数变换核。由于被整数化的变换核本身按比例放大了2的指数幂,因此在执行变换之后需要再次降低尺度的处理,并且该按比例缩小可以在缩放处理和变换处理中执行。稍后将描述的rectnontsflag和bdshift变量可以被理解为用于在缩放处理中执行的按比例缩小的参数。当rectnontsflag中的(log2(ntbw) log2(ntbh))&1的运算结果是1时,在执行水平逆变换和垂直逆变换之后获得的变换系数可以按比例放大2^(n 0.5)。当(log2(ntbw) log2(ntbh))&1的运算结果是0时,在执行水平逆变换和垂直逆变换之后获得的变换系数可以按比例放大2^(m),并且n和m是自然数。即,为了在执行逆变换时考虑根据变换块的宽度和高度的sqrt(2)缩放因子,如果当对当前变换块执行逆变换时(log2(ntbw) log2(ntbh))&1的运算结果是1(在transform_skip_flag[xtby][ytby][cidx]是0的情况下),则变量rectnontsflag可以被配置为1。另一方面,如果(log2(ntbw) log2(ntbh))&1的运算结果是0,则变量rectnontsflag可以被配置为0。
[0295]
bdshift=bitdepth rectnontsflag (log2(ntbw) log2(ntbh))/2)-5 pic_dep_
quant_enabled_flag:变量bitdepth指示亮度和色度阵列样本的位深度。例如,当bitdepth是n(自然数)时,亮度和色度阵列样本可以具有在[0,2^n-1]范围内的值。变量bitdepth可以基于在sps、pps、图片报头、切片报头等中所包括的语法元素来配置。例如,可以用信号发送bit_depth_minus8语法元素以便执行sps中的位深度信息的信令。解码器可以基于所解析的bit_depth_minus8语法元素将变量bitdepth配置为8 bit_depth_minus8。pic_dep_quant_enabled_flag是指示在当前切片中是否启用/禁用相关量化的语法元素。当pic_dep_quant_enabled_flag是1时,它可以指示在当前切片中启用了相关量化。变量bdshift是用于按比例缩小的参数,并且可以根据位深度、是否考虑sqrt(2)缩放因子、变换块的大小以及是否启用/禁用相关量化来确定。
[0296]-当应用变换跳过时(当transform_skip_flag[xtby][ytby][cidx]是1时):其中transform_skip_flag[xtby][ytby][cidx]是1的情况可以指示将变换跳过应用于当前变换块,并且这可以表示将缩放(解量化)的变换系数用作残差。
[0297]-rectnontsflag=0:由于rectnontsflag是考虑到由于变换核而增加的缩放因子的变量,因此在不应用变换的变换跳过模式中,变量rectnontsflag可以被配置为0。
[0298]-bdshift=10:在不应用变换和相关量化的变换跳过模式中,变量bdshift可以被配置为固定值10。
[0299]
如上所述,当不应用变换跳过时以及当应用变换跳过时,可以使用不同的方法来推导rectnontsflag和bdshift,并且基于bdshift变量,bdoffset变量可以推导如下。
[0300]-bdoffset=(1《《bdshift)》》1:在稍后描述的缩放处理中,可以基于bdshift参数来执行位移位操作,并且变量bdoffset可以指示该位移位操作的舍入偏移。
[0301]
在稍后将描述的缩放处理中使用的levelscale[j][k]列表可以指示缩放的量化步长。量化步长基本上是实数的形式,其可以近似为整数的形式。此外,当qp增加6时,量化步长增加2倍,因此qp定义了范围从0到5的量化步长。此外,关于其他qp持续时间,可以通过qp%6运算和qp/6运算来推导量化步长。具体地,levelscale列表的元素值可以如下。
[0302]
levelscale[j][k]={{40,45,51,57,64,72},{57,64,72,80,90,102}},j=0,1,k=0,1,2,3,4,5
[0303]
(ntbw)x(ntbh)大小阵列dz可以被配置为与作为(ntbw)x(ntbh)大小阵列的transcoefflevel[xtby][ytby][cidx]相同,并且transcoefflevel[xtbt][ytby][cidx]表示在残差编译中获得的量化的变换系数。
[0304]
附加地,解码器可以执行对缩放的变换系数进行逆变换以获得残差的操作。这里,逆变换可以包括逆初次变换和逆二次变换。如已经描述的,在编码器和解码器的逆变换单元中执行逆变换,并且可以在编码器的变换单元中执行变换。由于逆变换是变换的逆,因此它在本公开中为了便于说明已经基于变换描述了,并且省略了逆变换的冗余描述。如上面参照图24所描述,二次变换可以将初次变换系数映射到另一空间,并且二次变换系数可以展现与初次变换系数的特性完全不同的特性。特别地,由于所有的二次变换系数可能影响初次变换系数的低频区域,因此根据索引x和y将不同的缩放值应用于二次变换系数可能使量化器的性能以及主观图像质量劣化。这是因为,通过将二次变换系数乘以缩放矩阵,与初次变换系数的低频区域相对应的系数上的量化误差增大。由于hvs对低频带中的失真敏感,所以主观图像质量可能恶化。另外,如上面参照图15所述,当将低频不可分离变换应用于当
前块时,高频区中除左上子块以外的所有初次变换系数可以被配置为0。将基于频率索引的可变缩放值应用于变换系数的分布可能是低效的。因此,当将二次变换应用于当前变换块时,m[x][y]可以在所有索引x和y中使用相同值。此值可以是16,并且m[x][y]具有平坦信号特性。
[0305]
因此,在缩放处理中,为了确定是否将二次变换应用于当前块,可以配置指示是否应用低频不可分离变换的标志变量(lfnstenabledflag)。当lfnstenabledflag是1时,其可以指示将二次变换应用于当前块,并且当lfnstenabledflag是0时,其可以指示不应用二次变换。例如,当指示是否应用低频不可分离变换的标志(lfnstenabledflag)指示将低频不可分离变换应用于当前块时,解码器可以执行通过执行缩放的变换系数的逆二次变换而获取一个或多个逆二次变换系数的操作。可以基于二次变换索引lfnst_idx来配置指示是否应用低频不分离变换的标志(lfnstenabledflag)。
[0306]
更具体地,视频信号处理装置可以执行基于二次变换索引和指示当前处理的树的类型的信息来确定指示是否应用低频不分离变换的标志(lfnstenabledflag)的操作。如果行2550、2560和2570的条件都为真,则作为指示是否应用低频不可分离变换的标志的lfnstenabledflag可以被配置为1,否则lfnstenabledflag可以被配置为0。然而,操作不限于此,如果行2550、2560和2570的条件中的至少一个为真,则作为指示是否应用低频不可分离变换的标志的lfnstenabledflag可以被配置为1,否则lfnstenabledflag可以被配置为0。
[0307]
当行2550中所指示的二次变换索引(lfnst_idx[xtby][ytby])不是0时:可以在编译单元级别指示是否应用二次变换,并且具体地,可以用信号发送二次变换索引(lfnst_idx[xtby][ytby])。lfnst_idx[xtby][ytby]可以指示是否应用lfnst(二次变换),并且可以指示多个lfnst变换核当中的要使用的变换核。当lfnst_idx[xtby][ytby]是0时,其可以指示在当前编译单元中不存在所使用的lfnst,并且当lfnst_idx[xtby][ytby]不是0时,其可以指示在当前编译单元中使用lfnst。具体地,当lfnst_idx[xtby][ytby]是i(i为自然数)时,其可以指示第i个变换核用于包括多个变换核的变换核集中。这里,i可以是1或2。
[0308]
当行2560中指示的变换块的宽度(ntbw)和高度(ntbh)两者等于或大于4时:当块的大小等于或大于预配置大小时,可以应用二次变换。具体地,当lfnst_idx[xtby][ytby]不是0时,可以在块的宽度和高度两者等于或大于4时应用二次变换。这里,变换块可以被包括在当前块中。
[0309]
当在行2570中所指示的指示当前正被处理的树的类型的信息(treetype)不是single_tree(在dual_tree_luma或者dual_tree_chroma的情况下),或者指示当前正被处理的树的类型的信息(treetype)是single_tree并且是亮度分量(在cidx是0的情况下)时:在应用lfnst的情况下,由于解码可以在执行逆二次变换和逆初次变换之后获取残差样本,所以与仅应用逆初次变换的情况相比,延迟时间可能增加。特别地,通过执行二次变换而引起的延迟时间在其中可能存在亮度和色度分量的单树中(当treetype是single_tree时)最大,因此在单树的情况下,即使在行2550和行2560中所指示的上述条件都为真,二次变换也可能不被应用于特定分量。具体地,当treetype是dual_tree_luma或treetype是dual_tree_chroma时,可以在行2550和行2560中所指示的上述条件全部为真时应用二次变换。当treetype是single_tree时,当在行2550和行2560中所指示的上述条件都为真时,可以仅对
亮度块应用二次变换(在cidx为0的情况下)。即使在行2550和行2560中指示的条件全部为真,也可以不将二次变换应用于单树的色度块(在cidx为1或2的情况下)。
[0310]
在行2550和行2560中指示的条件可以基本上相同。因此,视频信号处理装置可以仅使用在行2550和行2560中指示的条件之一。例如,仅在当前块的宽度(ntbw)和高度(ntbh)都等于或大于4时,编码器才可能在比特流中发送二次变换索引lfnst_idx。仅在当前块的宽度(ntbw)和高度(ntbh)都等于或大于4时,解码器才可以从比特流接收二次变换索引lfnst_idx。因此,视频信号处理装置可以仅使用在行2550和行2560中指示的条件之一。即,当在行2550和行2570中指示的条件都为真时,视频信号处理装置可以将指示是否应用低频不分离变换的标志(lfnstenabledflag)配置为1。当在行2550和行2570中指示的条件中的至少一个为假时,视频信号处理装置可以将指示是否应用低频不分离变换的标志(lfnstenabledflag)配置为0。可替代地,当在行2560和行2570中指示的条件都为真时,视频信号处理装置可以将指示是否应用低频不分离变换的标志(lfnstenabledflag)配置为1。此外,当在行2560和行2570中指示的条件中的至少一个为假时,视频信号处理装置可以将指示是否应用低频不分离变换的标志(lfnstenabledflag)配置为0。
[0311]
参照行2550到2570,其指示用于指示是否应用低频不可分离变换的标志(lfnstenabledflag)的配置的条件,可以如下配置指示是否将低频不可分离变换应用于亮度分量的当前块的标志(lfnstenabledflag)。视频信号处理装置可以执行确定指示当前正被处理的树的类型的信息(treetype)是否是single_tree或dual_tree_luma的操作。此外,当指示当前正被处理的树的类型的信息(treetype)是single_tree或dual_tree_luma时,视频信号处理装置可以执行确定二次变换索引是否为0的操作。附加地,如果二次变换索引(lfnst_idx)不是0,则视频信号处理装置被配置为使得指示低频不可分离变换是否被应用于亮度分量的标志(lfnstenabledflag)指示将低频不可分离变换应用于当前块。当二次变换索引(lfnst_idx)是0时,视频信号处理装置被配置为使得指示是否将低频不可分离变换应用于亮度分量的标志(lfnstenabledflag)指示不将低频不可分离变换应用于当前块。
[0312]
参照行2550到2570,其指示用于指示是否应用低频不可分离变换的标志(lfnstenabledflag)的配置的条件,可以如下配置指示是否将低频不可分离变换应用于色度分量的当前块的标志(lfnstenabledflag)。在指示当前正被处理的树的类型的信息(treetype)是dual_tree_chroma并且二次变换索引不是0的情况下,视频信号处理装置被配置为使得指示是否将低频不可分离变换应用于色度分量的标志(lfnstenabledflag)指示将低频不可分离变换应用于当前块。此外,在指示当前正被处理的树的类型的信息(treetype)不是dual_tree_chroma并且二次变换索引是0的情况下,视频信号处理装置被配置为使得指示是否将低频不可分离变换应用于色度分量的标志(lfnstenabledflag)指示不将低频不可分离变换应用于当前块。
[0313]
当在行2550、行2560和行2570中指示的上述条件全部为真时,lfnstenabledflag可以被配置为1,其可以指示将二次变换应用于当前块。此外,如已描述,当行2550和行2570中指示的条件全部为真时,lfnstenabledflag可以被配置为1,其可以指示将二次变换应用于当前块。另外,如果不满足以上条件,则lfnstenabledflag可以被配置为0,其可以指示不将二次变换应用于当前块。
[0314]
解码器可以对缩放的变换系数执行逆变换以获得残差。逆变换可以包括逆初次变
换和逆二次变换。
[0315]
缩放的变换系数d[x][y](x在0到ntbw-1的范围内,y在0到ntbh-1的范围内)可以通过以下过程来获得。
[0316]
首先,可以执行其中推导作为中间缩放因子阵列的m[x][y]的过程。视频信号处理装置可以基于指示是否应用低频不分离变换的标志(lfnstenabledflag)来执行确定中间缩放因子阵列的操作。更具体地,根据以上描述,图25的中间缩放因子阵列m[x][y]可以基于sps_scaling_list_enabled_flag、pic_scaling_list_present_flag、transform_skip_flag[xtby][ytby][cidx]、scaling_matrix_for_lfnst_disabled_flag和lfnstenabledflag中的至少一个来配置。如果在行2510、2520、2530或2540中指示的条件中的一个或多个为真,则m[x][y]可以在所有索引x,y处被配置为一个预定值。该一个预定值可以是2^n。这里,n可以是自然数。例如,一个预定值可以是16。这可以被理解为在所有x和y位置处应用相同的缩放因子(缩放值)。
[0317]
参照行2510,在sps_scaling_list_enabled_flag是0的情况下:指示在缩放处理中是否使用缩放列表的信息可以被包括在诸如sps、pps、图片报头和切片报头等较高级别语法中的至少一个中。例如,可以在sps中用信号发送sps_scaling_list_enabled_flag。当sps_scaling_list_enabled_flag是1时,其可以指示缩放列表用于缩放处理中的变换系数的缩放,并且当sps_scaling_list_enabled_flag是0时,其可以指示缩放列表不用于缩放处理中的变换系数的缩放。
[0318]
参照行2520,在pic_scaling_list_present_flag是0的情况下:如果sps_scaling_list_enabled_flag是1,则用于参考缩放列表数据的信息可以被附加地包括在诸如sps、pps、图片报头和切片报头等较高级别语法中的至少一个中。例如,pic_scaling_list_present_flag可以在图片报头中用信号发送。当pic_scaling_list_present_flag是1时,它可以指示通过参考缩放列表aps而获得的缩放列表数据被用在对应切片中。这里,可以附加地用信号发送用于参考缩放列表aps的标识符。当pic_scaling_list_present_flag是0时,其可以指示在对应切片中使用的缩放列表m[x][y]在所有索引x和y中被配置为相同值,并且该值可以为16。
[0319]
参照行2530,在指示是否将变换应用于当前块的标志(transform_skip_flag[xtby][ytby][cidx])是1的情况下:如果变换未被应用于当前变换块(如果应用变换跳过),则dz阵列不是频域信号,因此不能应用根据频率索引应用缩放值的方法。
[0320]
参照行2540,在缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是1并且指示是否应用低频不可分离变换的标志(lfnstenabledflag)是1的情况下:如上所述,可以配置作为指示将二次变换应用于当前块的变量的lfnstenabledflag。这里,lfnstenabledflag可以是指示是否应用低频不可分离变换(lfnst)的标志。低频不可分离变换可以指二次变换或逆二次变换。当指示是否应用低频不可分离变换的标志(lfnstenabledflag)是1时,其可以指示将低频不可分离变换应用于当前块。变换单元可以基于初次变换系数来执行低频不可分离变换(二次变换)。逆变换单元可以基于缩放(解量化)的变换系数来执行低频不可分离变换的逆变换(逆二次变换)。
[0321]
当指示是否应用低频不可分离变换的标志(lfnstenabledflag)是0时,其可以指示低频不可分离变换不应用于当前块。
[0322]
当应用二次变换时,m[x][y]可以被配置为用于所有索引x和y的一个预定值。这里,一个预定值可以是2^n。这里,n可以是自然数。例如,一个预定值可以是16。
[0323]
同时,可以基于二次变换索引(lfnst_idx[xtby][ytby])来配置指示是否应用低频不分离变换的标志(lfnstenabledflag),并且可以在对亮度和色度分量进行残差编译之后获得lfnst_idx[xtby][ytby]。这可以导致硬件解码器中的另一延迟时间。当在不依赖于lfnst_idx[xtby][ytby]的情况下推导中间缩放因子阵列m[x][y]时,解码器可以在执行亮度变换系数的编译之后立即对亮度块执行缩放处理(解量化)。因此,可以保证高吞吐量。另一方面,当基于lfnst_idx[xtby][ytby]来推导中间缩放因子阵列时,即使完成了用于亮度块的系数编译,也需要等待直到用于色度块的系数编译全部被执行,这可以导致与其对应的延迟时间。这种延迟时间在特定应用领域可能是致命的。为此,控制信息可以被包括在sps、pps、图片报头、切片报头和缩放列表数据语法(scaling_list_data)中的至少一个中。例如,scaling_matrix_for_lfnst_disabled_flag可以通过被包括在scaling_list_data()语法结构中用信号发送。缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)可以从sps、pps、图片报头或切片报头的至少一个比特流中获得。更详细地,可以从sps的比特流获得缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)。
[0324]
scaling_matrix_for_lfnst_disabled_flag可以是缩放因子阵列不使用标志。当scaling_matrix_for_lfnst_disabled_flag是1时,它可以指示m[x][y]被配置为在关于对其应用了lfnst的块的所有索引x和y中是相同的值。也就是说,当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是1时,其可以指示缩放矩阵(scalingfactor)不用于对其应用了低频不分离变换的块。此外,当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是1时,m[x][y]可以被配置为一个预定值。一个预定值可以是2^n。这里,n可以是自然数。例如,一个预定值可以是16。另一方面,当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0时,其可以指示还可以将可以根据索引x和y可变地配置的缩放列表m[x][y]应用于对其应用了lfnst的块。也就是说,当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0时,其可以指示缩放矩阵(scalingfactor)用于对其应用了低频不分离变换的块,并且m[x][y]可以基于缩放矩阵(scalingfactor)来配置。这里,由于解码器可以在不基于lfnst_idx[xtby][ytby]的情况下推导缩放列表,因此可以减少在缩放处理中产生的延迟时间。
[0325]
总之,参照行2540,在指示是否应用低频不可分离变换的标志(lfnstenabledflag)指示应用低频不可分离变换并且缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是1的情况下,中间缩放因子阵列m[x][y]中包括的所有因子可以被配置为一个预定值。一个预定值可以是2^n。这里,n可以是自然数。例如,一个预定值可以是16。当指示是否应用低频不分离变换的标志(lfnstenabledflag)指示不应用低频不分离变换时,或者当缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0时,视频信号处理装置可以通过进一步确定行2510至行2530中指示的条件来确定是否将包括在缩放因子阵列m[x][y]中的所有因子配置为预定值。
[0326]
例如,即使不满足行2540中指示的条件,当满足行2530中指示的条件时,中间缩放因子阵列m[x][y]可以被配置为预定值。即,即使指示是否应用低频不可分离变换的标志
(lfnstenabledflag)指示不应用低频不可分离变换或者缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)是0,当指示是否对当前块应用变换的标志(transform_skip_flag)指示不应用变换时,视频信号处理装置也可以执行将中间缩放因子阵列中包括的所有因子配置为预定值的操作。附加地,即使指示是否应用低频不可分离变换的标志(lfnstenabledflag)指示不应用低频不可分离变换,或者缩放因子阵列不使用标志(scaling_matrix_for_lfnst_disabled_flag)指示缩放矩阵用于低频不可分离变换所应用的块,当指示是否对当前块应用变换的标志(transform_skip_flag)指示不应用变换时,视频信号处理装置也可以执行将中间缩放因子阵列中包括的所有因子配置为预定值的操作。
[0327]
在行2510、行2520、行2530或行2540中的上述条件中的一个或多个为真的情况下,m[x][y]在所有索引x和y中被配置为相同值。该值可以是16。这可以被理解为在所有x和y位置处应用相同的缩放因子(缩放值)。
[0328]
另一方面,如果行2510、行2520、行2530和行2540中指示的条件都为假,则中间缩放因子阵列(m[x][y])可以基于通过参考缩放列表aps从scaling_list_data()获得的信息来推导。从scaling_list_data()获得的信息可以是例如scalingfactor。从scaling_list_data()获得的信息可以表示从比特流获得的信息。可以基于比特流来获得scalingfactor。例如,在行2510、行2520、行2530或行2540中指示的条件都为假,因此中间缩放因子阵列m[x][y]中包括的所有因子不被配置为预定值,解码器可以执行基于从比特流获得的值来推导中间缩放因子阵列m[x][y]的操作。这里,中间缩放因子阵列m[x][y]可以具有根据频率索引x和y而改变的值,并且可以执行根据频率分量的有效缩放。
[0329]
解码器可以基于中间缩放因子阵列m[x][y]来执行对当前块的变换系数的缩放。更具体地,最终缩放因子阵列ls[x][y]可以基于m[x][y]和levelscale[j][k]来配置。当应用相关量化时(在pic_dep_quant_enabled_flag是1并且transform_skip_flag[xtby[ytby][cidx]是0的情况下),ls[x][y]可以被配置为(m[x][y]*levelscale[rectnontsflag][(qp) 1)%6])《《((qp 1)/6)。当rectnontsflag是1时,与当rectnontsflag是0时相比,可以应用尺度增加了sqrt(2)的levelscale。如果通过使用(qp 1)%6作为索引对基本量化步长执行(qp 1)/6位左移(levelscale[rectnontsflag][(qp 1)%6]),则可以确定最终量化步长。这可以反映当应用相关量化并且(qp 1)增加6时量化步长增加两倍的特性,另一方面,当不应用相关量化时(在pic_dep_quant_enabled_flag是0或transform_skip_flag[xtby][ytby][cidx]是1的情况下),ls[x][y]可以被配置为(m[x][y]*levelscale[rectnontsflag][qp%6])《《(qp/6)。可以通过使用qp%6作为索引对基本量化步长执行qp/6的左移位(levelscale[rectnontsflag][qp%6])来确定最终量化步长。这可以反映当不应用相关量化并且qp增加6时量化步长增加两倍的特性。
[0330]
同时,在基于块的增量脉冲编码调制(bdpcm)预测的情况下,以预配置模式执行帧内预测,并且根据预配置模式,量化的变换系数可以被表达为先前位置处的样本和当前位置处的样本的和。即,在bdpcm模式中,关于量化的变换系数,根据预配置模式发送当前位置的样本和先前位置的样本之间的差。预配置模式可以是水平方向模式或垂直方向模式。当bdpcm被应用于当前编译块时,bdpcmflag[xtby][ytby]可以是1,并且bdpcmdir[xtby][ytby]可以指示预配置模式。
[0331]
如果bdpcmflag[xtby][ytby]是1并且bdpcmdir[xtby][ytby]是0,则其可以指示应用水平方向模式中的bdpcm,并且dz[x][y]可以被配置为clip3(coeffmin,coeffmax,dz[x-1][y] dz[x][y])。clip3(x,y,z)算子是用于将z值剪切为x和y之间的值的算子。如果z<x,clip3(x,y,z)=x,如果z>y,clip3(x,y,z)=y,否则(x《=z《=y),其可以被表达为clip3(x,y,z)=z。变换系数可以以预配置的位精度来表达,其可以是16位。这里,coeffmin可以被配置为-2^(16),并且coeffmax可以被配置为2^(16)-1。当bdpcmflag[xtby][ytby]是1并且bdpcmdir[xtby][ytby]是1时,可以指示应用垂直方向模式中的bdpcm,并且dz[x][y]可以被配置为clip3(coeffmin,coeffmax,dz[x][y-1] dz[x][y])。
[0332]
dnc[x][y]可以通过(dz[x][y]*ls[x][y] bdoffset)》》bdshift来计算,并且缩放的变换系数d[x][y]可以通过clip3(coeffmin,coeffmax,dnc[x][y])来获得。
[0333]
可以通过各种手段来实现本发明的上述实施例。例如,可以通过硬件、固件、软件或其组合来实现本发明的实施例。
[0334]
对于通过硬件实现的情况,可以通过专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑设备(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器等中的一个或多个来实现根据本发明的实施例的方法。
[0335]
在通过固件或软件实现的情况下,可以以执行上述功能或操作的模块、过程或函数的形式来实现根据本发明的实施例的方法。可以将软件代码存储在存储器中并由处理器驱动。存储器可以位于处理器内部或外部,并且可以通过各种已知的方式与处理器交换数据。
[0336]
一些实施例还可以以包括由计算机可执行的指令的记录介质的形式来实现,诸如由计算机执行的程序模块。计算机可读介质可以是计算机可访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。此外,计算机可读介质可以包括计算机存储介质和通信介质。该计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。通信介质通常包括计算机可读指令、数据结构、诸如程序模块的调制数据信号中的其他数据或其他传输机制,并且包括任何信息传递介质。
[0337]
本发明的上述描述仅用于说明目的,并且将会理解,本发明所属的本领域的普通技术人员可以在不改变本发明的技术思想或者基本特征的情况下对本发明进行改变,并且本发明可以以其他特定形式容易地被修改。因此,上述实施例是说明性的,并且在所有方面均不受限制。例如,被描述为单个实体的每个组件可以被分布和实现,并且同样,被描述为被分布的组件也可以以关联的方式被实现。
[0338]
本发明的范围由所附权利要求书而不是上述详细描述来限定,并且从所附权利要求书的含义和范围及其等效物导出的所有改变或修改都应解释为包括在本发明的范围内。
再多了解一些

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

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

相关文献