编码/解码方法、存储介质和发送方法与流程
未命名
10-17
阅读:122
评论:0
编码/解码方法、存储介质和发送方法
1.本技术是原案申请号为201980066113.2的发明专利申请(国际申请号:pct/kr2019/009990,申请日:2019年8月8日,发明名称:图像编码/解码方法和用于图像编码/解码方法的装置)的分案申请。
技术领域
2.本公开涉及用于对视频进行编码/解码的方法和设备,并且更具体地,涉及基于多重变换选择(mts)执行变换/逆变换的技术。
背景技术:
3.下一代视频内容将具有高空间分辨率、高帧频和高维度场景呈现的特性。为了处理这种内容,将显著增加诸如存储器存储、存储器访问速率和处理能力这样的技术。
4.因此,必须设计用于更高效地处理下一代视频内容的新编码工具。具体地,当应用变换时,就编码效率和复杂度而言,有必要设计更高效的变换。
技术实现要素:
5.[技术问题]
[0006]
本公开旨在提出针对用于视频压缩的变换核的低复杂度的操作算法。
[0007]
本公开旨在提出设计具有低复杂度的离散正弦变换7(dst7)的方法。
[0008]
本公开旨在提出将正向dst7和逆向dst7设计为离散傅里叶变换(dft)的方法。
[0009]
本公开旨在提出通过一维dft或二维dft实现dst7的方法。
[0010]
本公开旨在提出通过应用各种缩放方法仅使用整数运算来实现dst7的方法。
[0011]
本公开旨在提出通过使用dft实现dst7的方法和仅使用整数运算实现dst7的方法来设计具有长度8、16或32的dst7的方法。
[0012]
本公开旨在提出用于合并新的变换设计的编码器/解码器结构。
[0013]
本公开旨在提出本公开中提出的根据实施方式的整体变换处理。
[0014]
[技术方案]
[0015]
在本公开的一方面,一种基于多重变换选择(mts)来对视频信号进行解码的方法可以包括:解析指示是否将所述mts应用于当前块的逆变换的第一语法元素,其中,所述mts指示使用除了在所述当前块中预定义的默认变换类型之外的另一变换类型的变换模式;通过对所述当前块执行反量化来推导具有当前块的宽度和高度的反量化变换系数阵列;基于所述第一语法元素来确定应用于所述当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;以及通过使用所述竖直变换类型和所述水平变换类型对所述反量化变换系数阵列执行逆变换来推导具有所述当前块的宽度和高度的残差样本阵列。
[0016]
优选地,默认变换类型可以被配置为dct2,并且除了默认变换类型之外的其余变换类型可以被配置为dst7和dct8。
[0017]
优选地,如果第一语法元素指示mts不被应用于当前块的逆变换,则竖直变换类型和水平变换类型可以被确定为dct2。如果第一语法元素指示mts被应用于当前块的逆变换,则竖直变换类型和水平变换类型中的每一者可以被确定为dst7和dct8中的任一个。
[0018]
优选地,该方法还包括解析指示mts是否可用于帧内编码块的第二语法元素和指示mts是否可用于帧间编码块的第三语法元素。当第二语法元素为1时,第一语法元素可以存在于针对帧内编码块的变换单元语法中,并且当第三语法元素为1时,第一语法元素可以存在于针对帧间编码块的变换单元语法中。
[0019]
优选地,推导残差样本阵列的步骤可以包括使用竖直变换类型对反量化变换系数阵列的各列在竖直方向上执行一维变换处理,以及使用水平变换类型对通过针对各列的一维变换变换处理输出的中间样本阵列的各行在水平方向上执行一维变换处理。
[0020]
优选地,在水平方向上执行一维变换处理的步骤还可以包括基于预定义系数的最小值和最大值,裁剪通过针对各列的一维变换处理输出的中间样本值。
[0021]
在本公开的另一方面,一种基于多重变换选择(mts)来对视频信号进行解码的设备可以包括:语法元素解析单元,该语法元素解析单元被配置为解析指示是否将所述mts应用于当前块的逆变换的第一语法元素,其中,所述mts指示使用除了在所述当前块中预定义的默认变换类型之外的另一变换类型的变换模式;反量化变换系数推导单元,该反量化变换系数推导单元被配置为通过对所述当前块执行反量化来推导具有所述当前块的宽度和高度的反量化变换系数阵列;变换类型确定单元,该变换类型确定单元被配置为基于所述第一语法元素来确定应用于所述当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;以及残差样本推导单元,该残差样本推导单元被配置为通过使用所述竖直变换类型和所述水平变换类型对所述反量化变换系数阵列执行逆变换来推导具有所述当前块的宽度和高度的残差样本阵列。
[0022]
优选地,默认变换类型可以被配置为dct2,并且除了默认变换类型之外的其余变换类型可以被配置为dst7和dct8。
[0023]
优选地,如果第一语法元素指示所述mts不被应用于当前块的逆变换,则竖直变换类型和水平变换类型可以被确定为dct2。如果第一语法元素指示所述mts被应用于当前块的逆变换,则竖直变换类型和水平变换类型中的每一者可以被确定为dst7和dct8中的任一个。
[0024]
优选地,语法元素解析单元可以被配置为解析指示所述mts是否可用于帧内编码块的第二语法元素和指示所述mts是否可用于帧间编码块的第三语法元素。当第二语法元素为1时,第一语法元素可以存在于针对帧内编码块的变换单元语法中,并且当第三语法元素为1时,第一语法元素可以存在于针对帧间编码块的变换单元语法中。
[0025]
优选地,残差样本推导单元可以被配置为使用竖直变换类型对反量化变换系数阵列的各列在竖直方向上执行一维变换处理,以及使用水平变换类型对通过针对各列的一维变换处理输出的中间样本阵列的各行在水平方向上执行一维变换处理。
[0026]
优选地,残差样本推导单元可以被配置为基于预定义系数的最小值和最大值,裁剪通过针对各列的一维变换处理输出的中间样本值。
[0027]
[有利效果]
[0028]
本公开可以通过提供设计具有低复杂度的离散正弦变换7(dst7)的方法来减少存
储器使用和操作复杂度。
[0029]
此外,本公开可以通过在对静止图像或运动图像进行编码时将正向dst7和逆向dst7设计为dft来通过fft算法降低dst7的复杂度。
[0030]
如上所述,通过复杂度低的新操作算法,可以降低操作复杂度并且可以提高编码效率。
附图说明
[0031]
图1是例示了根据本公开的实施方式的用于对视频信号进行编码的编码器的配置的框图。
[0032]
图2是例示了根据本公开的实施方式的用于对视频信号进行解码的解码器的配置的框图。
[0033]
图3a至图3d例示了可以应用本公开的实施方式,图3a是用于描述基于四叉树(下文中被称为“qt”)的块分割结构的示图,图3b是用于描述基于二叉树(下文中被称为“bt”)的块分割结构的示图,图3c是用于描述基于三叉树(下文中被称为“tt”)的块分割结构的示图,并且图3d是用于描述基于非对称树(下文中被称为“at”)的块分割结构的示图。
[0034]
图4是应用本公开的实施方式,并且例示了编码器内的变换和量化单元120/130以及反量化和逆变换单元140/150的示意性框图。
[0035]
图5是应用本公开的实施方式,并且例示了解码器内的反量化和逆变换单元220/230的示意性框图。
[0036]
图6是示出了作为应用本公开的实施方式的应用多重变换选择(mts)的变换配置组的表。
[0037]
图7是示出了作为应用本公开的实施方式的执行多重变换选择(mts)的编码处理的流程图。
[0038]
图8是示出了作为应用本公开的实施方式的执行多重变换选择(mts)的解码处理的流程图。
[0039]
图9是用于描述作为应用本公开的实施方式的对mts标志和mts索引进行编码的处理的流程图。
[0040]
图10是用于描述作为应用本公开的实施方式的基于mts标志和mts索引向行或列应用水平变换或竖直变换的解码处理的流程图。
[0041]
图11是作为应用本公开的实施方式的基于变换相关参数执行逆变换的流程图。
[0042]
图12是示出了作为应用本公开的实施方式的在nsst中针对每种帧内预测模式分配变换集的表。
[0043]
图13是作为应用本公开的实施方式的吉文斯旋转的计算流程图。
[0044]
图14例示了作为应用本公开的实施方式的由吉文斯旋转层和置换构成的4
×
4nsst中的一轮配置。
[0045]
图15是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度16的正向dst7的流程图。
[0046]
图16是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度16的逆向dst7的流程图。
[0047]
图17至图19是应用本公开的实施方式,并且例示了其中应用图15和图16的xdst7_fft_b16函数的流程图。
[0048]
图20是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度32的正向dst7的流程图。
[0049]
图21是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度32的正向dst7的流程图。
[0050]
图22至图24是应用本公开的实施方式,并且例示了其中应用图15和图16的xdst7_fft_b16函数的流程图。
[0051]
图25是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度8的正向dst7的流程图。
[0052]
图26是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度8的逆向dst7的流程图。
[0053]
图27是应用本公开的实施方式,并且例示了已经应用33点dft的16
×
16dst7的框图。
[0054]
图28是应用本公开的实施方式,并且例示了已经应用65点dft的32
×
32dst7的框图。
[0055]
图29是应用本公开的实施方式,并且例示了其中正向离散正弦变换7(dst7)和正向离散余弦变换8(dct8)被作为离散傅里叶变换(dtf)执行的编码流程图。
[0056]
图30是应用本公开的实施方式,并且例示了其中逆向离散正弦变换7(dst7)和逆向离散余弦变换8(dct8)被作为离散傅里叶变换(dtf)执行的解码流程图。
[0057]
图31是例示了根据应用本公开的实施方式的基于多重变换选择(mts)对视频信号进行解码的方法的流程图。
[0058]
图32是例示了根据应用本公开的实施方式的基于多重变换选择(mts)对视频信号进行解码的设备的示图。
[0059]
图33例示了应用本公开的视频编码系统。
[0060]
图34是应用本公开的实施方式,并且例示了内容流传输系统的结构示图。
具体实施方式
[0061]
下文中,将参考附图详细描述本公开的实施方式的配置和操作,参考附图描述的本公开的配置和操作被作为实施方式描述,并且本公开的范围、核心配置和操作不限于此。
[0062]
另外,本公开中使用的术语选自当前广泛使用的通用术语,但在特定情况下,使用申请人随机选择的术语。在这种情况下,在对相应部分的详细描述中,因为清楚描述了术语的含义,所以不应该仅利用在本公开的描述中使用的术语的名称来解释术语,并且应该理解和解释对应术语的含义。
[0063]
此外,当存在为了描述本公开而选择的常见术语或具有相似含义的另一术语时,本公开中使用的术语可以被替换为更适当的解释。例如,在每个编码处理中,可以适当地替换和解释信号、数据、样本、图片、帧和块。另外,在每个编码处理中,可以适当地替换和解释分割、分解、分离和划分。
[0064]
在本公开中,多重变换选择(mts)可以是指用于使用至少两个变换类型执行变换
的方法。这也可以被表示为自适应多重变换(amt)或显式多重变换(emt),同样地,mts_idx也可以被表示为amt_idx、emt_idx、tu_mts_idx、amt_tu_idx、emt_tu_idx、变换索引、变换组合索引,并且本公开不限于这些表述。
[0065]
图1是作为应用本公开的实施方式的执行视频信号编码的编码器的示意性框图。
[0066]
参照图1,编码器100可以被配置为包括图像划分单元110、变换单元120、量化单元130、反量化单元140、逆变换单元150、滤波单元160、解码图片缓冲器(dpb)170、帧间预测单元180、帧内预测单元185和熵编码单元190。
[0067]
图像划分单元110将输入到编码器100中的输入图像(或图片或帧)划分成一个或更多个处理单元。例如,处理单元可以是编码树单元(ctu)、编码单元(cu)、预测单元(pu)或变换单元(tu)。
[0068]
然而,这些术语仅是为了方便描述本公开,并且本公开不限于这些术语的定义。另外,在本公开中,为了方便描述,术语“编码单元”被用作在对视频信号进行编码或解码时使用的单元,但本公开不限于此,并且可以根据本公开适当地做出解释。
[0069]
编码器100从输入图像信号中减去从帧间预测单元180或帧内预测单元185输出的预测信号(或预测块)以生成残差信号(或残差块),并且所生成的残差信号被发送到变换单元120。
[0070]
变换单元120可以通过向残差信号应用变换技术来生成变换系数。可以向四叉树结构正方形块和按二叉树结构、三叉树结构或非对称树结构划分的块(正方形或矩形)应用变换处理。
[0071]
变换单元120可以基于多个变换(或变换组合)来执行变换,并且变换方案可以被称为多重变换选择(mts)。mts也可以被称为自适应多重变换(amt)或增强型多重变换(emt)。
[0072]
mts(或amt或emt)可以是指基于从多个变换(或变换组合)中自适应地选择的变换(或变换组合)来执行的变换方案。
[0073]
所述多个变换(或变换组合)可以包括参考本公开的图6描述的变换(或变换组合)。在本公开中,变换或变换类型可以例如被书写如dct类型2、dct-ii、dct2或dct-2。
[0074]
变换单元120可以执行以下实施方式。
[0075]
本公开提供了将正向dst7和逆向dst7设计为离散傅里叶变换(dft)的方法。
[0076]
变换单元120可以通过一维dft或二维dft实现dst7。
[0077]
此外,变换单元120可以通过应用各种缩放方法仅使用整数运算来实现dst7。
[0078]
此外,变换单元120可以通过使用dft实现dst7的方法和仅使用整数运算实现dst7的方法来设计具有长度8、16或32的dst7。
[0079]
在本公开中将更详细地描述其详细实施方式。
[0080]
量化单元130可以对变换系数进行量化,并且将量化变换系数发送到熵编码单元190,并且熵编码单元190可以对量化信号进行熵编码,并且将熵编码后的量化信号作为比特流输出。
[0081]
尽管变换单元120和量化单元130被描述为分开的功能单元,但本公开不限于此,它们可以被组合成一个功能单元。反量化单元140和逆变换单元150也可以被类似地组合成一个功能单元。
[0082]
从量化单元130输出的量化信号可以被用于生成预测信号。例如,通过循环地通过反量化单元140和逆变换单元150对量化信号应用反量化和逆变换来重构残差信号。重构的残差信号被与从帧间预测单元180或帧内预测单元185输出的预测信号相加,以生成重构信号。
[0083]
此外,由于在这种压缩处理期间出现量化误差,因此可能出现示出块边界的劣化。这种现象被称为块伪影(blocking artifact),并且是评估图像质量的关键要素之一。为了减少劣化,可以执行滤波处理。通过滤波处理消除块劣化并减少当前图片的错误,以增强图像质量。
[0084]
滤波单元160对重构信号应用滤波,并且将所应用的重构信号输出到再现装置,或者将输出的重构信号发送到解码图片缓冲器170。帧间预测单元180可以使用从解码图片缓冲器170发送的滤波后的信号作为参考图片。如此,在帧间预测模式下,使用滤波后的图片作为参考图片,以增强图像质量和编码效率。
[0085]
解码图片缓冲器170可以存储滤波后的图片,以便在帧间预测单元180中使用滤波后的图片作为参考图片。
[0086]
帧间预测单元180执行时间预测和/或空间预测,以便通过参考重构图片来去除时间冗余和/或空间冗余。在这种情况下,由于用于预测的参考图片是在先前时间进行编码/解码时以块为单位量化和反量化的变换信号,因此可能存在块伪影或振铃伪影。
[0087]
因此,帧间预测单元180可以通过应用低通滤波器来以子像素为单位在像素之间对信号进行插值,以便解决由于该信号的不连续或量化而导致的性能下降。在这种情况下,子像素意指通过应用插值滤波器生成的虚拟像素,并且整数像素意指存在于重构图片中的实际像素。作为插值方法,可以采用线性插值、双线性插值、维纳滤波器等。
[0088]
向重构图片应用插值滤波器,以增强预测精度。例如,帧间预测单元180向整数像素应用插值滤波器以生成插值像素,并且可以通过使用由插值像素构成的插值块作为预测块来执行预测。
[0089]
此外,帧内预测单元185可以通过参考将经历当前编码的块附近的样本来预测当前块。帧内预测单元185可以执行以下处理,以便执行帧内预测。首先,可以准备参考样本,这是生成预测信号所需要的。另外,可以通过使用准备的参考样本来生成预测信号。此后,对预测模式进行编码。在这种情况下,可以通过参考样本补零和/或参考样本滤波来准备参考样品。由于参考样本经历了预测和重构处理,因此可能存在量化误差。因此,可以针对用于帧内预测的每个预测模式执行参考样本滤波处理,以便减小此误差。
[0090]
通过帧间预测单元180或帧内预测单元185生成的预测信号可以被用于生成重构信号或者被用于生成残差信号。
[0091]
图2是作为应用本公开的实施方式的执行视频信号解码的解码器的示意性框图。
[0092]
参照图2,解码器200可以被配置为包括解析单元(未例示)、熵解码单元210、反量化单元220、逆变换单元230、滤波单元240、解码图片缓冲器(dpb)单元250、帧间预测单元260和帧内预测单元265。
[0093]
另外,可以通过再现装置再现通过解码器200输出的重构视频信号。
[0094]
解码器200可以接收从图1的编码器100输出的信号,并且可以通过熵解码单元210对接收到的信号进行熵解码。
[0095]
反量化单元220通过使用量化步长信息从熵解码后的信号获得变换系数。
[0096]
逆变换单元230对变换系数进行逆变换,以获得残差信号。
[0097]
在这种情况下,本公开提供了针对按预测模式、块大小或块形状中的至少一者划分的每个变换配置组来配置变换组合的方法,并且逆变换单元230可以基于通过本公开配置的变换组合来执行逆变换。另外,可以应用本公开中描述的实施方式。
[0098]
逆变换单元230可以执行以下实施方式。
[0099]
本公开提供了将正向dst7和逆向dst7设计为离散傅里叶变换(dft)的方法。
[0100]
逆变换单元230可以通过一维dft或二维dft实现dst7。
[0101]
此外,逆变换单元230可以通过应用各种缩放方法仅使用整数运算来实现dst7。
[0102]
此外,逆变换单元230可以通过使用dft实现dst7的方法和仅使用整数运算实现dst7的方法来设计具有长度8、16或32的dst7。
[0103]
在实施方式中,逆变换单元230可以推导与变换索引对应的变换组合,并且可以使用dst7或dct8在竖直或水平方向上对当前块执行逆变换。在这种情况下,变换组合可以由水平变换和竖直变换构成,并且水平变换和竖直变换可以对应于dst7或dct8中的任一个。
[0104]
在实施方式中,当向dst7应用33点离散傅里叶变换(dft)时,可以包括将dst7的一行或一列划分为两个部分矢量信号的步骤;以及向两个部分矢量信号应用11点dft类型1或11点dft类型2的步骤。
[0105]
在实施方式中,当dst7的一行或一列被表示为src[0
…
15]时,两个部分矢量信号可以被划分为src[0
…
4]和src[5
…
15]。
[0106]
在实施方式中,当向dst7应用65点离散傅里叶变换(dft)时,可以包括将dst7的一行或一列划分为三个部分矢量信号的步骤;并且可以包括向三个部分矢量信号应用13点dft类型1或13点dft类型2的步骤。
[0107]
在实施方式中,当dst7的一行或一列被表示为src[0
…
31]时,三个部分矢量信号可以被划分为src[0
…
5]、src[6
…
18]和src[19
…
31]。
[0108]
在实施方式中,在三个部分矢量信号当中,可以向src[0
…
5]应用13点dft类型1,并且可以向src[6
…
18]和src[19
…
31]应用13点dft类型2。
[0109]
此外,逆变换单元230可以使用竖直主变换在竖直方向上对变换系数块执行逆主变换,并且可以使用水平主变换在水平方向上对变换系数块执行逆主变换。
[0110]
此外,在本实施方式中,在竖直变换之后,应用水平变换,但本公开不限于此。即,在应用水平变换之后,可以应用竖直变换。
[0111]
在实施方式中,水平变换与竖直变换的组合可以包括图6的实施方式中的至少一个。
[0112]
尽管反量化单元220和逆变换单元230被描述为分开的功能单元,但本公开不限于此,它们可以被组合成一个功能单元。
[0113]
所获得的残差信号被与从帧间预测单元260或帧内预测单元265输出的预测信号相加,以生成重构信号。
[0114]
滤波单元240对重构信号应用滤波,并且将所应用的重构信号输出到生成装置,或者将输出的重构信号发送到解码图片缓冲器单元250。帧间预测单元260可以使用从解码图片缓冲器单元250发送的滤波后的信号作为参考图片。
[0115]
在本公开中,在变换单元120和编码器100的相应功能单元中描述的实施方式可以分别等同地应用于逆变换单元230和解码器的对应功能单元。
[0116]
图3a至图3d例示了可以应用本公开的实施方式,图3a是用于描述基于四叉树(下文中被称为“qt”)的块分割结构的示图,图3b是用于描述基于二叉树(下文中被称为“bt”)的块分割结构的示图,图3c是用于描述基于三叉树(下文中被称为“tt”)的块分割结构的示图,并且图3d是用于描述基于非对称树(下文中被称为“at”)的块分割结构的示图。
[0117]
在视频编码时,可以基于四叉树(qt)分割一个块。此外,可以使用qt进一步递归地分割按qt分割的一个子块。可以使用二叉树(bt)、三叉树(tt)或非对称树(at)中的至少一种方法来分割不再被qt分割的叶块。bt可以具有水平bt(2n
×
n,2n
×
n)和竖直bt(n
×
2n,n
×
2n)这两种类型的分割。tt可以具有水平tt(2n
×
1/2n,2n
×
n,2n
×
1/2n)和竖直tt(1/2n
×
2n,n
×
2n,1/2n
×
2n)这两种类型的分割。at可以具有水平上at(2n
×
1/2n,2n
×
3/2n)、水平下at(2n
×
3/2n,2n
×
1/2n)、竖直左at(1/2n
×
2n,3/2n
×
2n)和竖直右at(3/2n
×
2n,1/2n
×
2n)这四种类型的分割。可以使用bt、tt或at进一步递归地分割bt、tt或at中的每一个。
[0118]
图3a示出了qt分割的示例。块a可以按qt被分割成四个子块a0、a1、a2和a3。子块a1可以按qt被分割成四个子块b0、b1、b2和b3。
[0119]
图3b示出了bt分割的示例。不再按qt分割的块b3可以被分割成竖直bt c0和c1或水平bt d0和d1。如块c0中一样,每个子块可以如同水平bt e0和e1或竖直bt f0和f1的形式进一步被递归地分割。
[0120]
图3c示出了tt分割的示例。不再按qt分割的块b3可以被分割成竖直tt c0、c1和c2或水平tt d0、d1和d2。如块c1中一样,每个子块可以如同水平tt e0、e1和e2或竖直tt f0、f1和f2的形式进一步被递归地分割。
[0121]
图3d示出了at分割的示例。不再按qt分割的块b3可以被分割成竖直at c0和c1或水平at d0和d1。如块c1中一样,每个子块可以如同水平at e0和e1或竖直tt f0和f1的形式进一步被递归地分割。
[0122]
此外,bt、tt和at分割可以被一起分割。例如,按bt分割的子块可以按tt或at被分割。此外,按tt分割的子块可以按bt或at被分割。按at分割的子块可以按bt或tt被分割。例如,在水平bt分割之后,每个子块可以被分割成竖直bt,或者在竖直bt分割之后,每个子块可以被分割成水平bt。两种类型的分割方法的分割顺序不同,但最终分割形状相同。
[0123]
此外,如果块被分割,则可以按各种方式定义搜索块的顺序。通常,从左到右或从上到下地执行搜索。搜索块可以意味着确定是否分割每个分割子块的附加块的顺序,或者可以意味着在块不再被分割的情况下每个子块的编码顺序,或者可以意味着当在子块中参考另一邻近块的信息时的搜索顺序。
[0124]
图4和图5是应用本公开的实施方式。图4例示了编码器内的变换和量化单元120/130以及反量化和逆变换单元140/150的示意性框图,并且图5例示了解码器内的反量化和逆变换单元220/230的示意性框图。
[0125]
参照图4,变换和量化单元120/130可以包括主变换单元121、二次变换单元122和量化单元130。反量化和逆变换单元140/150可以包括反量化单元140、逆二次变换单元151和逆主变换单元152。
[0126]
参照图5,反量化和逆变换单元220/230可以包括反量化单元220、逆二次变换单元
231和逆主变换单元232。
[0127]
在本公开中,当执行变换时,可以通过多个步骤执行变换。例如,如图4中,可以应用主变换和二次变换这两个步骤,或者可以根据算法使用更多的变换步骤。在这种情况下,主变换可以被称为核心变换。
[0128]
主变换单元121可以对残差信号应用主变换。在这种情况下,主变换可以被预定义为编码器和/或解码器中的表形式。
[0129]
离散余弦变换类型2(下文中,“dct2”)可以被应用于主变换。
[0130]
另选地,离散正弦变换类型7(下文中被称为“dst7”)可以被应用于特定情况。例如,在帧内预测模式下,dst7可以被应用于4
×
4块。
[0131]
另外,主变换可以采用多重变换选择(mts)的各种变换dst7、dct8、dst1和dct5的组合。例如,可以采用图6。
[0132]
二次变换单元122可以向主变换后的信号应用二次变换,并且这里,可以在编码器和/或解码器的表中预定义二次变换。
[0133]
作为实施方式,二次变换可以有条件地采用不可分二次变换(下文中,被称为“nsst”)。例如,nsst可以仅被应用于帧内预测块,并可以具有适于每个预测模式组的变换集。
[0134]
在这种情况下,可以基于相对于预测方向的对称性来配置预测模式组。例如,由于预测模式52和预测模式16基于预测模式34(对角方向)对称,因此可以通过形成一个组来应用相同的变换集。在这种情况下,当应用针对预测模式52的变换时,因为预测模式52具有与预测模式16相同的变换集,所以对输入数据进行转置,然后应用它。
[0135]
此外,由于在平面模式和dc模式的情况下不存在针对方向的对称性,因此每个模式具有不同的变换集,并且对应的变换集可以包括两个变换。对于其余方向模式,每个变换集可以包括三个变换。
[0136]
作为另一实施方式,二次变换可以采用多重变换选择(mts)的各种变换dst7、dct8、dst1和dct5的组合。例如,可以采用图6。
[0137]
在另一实施方式中,dst7可以被作为主变换应用。
[0138]
在另一实施方式中,dct8可以被作为主变换应用。
[0139]
作为另一实施方式,可以不向整个主变换块而是可以仅向左上8
×
8区域应用nsst。例如,当块大小为8
×
8或更大时,应用8
×
8nsst,并且当块大小小于8
×
8时,应用4
×
4nsst,并且在这种情况下,块被划分成4
×
4块,然后向划分的块中的每一个应用4
×
4nsst。
[0140]
作为另一实施方式,即使在4
×
n/n
×
4(n>=16)的情况下,也可以应用4
×
4nsst。
[0141]
通过图12至图15和本公开内的其它实施方式更具体地描述nsst、4
×
4nsst和8
×
8nsst。
[0142]
量化单元130可以对二次变换后的信号执行量化。
[0143]
反量化单元140和逆变换单元150相反地执行上述处理,并且将省略对其的冗余描述。
[0144]
图5是解码器中的反量化单元220和逆变换单元230的示意性框图。
[0145]
参照以上的图5,反量化单元220和逆变换单元230可以包括反量化单元220、逆二次变换单元231和逆主变换单元232。
[0146]
反量化单元220通过使用量化步长信息从熵解码后的信号获得变换系数。
[0147]
逆二次变换单元231对变换系数执行逆二次变换。在这种情况下,逆二次变换表示参考以上图4描述的二次变换的逆变换。
[0148]
作为另一实施方式,二次变换可以采用多重变换选择(mts)的各种变换dst7、dct8、dst1和dct5的组合。例如,可以采用图6。
[0149]
逆主变换单元232对逆二次变换后的信号(或块)执行逆主变换,并且获得残差信号。在这种情况下,逆主变换表示参考以上图4描述的主变换的逆变换。
[0150]
作为实施方式,主变换可以采用多重变换选择(mts)的各种变换dst7、dct8、dst1和dct5的组合。例如,可以采用图6。
[0151]
作为本公开的实施方式,可以向主变换应用dst7。
[0152]
作为本公开的实施方式,可以向主变换应用dct8。
[0153]
本公开可以提供针对通过预测模式、块大小或块形状中的至少一者划分的每个变换配置组来配置变换组合的方法,并且逆主变换单元232可以基于通过本公开配置的变换组合来执行逆变换。另外,可以应用本公开中描述的实施方式。
[0154]
图6是示出了作为应用本公开的实施方式的应用多重变换选择(mts)的变换配置组的表。
[0155]
应用多重变换选择(mts)的变换配置组
[0156]
在本公开中,用于变换配置组gi的第j个变换组合候选由下式1中示出的对表示。
[0157]
[式1]
[0158]
(h(gi,j),v(gi,j))
[0159]
其中,h(gi,j)指示第j个候选的水平变换,并且v(gi,j)指示第j个候选的竖直变换。例如,在图6中,可以表示h(g3,2)=dst7、v(g3,2)=dct8。根据上下文,指派给h(gi,j)或v(gi,j)的值可以是如以上示例中的用于区分变换的标称值,或者可以是指示变换的索引值,或者可以是用于变换的二维(d)矩阵。
[0160]
另外,在本公开中,可以如下式2和式3中所示地表示dct和dst的2d矩阵值。
[0161]
[式2]
[0162]
dct类型2:dct类型8:
[0163]
[式3]
[0164]
dct类型7:,dst类型4:
[0165]
其中,变换是dst还是dct由s或c表示,类型编号被表示为罗马数字形式的上标,而下标的n指示变换是n
×
n变换。另外,在诸如和这样的2d矩阵中,假定列矢量形成了变换基。
[0166]
参照图6,可以基于预测模式来确定变换配置组,并且组的数目可以是总共六个组g0至g5。另外,g0至g4对应于应用帧内预测的情况,并且g5表示应用于通过帧间预测生成的残差块的变换组合(或变换集和变换组合集)。
[0167]
一个变换组合可以包括应用于对应2d块的行的水平变换(或行变换)和应用于列的竖直变换(或列变换)。
[0168]
在这种情况下,所有变换配置组中的每一个可以具有四个变换组合候选。可以通
过变换组合索引0至3来选择或确定四个变换组合,并且可以对变换组合索引进行编码并将其从编码器发送到解码器。
[0169]
作为实施方式,根据帧内预测模式,通过帧内预测获得的残差数据(或残差信号)可以具有不同的统计特性。因此,如以上图6中,可以向每种帧内预测模式应用除了一般余弦变换(例如,dct2)之外的变换。
[0170]
参照以上图6,例示了使用35种帧内预测模式的情况和使用67种帧内预测模式的情况。可以向每个帧内预测模式列中划分的每个变换配置组应用多个变换组合。例如,这多个变换组合可以包括四个(行方向变换和列方向变换)组合。作为特定示例,可以在组0的行(水平)方向和列(竖直)方向上应用dst-7和dst-5,结果,总共有四个组合可用。
[0171]
由于总共四个变换核组合可以应用于每个帧内预测模式,因此可以每个变换单元发送用于选择变换核组合之一的变换组合索引。在本公开中,变换组合索引可以被称为mts索引并被表示为mts_idx。
[0172]
另外,除了上图6中表示的变换核之外,也可能出现由于残差信号的特性导致dct2对于行方向和列方向二者都是最佳的情况。因此,针对每个编码单元定义mts标志,以自适应地执行变换。在这种情况下,当mts标志为0时,dct-2可以被应用于行方向和列方向二者,并且当mts标志为1时,可以通过mts索引来选择或确定四个组合中的一个。
[0173]
作为实施方式,当mts标志为1时,如果用于一个变换单元的非零变换系数的数目不大于阈值,则可以在不应用以上图6的变换核的情况下在行方向和列方向二者上都应用dst-7。例如,阈值可以被配置为2,可以基于块大小或变换单元的大小不同地配置该阈值。这也适用于本公开中的其它实施方式。
[0174]
作为实施方式,如果通过首先解析变换系数值,非零变换系数的数目不大于阈值,则可以通过在不解析mts索引的情况下应用dst-7来减少附加信息传输量。
[0175]
作为实施方式,当mts标志为1时,如果非零变换系数的数目大于一个变换单元的阈值,则可以解析mts索引,并且可以基于mts索引来确定水平变换和竖直变换。
[0176]
作为实施方式,只有当变换单元的宽度和高度二者等于或小于32时,才可以应用mts。
[0177]
作为实施方式,可以通过离线训练来预先配置以上图6。
[0178]
作为实施方式,mts索引可以被定义为可以同时指示水平变换和竖直变换的一个索引。另选地,mts索引可以分别定义水平变换索引和竖直变换索引。
[0179]
在实施方式中,可以以序列、图片、切片、块、编码单元、变换单元或预测单元中的至少一个级别定义mts标志或mts索引。例如,可以以编码单元或变换单元中的至少一个级别定义mts标志或mts索引。
[0180]
图7是示出了作为应用本公开的实施方式的执行多重变换选择(mts)的编码处理的流程图。
[0181]
在本公开中,基本描述了其中向水平方向和竖直方向分别应用变换的实施方式,但变换组合甚至可以由不可分变换构成。
[0182]
另选地,变换组合可以由可分变换与不可分变换的混合配置。在这种情况下,当使用不可分变换时,可以不需要行/列变换选择或水平/竖直方向选择,并且可以仅当选择可分变换时,才使用以上图6的变换组合。
[0183]
另外,可以应用通过本公开提出的方案,而不管是主变换还是二次变换。即,不存在应该将方案仅应用于主变换和二次变换二者中的任一者的限制并且可以将方案应用于主变换和二次变换二者。在这种情况下,主变换可以意指用于首先对残差块进行变换的变换,而二次变换可以意指用于向作为主变换的结果生成的块应用变换的变换。
[0184]
首先,编码器可以确定与当前块对应的变换配置组(s710)。在这种情况下,变换配置组可以意指以上图6的变换配置组,本公开不限于此,并且变换配置组可以包括其它变换组合。
[0185]
编码器可以对可用于变换配置组的候选变换组合执行变换(s720)。
[0186]
执行变换的结果是,编码器100可以确定或选择具有最小速率失真(rd)代价的变换组合(s730)。
[0187]
编码器可以对与所选择的变换组合对应的变换组合索引进行编码(s740)。
[0188]
图8是示出了作为应用本公开的实施方式的执行多重变换选择(mts)的解码处理的流程图。
[0189]
首先,解码器可以针对当前块确定变换配置组(s810)。
[0190]
解码器可以从视频信号中解析(或获得)变换组合索引,并且这里,变换组合索引可以对应于变换配置组中的多个变换组合中的任一个(s820)。例如,变换配置组可以包括离散正弦变换类型(dst)7和离散余弦变换类型(dst)8。变换组合索引可以被称为mts索引。
[0191]
作为实施方式,可以基于当前块的预测模式、块大小或块形状中的至少一个来配置变换配置组。
[0192]
解码器可以推导与变换组合索引对应的变换组合(s830)。在这种情况下,变换组合可以包括水平变换和竖直变换,并可以包括dst-7或dct-8中的至少一个。
[0193]
另外,变换组合可以意指参考以上表6描述的变换组合,但本公开不限于此。即,取决于本公开中的其它实施方式,可以通过其它变换组合来配置变换组合。
[0194]
解码器可以基于变换组合对当前块执行逆变换(s840)。当变换组合包括行(水平)变换和列(竖直)变换时,可以在首先应用行(水平)变换之后应用列(竖直)变换。然而,本公开不限于此,并且可以颠倒变换顺序,或者当变换组合包括不可分变换时,可以立即应用不可分变换。
[0195]
作为实施方式,当竖直变换或水平变换为dst-7或dct-8时,可以向每列应用然后向每行应用dst-7的逆变换或dct-8的逆变换。
[0196]
作为实施方式,对于竖直变换或水平变换,可以向每行和/或每列应用不同的变换。
[0197]
作为实施方式,可以基于指示是否执行mts的mts标志来获得变换组合索引。即,当根据mts标志执行mts时,可以获得变换组合索引。
[0198]
作为实施方式,解码器可以检查非零变换系数的数目是否大于阈值。在这种情况下,当非零变换系数的数目大于阈值时可以获得变换组合索引。
[0199]
作为实施方式,可以以序列、图片、切片、块、编码单元、变换单元或预测单元中的至少一个级别定义mts标志或mts索引。
[0200]
作为实施方式,只有当变换单元的宽度和高度二者等于或小于32时,才可以应用逆变换。
[0201]
另一方面,作为另一实施方式,可以同时执行确定变换配置组的处理和解析变换组合索引的处理。另选地,可以在编码器和/或解码器中预先配置和省略以上步骤s810。
[0202]
图9是用于描述作为应用本公开的实施方式的对mts标志和mts索引进行编码的处理的流程图。
[0203]
编码器可以确定是否向当前块应用多重变换选择(mts)(s910)。
[0204]
当应用多重变换选择(mts)时,编码器可以将mts标志编码为等于1(s920)。
[0205]
另外,编码器可以基于当前块的预测模式、水平变换和竖直变换中的至少一者来确定mts索引(s930)。在这种情况下,mts索引可以意指指示用于每种帧内预测模式的多个变换组合中的任一个的索引,并且可以针对每个变换单元发送mts索引。
[0206]
当确定了mts索引时,编码器可以对mts索引进行编码(s940)。
[0207]
另一方面,当未应用多重变换选择(mts)时,编码器可以将mts标志编码为等于0(s950)。
[0208]
图10是用于描述作为应用本公开的实施方式的基于mts标志和mts索引向行或列应用水平变换或竖直变换的解码处理的流程图。
[0209]
解码器可以从比特流中解析mts标志(s1010)。在这种情况下,mts标志可以指示是否向当前块应用多重变换选择(mts)。
[0210]
解码器可以基于mts标志来确定是否向当前块应用多重变换选择(mts)(s1020)。例如,可以检查mts标志是否为1。
[0211]
当mts标志为1时,解码器可以检查非零变换系数的数目是否大于(或等于或大于)阈值(s1030)。例如,阈值可以被配置为2,可以基于块大小或变换单元的大小不同地配置该阈值。
[0212]
当非零变换系数的数目大于阈值时,解码器可以解析mts索引(s1040)。在这种情况下,mts索引可以意指用于每种帧内预测模式或帧间预测模式的多个变换组合中的任一个,并且可以针对各变换单元发送mts索引。另选地,mts索引可以意指指示在预先配置的变换组合表中定义的任一个变换组合的索引,并且这里,预先配置的变换组合表可以意指以上图6,但本公开不限于此。
[0213]
解码器可以基于mts索引和预测模式中的至少一个来推导或确定水平变换和竖直变换(s1050)。
[0214]
另选地,解码器可以推导对应于mts索引的变换组合。例如,解码器可以推导或确定对应于mts索引的水平变换和竖直变换。
[0215]
此外,当非零变换系数的数目不大于阈值时,解码器可以针对各列应用预先配置的竖直逆变换(s1060)。例如,竖直逆变换可以是dst7的逆变换。
[0216]
另外,解码器可以对各行应用预先配置的水平逆变换(s1070)。例如,水平逆变换可以是dst7的逆变换。即,当非零变换系数的数目不大于阈值时,可以使用由编码器或解码器预先配置的变换核。例如,可以使用在以上图6中例示的变换组合表中未定义但被广泛使用的变换核(例如,dct-2)。
[0217]
此外,当mts标志为0时,解码器可以对每列应用预先配置的竖直逆变换(s1080)。例如,竖直逆变换可以是dct2的逆变换。
[0218]
另外,解码器可以针对各行应用预先配置的水平逆变换(s1090)。例如,水平逆变
换可以是dct2的逆变换。即,当mts标志为0时,可以使用在编码器或解码器中预先配置的变换核。例如,可以使用在以上图6中例示的变换组合表中未定义但被广泛使用的变换核。
[0219]
图11是作为应用本公开的实施方式的基于变换相关参数执行逆变换的流程图。
[0220]
应用了本公开的解码器可以获得sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag(s1110)。在这种情况下,sps_mts_intra_enabled_flag指示在帧内编码单元的残差编码语法中是否存在tu_mts_flag。例如,当sps_mts_intra_enabled_flag=0时,在帧内编码单元的残差编码语法中不存在tu_mts_flag,并且当sps_mts_intra_enabled_flag=1时,在帧内编码单元的残差编码语法中存在tu_mts_flag。另外,sps_mts_inter_enabled_flag指示在帧间编码单元的残差编码语法中是否存在tu_mts_flag。例如,当sps_mts_inter_enabled_flag=0时,在帧间编码单元的残差编码语法中不存在tu_mts_flag,并且当sps_mts_inter_enabled_flag=1时,在帧间编码单元的残差编码语法中存在tu_mts_flag。
[0221]
解码器可以基于sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag获得tu_mts_flag(s1120)。例如,当sps_mts_intra_enabled_flag=1或sps_mts_inter_enabled_flag=1时,解码器可以获得tu_mts_flag。在这种情况下,tu_mts_flag指示是否向亮度变换块的残差样本应用多重变换选择(下文中,被称为“mts”)。例如,当tu_mts_flag=0时,不向亮度变换块的残差样本应用mts,并且当tu_mts_flag=1时,向亮度变换块的残差样本应用mts。
[0222]
作为另一示例,本公开的实施方式中的至少一个可以应用于tu_mts_flag。
[0223]
解码器可以基于tu_mts_flag获得mts_idx(s1130)。例如,当tu_mts_flag=1时,解码器可以获得mts_idx。在这种情况下,mts_idx指示哪个变换核沿着当前变换块的水平和/或竖直方向应用于亮度残差样本。
[0224]
例如,本公开的实施方式中的至少一个可以应用于mts_idx。作为特定示例,可以应用以上图6的实施方式中的至少一个。
[0225]
解码器可以推导与mts_idx对应的变换核(s1140)。例如,可以通过将与mts_idx对应的变换核划分成水平变换和竖直变换来定义它。
[0226]
作为另一示例,可以对水平变换和竖直变换应用不同的变换核。然而,本公开不限于此,并且可以向水平变换和竖直变换应用相同的变换核。
[0227]
作为实施方式,可以如下表1中所示地定义mts_idx。
[0228]
[表1]
[0229]
mts_idx[x0][y0]trtypehortrtypever000111221312422
[0230]
另外,解码器可以基于变换核来执行逆变换(s1150)。
[0231]
在图11中,主要描述为了确定是否应用mts而通过获得tu_mts_flag然后基于获得的tu_mts_flag的值获得mts_idx来确定变换核的实施方式,但本公开不限于此。例如,解码
器可以通过直接解析mts_idx而不进行tu_mts_flag解析来确定变换核。在这种情况下,可以使用表1。即,当mts_idx值指示0时,可以在水平/竖直方向上应用dct-2。当mts_idx值指示非0的值时,可以基于mts_idx值应用dst-7和/或dct-8。
[0232]
作为本公开的另一实施方式,描述了执行变换处理的解码处理。
[0233]
解码器可以检查变换大小ntbs(s10)。在这种情况下,变换大小ntbs可以是表示缩放后的变换系数的水平样本大小的变量。
[0234]
解码器可以检查变换核类型trtype(s20)。在这种情况下,变换核类型trtype可以是表示变换核类型的变量,并且可以应用本公开的各种实施方式。变换核类型trtype可以包括水平变换核类型trtypehor和竖直变换核类型trtypever。
[0235]
参照以上表1,当变换核类型trtype为0时,变换核类型可以表示dct2,当变换核类型trtype为1时,变换核类型可以表示dst7,并且当变换核类型trtype为2时,变换核类型可以表示dct8。
[0236]
解码器可以基于变换大小ntbs或变换核类型中的至少一个来执行变换矩阵乘法(s30)。
[0237]
作为另一示例,当变换核类型为1并且变换大小为4时,在执行变换矩阵乘法时可以应用预定的变换矩阵1。
[0238]
作为另一示例,当变换核类型为1并且变换大小为8时,在执行变换矩阵乘法时可以应用预定的变换矩阵2。
[0239]
作为另一示例,当变换核类型为1并且变换大小为16时,在执行变换矩阵乘法时可以应用预定的变换矩阵3。
[0240]
作为另一示例,当变换核类型为1并且变换大小为32时,在执行变换矩阵乘法时可以应用预定义的变换矩阵4。
[0241]
类似地,当变换核类型为2且变换大小为4、8、16或32时,可以分别应用预定义的变换矩阵5、6、7和8。
[0242]
在这种情况下,预定义的变换矩阵1至8中的每一个可以对应于各种类型的变换矩阵中的任一种。作为示例,可以应用以上图6中例示的类型的变换矩阵。
[0243]
解码器可以基于变换矩阵乘法来推导变换样本(s40)。
[0244]
可以使用实施方式,但本公开不限于此。本公开的以上实施方式和其它实施方式可以被组合和使用。
[0245]
图12是示出了作为应用本公开的实施方式的在nsst中针对每种帧内预测模式分配变换集的表。
[0246]
不可分二次变换(nsst)
[0247]
二次变换单元可以向主变换后的信号应用二次变换,并且这里,可以在编码器和/或解码器的表中定义二次变换。
[0248]
作为实施方式,二次变换可以有条件地采用不可分二次变换(下文中,被称为“nsst”)。例如,nsst可以仅被应用于帧内预测块,并可以具有适于各预测模式组的变换集。
[0249]
在这种情况下,可以基于相对于预测方向的对称性来配置预测模式组。例如,由于预测模式52和预测模式16基于预测模式34(对角方向)对称,因此可以通过形成一个组来应用相同的变换集。在这种情况下,当应用针对预测模式52的变换时,因为预测模式52具有与
预测模式16相同的变换集,所以对输入数据进行转置,然后应用它。
[0250]
此外,由于在平面模式和dc模式的情况下不存在针对方向的对称性,因此每种模式可以具有不同的变换集,并且对应的变换集可以包括两个变换。对于其余方向模式,各变换集可以包括三个变换。然而,本公开不限于此,各变换集可以包括多个变换。
[0251]
图13是作为应用本公开的实施方式的吉文斯旋转的计算流程图。
[0252]
作为另一实施方式,可以不向整个主变换块而是可以仅向左上8
×
8区域应用nsst。例如,当块大小为8
×
8或更大时,应用8
×
8nsst,并且当块大小小于8
×
8时,应用4
×
4nsst,并且在这种情况下,块被划分成4
×
4块,然后向划分的块中的每一个应用4
×
4nsst。
[0253]
作为另一实施方式,即使在4
×
n/n
×
4(n>=16)的情况下,也可以应用4
×
4nsst。
[0254]
由于8
×
8nsst和4
×
4nsst二者遵循本公开中描述的变换组合配置并且是不可分变换,因此8
×
8nsst接收64个数据并输出64个数据并且4
×
4nsst具有16个输入和16个输出。
[0255]8×
8nsst和4
×
4nsst二者由吉文斯旋转的层次组合构成。在式4中示出对应于一个吉文斯旋转的矩阵,并且在下式5中示出矩阵乘积。
[0256]
[式4]
[0257][0258]
[式5]
[0259]
tmx
m cos0-x
n sin0
[0260]
tn=x
m sinθ+x
n cosθ
[0261]
如以上图13中例示的,由于一个吉文斯旋转使两个数据旋转,因此为了处理64个数据(对于8
×
8nsst)或16个数据(对于4
×
4nsst),总共需要32或8个吉文斯旋转。
[0262]
因此,32或8的一批用于形成吉文斯旋转层。通过所确定的置换将一个吉文斯旋转层的输出数据作为下一个吉文斯旋转层的输入数据来传送。
[0263]
图14例示了作为应用本公开的实施方式的由吉文斯旋转层和置换构成的4
×
4nsst中的一轮配置。
[0264]
参照以上图14,例示了在4
×
4nsst的情况下依次处理四个吉文斯旋转层。如以上图14中例示的,通过所确定的置换(即混排)将一个吉文斯旋转层的输出数据作为下一个吉文斯旋转层的输入数据来传送。
[0265]
如以上图14中例示的,有规律地确定待置换的模式,并且在4
×
4nsst的情况下,四个吉文斯旋转层及其对应的置换被组合以形成一轮。
[0266]
在8
×
8nsst的情况下,六个吉文斯旋转层和对应的置换形成一轮。4
×
4nsst经过两轮,并且8
×
8nsst经过四轮。不同的轮使用相同的置换模式,但所应用的吉文斯旋转角度是不同的。因此,需要存储构成每个变换的所有吉文斯旋转的角度数据。
[0267]
作为最后一个步骤,最后进一步对通过吉文斯旋转层输出的数据执行一个置换,并且针对每个变换分别存储对应的置换信息。在正向nsst中,最后执行对应的置换,而在逆向nsst中,与之相反,首先应用对应的逆置换。
[0268]
在逆向nsst的情况下,应用于正向nsst的置换和吉文斯旋转层以相反顺序执行,
并且甚至对于每个吉文斯旋转角度也采用负值进行旋转。
[0269]
图15是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度16的正向dst7的流程图。
[0270]
实施方式1:具有长度16的dst7的设计和实现方式
[0271]
本公开提供了其中使用dft设计dst7的详细实施方式。本公开的实施方式还可以用于dct8设计,并且还可以应用于mts配置。
[0272]
在图15的流程图中示出的块之间传送的信号(信息)可以是标量值并可以具有矢量形式。例如,矢量可以被写得如同x[0
…
n-1]。这例示了由如同x[0
…
n-1]=[x[0]x[1]
…
x[n-2]x[n-1]]的n个元素组成的信号(信息)。矢量x[0
…
n-1]的部分信号可以被指示为如同x[i
…
j]。例如,部分信号可以被指示为如同作为x[0
…
15]的一部分的x[5
…
10]=[x[5]x[6]x[7]x[8]x[9]x[10]]。
[0273]
图15例示了其中针对长度16的一行或一列实现dst7的流程图。在这种情况下,具有长度16的dst7被写为dst7_b16。正向dst7被写为正向dst7_b16。逆向dst7被写为逆向dst7_b16。
[0274]
此外,输入数据为x[0
…
15],并且最终输出数据可以被写为y[0
…
15]。
[0275]
当输入了输入数据x[0
…
15]时,编码器对具有长度16的正向dst7执行预处理(s1510)。
[0276]
编码器可以向步骤s1510的输出w[0
…
15]应用dft(s1520)。在这种情况下,参考图17至图19具体地描述应用dft的步骤s1520。
[0277]
编码器可以对步骤s1520的输出z[0
…
15]执行后处理,并可以输出最终输出数据y[0
…
15](s1530)。
[0278]
图16是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度16的逆向dst7的流程图。
[0279]
图16例示了其中针对长度16的一行或一列实现逆向dst7的流程图。在这种情况下,输入数据为x[0
…
15],并且最终输出数据可以被写为y[0
…
15]。
[0280]
当输入了输入数据x[0
…
15]时,解码器对具有长度16的逆向dst7执行预处理(s1610)。
[0281]
解码器可以向步骤s1610的输出应用dft(s1620)。在这种情况下,参考图17至图19具体地描述应用dft的步骤s1620。
[0282]
解码器可以对步骤s1620的输出执行后处理,并可以输出最终输出数据y[0
…
15](s1630)。
[0283]
图17至图19是应用本公开的实施方式,并且例示了其中应用图15和图16的xdst7_fft_b16函数的流程图。
[0284]
参考图17,src[0
…
15]被输入到xdst7_fft3块,并输出src_fft11[0
…
15](s1710)。输出的src_fft11[0
…
15]可以被划分为两个部分信号并发送。
[0285]
例如,src_fft11[0
…
4]可以被发送到xdst7_fft11_type1块。src_fft11[5
…
15]可以被发送到xdst7_fft11_type2块。
[0286]
xdst7_fft11_type1块可以接收src_fft11[0
…
4],并输出dst[0
…
4](s1720)。
[0287]
xdst7_fft11_type2块接收src_fft11[5
…
15],并输出dst[5
…
15](s1730)。
[0288]
在这种情况下,参考图18具体地描述xdst7_fft11_type1块的实现方式,并且参考图19具体地描述xdst7_fft11_type2块的实现方式。
[0289]
参考图18,src[0
…
4]被输入到xdst7_fft11_half1块,并输出dst_half1[0
…
4](s1810)。
[0290]
输出的dst_half1[0
…
4]被输入到xdst7_fft11_type1块,并输出dst[0
…
4](s1820)。
[0291]
参照图19,src[0
…
10]可以被划分为两个部分信号并发送。例如,src[0
…
4]可以被发送到xdst7_fft11_half1块。src[5
…
10]可以被发送到xdst7_fft11_half2块。
[0292]
xdst7_fft11_half1块接收src[0
…
4],并输出dst_half1[0
…
4](s1910)。
[0293]
xdst7_fft11_half2块接收src[5
…
10],并输出dst_half2[0
…
5](s1920)。
[0294]
编码器/解码器可以通过xdst7_fft11_type2_post_processing块对步骤s1920的输出执行后处理,并可以输出最终输出数据dst[0
…
10](s1930)。
[0295]
图17的src_fft11[5
…
15]对应于图19的src[0
…
10]。即,执行如同src[0]=src_fft11[5]、src[1]=src_fft11[6]、
…
、src[10]=src_fft11[15]的指派。
[0296]
此外,在图19的xdst7_fft11_type2_post_processing块中,从左起依次输入dst_half1[0
…
4]和dst_half2[0
…
5]。它们分别对应于输入参数src_half1[0
…
4]、src_half2[0
…
5]。这将在指示各块的操作的表中具体描述。
[0297]
如上所述,图15和图16的框图可以连接到图17至图19的框图并被解释。
[0298]
可以通过表2至表10描述图15至图19的函数的详细操作。
[0299]
【表2】forward_dst7_pre_processing_b16函数的操作
[0300][0301]
【表3】forward_dst7_post_processing_b16函数的操作
[0302][0303]
在表3中,可以使用rnd_factor=1《《(final_shift
–
1)值。此外,在图15和图16中,当使用用于将dst7应用于一个块的所有行或列的函数时,如果已经通过参数传输了被称为“shift”的值,则可以使用final_shift=shift
–
1值。
[0304]
【表4】inverse_dst7_pre_processing_b16函数的操作
[0305][0306]
【表5】inverse_dst7_post_processing_b16函数的操作
[0307][0308]
在表5中,可以使用rnd_factor=1《《(final_shift
–
1)值。此外,在图15和图16中,当使用用于将dst7应用于一个块的所有行或列的函数时,如果已经通过参数传输了被称为“shift”的值,则可以使用final_shift=shift
–
1值。
[0309]
在表5中,outputminimum和outputmaximum分别指示可以被包括在输出值中的最小值和最大值。clip3函数执行clip3(a,b,c)=(c《a)?a:(c》b)?b:c的操作。即,clip3函数裁剪c值,使得c值必须存在于从a到b的范围内。
[0310]
【表6】xdst7_fft3函数的操作
[0311][0312]
在表6中,c3值意指值,并例示了乘法系数已经按29缩放。在表6中,由于shift=10,应用rnd_factor=1《《(shift
–
1)=29,因此可以如同式6地计算dst[i]和dst[5+i]。
[0313]
[式6]
[0314]
dst[i]=(src[3*i+1]+src[3*i+2]+src[3*i+3]+1)》》1
[0315]
dst[5+i]=((src[3*i+1]《《1)-src[3*i+2]-src[3*i+3]+2)》》2
[0316]
【表7】xdst7_fft11_half1函数的操作
[0317][0318]
在表7中,阵列c11r例示了通过计算的值。
[0319]
【表8】xdst7_fft11_half2函数的操作
[0320][0321]
在表8中,阵列c11r例示了通过计算的值。
[0322]
【表9】xdst7_fft11_type1_post_processing函数的操作
[0323]
名称xdst7_fft11_type1_post_processing输入src[0
…
4]输出dst[0
…
4]操作dst[0]=src[4];dst[1]=-src[0];dst[2]=src[1];dst[3]=src[2];dst[4]=src[3];
[0324]
【表10】xdst7_fft11_type2_post_processing函数的操作
[0325][0326]
如果在水平方向(或竖直方向)上向16
×
16二维块应用dst7,则图15和图16的流程图可以被用于16行(或列)。
[0327]
图20是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度32的正向dst7的流程图。
[0328]
实施方式2:具有长度32的dst7的设计和实现方式
[0329]
本公开提供了其中使用dft设计dst7的详细实施方式。本公开的实施方式还可以用于dct8设计,并且还可以应用于mts配置。
[0330]
图20例示了其中针对长度32的一行或一列实现dst7的流程图。在这种情况下,具有长度32的dst7被写为dst7_b32,正向dst7被写为正向dst7_b32,并且逆向dst7被写为逆向dst7_b32。
[0331]
此外,输入数据为x[0
…
31],并且最终输出数据可以被写为y[0
…
31]。
[0332]
当输入了输入数据x[0
…
31]时,编码器对具有长度32的正向dst7执行预处理(s2010)。
[0333]
编码器可以向步骤s2010的输出w[0
…
31]应用dft(s2020)。在这种情况下,参考图22至图24具体地描述应用dft的步骤s2020。
[0334]
编码器可以对步骤s2020的输出z[0
…
31]执行后处理,并可以输出最终输出数据y[0
…
31](s2030)。
[0335]
图21是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度32的正向dst7的流程图。
[0336]
图21例示了其中针对长度32的一行或一列实现逆向dst7的流程图。在这种情况下,输入数据为x[0
…
31],并且最终输出数据可以被写为y[0
…
31]。
[0337]
当输入了输入数据x[0
…
31]时,解码器对具有长度32的正向dst7执行预处理(s2110)。
[0338]
解码器可以向步骤s2110的输出w[0
…
31]应用dft(s2120)。在这种情况下,参考图22至图24具体地描述应用dft的步骤s2120。
[0339]
解码器可以对步骤s2120的输出z[0
…
31]执行后处理,并可以输出最终输出数据y[0
…
31](s2130)。
[0340]
图22至图24是应用本公开的实施方式,并且例示了其中应用图15和图16的xdst7_fft_b16函数的流程图。
[0341]
参考图22,src[0
…
31]被输入到xdst7_fft5块,并输出src_fft13[0
…
31](s2210)。输出的src_fft13[0
…
31]可以被划分为三个部分信号并发送。
[0342]
例如,src_fft13[0
…
5]可以被发送到xdst7_fft13_type1块,src_fft13[6
…
18]可以被发送到xdst7_fft13_type2块,并且src_fft13[19
…
31]可以被发送到另一xdst7_fft13_type2块。
[0343]
xdst7_fft13_type1块接收src_fft13[0
…
5],并输出dst[0
…
5](s2220)。
[0344]
xdst7_fft11_type2块接收src_fft13[6
…
18],并输出dst[6
…
18](s2230)。
[0345]
xdst7_fft11_type2块接收src_fft13[19
…
31],并输出dst[19
…
31](s2240)。
[0346]
在这种情况下,参考图23具体地描述xdst7_fft13_type1块的实现方式,并且参考图24具体地描述xdst7_fft13_type2块的实现方式。
[0347]
参考图23,src[0
…
5]被输入到xdst7_fft13_half1块,并输出dst_half1[0
…
5](s2310)。
[0348]
输出的dst_half1[0
…
5]被输入到xdst7_fft13_type1_post_processing块,xdst7_fft13_type1_post_processing块输出dst[0
…
5](s2320)。
[0349]
参照图24,src[0
…
12]可以被划分为两个部分信号并发送。例如,src[0
…
5]可以被发送到xdst7_fft13_half1块,并且src[6
…
12]可以被发送到xdst7_fft13_half2块。
[0350]
xdst7_fft13_half1块接收src[0
…
5],并输出dst_half1[0
…
5](s2410)。
[0351]
xdst7_fft13_half2块接收src[6
…
12],并输出dst_half2[0
…
6](s2420)。
[0352]
编码器/解码器可以通过xdst7_fft13_type2_post_processing块对步骤s2410和s2420的输出执行后处理,并可以输出最终输出数据dst[0
…
12](s1930)。
[0353]
图22的src_fft13[0
…
5]对应于图23的src[0
…
5]。即,执行如同src[0]=src_fft13[0]、src[1]=src_fft13[1]、
…
、src[5]=src_fft13[5]的指派。
[0354]
此外,图22的src_fft13[6
…
18]或src_fft13[19
…
31]对应于图24的src[0
…
12]。例如,执行如同src[0]=src_fft13[6]、src[1]=src_fft13[7]、
…
、src[12]=src_fft13[18]的指派。
[0355]
此外,在图24的xdst7_fft13_type2_post_processing块中,从左起依次输入dst_half1[0
…
5]和dst_half2[0
…
6]。它们分别对应于输入参数src_half1[0
…
5]、src_half2[0
…
6]。这将在指示各块的操作的表中具体描述。
[0356]
如上所述,图20和图21的框图可以连接到图22至图24的框图并进行解释。
[0357]
可以通过以下表11至表18描述图20至图24的函数的详细操作。
[0358]
【表11】forward_dst7_pre_processing_b32函数的操作
[0359][0360]
【表12】forward_dst7_post_processing_b32函数的操作
[0361][0362]
在表12中,可以使用rnd_factor=1《《(final_shift
–
1)值。此外,在图20和图21中,当使用用于将dst7应用于一个块的所有行或列的函数时,如果已经通过参数传输了被称为“shift”的值,则可以使用final_shift=shift
–
1值。
[0363]
【表13】inverse dst7 pre processing b32函数的操作
[0364][0365][0366]
【表14】inverse_dst7_post_processing_b32函数的操作
[0367][0368]
在表14中,可以使用rnd_factor=1《《(final_shift
–
1)值。此外,在图20和图21中,当使用用于将dst7应用于一个块的所有行或列的函数时,如果已经通过参数传输了被称为“shift”的值,则可以使用final_shift=shift
–
1值。
[0369]
在表14中,outputminimum和outputmaximum分别指示可以被包括在输出值中的最小值和最大值。clip3函数执行clip3(a,b,c)=(c《a)?a:(c》b)?b:c的操作。即,clip3函数裁剪c值,使得c值必须存在于从a到b的范围内。
[0370]
【表15】xdst7_fft13_half1函数的操作
[0371][0372][0373]
在表15中,阵列c13r例示了通过计算的值。
[0374]
【表16】xdst7_fft13_half2函数的操作
[0375][0376]
在表16中,阵列c13i例示了通过计算的值。
[0377]
【表17】xdst7_fft13_type1_post_processing函数的操作
[0378][0379]
【表18】xdst7_fft13_type2_post_processing函数的操作
[0380][0381][0382]
如果在水平方向(或竖直方向)上向一个32
×
32二维块应用dst7,则图20和图21的流程图可以被用于32行(或列)。
[0383]
图25是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计
具有长度8的正向dst7的流程图。
[0384]
实施方式3:具有长度8的dst7的设计和实现方式
[0385]
本公开提供了其中使用dft设计dst7的详细实施方式。本公开的实施方式还可以用于dct8设计,并且还可以应用于mts配置。
[0386]
图25例示了其中针对长度8的一行或一列实现dst7的流程图。在这种情况下,具有长度8的dst7被写为dst7_b8,正向dst7被写为正向dst7_b8,并且逆向dst7被写为逆向dst7_b8。
[0387]
此外,输入数据为x[0
…
7],并且最终输出数据可以被写为y[0
…
7]。
[0388]
当输入了输入数据x[0
…
7]时,编码器对具有长度8的正向dst7执行预处理(s2510)。
[0389]
编码器可以向步骤s2510的输出w[0
…
7]应用dft(s2520)。在这种情况下,参考图27和图28具体地描述应用dft的步骤s2520。
[0390]
编码器可以对步骤s2520的输出z[0
…
7]执行后处理,并可以输出最终输出数据y[0
…
7](s2530)。
[0391]
图26是应用本公开的实施方式,并且例示了其中使用离散傅里叶变换(dft)设计具有长度8的逆向dst7的流程图。
[0392]
图26例示了其中针对长度8的一行或一列实现逆向dst7的流程图。在这种情况下,输入数据为x[0
…
7],并且最终输出数据可以被写为y[0
…
7]。
[0393]
当输入了输入数据x[0
…
7]时,解码器对具有长度8的逆向dst7执行预处理(s2610)。
[0394]
解码器可以向步骤s2610的输出w[0
…
7]应用dft(s2620)。在这种情况下,参考图27和图28具体地描述应用dft的步骤s2620。
[0395]
解码器可以对步骤s2620的输出z[0
…
7]执行后处理,并可以输出最终输出数据y[0
…
7](s2630)。
[0396]
可以通过以下表19至表23描述图25和图26的函数的详细操作。
[0397]
【表19】forward_dst7_pre_processing_b8函数的操作
[0398][0399]
【表20】forward_dst7_post_processing_b8函数的操作
[0400]
[0401][0402]
在表20中,可以使用rnd_factor=1《《(shift
–
1)值。在这种情况下,移位值是在使用用于将dst7应用于一个块的所有行或列的函数时通过参数传送的值。
[0403]
【表21】inverse_dst7_pre_processing_b8函数的操作
[0404][0405]
【表22】inverse_dst7_post_processing_b8函数的操作
[0406][0407]
在表22中,可以使用rnd_factor=1《《(shift
–
1)值。在这种情况下,移位值是在使用用于将dst7应用于一个块的所有行或列的函数时通过参数传送的值。
[0408]
在表5中,outputminimum和outputmaximum分别指示可以被包括在输出值中的最小值和最大值。clip3函数执行clip3(a,b,c)=(c《a)?a:(c》b)?b:c的操作。即,clip3函数裁剪c值,使得c值必须存在于从a到b的范围内。
[0409]
【表23】xdst7_fft_b8函数的操作
[0410]
[0411][0412]
在表23中,阵列c8例示了通过计算的值。
[0413]
如果在水平方向(或竖直方向)上向8
×
8二维块应用dst7,则图25和图26的流程图可以被用于8行(或列)。
[0414]
实施方式4:部分应用实施方式1-3中提出的dst7实现方式的方法
[0415]
实施方式1和实施方式2中提出的dst7实现方式可以应用于具有长度16的dst7和具有长度32的dst7。实施方式3中提出的dst7实现方式可以应用于具有长度8的dst7,但本公开不限于此,并且可以不同地应用。例如,如果不应用实施方式3中提出的dst7实现方式,则可以应用具有公共矩阵乘法形式的dst7实现方式。
[0416]
实施方式5:使用离散傅里叶变换(dft)的dst7实现方式
[0417]n×
n dst7的矩阵形式可以如同式7地表示。
[0418]
[式7]
[0419][0420]
在这种情况下,如果n是从0至n-1的行索引并且k是从0至n-1的列索引,则式7的矩阵与被乘以变换系数后的逆向dst7矩阵匹配,以便重构原始输入。
[0421]
因此,式7的转置矩阵是前向dst7矩阵。此外,正向dst7矩阵与逆向dst7矩阵彼此正交,并且其默认矢量中的每一个具有范数1。
[0422]
可以基于式7如同式8地表示dst7与dft之间的关系。
[0423]
[式8]
[0424][0425]
其中,
[0426]
且
[0427]
在式8中,r是n
×
(2n+1)矩阵(行数
×
列数),q是(2n+1)
×
n矩阵,并且p是n
×
n矩阵。in指示n
×
n单位矩阵,并且jn指示
[0428]
在式8中,意味着在执行具有长度(2n+1)的dft之后仅取dft结果的虚部。只
有当n为偶数时,式8才成立。更具体地,意味着当作为正向dst7输入的x为n
×
1矢量时,如果计算出z=qpx,则输出(2n+1)
×
1矢量(z),并且在使用矢量(z)作为输入执行具有2n+1长度的dft之后仅取虚部。
[0429]
如式8中,对矩阵p、q和r执行n个输入的重排和其符号(+/-)的指派,使得主要的计算部分在正向dst7中变为2n+1长度df。
[0430]
本公开使用具有2n
×
2n(n=2n)大小的dst7。因此,当n=4、8、16、32时,可以分别应用9点dft、17点dft、33点dft和65点dft。
[0431]
本公开主要描述了n=8、16、32的情况,并且提供了以等效的多维dft的形式引入对应dft的设计并集成dft以便获得低复杂度的dst7的方法。
[0432]
与正向dst6匹配的逆向n
×
n dst7可以如式9中地被表示为2n+1长度dft:
[0433]
[式9]
[0434][0435]
其中,
[0436]
且
[0437]
在这种情况下,r是n
×
(2n+1)矩阵(行数
×
列数),q是(2n+1)
×
n矩阵,并且in指示n
×
n单位矩阵。jn的定义与式8中的定义相同。
[0438]
意味着当作为正向dst7输入的x为n
×
1矢量时,如果计算出z=qx,则输出(2n+1)
×
1矢量(z),并且在使用矢量(z)作为输入执行具有2n+1长度的dft之后仅取虚部。即,式9中的含义与式8中的定义相同,不同的是计算出z=qpx。
[0439]
在式9中,n是偶数。此外,在逆向dst7中可以使用与前向dst7中相同的2n+1长度dft。
[0440]
具有偶数长度的三角变换可以应用于应用本公开的编解码器系统。例如,对于分别具有长度8、16、32和64的dst7,根据式8具有长度17、33、65和129的dft是必需的。如式10和式11中,可以应用于具有长度8和16的dst7的33点dft和65点dft可以被表示为一维dft。式12例示了针对公共长度n的dft公式。
[0441]
[式10]
[0442]
wn=e-j(2π/33)
[0443]
[式11]
[0444]
wn=e-j(2π/65)
[0445]
[式12]
[0446]
wn=e-j(2π/m)
[0447]
对于n
×
n dst7实现方式,已经描述了应用具有长度2n+1的dft的处理。然而,为了方便书写,长度n而非长度2n+1可以用于包括式10和式11的内容。因此,如果通过式8和式9应用dft,则需要在正确书写时进行变换。
[0448]
此外,一维33点dft和一维65点dft也通过简单的输入/输出数据变换被表示为等效的二维dft,并且其对应的公式与式13和式14相同。
[0449]
[式13]
[0450][0451]
[式14]
[0452][0453]
其中,n指示输入数据的索引,并且k指示变换系数的索引。
[0454]
下文中,数字的余数被写为《x》n=xmodn。此外,引入了四个索引变量n1、n2、k1和k2,并且可以如同式15和式16地指示33点dft与65点dft之间的关系。
[0455]
[式15]
[0456]
n=《22n1+12n2》
33
[0457]
k=《11k1+3k2》
33
[0458]
[式16]
[0459]
n=《26n1+40n2》
65
[0460]
k=《13k1+5k2》
65
[0461]
其中,n指示输入数据的索引,并且k指示变换系数的索引。式15指示映射到33点dft的索引,并且式16指示映射到65点dft的索引。
[0462]
如同式17和式18一样给出了根据式15和式16的一维dft与二维dft之间的输入/输出数据映射。在本公开中,根据式15和式16,可以如同式17和式18一样将新输入/输出变量定义为两个索引自变量和
[0463]
[式17]
[0464][0465][0466]
[式18]
[0467][0468][0469]
其中,《x》n=xmodn。
[0470]
实施方式5-1:构成dst7的二维dft的编索引方法
[0471]
式15和式17已经启用了二维dft,但本公开不限于此。即,如果满足了式19,则可以
形成诸如式13和式14这样的二维dft。
[0472]
[式19]
[0473]
n=n1n2[0474]
n=《k1n1+k2n2》n[0475]
k=《k3k1+k4k2》n[0476]
《k1k3》n=n2[0477]
《k2k4》n=n1[0478]
《k1k4》n=《k2k3》n=0
[0479]
其中,n1和n2指示互质因子。此外,《x》n=xmod n。
[0480]
33点一维dft对应于(n1,n2)=(3,11),并且65点一维dft对应于(n1,n2)=(5,13)。在这两种情况下,由于n1和n2二者都是互质因子,因此可以应用式19。如果k1、k2、k3和k4满足式20,则在式19中,满足《k1k4》n=《k2k3》n=0条件。
[0481]
[式20]
[0482]
k1=αn2,k2=βn1,k3=γn2,k4=δn1[0483]
此外,为了满足式19的其它条件,需要满足式21的关系式。
[0484]
[式21]
[0485][0486]
因此,满足式21的所有α,β,γ,δ都可以从式20推导满足式19的k1、k2、k3和k4,从而使得能够构造等效的二维dft。α,β,γ,δ的可能实施方式如下。
[0487]
1)(α,β,γ,δ)=(2,4,1,1)
[0488]
这对应于式15,并且是(n1,n2)=(3,11)的情况。
[0489]
2)(α,β,γ,δ)=(2,8,1,1)
[0490]
这对应于式16,并且是(n1,n2)=(5,13)的情况。
[0491]
3)(α,β,γ,δ)=(1,1,2,4)
[0492]
这是(n1,n2)=(3,11)的情况。
[0493]
4)(α,β,γ,δ)=(1,1,2,8)
[0494]
这是(n1,n2)=(5,13)的情况。
[0495]
如果由从满足式21的α,β,γ,δ推导出的k1、k2、k3和k4配置对应的二维dft,则在计算二维dft的处理中,可能出现诸如这些等式中的对称性这样的输入/输出数据与中间结果值之间的对称性。
[0496]
因此,即使在具有与实施方式的索引不同的索引(即,具有不同的α,β,γ,δ值)的二维dft的情况下,结果,通过应用实施方式中提出的方法和结构,可以显著降低执行dst7所必需的复杂度。
[0497]
总之,长度n的dft(n=n1n2、n1和n2是互质因子)可以通过满足式19至式21的索引变换(即,一维索引与二维索引之间的变换)被计算为诸如式22这样的二维dft。
[0498]
[式22]
[0499]
[0500]
如果使用诸如式22这样的二维dft形式,则二维dft可以被分解为具有短长度的dft并操作。因此,与等效的一维dft相比,可以显著降低计算负荷。
[0501]
实施方式5-2:针对低复杂度dst7设计的优化
[0502]
根据式13和式14,本公开对给定的n2执行的3点dft和的5点dft。
[0503]
本公开可以针对在执行式13、式14的内部dft循环之后产生的来定义如同式23一样的的实部和虚部。
[0504]
[式23]
[0505][0506]
其中,指示实部,并且指示虚部。
[0507]
同样,输入和输出可以分别被分解为实部和虚部。
[0508]
[式24]
[0509][0510][0511]
其中,输入可以是预计将应用指定的变换的像素或残差数据。因此,可以假定实际具有a0值。
[0512]
在这样的假定下,本公开可以检查通过赋予第一步dft(即,在33点dft的情况下是3点dft,并且在65点dft的情况下是5点dft)的输入对称性而输出的第一变换数据之间的关系。这种对称性由式8或式9的p和q矩阵提供,并在式25和式26中进行了描述。
[0513]
[式25]
[0514]
情况1)
[0515]
x(0,n2)=0,x(2,n2)=-x(1,n2)
[0516]
情况2)
[0517]
x(0,n2)=-x(0,n
′2),x(1,n2)=-x(2,n
′2),x(2,n2)=-x(1,n
′2)对于某些n
′2[0518]
[式26]
[0519]
情况1)
[0520]
x(0,n2)=0,x(3,n2)=-x(2,n2),x(4,n2)=-x(1,n2)
[0521]
情况2)
[0522]
x(0,n2)=-x(0,n
′2),x(1,n2)=-x(4,n
′2),x(2,n2)=-x(3,n
′2),
[0523]
x(3,n2)=-x(2,n
′2),x(4,n2)=-x(1,n
′2)(对于某些n
′2)
[0524]
此外,在中,第一步输出关系与式27和式28相同。
[0525]
[式27]
[0526][0527]
[0528]
[式28]
[0529][0530][0531]
式25和式27指示属于33点dft的3点fft中的关系。式26和式28指示属于65点dft的5点fft中的关系。
[0532]
例如,在式25和式26中,当n2=0时出现情况1,当n2=11-n2′
,n2′
=1,2,...,10(n2=13-n2′
,n2′
=1,2,...,12)时出现情况2。对于情况1输入,来自3点fft(5点fft)的所有输出的实部变为0。因为可以根据式27和式28来恢复剩余的一个输出(两个输出),所以本公开需要保持一个(两个)虚部输出。
[0533]
在式25和式26中,由于情况2的输入模式,本公开具有如式29中的与之间的关系。
[0534]
[式29]
[0535][0536][0537]
在式29的情况下,也同样地应用11点fft(13点fft)的索引n2=11-n2′
,n2′
=1,2,...,10(n2=13-n2′
,n2′
=1,2,...,12)之间的关系。
[0538]
因此,由于式29,本公开仅当n2在[0,5]([0,6])的范围内时才执行3点fft(5点fft),因此可以减少关联的计算负荷。
[0539]
此外,在[1,5]([1,6])范围内的每个3点fft(5点fft)计算中,可以根据式21恢复输出的其它部分。因此,仅计算某些输出,即,两个(三个)实部输出和一个(两个)虚部输出。
[0540]
由于第一步输出(式29)中存在对称性,因此从式13、式14中的外部循环(第二步fft)计算出的输出被对称排列。这可以减少计算负荷。外部循环(第二步fft)的输入模式与式30至式33相同。
[0541]
[式30]
[0542]
1)实部
[0543][0544][0545]
[式31]
[0546]
1)实部
[0547][0548]
[式32]
[0549]
2)虚部
[0550][0551][0552]
[式33]
[0553]
2)虚部
[0554][0555][0556]
式30、式32指示属于33点fft的11点fft中遇到的输入对称性。
[0557]
式31、式33指示属于65点fft的13点fft中遇到的输入对称性。根据外部环路迭代,在11点fft(13点fft)的输入集当中还遇到其它对称性。这使得从先前迭代之一进行迭代的输出恢复成为可能。
[0558]
在本公开中,如果的矢量被表示为则在迭代处理中存在的输入对称性可以如同式34地表示:
[0559]
[式34]
[0560]
情况1:
[0561]
情况2:
[0562]
在诸如33点fft(65点fft)这样的二维dft中,k1具有[0,2]([0,4])的范围。
[0563]
在式34中,只有当k1=0时才出现情况1。在式34中,只有当k1=3-k1′
,k1′
=1,2(k1=5-k1′
,k1′
=1,2,3,4)时才出现情况2。
[0564]
根据式34中的对称性,所省略的迭代的输出可以从其先前的迭代之一推导出。因此,33点fft(65点fft)中的11点fft(15点fft)的有效迭代次数可以从3(5)减少至2(3)。
[0565]
此外,根据式8和式9,本公开可以仅取来自33点fft(65点fft)的输出的虚部。因此,在式34中,可以如同式35至式38地表示相应情况的输出模式。
[0566]
[式35]
[0567]
情况1:
[0568][0569]
[式36]
[0570]
情况1:
[0571][0572]
[式37]
[0573]
情况2:
[0574][0575]
[式38]
[0576]
情况2:
[0577][0578]
式35、式37指示属于33点fft的11点fft中的输出对称性。式36、式38指示属于65点fft的13点fft中的输出对称性。
[0579]
由于诸如式35至式38这样的对称性,因此在二维dft中,外部循环之后的迭代变得不必要。在式8中,根据正向dst7与dft之间的关系,最终输出的k个索引为k=2m+1。在这种情况下,对于16x16 dst7(32
×
32dst7),m的范围是[0,15]([0,31])。
[0580]
图27和图28是应用本公开的实施方式,图27例示了已经应用33点dft的16
×
16dst7的框图,并且图28例示了已经应用65点dft的32
×
32dst7的框图。
[0581]
实施方式5-3:用简化的dft块取代wingrad fft块的配置
[0582]
本实施方式提出了使用一般的dft替代winograd fft的结构。
[0583]
分别针对33点dft和65点dft,如同式7和式8一样给出用于一般的一维dft的公式。此外,分别如同式13和式14地给出与33点一维dft和65点一维dft对应的用于一般的二维dft的公式。
[0584]
在图27至图28中,第一步dft是3点dft或5点dft。用于第一步dft的一般dft公式如下。
[0585]
[式39]
[0586][0587][0588][0589]
在式39中,当n1=3时获得3点dft,而当n1=5时获得5点dft。根据式21中提出的对称性,只需要针对式34中的范围(即,n2为0~(n2-1)/2)计算对应的dft。即,当n1=3时,n2=11,而当n1=5时,n2=13。
[0590]
式25和26中的情况1对应于图27的简化的3点dft类型1和图28的简化的5点dft类型1。这对应于n2=0的情况。
[0591]
如同式40一样给出简化的3点dft类型1。
[0592]
[式40]
[0593][0594]
在式40中,仅需一个乘法,因为仅针对k1=1才需要计算。使用相同的方法如同式41那样计算针对简化的5点dft类型1的公式。
[0595]
[式41]
[0596][0597]
在式41中,仅需两个乘法,因为仅针对情况k1=1、2才需要计算。此外,从式40、式41输出的乘法2不能算作乘法,因为它可以通过左移运算来处理。
[0598]
式25和式26中的情况2分别对应于图27的简化的3点dft类型2和图28的简化的5点dft类型2,并分别对应于n2=1~5和n2=1~6的情况。
[0599]
通过式39实现简化的3点dft类型2。在这种情况下,如果使用式27的对称性,则只有当k1=0、1时才需要计算并且只有当k1=1时才需要计算
[0600]
同样地,可以通过式39实现简化的5点dft类型2。同样地,如果使用式28的对称性,则只有当k1=0、1、2时才需要计算并且只有当k1=1、2时才需要计算
[0601]
在图27和图28中,第二步dft是11点dft或13点dft。用于第二步dft的一般dft公式与式42相同。
[0602]
[式42]
[0603][0604][0605]
在式42中,当n2=11时获得11点dft,而当n2=13时获得13点dft。由于在式36至式38中提出的对称性,仅需要针对式42中的k1为0(n
1-1)/2的范围计算对应的dft。当n2=11时,n1=3,而当n2=13时,n1=5。
[0606]
式34和式35中的情况1对应于图27的简化的11点dft类型1。此外,式34和式36的情况1对应于图28的简化的13点dft类型1。
[0607]
如果使用式30至式33中提出的对称性,则如式43中那样计算简化的11点dft类型1和简化的13点dft类型1。即,这对应于k1=0的情况。
[0608]
[式43]
[0609][0610]
根据式43,简化的11点dft类型1的情况需要五个乘法,而简化的13点dft类型1的情况需要六个乘法。
[0611]
同样地,如果使用式30至式33中提出的对称性,则如同式44那样获得简化的11点dft类型2和简化的13点dft类型2。在这种情况下,当k1=1时,执行简化的11点dft类型2,并且当k1=1、2时,执行简化的13点dft类型2。
[0612]
[式44]
[0613][0614]
根据式44,简化的11点dft类型2需要十个乘法,而简化的13点dft类型2需要十二个乘法。
[0615]
在式40至式44中出现的乘法中,余弦值和正弦值被作为dft核系数相乘。由于可能的n1值和n2值为3、5、11、13,因此在对应的乘法中出现如式45中的系数值。在这种情况下,因为对应的余弦或正弦值具有0或1,所以排除了i=0的情况。
[0616]
[式45]
[0617][0618]
[0619][0620][0621]
在式43和式44中,由于n2索引仅增加直至(n
2-1)/2,因此在式45的最后两种情况下,i值限于(n
2-1)/2。
[0622]
式45中出现的所有系数的数目变为2
×
(2+4+5+6)=34,33点dft的所有系数的数目为2
×
(2+5)=14,并且65点dft的所有系数的数目为2
×
(4+6)=20。各系数可以通过缩放和四舍五入以整数形式近似。dst7的输入数据是具有整数形式的残差数据,因此所有关联的计算都可以作为整数运算执行。当然,由于中间结果值也将是缩放的值,因此在每个计算步骤或每个输出步骤中需要适当地缩小比例。
[0623]
此外,参考余弦值和正弦值的形式是系数值的参考顺序可以根据k1值和k2值而不同。
[0624]
因此,可以通过产生以值k1和k2为地址的序列表来以表查找的形式获得根据n1和n2的参考顺序。例如,如果n2=11,k2=3,则可以成为对应的表条目。可以配置针对所有可能的k2值的对应表条目。
[0625]
在图27和图28中,具有被指示为16和32的长形状的矩形对数据执行置换和符号变换。通过式15和式16中提出的索引变换以及式25和式26中提出的输入数据的对称性,图27和图28中的简化的3点dft类型1、简化的3点dft类型2、简化的5点dft类型1和简化的5点dft类型2中的每一个可以接收对应的数据。由于式25和式26的对称性,某个数据的符号被转换并输入。
[0626]
实施方式6:通过多种缩放方法实现dst7
[0627]
通过式39计算图27的简化的3点dft类型2和图28的简化的5点dft类型2。更具体地,在式39中,出现n2≠0的情况,并且和包括取决于值n1的变化的绝对值相同的许多情况。因此,如在式39中一样,尽管值n1从0增大至n
1-1,但不需要n1个乘法。在式39中,当n2≠0时(即,图27的简化的3点dft类型2和图28的简化的5点dft类型2),假定如同式46地缩放a/b值。
[0628]
[式46]
[0629][0630][0631]
如在46中,值或是具有等于或小于1的绝对值的浮点数。因此,如果值a被适当地相乘,则可以生成具有足够精度的整数值或浮点数。在式46中,可以仅基于
取决于值b的移位运算来计算被最终相乘的1/b。参考实施方式7描述相关的更详细内容。
[0632]
在式40和式41中,如果乘以a/2b而非a/b,则获得式47和式48。
[0633]
[式47]
[0634][0635]
[式48]
[0636][0637]
即使在式47和式48中,也可以通过将或乘以值a来产生具有足够精度的整数值或浮点数。可以仅通过基于值b的移位运算来计算最终相乘的1/b。参考实施方式7描述相关的更详细内容。
[0638]
简化的11点dft类型1和简化的13点dft类型1执行式43中描述的操作(对应于k1=0)。可以通过乘以作为缩放值的值c/2d来获得式49。
[0639]
[式49]
[0640][0641][0642]
如在式49中,可以乘以值c。可以应用整数或定点运算。如果如在式49中一样考虑a/b(即,在式46中相乘的缩放值),则乘入的总缩放值(即,最终结果数据之一)变为此外,从式46计算出的值可以被直接应用为输入,如式49中那样。
[0643]
简化的11点dft类型2和简化的13点dft类型2是通过式44计算出的(当k1=1时执行简化的11点dft类型2,而当k1=1、2时执行简化的13点dft类型2)。如在式49中,如果将c/2d作为缩放值相乘,则获得式50。
[0644]
[式50]
[0645][0646][0647][0648]
其中,
[0649]
即使在式50中,如在式49中一样,可以看到和已经与值c相乘。因此,可以使用整数或浮点运算来将余弦值与正弦值相乘。如在式49中那样,如果考虑了在式46中相乘的值a/b和在式47和式48中相乘的值a/2b二者,则其结果与式50中的第二个公式中一样。如果如在式50中那样定义则通过式46至式48获得的值可以被用作式50的输入数据。
[0650]
在式50中,可能的k2值在简化的11点dft类型2的情况下是从0至10,而在简化的13点dft类型2的情况下是从0至12。由于基本存在于余弦值和正弦值中的对称性,因此建立了诸如式51这样的关系式。
[0651]
[式51]
[0652][0653][0654][0655][0656]
在式51中,简化的11点dft类型2的n2值为11,并且简化的13点dft类型2的n2值为13。在式51中出现的所有标识符的定义与式50中的定义相同。
[0657]
因此,如在式51中那样,仅需针对f(k1,k2)计算的范围,并且仅需针对g(k1,k2)计算的范围。根据相同的原理,即使在式49中,也仅需基于k2的对称性来计算的范围。
[0658]
实施方式7:通过调整缩放值仅基于整数或浮点运算来实现dst7
[0659]
实施方式6中出现的所有缩放值都具有a/b形式。或先与a相乘以启用整数运算,然后再乘以1/b。此外,如式45中,在所有公式中出现的余弦值和正弦值的数目受到限制。因此,对应的余弦值和正弦值可以预先乘以值a并被存储在阵列或rom中,并且可以被用作表查找方法。式46可以如同式52那样表示。
[0660]
[式52]
[0661]
[0662][0663]
其中,在或中,如果将足够大的值作为值a相乘,然后进行舍入,则可以将余弦或正弦值修改为缩放的整数值,并且还可以充分地保持该值的精度。通常,可以使用2的幂形式(2n)的值作为值a。例如,可以使用诸如式53这样的方法来近似或
[0664]
[式53]
[0665][0666]
在式53中,四舍五入指示四舍五入运算符。用于取整数的任何四舍五入方法都可以,但可以使用基于0.5的常见舍入方法。
[0667]
在式52中,如果b是2的幂形式,则可以使用右移运算来实现乘以1/b(即,除以b)。假定b=2m,则如在式54中那样,可以对乘以1/b进行近似。此时,如在式54中,可以考虑四舍五入,但本公开不限于此。
[0668]
[式54]
[0669][0670]
此外,如式53中那样相乘的值a不需要必须是2的幂形式。特别地,如果必须额外地乘以形式的缩放因子,则这需要被合并到值a中。
[0671]
例如,在式49至式51中,作为分子相乘的值为a和c。如果可以在a或c的一侧乘以并且则可以在a侧乘以α,并且可以在c侧乘以β。a不是幂形式。对于另一示例,可以额外乘以诸如这样的值。这样做的原因是,在应用本公开的编解码器系统中,可以额外乘以以便针对具有所有大小的变换相同地维持核系数值的范围。
[0672]
作为类似的方法,可以仅分别通过式55至式58的简单运算来适当地近似式40、式41、式43和式44。
[0673]
[式55]
[0674][0675]
[式56]
[0676][0677]
[式57]
[0678][0679]
[式58]
[0680][0681][0682][0683]
,其中,
[0684]
其中,由于对称性,可以仅在部分范围(分别地,和)中计算f(k1,k2)和g(k1,k2)。因此,复杂度可以大幅降低。
[0685]
此外,用于乘以a的近似方法和用于乘以1/b的近似方法也可以应用于式47至式51。
[0686]
在具有长度8、16或32的dst7中,缩放因子乘法的取近似实现方式示例与表24相同。在表24中出现的a、b、c和d与式46至式51中出现的a、b、c和d相同。shift是作为因子引入dst7函数中的值,并且可以是基于在变换之后(或在逆变换之前)执行量化(或反量化)的方法而确定的值。
[0687]
【表24】
[0688][0689]
表25是其中应用与表24的缩放值不同的缩放值的示例。即,使用通过将表24中的缩放乘以1/4而获得的缩放值。
[0690]
【表25】
[0691]
[0692][0693]
图29是应用本公开的实施方式,并且例示了其中正向离散正弦变换-7(dst7)和正向离散余弦变换-8(dct8)被作为离散傅里叶变换(dtf)执行的编码流程图。
[0694]
编码器可以基于当前块的预测模式、块形状和/或块大小中的至少一个来确定(或选择)水平变换和/或竖直变换(s2910)。在这种情况下,水平变换和/或竖直变换的候选可以包括图6的实施方式中的至少一个。
[0695]
编码器可以通过速率失真(rd)优化来确定最佳水平变换和/或最佳竖直变换。最佳水平变换和/或最佳竖直变换可以对应于多个变换组合中的一个,并且多个变换组合可以由变换索引限定。
[0696]
编码器可以发信号通知与最佳水平变换和/或最佳竖直变换对应的变换索引(s2920)。在这种情况下,本公开中描述的其它实施方式可以应用于变换索引。例如,可以包括图6的实施方式中的至少一个。
[0697]
对于另一示例,可以独立地发信号通知最佳水平变换的水平变换索引和最佳竖直变换的竖直变换索引。
[0698]
编码器可以使用最佳水平变换在水平方向上对当前块执行正向变换(s2930)。在这种情况下,当前块可以意指变换块,并且最佳水平变换可以是正向dct8。
[0699]
此外,编码器可以使用最佳竖直变换在竖直方向上对当前块执行正向变换(s2940)。在这种情况下,最佳竖直变换可以是正向dst7,并且正向dst7可以被设计为dft。
[0700]
在本实施方式中,在执行水平变换之后,执行竖直变换,但本公开不限于此。即,在执行竖直变换之后,可以执行水平变换。
[0701]
在实施方式中,水平变换与竖直变换的组合可以包括图6的实施方式中的至少一个。
[0702]
此外,编码器可以通过对当前块执行量化来生成变换系数块(s2950)。
[0703]
编码器可以通过对变换系数块执行熵编码来生成比特流。
[0704]
图30是应用本公开的实施方式,并且例示了其中逆向离散正弦变换7(dst7)和逆向离散余弦变换8(dct8)被作为离散傅里叶变换(dtf)执行的解码流程图。
[0705]
解码器可以从比特流中获得变换索引(s3010)。在这种情况下,本公开中描述的其它实施方式可以应用于变换索引。例如,可以包括图6的实施方式中的至少一个。
[0706]
解码器可以推导与变换索引对应的水平变换和竖直变换(s3020)。在这种情况下,水平变换和/或竖直变换的候选可以包括图6的实施方式中的至少一个。
[0707]
在这种情况下,步骤s3010和s3020是实施方式,并且本公开不限于此。例如,解码器可以基于当前块的预测模式、块形状和/或块大小中的至少一者来推导水平变换和竖直变换。对于另一示例,变换索引可以包括与水平变换对应的水平变换索引和与竖直变换对应的竖直变换索引。
[0708]
此外,解码器可以通过对比特流进行熵解码来获得变换系数块,并且可以对变换系数块执行反量化(s3030)。
[0709]
解码器可以使用竖直变换在竖直方向上对反量化的变换系数块执行逆变换(s3040)。在这种情况下,竖直变换可以对应于dst7。即,解码器可以对反量化变换系数块应用逆向dst7。
[0710]
本公开提供了将正向dst7和/或逆向dst7设计为离散傅里叶变换(dft)的方法。
[0711]
解码器可以通过一维dft或二维dft实现dst7。
[0712]
此外,解码器可以通过应用各种缩放方法仅使用整数运算来实现dst7。
[0713]
此外,解码器可以通过使用dft实现dst7的方法和仅使用整数运算实现dst7的方法来设计具有长度8、16或32的dst7。
[0714]
在一个实施方式中,解码器可以推导与变换索引对应的变换组合,并且可以使用dst7或dct8在竖直或水平方向上对当前块执行逆变换。在这种情况下,变换组合可以由水平变换和竖直变换构成。水平变换和竖直变换可以对应于dst7或dct8中的任一个。
[0715]
在实施方式中,当向dst7应用33点离散傅里叶变换(dft)时,可以包括将dst7的一行或一列划分为两个部分矢量信号的步骤以及向两个部分矢量信号应用11点dft类型1或11点dft类型2的步骤。
[0716]
在实施方式中,当dst7的一行或一列被表示为src[0
…
15]时,两个部分矢量信号可以被划分为src[0
…
4]和src[5
…
15]。
[0717]
在实施方式中,当向dst7应用65点离散傅里叶变换(dft)时,可以包括将dst7的一行或一列划分为三个部分矢量信号的步骤以及向三个部分矢量信号应用13点dft类型1或13点dft类型2的步骤。
[0718]
在实施方式中,当dst7的一行或一列被表示为src[0
…
31]时,三个部分矢量信号可以被划分为src[0
…
5]、src[6
…
18]和src[19
…
31]。
[0719]
在实施方式中,可以向三个部分矢量信号中的src[0
…
5]应用13点dft类型1,并且可以向其中的src[6
…
18]和src[19
…
31]应用13点dft类型2。
[0720]
在实施方式中,16
×
16dst7所需的一维33点dft和32
×
32dst7所需的一维65点dft可以被分解为具有较短dft的等效二维dft。如上所述,可以通过利用dft执行dst7来去除冗
余计算并且可以设计低复杂度dst7。
[0721]
此外,解码器可以使用水平变换在水平方向上执行逆变换(s3050)。在这种情况下,水平变换可以对应于dct8。即,解码器可以对反量化变换系数块应用逆向dct8。
[0722]
在本实施方式中,在应用竖直变换之后,应用水平变换,但本公开不限于此。即,在应用水平变换之后,可以应用竖直变换。
[0723]
在实施方式中,水平变换与竖直变换的组合可以包括图6的实施方式中的至少一个。
[0724]
解码器通过步骤s3050生成残差块,并通过将残差块与预测块相加来生成重构块。
[0725]
下文中,描述了根据本公开提出的实施方式的整体变换处理。即,参考图1至图30描述的实施方式可以应用于下文中描述的变换处理。
[0726]
在本公开的实施方式中,解码器可以通过执行变换处理来推导当前变换块的残差样本(或残差样本阵列)。为了描述的方便,基本上描述了解码器,但本公开不限于此。根据本公开的实施方式的变换处理可以基本上相同地应用于编码器。
[0727]
在本公开的实施方式中,变换处理可以接收以下变量(或标记或参数)中的至少一个。
[0728]-基于当前图片的左上亮度样本的指示当前亮度变换块的左上亮度样本(或左上亮度样本的位置、坐标)的亮度位置(xtby,ytby)。
[0729]
在这种情况下,xtby指示当前亮度变换块的左上亮度样本的水平方向坐标,并且ytby指示当前亮度变换块的左上亮度样本的竖直方向坐标。
[0730]-指示当前变换块的水平大小(或宽度)的变量htbs
[0731]-指示当前变换块的竖直大小(或高度)的变量vtbs
[0732]-指示当前块的颜色分量的变量cidx
[0733]-具有元素d[x][y]的(htbs)
×
(vtbs)反量化变换系数阵列
[0734]
此外,变换处理可以输出具有元素r[x][y]的(htbs)
×
(vtbs)残差样本阵列。
[0735]
如果cidx值为0,则变换系数的最小值coeffmin可以被设置为亮度分量系数的最小值coeffminy,并且变换系数的最大值coeffmax可以被设置为亮度分量系数的最大值coeffmaxy。如若不然,则变换系数的最小值可以被设置为色度分量系数的最小值coeffminc,并且变换系数的最大值可以被设置为色度分量系数的最大值coeffmaxc。
[0736]
在本公开的实施方式中,编码器/解码器可以基于指示是否向当前变换块应用mts的mts语法(或语法元素)来推导用于当前变换块的主变换(或核心变换)的水平方向和/或竖直方向上的变换类型(或变换核)。例如,可以使用当前变换块的预测模式、当前变换块的宽度/高度、mts语法或cidx中的至少一者来推导所推导的变换类型。
[0737]
在本公开中,划分并描述应用mts的情况和不应用mts的情况,但本公开不限于这种表述。例如,是否应用mts可以与是否使用除了预定义的特定变换类型(可以被表示为基本变换类型或默认变换类型)之外的另一变换类型相同的含义。如果应用了mts,则可以将除了默认变换类型之外的另一变换类型(例如,多种变换类型或两种或更多种组合的变换类型中的任一种)用于变换。如果不应用mts,则可以将默认变换类型用于变换。在实施方式中,默认变换类型可以被配置(或定义)为dct2。
[0738]
例如,指示是否向当前变换块应用mts的mts标志语法和指示在应用了mts的情况
下应用于当前块的变换类型的mts索引语法可以各自被从编码器发送到解码器。又例如,包括是否向当前变换块应用mts和在应用了mts的情况下应用于当前块的变换类型二者的语法(例如,mts索引)可以被从编码器发送到解码器。即,在后一实施方式中,指示包括默认变换类型的整个变换类型组(或变换类型集)内的应用于当前变换块(或单元)的变换类型的语法(或语法元素)可以被从编码器发送到解码器。因此,尽管有这样的表述,但指示应用于当前变换块的变换类型的语法(mts索引)可以包括关于是否应用mts的信息。换句话说,在后一实施方式中,可以在没有mts标志的情况下仅发信号通知mts索引。在这种情况下,dct2可以被解释为被包括在mts中。然而,下文中,在本公开中,应用dct2的情况被描述为不应用mts。即便如此,mts的技术范围也不限于对应的定义内容。
[0739]
此外,如上所述,mts可以使用至少两种变换类型。在本公开的实施方式中,基本描述了总共使用dct2、dst7和dct8这三种变换类型的情况,但本公开不限于此。在实施方式中,为了指示变换类型,可以指派索引0(dct2)、1(dst7)或2(dct8)。
[0740]
在实施方式中,当指示是否向当前变换块应用mts的mts语法值为0时,变换类型可以被设置为0。否则,则可以根据以下表26来推导变换类型。换句话说,当mts语法值为0时,变换类型被设置为0。否则,则可以针对水平/竖直方向中的每一个将变换类型设置为1或2。
[0741]
【表26】
[0742][0743]
参照表26,在实施方式中,可以首先解析指示是否应用mts的语法(即,mts标志)。如果不应用mts,则当前变换块的变换类型可以被确定为0。如果应用mts,则可以针对水平/竖直方向来解析指示变换类型(trtype)的语法(或语法元素)。如果应用mts,则应用于水平/竖直方向的变换类型可以被确定为1或2。
[0744]
在另一实施方式中,如上所述,可以发送指示包括默认变换类型的整个变换类型组内的应用于当前变换块的变换类型的语法(即,mts索引)。在这种情况下,与表26中不同,可以在不进行mts标志解析的情况下基于mts索引如在表27中那样确定当应用mts时的变换类型和当不应用mts时的变换类型。
[0745]
【表27】
[0746]
mts索引01234trtypehor01212trtypever01122
[0747]
参照表27,当mts索引为0时,不可以应用mts。在这种情况下,应用于水平/竖直方向的变换类型可以被确定(或设置)为0。此外,当mts索引不为0时,可以应用mts。在这种情
况下,如在表27中,可以基于mts索引值将应用于水平/竖直方向的变换类型确定(或设置)为1或2。
[0748]
当根据以上提到的方法确定水平/竖直方向上的变换类型时,可以根据以下方法来推导残差样本的(htbs)
×
(vtbs)阵列。
[0749]
第一,通过针对各列调用一维变换处理,反量化变换系数d[x][y](其中,x=0..htbs-1,y=0..vtbs
–
1)的各列(即,竖直方向)可以被(逆)变换为e[x][y](其中,x=0..htbs-1,y=0..vtbs
–
1)。e[x][y]指示在竖直方向上逆变换的系数(或列表)。一维变换处理可以接收当前变换块的高度、反量化变换系数的列(或列表)d[x][y]和竖直方向变换类型作为输入,并可以输出e[x][y](y=0..vtbs
–
1)。
[0750]
第二,可以使用式59来推导中间样本值g[x][y](其中x=0..htbs-1,y=0..vtbs
–
1)。
[0751]
[式59]
[0752]
g[x][y]=clip3(coeffmin,coeffmax,(e[x][y]+64)》》7)
[0753]
参照式59,已经在竖直方向上执行逆变换之后的中间样本值(或中间变换系数值)可以被确定为从预定义的系数的最小值coeffmin与该系数的最大值coeffmax之间的缩放后的e[x][y]值中裁剪的值。
[0754]
第三,所得阵列(即,中间样本)g[x][y]的各行(即,水平方向)(其中,x=0..htbs-1,y=0..vtbs
–
1)可以通过针对各行调用一维变换处理而(逆)变换为r[x][y](其中,x=0..htbs-1,y=0..vtbs
–
1)。r[x][y]指示在水平方向上逆变换的系数(或列表)。一维变换处理可以接收当前变换块的宽度、中间样本阵列的行(或列表)g[x][y]和水平方向变换类型作为输入,并可以输出r[x][y](x=0..htbs-1)。
[0755]
下文中,描述了在水平或竖直方向上应用的一维变换处理。
[0756]
根据本公开的实施方式的一维变换处理可以在水平或竖直方向上应用。
[0757]
如果调用了针对列(即,竖直方向)的一维处理,则一维变换处理可以接收以下变量(或标记或参数)作为输入。
[0758]-指示缩放(或反量化)后的变换系数(或变换块)的竖直大小(或高度)的变量vtbs
[0759]-具有元素x[j](j=0..ntbs
–
1)的缩放后的变换系数x的列表
[0760]-变换类型变量trtype
[0761]
此外,针对列的一维变换处理可以输出具有元素y[i](i=0..ntbs
–
1)的逆变换后的样本的列表。
[0762]
相比之下,当调用了针对行(即,竖直方向)的一维处理时,一维变换处理可以接收以下变量(或标记或参数)作为输入。
[0763]-指示缩放(或反量化)后的变换系数(或变换块)的水平大小(或宽度)的变量htbs
[0764]-具有元素x[j](j=0..ntbs
–
1)的缩放后的变换系数x的列表
[0765]-变换类型变量trtype
[0766]
此外,针对行的一维变换处理可以输出具有元素y[i](i=0..ntbs
–
1)的逆变换后的样本的列表。
[0767]
在实施方式中,可以基于变换类型的值如下地应用变换矩阵。
[0768]
如果变换类型为0,则可以将式60应用于缩放后的变换系数列表。
296 274-163-353-9 349 178-262-306 114 361 62-331-223 223 331-62-361-114 306 262-178-349 9 353 163-274-296 130 359 44-338-208 236 323-79-362-97 315 250-194-344 27 357 147-285}
[0803]
{280-171-346 35 360 105-319-230 230 319-105-360-35 346 171-280-280 171346-35-360-105 319 230-230-319 105 360 35-346-171 280 280-171-346 35 360 105-319-230 230 319-105-360-35 346 171-280-280 171 346-35-360-105319 230-230-319 105 360 35-346-171 280}
[0804]
{274-194-331 97 359 9-357-114 323 208-262-285 178 338-79-361-27 353 130
ꢀ‑
315-223 250 296-163-344 62 362 44-349-147 306 236-236-306 147 349-44-362-62 344 163-296-250 223 315-130-353 27 361 79-338-178 285 262-208-323 114 357-9-359-97 331 194-274)
[0805]
{268-216-311 155 341-88-358 18 362 53-351-122 327 186-291-243 243 291-186-327 122 351-53-362-18 358 88-341-155 311 216-268-268 216 311-155-341 88 358-18-362-53 351 122-327-186 291 243-243-291 186 327-122-351 53362 18-358-88341 155-311-216 268}
[0806]
{262-236-285 208 306-178-323 147 338-114-349 79 357-44-361 9 362 27-359-62 353 97-344-130 331 163-315-194 296 223-274-250 250 274-223
ꢀ‑
296 194 315-163-331 130 344-97-353 62 359-27-362-9 361 44-357-79 349 114-338-147 323 178-306-208 285 236-262}
[0807]
{256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256
ꢀ‑
256 256 256-256-256 256 256-256-256 256 256-256-256 256 256-256
ꢀ‑
256 256 256-256-256 256 256-256-256 256}
[0808]
{250-274-223 296 194-315-163 331 130-344-97 353 62-359-27 362-9-361 44 357-79-349 114 338-147-323 178 306-208-285 236 262-262-236 285 208-306-178 323 147-338-114 349 79-357-44 361 9-362 27 359-62-353 97 344-130-331 163 315-194-296 223 274-250)
[0809]
{243-291-186 327 122-351-53 362-18-358 88 341-155-311 216 268-268-216 311 155-341-88 358 18-362 53 351-122-327 186 291-243-243 291 186-327-122 351 53-362 18 358-88-341 155 311-216-268 268 216-311-155 341 88-358-18 362-53-351 122 327-186-291243)
[0810]
{236-306-147 349 44-362 62 344-163-296 250 223-315-130 353 27-361 79 338-178-285 262 208-323-114 357 9-359 97 331-194-274 274 194-331-97 359-9-357 114 323-208-262 285 178-338-79 361-27-353 130 315-223-250 296 163-344-62 362-44-349 147 306-236}
[0811]
{230-319-105 360-35-346 171 280-280
ꢀ‑
171 346 35-360 105 319-230-230 319 105-360 35 346-171-280 280 171-346-35 360-105-319 230 230-319-105 360-35-346 171 280-280-171 346 35-360 105 319-230-230 319 105-360 35 346-171-280 280 171-346-35 360-105-319 230}
301-355 355-301 201-71-71 201-301 355-355 301-201 71 71-201 301-355 355-301 201-71-71 201-301 355-355 301-201 71 71-201 301-355 355-301 201-11-71 201-301 355-355 301-201 71}
[0833]
{62-178 274-338 362-344 285-194 79 44-163 262-331 361-349 296-208 97 27-147 250-323 359-353 306-223 114 9-130 236-315 357-357 315-236 130-9-114 223-306 353-359 323-250 147-27-97 208-296 349-361 331-262 163-44-79 194-285 344-362 338-274 178-62)
[0834]
{53-155 243-311 351-362 341-291 216-122 18 88-186 268-327 358-358 321-268 186-88-18 122-216 291-341 362-351 311-243 155-53-53 155
ꢀ‑
243 311-351 362-341 291-216 122-18-88 186-268 327-358 358-327 268-186 88 18-122216-291 341
ꢀ‑
362 351-311 243-155 53}
[0835]
{44-130 208-274 323-353 362-349 315-262 194-114 27 62-147 223-285 331-357 361-344 306-250 178-97 9 79-163 236-296 338-359 359-338 296-236 163-79-9 97-178 250-306 344-361 357-331 285-223 147-62-27 114-194 262-315 349-362 353-323 274-208 130-44}
[0836]
{35-105 171-230 280-319 346-360 360-346 319-280 230-171 105-35-35 105-171 230-280 319-346 360-360 346-319 280-230 171-105 35 35-105 171-230 280-319 346-360 360-346 319-280 230-171 105-35-35 105-171 230-280 319-346 360-360 346-319 280-230 171-105 35}
[0837]
{27-79 130-178 223-262 296-323 344-357 362-359 349-331 306-274 236-194 147-97 44 9-62 114-163 208-250 285-315 338-353 361-361 353-338 315-285 250-208 163-114 62-9-44 97-147 194-236 274-306 331-349 359-362 357-344 323-296 262-223 178-130 79-27)
[0838]
{18-53 88-122 155-186 216-243 268-291 311-327 341-351 358-362 362-358 351-341 327-311 291-268 243-216 186-155 122-88 53-18-18 53-88 122-155 186-216 243-268 291-311 327-341 351-358 362-362 358-351341-327 311-291 268-243 216-186 155-122 88-53 18)
[0839]
{9-27 44-62 79-97 114-130 147-163 178-194 208-223 236-250 262-274 285-296 306-315 323-331 338-344 349-353 357-359 361-362 362-361 359-357 353-349 344-338 331-323 315-306 296-285 274-262 250-236 223-208 194-178 163-147 130-114 97-79 62-44 27-9)),
[0840]
如果变换类型不为0,则可以将式61应用于缩放后的变换系数列表。
[0841]
[式61]
[0842]
其中i=0..ntbs-1
[0843]
参照式61,如果应用于当前变换块的变换类型不为0(即,1或2),则可以应用预定义的变换矩阵。
[0844]
例如,如果变换类型为1,则可以如以下表29地定义4
×
4变换矩阵。
[0845]
【表29】
[0846]
transmatrix[1][4][4]=
[0847]
{
[0848]
{336 296 219 117}
[0849]
{296 0-296-296}
[0850]
{219-296-117 336}
[0851]
{117-296 336-219}
[0852]
}
[0853]
此外,例如,如果变换类型为1,则可以如以下表30地定义8
×
8变换矩阵。
[0854]
【表30】
[0855]
transmatrix[1][8][8]=
[0856]
{
[0857]
{350 338 314 280 237 185 12765}
[0858]
{338 237 65-127-280-350-314-185}
[0859]
{314 65-237-350-185 127 338 280}
[0860]
{280-127-350-65 314 237-185-338}
[0861]
{237-280-185 314 127-338-65 350}
[0862]
{185-350 127 237-338 65 280-314}
[0863]
{127-314 338-185-65 280-350 237}
[0864]
{65-185 280-338 350-314 237-127}
[0865]
}
[0866]
此外,例如,如果变换类型为1,则可以如以下表31地定义16
×
16变换矩阵。
[0867]
【表31】
[0868]
transmatrix[1][16][16]=
[0869]
{
[0870]
{356 353 346 337 324 309 290 269 246 220 193 163 133 100 67 34}
[0871]
{353 324 269 193 100 0-100-193-269-324-353-353-324-269-193-100}
[0872]
{346 269 133-34-193-309-356-324-220-67 100 246 337 353 290 163}
[0873]
{337 193-34-246-353-309-133 100 290 356 269 67-163-324-346-220}
[0874]
{324 100-193-353-269 0 269 353 193-100-324-324-100 193 353 269}
[0875]
{309 0-309-309 0 309 309 0-309-309 0 309 309 0-309-309}
[0876]
{290-100-356-133 269 309-67-353-163 246 324-34-346-193 220 337}
[0877]
{269-193-324 100 353 0-353-100 324 193-269-269 193 324-100-353}
[0878]
{246-269-220 290 193-309-163 324 133-337-100 346 67-353-34 356}
[0879]
{220-324-67 356-100-309 246 193-337-34 353-133-290 269 163-346}
[0880]
{193-353 100 269-324 0 324-269-100 353-193-193 353-100-269 324}
[0881]
{163-353 246 67-324 309-34-269 346-133-193 356-220-100 337-290}
[0882]
{133-324 337-163-100 309-346 193 67-290 353-220-34 269-356 246}
[0883]
{100-269 353-324 193 0-193 324-353 269-100-100 269-353 324-193}
[0884]
{67-193 290-346 353-309 220-100-34 163-269 337-356 324-246 133}-336-119 342 103-347-86 351 69-354-52 357 35-358-17 359)
[0908]
{238-296-167 336 86-357 0 357-86-336 167 296-238-238 296 167-336-86 357 0-357 86 336-167-296 238 238-296-167 336 86-357}
[0909]
{225-322-86 359-69-329 211 238-314-103 358-52-336 i97 251-305-i19 357-35-342 182 263-296-135 354-17-347 167 275-285-151 351}
[0910]
{211-342 0 342-211-211 342 0-342 211 211-342 0 342-211-211 342 0-342 211 211-342 0 342-211-211 342 0-342 211 211-342}
[0911]
{197-354 86 285-314-35 342-238-151 359-135-251 336-17-322 275 103-357 182 211-351 69 296-305-52 347-225-167 358-119-263 329}
[0912]
{182-359 167 197-358 151 211-357 135 225-354 119 238-351 103 251-347 86 263-342 69 275-336 52 285-329 35 296-322 17 305-3 14}
[0913]
{167-357 238 86-336 296 0-296 336-86-238 357-167-167 357-238-86 336-296 0 296-336 86 238-357 167 167-357 238 86-336 296}
[0914]
{151-347 296-35-251 358-211-86 322-329 103 197-357 263 17-285 351-167-135 342-305 52 238-359 225 69-314 336-119-182 354-275}
[0915]
{135-329 336-151-119 322-342 167 103-314 347-182-86 305-351 197 69-296 354-211-52 285-357 225 35-275 358-238-17 263-359 251}
[0916]
{119-305 357-251 35 197-342 336-182-52 263-358 296-103-135 314-354 238-17-211 347-329 167 69-275 359-285 86 151-322 351-225}
[0917]
{103-275 357-322 182 17-211 336-351 251-69-135 296-359 305-151-52 238-347 342-225 35 167-314 358-285 119 86-263 354-329 197}
[0918]
{86-238 336-357 296-167 0 167-296 357-336 238-86-86 238-336 357-296 167 0-167 296-357 336-238 86 86
ꢀ‑
238 336-357 296-167}
[0919]
{69-197 296-351 354-305 211-86-52 182-285 347-357 314-225 103 35-167 275-342 358-322 238-119-17 151-263 336-359 329
ꢀ‑
251 135}
[0920]
{52-151 238-305 347-359 342-296 225-135 35 69-167 251-314 351-358 336-285 211-119 17 86-182 263-322 354
ꢀ‑
357 329-275 197-103}
[0921]
{35-103 167-225 275-314 342-357 358-347 322-285 238-182 119-52-17 86-151 211-263 305-336 354-359 351-329 296-251 197-135 69}
[0922]
{17-52 86-119 151-182 211-238 263-285 305-322 336-347 354-358 359-357 351-342 329-314 296-275 251-225 197-167 135-103 69-35}
[0923]
}
[0924]
此外,例如,如果变换类型为2,则可以如以下表33地定义4
×
4变换矩阵。
[0925]
【表33】
[0926]
transmatrix[2][4][4]=
[0927]
{
[0928]
{117 219 296 336}
[0929]
{296 296 0-296}
[0930]
{336-117-296 219}
[0931]
{219-336 296-117}
[0932]
}
[0933]
此外,例如,如果变换类型为2,则可以如以下表34地定义8
×
8变换矩阵。
[0934]
【表34】
[0935]
transmatrix[2][8][8]=
[0936]
{
[0937]
{65 127 185 237 280 314 338 350}
[0938]
{185 314 350 280 127-65-237-338}
[0939]
{280 338 127-185-350-237 65 314}
[0940]
{338 185-237-314 65 350 127-280}
[0941]
{350-65-338 127 314-185-280 237}
[0942]
{314-280-65 338-237-127 350-185}
[0943]
{237-350 280-65-185 338-314 127}
[0944]
{127-237 314-350 338-280 185-65}
[0945]
}
[0946]
此外,例如,如果变换类型为2,则可以如以下表35地定义16
×
16变换矩阵。
[0947]
【表35】
[0948]
transmatrix[2][16][16]=
[0949]
{
[0950]
{34 67 100 133 163 193 220 246 269 290 309 324 337 346 353 356}
[0951]
{100 193 269 324 353 353 324 269 193 100 0-100-193-269-324-353}
[0952]
{163 290 353 337 246 100-67-220-324-356-309-193-34 133 269 346}
[0953]
{220 346 324 163-67-269-356-290-100 133 309 353 246 34-193-337}
[0954]
{269 353 193-100-324-324-100 193 353 2690-269-353-193 100 324}
[0955]
{309 309 0-309-309 0 309 309 0-309-309 0 309 309 0-309}
[0956]
{337 220-193-346-34 324 246-163-353-67 309 269-133-356-100 290}
[0957]
{353 100-324-193 269 269-193-324 100 353 0-353-100 324 193-269}
[0958]
{356-34-353 67 346-100-337 133 324-163-309 193 290-220-269 246}
[0959]
{346-163-269 290 133-353 34 337-193-246 309 100-356 67 324-220}
[0960]
{324-269-100 353-193-193 353-100-269 3240-324 269 100-353 193}
[0961]
{290-337 100 220-356 193 133-346 269 34-309 324-67-246 353-163}
[0962]
{246-356 269-34-220 353-290 67 193-346 309-100-163 337-324 133}
[0963]
{193-324 353-269 100 100-269 353-324 1930-193 324-353 269-100}
[0964]
{133-246 324-356 337-269 163-34-100 220-309 353-346 290-193 67}
[0965]
{67-133 193-246 290-324 346-356 353-337 309-269 220-163 100-34}
[0966]
}
[0967]
此外,例如,如果变换类型为2,则可以如以下表36地定义32
×
32变换矩阵。
[0968]
【表36】
[0969]
transmatrix[2][32][32]=
[0970]
{
[0971]
{17 35 52 69 86 103 119 135 151 167 182 197 211 225 238 251 263 275 235 296 305 314 322 329 336 342 347 351 354 357 358 359}
[0972]
{52 103 151 197 238 275 305 329 347 357 359 354 342 322 296 263 225 182 135 86 35-17-69-119-167-211-251-285-314-336
ꢀ‑
351-358}
[0973]
{86 167 238 296 336 357 357 336 296 238 167 86 0-86-167-238-296-336-357-357-336-296-238-167-86 0 86 167 238 296 336 357}
[0974]
{119 225 305 351 357 322 251 151 35-86-197-285-342-359-336-275-182-69 52 167 263 329 358 347 296 211 103-17-135-238-314-354}
[0975]
{151 275 347 354 296 182 35-119-251-336-358-314-211-69 86 225 322 359 329 238 103-52-197-305-357-342-263-135 17 167 285 351}
[0976]
{182 314 359 305 167-17-197-322-358-296-151 35 211 329 357 285 135-52-225-336-354-275-119 69 238 342 351 263 103-86-251-347}
[0977]
{211 342 342 211 0-211-342-342-211 0 211 342 342 211 0-211-342-342-211 0 21 1 342 342 211 0-211
ꢀ‑
342-342-211 0 211 342}
[0978]
{238 357 296 86-167-336-336-167 86 296 357 238 0-238-357-296-86 167 336 336 167-86-296-357-238 0 238 357 296 86-167-336}
[0979]
{263 358 225-52-296-351-182 103 322 336 135-151-342-314-86 197 354 285 35-238
ꢀ‑
359-251 17 275 357 211-69-305-347-167 119 329}
[0980]
{285 347 135-182-357-251 52 314 329 86-225-359-211 103 336 305 35-263-354-167 151 351 275-17-296-342-119 197 358 238-69-322}
[0981]
{305 322 35-285-336-69 263 347 103-238-354-135 211 358 167-182-359-197 151 357 225-119-351-251 86 342 275-52-329-296 17 314}
[0982]
{322 285-69-347-238 135 358 182-197-357-119 251 342 52-296-314 17 329 275-86-351-225 151 359 167-211-354-103 263 336 35-305}
[0983]
{336 238-167-357-86 296 296-86-357-167 238 336 0-336-238 167 357 86-296-296 86 357 167-238-336 0 336 238-167-357-86 296}
[0984]
{347 182-251-314 86 359 103-305-263 167 351 17-342-197 238 322-69-358-119 296 275-151-354-35 336 211-225-329 52 357 135-285}
[0985]
{354 119-314-225 238 305-135-351 17 357 103-322-211 251 296-151-347 35 358 86-329-197 263 285-167-342 52 359 69-336-182 275}
[0986]
{358 52-351-103 336 151-314-197 285 238-251-275 211 305-167-329 119 347-69-357 17 359 35-354-86 342 135-322-182 296 225-263}
[0987]
{359-17-358 35 357-52-354 69 351-86-347 103 342-119-336 135 329-151-322 167 314-182-305 197 296-211-285 225 275-238-263 251}
[0988]
{357-86-336 167 296-238-238 296 167-336-86 357 0-357 86 336-167-296 238 238-296-167 336 86-357 0 357-86-336 167 296-238}
[0989]
{351-151-285 275 167-347-17 354-135-296 263 182-342-35 357-119-305 251 197-336-52 358-103-314 238 211-329-69 359-86-322 225}
[0990]
{342-211-211 3420-342 211 211-342 0 342-211-211 342 0-342 211 211-342 0 342-211-211 342 0-342 211 211-342 0 342-211}
[0991]
{329-263-119 358-167-225 347-52-305 296 69-351 211 182-357 103 275-322-17 336-251-135 359-151-238 342-35-314 285 86-354 197}
[0992]
{314-305-17 322-296-35 329-285-52 336-275-69 342-263-86 347-251-103 351-238-119 354-225-135 357-211-151 358-197-167 359-182}
[0993]
{296-336 86 238-357 167 167-357 238 86-336 296 0-296 336-86-238 357-167-167 357-238-86 336-296 0 296-336 86 238-357167}
[0994]
{275-354 182 119-336 314-69-225 359-238-52 305-342 135 167-351 285-17-263 357-197-103 329-322 86 211-358 251 35-296 347-151}
[0995]
{251-359 263-17-238 358-275 35 225-357 285-52-211 354-296 69 197-351 305-86-182 347-314 103 167-342 322-119-151 336-329 135}
[0996]
{225-351 322-151-86 285-359 275-69-167 329-347 211 17-238 354-314 135 103-296 358-263 52 182-336 342-197-35 251-357 305-119}
[0997]
{197-329 354-263 86 119-285 358-314 167 35-225 342-347 238-52-151 305-359 296-135-69 251-351 336-211 17 182
ꢀ‑
322357-275103}
[0998]
{167-296 357-336 238-86-86 238-336 357-296 167 0-167 296-357 336-238 86 86-238 336-357 296-167 0 167-296 357-336 238-86}
[0999]
{135-251 329-359 336-263 151-17-119 238-322 358-342 275-167 35 103-225 314-357 347-285 182-52-86 211-305 354-351 296-19769}
[1000]
{103-197 275-329 357-354 322-263 182-86-17 119-211 285-336 358-351 314-251 167-69-35 135-225 296-342 359-347 305-238 151-52}
[1001]
{69-135 197-251 296-329 351-359 354-336 305-263 211-15186-17-52 119-182 238-285 322-347 358-357 342-314 275-225 167-103 35}
[1002]
{35-69 103-135 167-197 225-251 275-296 314-329 342-351 357-359 358-354 347-336 322-305 285-263 238-211 182
ꢀ‑
151 119-86 52-17}
[1003]
}
[1004]
下文中,可以应用以上提出的方法的语法结构被作为示例描述。在实施方式中,可以定义诸如以下表37这样的更高级语法结构。
[1005]
【表37】
[1006][1007]
表37例示了序列参数集语法。编码器可以通过语法参数集发信号通知指示是否可以使用mts的语法元素。序列参数集是示例,本公开不限于此。可以通过视频参数集、图片参数集、切片头等来发信号通知语法元素。
[1008]
具体地,当mts_intra_enabled_flag为1时,可以指示在针对帧内块的残差编码语法或变换编码语法中可能存在指示是否应用mts的语法元素(例如,mts_cu_flag、mts_tu_idx、mts_cu_idx)。当mts_intra_enabled_flag为0时,可以指示在针对帧内块的残差编码语法或变换编码语法中不存在指示是否应用mts的语法元素。
[1009]
当mts_inter_enabled_flag为1时,可以指示在针对帧间块的残差编码语法或变换编码语法中可能存在指示是否应用mts的语法元素。当mts_inter_enabled_flag为0时,可以指示在针对帧间块的残差编码语法或变换编码语法中不存在指示是否应用mts的语法元素。
[1010]
在实施方式中,可以定义诸如以下表38这样的变换单元语法结构。
[1011]
【表38】
[1012]
[1013]
参照表38,如果mts可以用于当前变换块并且当前变换块的宽度和高度小于或等于预定义的最大大小,则解析mts_cu_flag语法元素。mts_cu_flag指示是否向关联的变换块应用mts。当mts_cu_flag为1时,指示向当前变换单元的残差样本应用mts。当mts_cu_flag为0时,指示不向当前变换单元的残差样本应用mts。maxsizemts变量指示应用了mts的变换块的最大大小。
[1014]
在实施方式中,可以定义诸如以下表39这样的残差编码语法结构。
[1015]
【表39】
[1016][1017]
参照表39,mts_hor_mode指示在当前变换单元的水平方向上应用于残差样本的变换类型(或变换核)。当mts_hor_mode为0时,指示在当前变换单元的水平方向上向残差样本应用dst7变换核。当mts_hor_mode为1时,指示在当前变换单元的水平方向上向残差样本应用dct8变换核。
[1018]
mts_ver_mode指示在当前变换单元的竖直方向上应用于残差样本的变换类型(或变换核)。当mts_ver_mode为0时,指示在当前变换单元的竖直方向上向残差样本应用dst7变换核。当mts_ver_mode为1时,指示在当前变换单元的竖直方向上向残差样本应用dct8变换核。
[1019]
针对x=x0..x0+cbwidth-1和y=y0..y0+cbheight
–
1,可以从以下表40中定义的mts_hor_mode和mts_ver_mode推导指示针对水平和竖直方向的变换类型(或变换核)的变量mtsmode[x][y]。
[1020]
【表40】
[1021]
[1022]
为了便于描述,已经划分和描述了本公开的以上提到的实施方式,但本公开不限于此。即,以上提到的实施方式可以被独立地执行,或者可以组合并执行一个或更多个实施方式。
[1023]
图31是例示了根据应用本公开的实施方式的基于多重变换选择(mts)对视频信号进行解码的方法的流程图。
[1024]
参照图31,解码器解析指示是否对当前块的逆变换应用mts的第一语法元素(s3101)。在这种情况下,mts指示使用除了当前块中预定义的默认变换类型之外的另一变换类型的变换模式。
[1025]
解码器通过对当前块执行反量化来推导具有当前块的宽度和高度的反量化变换系数阵列(s3102)。
[1026]
解码器基于第一语法元素来确定应用于当前块的竖直方向的竖直变换类型和应用于当前块的水平方向的水平变换类型(s3103)。
[1027]
解码器通过使用竖直变换类型和水平变换类型对反量化变换系数阵列执行逆变换来推导具有当前块的宽度和高度的残差样本阵列(s3104)。
[1028]
在实施方式中,默认变换类型可以被配置为dct2,并且除了默认变换类型之外的其余变换类型可以被配置为dst7和dct8。
[1029]
在实施方式中,如果第一语法元素指示mts不被应用于当前块的逆变换,则竖直变换类型和水平变换类型可以被确定为dct2。如果第一语法元素指示mts被应用于当前块的逆变换,则竖直变换类型和水平变换类型中的每一者可以被确定为dst7和dct8中的任一个。
[1030]
在实施方式中,还包括解析指示mts是否可用于帧内编码块的第二语法元素和指示mts是否可用于帧间编码块的第三语法元素的步骤。当第二语法元素为1时,第一语法元素可以存在于针对帧内编码块的变换单元语法中。当第三语法元素为1时,第一语法元素可以存在于针对帧间编码块的变换单元语法中。
[1031]
在实施方式中,推导残差样本阵列的步骤还可以包括以下步骤:使用竖直变换类型对反量化变换系数阵列的各列在竖直方向上执行一维变换处理;以及使用水平变换类型对通过针对各列的一维变换处理输出的中间样本阵列的各行在水平方向上执行一维变换处理。
[1032]
在实施方式中,在水平方向上执行一维变换处理的步骤还可以包括以下步骤:基于预定义系数的最小值和最大值,裁剪通过针对各列的一维变换处理输出的中间样本值。
[1033]
图32是例示了根据应用本公开的实施方式的基于多重变换选择(mts)对视频信号进行解码的设备的示图。
[1034]
参照图32,对视频信号进行解码的设备实现在图4至图31中提出的功能、处理和/或方法。具体地,该设备可以被配置为包括语法元素解析单元3201、反量化变换系数推导单元3202、变换类型确定单元3203和残差样本推导单元3204。
[1035]
语法元素解析单元3201解析指示是否将mts应用于当前块的逆变换的第一语法元素。在这种情况下,mts指示使用除了当前块中预定义的默认变换类型之外的另一变换类型的变换模式。
[1036]
反量化变换系数推导单元3202通过对当前块执行反量化来推导具有当前块的宽
度和高度的反量化变换系数阵列。
[1037]
变换类型确定单元3203基于第一语法元素来确定应用于当前块的竖直方向的竖直变换类型和应用于当前块的水平方向的水平变换类型。
[1038]
残差样本推导单元3204通过使用竖直变换类型和水平变换类型对反量化变换系数阵列执行逆变换来推导具有当前块的宽度和高度的残差样本阵列。
[1039]
在实施方式中,默认变换类型可以被配置为dct2,并且除了默认变换类型之外的其余变换类型可以被配置为dst7和dct8。
[1040]
在实施方式中,如果第一语法元素指示mts不被应用于当前块的逆变换,则竖直变换类型和水平变换类型可以被确定为dct2。如果第一语法元素指示向当前块的逆变换应用mts,则竖直变换类型和水平变换类型中的每一者可以被确定为dst7和dct8中的任一个。
[1041]
在实施方式中,语法元素解析单元解析指示mts是否可用于帧内编码块的第二语法元素和指示mts是否可用于帧间编码块的第三语法元素。当第二语法元素为1时,第一语法元素可以存在于针对帧内编码块的变换单元语法中。当第三语法元素为1时,第一语法元素可以存在于针对帧间编码块的变换单元语法中。
[1042]
在实施方式中,残差样本推导单元3204可以使用竖直变换类型对反量化变换系数阵列的各列在竖直方向上执行一维变换处理,并且可以使用水平变换类型对通过针对各列的一维变换处理输出的中间样本阵列的各行在水平方向上执行一维变换处理。
[1043]
在实施方式中,残差样本推导单元3204可以基于预定义系数的最小值和最大值,裁剪通过针对各列的一维变换处理输出的中间样本值。
[1044]
图33例示了应用本公开的视频编码系统。
[1045]
视频编码系统可以包括源装置和接收装置。源装置可以通过数字存储介质或通过网络以文件或流传输形式向接收装置发送编码后的视频/图像信息或数据。
[1046]
源装置可以包括视频源、编码设备和发送器。接收装置可以包括接收器、解码设备和渲染器。编码设备可以被称为视频/图像编码设备。解码设备可以被称为视频/图像解码设备。发送器可以被包括在编码设备中。接收器可以被包括在解码设备中。渲染器可以包括显示器。可以针对每个装置或外部部件配置显示器。
[1047]
视频源可以通过视频/图像的捕获、合成或生成处理来获得视频/图像。视频源可以包括视频/图像捕获装置和/或视频/图像生成装置。视频/图像捕获装置可以包括例如一台或更多台相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成装置可以包括例如计算机、平板和智能电话,并且可以(以电子方式)生成视频/图像。例如,可以通过计算机生成虚拟视频/图像。在这种情况下,可以用视频/图像捕获处理取代生成相关数据的处理。
[1048]
编码设备可以对输入视频/图像进行编码。编码设备可以针对压缩和编码效率执行诸如预测、变换和量化这样的一系列过程。编码后的数据(编码后的视频/图像信息)可以以比特流形式输出。
[1049]
发送器可以通过数字存储介质或通过网络以文件或流传输形式向接收装置的接收器发送以比特流形式输出的编码后的视频/图像信息或数据。数字存储介质可以包括诸如usb、sd、cd、dvd、蓝光、hdd和ssd这样的各种存储介质。发送器可以包括用于通过预定义文件格式生成媒体文件的元件,并且可以包括用于通过广播/通信网络进行发送的元件。接
收器可以提取比特流,并且将它发送到解码设备。
[1050]
解码设备可以通过执行与编码设备的操作对应的诸如反量化、逆变换和预测这样的一系列过程来对视频/图像进行解码。
[1051]
渲染器可以渲染解码后的视频/图像。可以通过显示器显示渲染后的视频/图像。
[1052]
图34例示了应用本公开的内容流传输系统。
[1053]
参照图34,应用本公开的内容流传输系统可以基本上包括编码服务器、流传输服务器、网络服务器、媒体存储器、用户设备和多媒体输入装置。
[1054]
编码服务器基本上用于通过将从诸如智能电话、相机和摄录机这样的多媒体输入装置输入的内容压缩成数字数据来生成比特流,并且将比特流发送到流传输服务器。又例如,如果诸如智能电话、相机和摄录机这样的多媒体输入装置直接生成比特流,则可以省去编码服务器。
[1055]
可以通过应用本公开的编码方法或比特流生成方法来生成比特流。流传输服务器可以在发送或接收比特流的处理中临时存储比特流。
[1056]
流传输服务器通过网络服务器基于用户请求将多媒体数据发送到用户设备。网络服务器充当通知用户提供了什么服务的媒介。当用户向网络服务器请求所期望的服务时,网络服务器将请求发送到流传输服务器。流传输服务器将多媒体数据发送到用户。在这种情况下,内容流传输系统可以包括单独的控制服务器。在这种情况下,控制服务器用于控制内容流传输系统内的设备之间的指令/响应。
[1057]
流传输服务器可以从媒体存储器和/或编码服务器接收内容。例如,如果从编码服务器接收到内容,则流传输服务器可以实时地接收内容。在这种情况下,为了提供平稳的流传输服务,流传输服务器可以将比特流存储给定时间。
[1058]
用户设备的示例可以包括移动电话、智能电话、便携式计算机、用于数字广播的终端、个人数字助理(pda)、便携式多媒体播放器(pmp)、导航器、触屏平板pc、平板pc、超级本、可穿戴装置(例如,手表型终端(智能手表)、眼镜型终端(智能眼镜)和头戴式显示器(hmd))、数字tv、台式计算机和数字标牌。
[1059]
内容流传输系统内的服务器可以用作分布式服务器。在这种情况下,可以分发和处理从服务器接收到的数据。
[1060]
如上所述,本公开描述的实施方式可以在处理器、微处理器、控制器或芯片上实现和执行。例如,图中例示的功能单元可以在计算机、处理器、微处理器、控制器或芯片上实现并执行。
[1061]
此外,应用本公开的解码器和编码器可以被包括在多媒体广播发送和接收装置、移动通信终端、家庭影院视频装置、数字影院视频装置、监视相机、视频对话装置、诸如视频通信这样的实时通信装置、移动流传输装置、存储介质、摄像机、视频点播(vod)服务提供装置、顶置(ott)视频装置、互联网流传输服务提供装置、三维(3d)视频装置、视频电话装置和医疗视频装置中,并且可以被用于处理视频信号或数据信号。例如,ott视频装置可以包括游戏控制台、blu-ray(蓝光)播放器、互联网接入tv、家庭影院系统、智能电话、平板pc和数字录像机(dvr)。
[1062]
此外,应用本公开的处理方法可以以由计算机执行的程序的形式产生,并且可以被存储在计算机可读记录介质中。根据本公开的具有数据结构的多媒体数据也可以被存储
在计算机可读记录介质中。计算机可读记录介质包括其中存储了计算机可读数据的所有种类的存储装置。计算机可读记录介质可以包括例如blue-ray盘(bd)、通用串行总线(usb)、rom、prom、eprom、eeprom、ram、cd-rom、磁带、软盘和光学数据存储装置。此外,计算机可读记录介质包括以载波(例如,通过互联网进行传输)的形式实现的介质。此外,使用编码方法生成的比特流可以被存储在计算机可读记录介质中,或者可以通过有线或无线通信网络传输。
[1063]
此外,本公开的实施方式可以使用程序代码被实现为计算机程序产品。可以由根据本公开的实施方式的计算机执行程序代码。程序代码可以被存储在可供计算机读取的载体上。
[1064]
在以上提到的实施方式中,本公开的元件和特征已经按特定形式进行了组合。这些元件或特征中的每一个都可以被认为是可选的,除非另有明确描述。这些元件或特征中的每一个都可以按不与其它元件或特征组合的形式来实现。此外,这些元件和/或特征中的一些可以被组合,以形成本公开的实施方式。可以改变本公开的实施方式中描述的操作的顺序。实施方式的一些元件或特征可以被包含在另一个实施方式中,或者可以被另一个实施方式的对应元件或特征替换。显而易见,实施方式可以通过将在权利要求书中没有明确引用关系的权利要求组合来构造或者可以在提交申请之后通过修改被包括作为新权利要求。
[1065]
根据本公开的实施方式可以通过各种装置(例如,硬件、固件、软件或它们的组合)来实现。在由硬件实现的情况下,本公开的实施方式可以使用一个或更多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器等来实现。
[1066]
在由固件或软件实现的情况下,本公开的实施方式可以按执行以上提到的功能或操作的模块、过程或功能的形式来实现。软件代码可以被存储在存储器中并且由处理器驱动。存储器可以位于处理器的内部或外部并且可以利用各种已知手段与处理器交换数据。
[1067]
本领域的技术人员显而易见的是,可以在不脱离本公开的必要特性的情况下按其它特定形式来实现本公开。因此,具体实施方式不应该被解释为限制性的,而是应该被解释为从所有方面来说都是例示性的。本公开的范围应该通过对所附权利要求的合理分析来确定,并且在本公开的等同范围内的所有修改被包括在本公开的范围内。
[1068]
工业实用性
[1069]
为了例示性目的已经公开了本公开的以上提到的优选实施方式,并且本领域的技术人员在不脱离所附权利要求书中公开的本公开的技术精神和范围的情况下,能改进、改变、替代或添加各种其它实施方式。
技术特征:
1.一种由设备基于多重变换选择mts来对视频信号进行解码的方法,该方法包括以下步骤:从所述视频信号获得语法元素,其中,所述语法元素包括指示用于帧内编码单元的语法中是否能够存在mts索引的mts帧内使能标志、指示用于帧间编码单元的语法中是否能够存在所述mts索引的mts帧间使能标志、以及与变换配置组内的多个变换组合中的任一个变换组合相对应的所述mts索引,其中,所述mts帧内使能标志和所述mts帧间使能标志被包括在所述视频信号的序列参数集中,并且其中,所述mts指示基于从所述多个变换组合中自适应地选择的变换组合的变换方法;通过对当前块执行反量化来推导具有所述当前块的宽度和高度的反量化变换系数阵列;基于所述mts索引来确定应用于所述当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;以及基于所述竖直变换类型和所述水平变换类型对所述反量化变换系数阵列执行逆变换来推导具有所述当前块的所述宽度和所述高度的残差样本阵列,其中,推导所述残差样本阵列的步骤包括以下步骤:基于所述竖直变换类型对所述反量化变换系数阵列的各列在所述竖直方向上执行一维变换处理以输出中间样本阵列;以及基于所述水平变换类型对所述中间样本阵列的各行在所述水平方向上执行一维变换处理,并且其中,在所述水平方向上执行所述一维变换处理的步骤包括基于预定义系数的最小值和最大值来裁剪通过针对各列的所述一维变换处理输出的中间样本值。2.根据权利要求1所述的方法,其中,所述多个变换组合包括离散余弦变换类型2dct2、离散正弦变换类型7dst7和离散余弦变换类型8dct8中的至少一个。3.根据权利要求1所述的方法,其中,当所述mts索引具有为零的值时,所述竖直变换类型和所述水平变换类型被确定为dct2,并且其中,当所述mts索引具有为非零的值时,所述竖直变换类型和所述水平变换类型中的每一者被确定为dst7和dct8中的任一个。4.一种由设备基于多重变换选择mts来对视频信号进行编码的方法,该方法包括以下步骤:生成残差样本阵列;确定应用于当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;基于所述竖直变换类型和所述水平变换类型对所述当前块执行变换;通过对所述当前块执行量化来推导具有所述当前块的宽度和高度的量化变换系数阵列;以及对所述当前块执行熵编码以生成比特流,其中,所述mts指示基于从变换配置组内的多个变换组合中自适应地选择的变换组合
的变换方法,其中,用于所述mts的语法元素被编码到所述比特流中,其中,所述语法元素包括指示用于帧内编码单元的语法中是否能够存在mts索引的mts帧内使能标志、指示用于帧间编码单元的语法中是否能够存在所述mts索引的mts帧间使能标志、以及与所述多个变换组合中的任一个变换组合相对应的所述mts索引,其中,所述mts帧内使能标志和所述mts帧间使能标志被包括在所述比特流的序列参数集中,其中,所述多个变换组合中的所述任一个变换组合包括所述竖直变换类型和所述水平变换类型,并且其中,对所述当前块执行所述变换的步骤包括以下步骤:基于所述水平变换类型对所述残差样本阵列的各行在所述水平方向上执行一维变换处理以输出中间样本阵列;以及基于所述竖直变换类型对所述中间样本阵列的各列在所述竖直方向上执行一维变换处理。5.一种计算机可读存储介质,所述计算机可读存储介质用于存储通过基于多重变换选择mts的图像编码方法生成的比特流,所述图像编码方法包括以下步骤:生成残差样本阵列;确定应用于当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;基于所述竖直变换类型和所述水平变换类型对所述当前块执行变换;通过对所述当前块执行量化来推导具有所述当前块的宽度和高度的量化变换系数阵列;以及对所述当前块执行熵编码以生成比特流,其中,所述mts指示基于从变换配置组内的多个变换组合中自适应地选择的变换组合的变换方法,其中,用于所述mts的语法元素被编码到所述比特流中,其中,所述语法元素包括指示用于帧内编码单元的语法中是否能够存在mts索引的mts帧内使能标志、指示用于帧间编码单元的语法中是否能够存在所述mts索引的mts帧间使能标志、以及与所述多个变换组合中的任一个变换组合相对应的所述mts索引,其中,所述mts帧内使能标志和所述mts帧间使能标志被包括在所述比特流的序列参数集中,其中,所述多个变换组合中的所述任一个变换组合包括所述竖直变换类型和所述水平变换类型,并且其中,对所述当前块执行所述变换的步骤包括以下步骤:基于所述水平变换类型对所述残差样本阵列的各行在所述水平方向上执行一维变换处理以输出中间样本阵列;以及基于所述竖直变换类型对所述中间样本阵列的各列在所述竖直方向上执行一维变换处理。6.一种发送用于图像的比特流的发送方法,所述图像是基于多重变换选择mts来编码
的,所述发送方法包括以下步骤:获得用于所述图像的所述比特流,其中,所述比特流是通过以下操作生成的:生成残差样本阵列;确定应用于当前块的竖直方向的竖直变换类型和应用于所述当前块的水平方向的水平变换类型;基于所述竖直变换类型和所述水平变换类型对所述当前块执行变换;生成mts索引,所述mts索引与变换配置组内的多个变换组合中的一个变换组合相对应,所述多个变换组合中的所述一个变换组合包括所述竖直变换类型和所述水平变换类型,并且所述mts指示基于从所述多个变换组合中自适应地选择的变换组合的变换方法;通过对所述当前块执行量化来推导具有所述当前块的宽度和高度的量化变换系数阵列;并且对所述当前块执行熵编码;以及发送用于所述图像的所述比特流,其中,所述比特流中的序列参数集包括指示用于帧内编码单元的语法中是否能够存在所述mts索引的mts帧内使能标志以及指示用于帧间编码单元的语法中是否能够存在所述mts索引的mts帧间使能标志,其中,基于所述mts帧内使能标志或所述mts帧间使能标志来将所述mts索引编码到所述比特流中,并且其中,对所述当前块执行所述变换的操作包括:基于所述水平变换类型对所述残差样本阵列的各行在所述水平方向上执行一维变换处理以输出中间样本阵列;以及基于所述竖直变换类型对所述中间样本阵列的各列在所述竖直方向上执行一维变换处理。
技术总结
本申请涉及编码/解码方法、存储介质和发送方法。本发明涉及一种基于多重变换选择(MTS)的视频信号解码方法。该方法可以包括以下步骤:解析表示MTS是否应用于当前块的逆变换的第一语法元素,其中,MTS表示使用除了针对当前块预定义的默认变换类型之外的变换类型的变换模式;通过对当前块执行反量化,推导具有当前块的宽度和高度的反量化变换系数阵列;基于第一语法元素来确定应用于当前块的竖直方向的竖直变换类型和应用于当前块的水平方向的水平变换类型;以及通过使用竖直变换类型和水平变换类型对反量化变换系数阵列执行逆变换,推导具有当前块的宽度和高度的残差样本阵列。阵列。阵列。
技术研发人员:具文模 M
受保护的技术使用者:LG电子株式会社
技术研发日:2019.08.08
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
