处理视频信号的方法和设备
文献发布时间:2023-06-19 12:21:13
技术领域
本公开的实施例涉及一种用于处理视频信号的方法和装置,更具体地,涉及一种用于编码/解码残差数据的方法和装置。
背景技术
压缩编译是指一种用于通过通信线路发送数字化信息或以适当的形式将其存储在存储介质中的信号处理技术。诸如视频、图像和音频的媒体可以是压缩编译的目标,特别是对图像执行压缩编译的技术被称为视频图像压缩。
下一代视频内容将具有高空间分辨率、高帧率和场景表示的高维度的特征。为了处理这样的内容,存储器存储、存储器访问率和处理能力将显著增加。
因此,有必要设计一种编译工具来更有效地处理下一代图像内容。
发明内容
技术问题
本公开的实施例提出了一种基于根据扫描顺序的变换块内的最后有效系数的位置对残差信息进行编码和解码的方法。
本发明的实施例中要实现的技术目的不限于上述技术目的,以及本公开所属领域的普通技术人员从下述描述可以显然地理解上文未描述的其他技术目的。
技术方案
根据本公开的实施例的一种处理视频信号的方法包括:获得有关变换块内的根据扫描顺序的最后有效系数的位置的信息;基于最后有效系数的位置信息确定当前变换块内的变换目标区域,以及对变换目标区域执行逆变换。最后有效系数的位置信息包括用于最后有效系数的列位置的第一前缀和用于最后有效系数的行位置的第二前缀。基于变换块的有效宽度确定第一前缀的范围。基于变换块的有效高度确定第二前缀的范围。当变换块的宽度对应于第一大小时,将变换块的有效宽度确定为第二大小。当变换块的高度对应于第一大小时,将变换块的有效高度确定为第二大小,以及第二大小被设置为小于第一大小。
根据本公开的另一实施例的一种编码视频信号的方法包括:通过对处理目标块的变换目标区域执行变换,生成包括变换系数的变换块,其中,处理目标块包括视频信号中除预测信号外的残差信号;以及编码与残差信号相关的残差编译信息。残差编译信息包括变换块内的根据扫描顺序的最后有效系数的位置信息。最后有效系数的位置信息包括用于最后有效系数的列位置的第一前缀和用于最后有效系数的行位置的第二前缀。基于变换块的有效宽度确定第一前缀的范围。基于变换块的有效高度确定第二前缀的范围。当变换块的宽度对应于第一大小时,将变换块的有效宽度确定为第二大小。当变换块的高度对应于第一大小时,将变换块的有效高度确定为第二大小。第二大小小于第一大小。
根据本公开的实施例的一种解码视频信号的装置包括:存储视频信号的存储器;以及连接到存储器并且被配置为处理视频信号的处理器。处理器被配置为:获得有关变换块内的根据扫描顺序的最后有效系数的位置的信息;基于最后有效系数的位置信息确定当前变换块内的变换目标区域,以及对变换目标区域执行逆变换。最后有效系数的位置信息包括用于最后有效系数的列位置的第一前缀和用于最后有效系数的行位置的第二前缀。基于变换块的有效宽度确定第一前缀的范围。基于变换块的有效高度确定第二前缀的范围。当变换块的宽度对应于第一大小时,将变换块的有效宽度确定为第二大小。当变换块的高度对应于第一大小时,将变换块的有效高度确定为第二大小,以及第二大小被设置为小于第一大小。
根据本公开的实施例的一种编码视频信号的装置包括存储视频信号的存储器;以及连接到存储器并且被配置为处理视频信号的处理器。处理器被配置为:通过对处理目标块的变换目标区域执行变换,生成包括变换系数的变换块,该处理目标块包括视频信号中除预测信号外的残差信号;以及编码与残差信号相关的残差编译信息。残差编译信息包括变换块内的根据扫描顺序的最后有效系数的位置信息。最后有效系数的位置信息包括用于最后有效系数的列位置的第一前缀和用于最后有效系数的行位置的第二前缀。基于变换块的有效宽度确定第一前缀的范围。基于变换块的有效高度确定第二前缀的范围。当变换块的宽度对应于第一大小时,将变换块的有效宽度确定为第二大小。当变换块的高度对应于第一大小时,将变换块的有效高度确定为第二大小。第二大小小于第一大小。
本公开的实施例提供一种存储一个或多个指令的非暂时性计算机可读介质。由一个或多个处理器执行的一个或多个指令控制视频信号处理装置:获得有关变换块内的根据扫描顺序的最后有效系数的位置的信息;基于最后有效系数的位置信息确定当前变换块内的变换目标区域,以及对变换目标区域执行逆变换。最后有效系数的位置信息包括用于最后有效系数的列位置的第一前缀和用于最后有效系数的行位置的第二前缀。当变换块的宽度对应于第一大小时,将变换块的有效宽度确定为第二大小。当变换块的高度对应于第一大小时,将变换块的有效高度确定为第二大小,以及第二大小被设置为小于第一大小。
在实施例中,第一大小可以设置为32,以及第二大小可以设置为16。
在实施例中,当变换块的宽度不同于第一大小时,将变换块的有效宽度确定为变换块的宽度和第一大小中的较小值,以及当变换块的高度不同于第一大小时,将变换块的有效高度确定为变换块的高度和第一大小中的较小值。
在实施例中,基于变换块的宽度确定用于第一前缀的二值化的输入参数,以及基于变换块的高度确定用于第二前缀的二值化的输入参数。
在实施例中,基于第一前缀和第一后缀,确定最后有效系数的列位置,基于第二前缀和第二后缀,确定最后有效系数的行位置,当第一前缀大于参考值时获得第一后缀,以及当第二前缀大于参考值时获得第二后缀。
用于解码视频信号的实施例可以进一步包括:确定变换目标区域;以及对变换目标区域执行逆变换。确定变换目标区域可以包括:当变换块的宽度或高度对应于第一大小时,将变换目标区域的宽度或高度设置为第二大小并且将变换块内除变换目标区域以外的部分导出为0。
在用于编码视频信号的实施例中,生成变换块可以包括:当处理目标块的宽度或高度对应于第一大小时,将变换目标区域的宽度或高度设置为第二大小以及将处理目标块内除变换目标区域以外的部分导出为0。
有益效果
根据本公开的实施例,通过基于变换块的大小,对变换块内的最后有效系数的位置进行编码/解码来执行变换,可以显著降低变换和残差编译所需的复杂度。
通过本公开可以获得的效果不限于上述效果,并且本公开所属领域的普通技术人员可以从以下描述显然地理解上文未描述的其他技术效果。
附图说明
本文包括为说明书的一部分以帮助理解本公开的附图提供了本公开的实施例,并且通过下面的描述描述了本公开的技术特征。
图1示出了作为应用本公开的实施例的视频编译系统的示例。
图2是作为应用本公开的实施例的编码视频/图像信号的编码装置的示意性框图。
图3是作为应用本公开的实施例的解码图像信号的解码装置的示意性框图。
图4是作为应用本公开的实施例的内容流传输系统的结构图。
图5示出了本公开适用的实施例,图5a是用于描述根据QT(四叉树)的块分段结构的图,图5b是用于描述根据BT(二叉树)的块分段结构的图,图5c是用于描述根据TT(三叉树)的块分段结构的图,以及图5d是用于描述根据AT(非对称树)的块分段结构的图。
图6和图7示出了应用本公开的实施例,图6是编码装置中的变换和量化单元以及逆量化和逆变换单元的示意性框图,以及图7是解码装置中的逆量化和逆变换单元的示意性框图。
图8是示出执行自适应多重变换(AMT)的过程的流程图。
图9是示出执行AMT的解码过程的流程图。
图10是示出根据本公开实施例的基于MTS的逆变换过程的流程图。
图11是根据本公开实施例的基于MTS执行解码的装置的框图。
图12和图13是示出作为应用本公开的实施例的应用二次变换的编码/解码的流程图。
图14和图15示出了应用本公开的实施例,图14是用于描述吉文斯(Givens)旋转的图,以及图15示出了由吉文斯(Givens)旋转层和置换组成的4x4不可分离二次变换(NSST)中的一轮的配置。
图16示出了作为应用本公开的实施例的缩减二次变换(RST)的操作。
图17是示出作为应用本公开的实施例的按照逆扫描顺序从第64系数到第17系数执行反向扫描的过程的图。
图18是示出作为应用本公开的实施例的使用单一变换指示符(STI)的编码的示例性流程图。
图19是示出作为应用本公开的实施例的使用统一变换指示符(UTI)的编码的示例性流程图。
图20a和20b图示了作为应用本公开的实施例的使用UTI进行编码的两个示例性流程图。
图21是示出作为应用本公开的实施例的用于执行变换的编码的示例性流程图。
图22是示出作为应用本公开的实施例的用于执行变换的解码的示例性流程图。
图23是示出作为应用本公开的实施例的编码装置100中的变换单元120的示例的详细框图。
图24是示出作为应用本公开的实施例的解码装置200中的逆变换单元230的示例的详细框图。
图25是作为应用本公开的实施例的用于处理视频信号的流程图。
图26是图示根据应用本公开的实施例的用于变换视频信号的方法的流程图。
图27是图示作为应用本公开的实施例的使用缩减变换对视频信号进行编码的方法的图。
图28是图示作为应用本公开的实施例的使用缩减变换对视频信号进行解码的方法的图。
图29是根据本公开的实施例的应用可分离变换的情况的示例。图29a图示了正向变换时存在有效系数的区域和应用归零的区域。图29b图示了反向变换时存在有效系数的区域和应用归零的区域。
图30图示了根据本公开的实施例的用于编码视频信号的流程图的示例。
图31图示了根据本公开的实施例的用于解码视频信号的流程图的示例。
图32是应用本公开的实施例并且图示了用于处理视频信号的装置的框图的示例。
具体实施方式
参考附图,详细地描述本公开的一些实施例。将与附图一起公开的详细描述旨在描述本公开的一些实施例,并不旨在描述本公开的唯一实施例。以下详细描述包括更多细节以提供对本公开的全面理解。然而,本领域技术人员将理解到,可以在没有这些更多细节的情况下实施本公开。
在一些情况下,为了避免本公开的概念变得模糊,已知的结构和设备被省略或者可以基于每个结构和设备的核心功能以框图的形式示出。
尽管本公开中使用的大多数术语选自本领域中广泛使用的通用术语,但是一些术语由申请人任意选择,并且在下面的描述中根据需要详细说明了它们的含义。因此,应当以术语的预期含义而不是它们的简单名称或含义来理解本公开。
提供了在以下描述中使用的特定术语以帮助理解本公开,并且在不脱离本公开的技术精神的情况下可以以各种形式改变这样的特定术语的使用。例如,可以在每个编译过程中适当地替换和解释信号、数据、样本、图片、帧、块等。
在本说明书中,“处理单元”是指执行诸如预测、变换和/或量化的编码/解码过程的单元。进一步地,处理单元可以被解释为包括用于亮度分量的单元和用于色度分量的单元的含义。例如,处理单元可以对应于块、编译单元(CU)、预测单元(PU)或变换单元(TU)。
另外,处理单元可以被解释成用于亮度分量的单元或用于色度分量的单元。例如,处理单元可以对应于用于亮度分量的编译树块(CTB)、编译块(CB)、PU或变换块(TB)。进一步地,处理单元可以对应于用于色度分量的CTB、CB、PU或TB。此外,处理单元不限于此,并且可以被解释为包括用于亮度分量的单元和用于色度分量的单元。
另外,处理单元不一定限于方形块,并且可以被配置为具有三个或更多顶点的多边形形状。
此外,在本说明书中,像素被称为样本。此外,使用样本可以意指使用像素值等。
图1示出了作为应用本公开的实施例的视频编译系统的示例。
视频编译系统可以包括源设备10和接收设备20。源设备10可以将编码的视频/图像信息或数据以文件或流传输的形式通过数字存储介质或网络发送到接收设备20。
源设备10可以包括视频源11、编码装置12和发射器13。接收设备20可以包括接收器21、解码装置22和渲染器23。编码装置12可以称为视频/图像编码装置,而解码装置20可以被称为视频/图像解码装置。发射器13可以被包括在编码装置12中。接收器21可以被包括在解码装置22中。渲染器23可以包括显示器并且显示器可以被配置为单独的设备或外部组件。
视频源可以通过视频/图像捕获、组合或生成过程来获取视频/图像。视频源可以包括视频/图像捕获设备和/或视频/图像生成设备。视频/图像捕获设备可以包括例如一个或多个相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成设备可以包括例如计算机、平板计算机、智能电话等并且(电子地)生成视频/图像。例如,可以通过计算机等生成虚拟视频/图像,并且在这种情况下,视频/图像捕获过程可以用相关数据生成过程代替。
编码装置12可以对输入视频/图像进行编码。为了压缩和编译效率,编码装置12可以执行一系列的过程,诸如预测、变换和量化。编码的数据(编码的视频/图像信息)可以以比特流的形式输出。
发射器13可以将编码的视频/图像信息或以比特流的形式输出的数据以文件或流传输的形式通过数字存储介质或网络发送到接收设备的接收器。数字存储介质可以包括各种存储介质,诸如USB、SD、CD、DVD、蓝光、HDD和SSD。发射器13可以包括用于通过预定文件格式生成媒体文件的元件和用于通过广播/通信网络传输的元件。接收器21可以提取比特流并将该比特流发送到解码装置22。
解码装置22可以通过执行对应于编码装置12的操作的一系列过程,诸如逆量化、逆变换和预测,来对视频/图像进行解码。
渲染器23可以渲染解码的视频/图像。渲染的视频/图像可以通过显示器显示。
图2是作为应用本公开的实施例的对视频/图像信号进行编码的编码装置的示意性框图。编码装置100可以对应于图1的编码装置12。
图像分割单元110可以将输入到编码装置100的输入图像(或图片或帧)划分成一个或多个处理单元。例如,处理单元可以称为编译单元(CU)。在这种情况下,编译单元可以根据四叉树二叉树(QTBT)结构从编译树单元(CTU)或最大编译单元(LCU)递归地分段。例如,可以基于四叉树结构和/或二叉树结构,将单个编译单元分段为深度更深的多个编译单元。在这种情况下,可以首先应用四叉树结构,然后再应用二叉树结构。可替代地,可以首先应用二叉树结构。可以基于不再被分段的最终编译单元来执行根据本公开的编译过程。在这种情况下,可以将最大编译单元直接用作最终编译单元,也可以将编译单元递归地分段为深度更深的编译单元,并且根据图像特性,基于编译效率,根据需要将具有最优大小的编译单元用作最终编译单元。在此,编译过程可以包括稍后描述的诸如预测、变换和重构的过程。可替代地,处理单元可以进一步包括预测单元(PU)或变换单元(TU)。在这种情况下,预测单元和变换单元可以从上述最终编译单元中分段或分割。预测单元可以是样本预测的单元,而变换单元可以是导出变换系数的单元和/或由变换系数导出残差信号的单元。
单元可以与术语“块”或“区域”互换使用。通常,MxN块表示M列和N行的一组样本或变换系数。样本通常可以表示像素或像素值,并且可以仅表示亮度分量的像素/像素值或仅表示色度分量的像素/像素值。样本可以被用作对应于图片(图像)、像素或像元(pixel或pel)的术语。
编码装置100可以通过从输入视频信号(原始块或原始样本阵列)减去从帧间预测单元180或帧内预测单元185输出的预测信号(预测块或预测样本阵列)来生成残差信号(残差块或残差样本阵列),并且将所生成的残差信号发送到变换单元120。在这种情况下,在编码器100中,从输入视频信号(原始块或原始样本阵列)中减去预测信号(预测块或预测样本阵列)的单元可以被称为减法器115,如所示。预测器可以对处理目标块(在下文中,称为当前块)执行预测,并且生成包括针对当前块的预测样本的预测块。预测器可以确定是将帧内预测还是帧间预测应用于当前块或CU单元。预测器可以生成关于预测的各种类型的信息,诸如预测模式信息,并且将该信息发送到熵编码单元190,如稍后在每个预测模式的描述中所描述的。可以在熵编码单元190中编码关于预测的信息并且以比特流的形式输出。
帧内预测单元185可以参考当前图片中的样本来预测当前块。根据预测模式,参考样本可以与当前块相邻或者可以与其分离。在帧内预测中,预测模式可以包括多个非方向模式和多个方向模式。例如,非方向模式可以包括DC模式和平面模式。根据预测方向的精细程度,方向模式可以包括例如33个方向预测模式或65个方向预测模式。然而,这是示例性的并且可以根据设置使用数量等于或大于65或等于或小于33的多个方向预测模式。帧内预测单元185可以使用应用于相邻块的预测模式来确定将应用于当前块的预测模式。
帧间预测单元180可以基于由参考图片上的运动矢量指定的参考块(参考样本阵列)来导出关于当前块的预测块。在此,为了减少在帧间预测模式中发送的运动信息量,可以基于相邻块和当前块之间的运动信息的相关性,以块、子块或样本为单位来预测运动信息。运动信息可以包括运动矢量和参考图片索引。运动信息可以进一步包括帧间预测方向(L0预测、L1预测、Bi预测等)信息。在帧间预测的情况下,相邻块可以包括当前图片中存在的空间相邻块和参考图片中存在的时间相邻块。包括参考块的参考图片可以与包括时间相邻块的参考图片相同或不同。时间相邻块可以被称为并置参考块或并置CU(colCU),并且包括时间相邻块的参考图片可以被称为并置图片(colPic)。例如,帧间预测单元180可以基于相邻块形成运动信息候选列表,并且生成指示使用哪个候选来导出当前块的运动矢量和/或参考图片索引的信息。可以基于各种预测模式来执行帧间预测,并且在跳过模式和合并模式的情况下,帧间预测单元180可以将相邻块的运动信息用作当前块的运动信息。在跳过模式的情况下,不同于合并模式,可以不发送残差信号。在运动矢量预测(MVP)模式的情况下,可以通过将相邻块的运动矢量用作运动矢量预测器并且发信号告知运动矢量差来指示当前块的运动矢量。
通过帧间预测单元180或帧内预测单元185生成的预测信号可以被用来生成重构信号或残差信号。
变换单元120可以通过将变换技术应用于残差信号来生成变换系数。例如,变换技术可以包括DCT(离散余弦变换)、DST(离散正弦变换)、KLT(Karhunen-Loeve变换)、GBT(基于图的变换)和CNT(条件非线性变换)中的至少一种。在此,GBT是指从表示关于像素之间的关系的信息的图中获得的变换。CNT是指基于使用所有先前重构的像素生成的预测信号而获得的变换。此外,变换过程可以被应用于具有相同大小的方形像素块或应用于具有可变大小的非方形块。
量化单元130可以量化变换系数并且将量化的变换系数发送到熵编码单元190,而熵编码单元190可以对量化的信号(关于量化的变换系数的信息)进行编码并且将编码的信号输出为比特流。关于量化的变换系数的信息可以被称为残差信息。量化单元130可以基于系数扫描顺序,将以块形式的量化的变换系数重新排列为一维矢量的形式,并且基于一维矢量的形式的量化的变换系数来生成关于量化的变换系数的信息。例如,熵编码单元190可以执行各种编码方法,诸如指数哥伦布、CAVLC(上下文自适应可变长度编码)和CABAC(上下文自适应二进制算术编码)。熵编码单元190可以对视频/图像重构所需的信息(例如,语法元素的值等)与量化的变换系数一起或分开地进行编码。编码的信息(例如,视频/图像信息)可以以网络抽象层(NAL)单元为单位以比特流的形式发送或存储。比特流可以通过网络发送或存储在数字存储介质中。在此,网络可以包括广播网络和/或通信网络,而数字存储介质可以包括各种存储介质,诸如USB、SD、CD、DVD、蓝光、HDD和SSD。发送从熵编码单元190输出的信号的发射器(未示出)和/或存储该信号的存储器(未示出)可以被配置为编码装置100的内部/外部元件,并且发射器可以是熵编码单元190的组件。
从量化单元130输出的量化的变换系数可以被用来生成预测信号。例如,可以通过在环路中的逆量化单元140和逆变换单元150将逆量化和逆变换应用于量化的变换系数,来重构残差信号。加法器155可以将重构的残差信号与从帧间预测单元180或帧内预测单元185输出的预测信号相加,使得可以生成重构信号(重构图像、重构块或重构样本阵列)。当不存在关于处理目标块的残差时(如在应用跳过模式的情况下),可以将预测块用作重构块。加法器155也可以被称为重构单元或重构块生成器。生成的重构信号可以被用于当前图片中的下一个处理目标块的帧内预测,或者通过稍后将描述的滤波,用于下一个图片的帧间预测。
滤波单元160可以通过对重构信号应用滤波来提高主观/客观图片质量。例如,滤波单元160可以通过对重构图片应用各种滤波方法来生成修正的重构图片并且将修正的重构图片发送到解码图片缓冲器170。各种滤波方法可以包括例如去块滤波、样本自适应偏移(SAO)、自适应环路滤波(ALF)和双边滤波。滤波单元160可以生成关于滤波的各种类型的信息,并将该信息发送到熵编码单元190,如稍后将在每种滤波方法的描述中描述的。关于滤波的信息可以在熵编码单元190中被编码并且以比特流的形式输出。
发送到解码图片缓冲器170的修正的重构图片可以在帧间预测单元180中被用作参考图片。因此,当应用帧间预测时,编码设备可以避免编码装置100和解码装置之间的失配并且提高编码效率。
解码图片缓冲器170可以存储修正的重构图片,使得修正的重构图片被用作帧间预测单元180中的参考图片。
图3是作为应用本公开的实施例的执行视频信号的解码的解码装置的示意性框图。图3的解码装置200对应于图1的解码装置22。
参考图3,解码装置200可以包括熵解码单元210、逆量化单元220、逆变换单元230、加法器235、滤波单元240、解码图片缓冲器(DPB)250、帧间预测单元260以及帧内预测单元265。帧间预测单元260和帧内预测单元265可以统称为预测器。即,预测器可以包括帧间预测单元180和帧内预测单元185。逆量化单元220和逆变换单元230可以统称为残差处理器。即,残差处理器可以包括逆量化单元220和逆变换单元230。根据实施例,前述的熵解码单元210、逆量化单元220、逆变换单元230、加法器235、滤波单元240、帧间预测单元260和帧内预测单元265可以被配置为单个硬件组件(例如,解码器或处理器)。此外,根据实施例,解码图片缓冲器250可以被配置为单个硬件组件(例如,存储器或数字存储介质)。
当包括视频/图像信息的比特流被输入时,解码装置200可以通过与在图2的编码装置100中处理视频/图像信息的过程相对应的过程来重构图像。例如,解码装置200可以使用编码装置100中应用的处理单元来执行解码。因此,解码的处理单元例如可以是编译单元,并且可以根据四叉树结构和/或二叉树结构,从编译树单元或最大编译单元中分段出该编译单元。此外,可以通过再现装置再现由解码装置200解码和输出的重构视频信号。
解码装置200可以接收从图2的编码装置100以比特流形式输出的信号,并且可以通过熵解码单元210解码所接收的信号。例如,熵解码单元210可以解析比特流以导出图像重构(或图片重构)所需的信息(例如,视频/图像信息)。例如,熵解码单元210可以基于诸如指数哥伦布、CAVLC或CABAC的编译方法对比特流中的信息进行解码,并且输出图像重构所需的语法元素值和关于残差的变换系数的量化值。更具体地,CABAC熵解码方法接收与比特流中的每个语法元素对应的bin,使用解码目标语法元素信息以及相邻和解码目标块的解码信息或关于在前一阶段解码的符号/bin的信息来确定上下文模型,根据确定的上下文模型预测bin生成概率并执行bin的算术解码,以生成对应于每个语法元素值的符号。在此,CABAC熵解码方法可以在确定上下文模型之后,使用关于为下一个符号/bin的上下文模型解码的符号/bin的信息来更新上下文模型。在熵解码单元210中解码的信息当中关于预测的信息可以被提供给预测器(帧间预测单元260和帧内预测单元265),并且可以将在熵解码单元210中已经对其执行了熵解码的残差值,即,量化的变换系数,以及相关的参数信息输入到逆量化单元220。此外,在熵解码单元210中解码的信息当中关于滤波的信息可以被提供给滤波单元240。同时,接收从编码装置100输出的信号的接收器(未示出)可以被另外配置为解码装置200的内部/外部元件,或者该接收器可以是熵解码单元210的组件。
逆量化单元220可以将量化的变换系数逆量化以输出变换系数。逆量化单元220可以以二维块的形式重新排列量化的变换系数。在这种情况下,可以基于在编码装置100中的系数扫描顺序执行重新排列。逆量化单元220可以使用量化参数(例如,量化步长信息)对量化的变换系数执行逆量化,并获取变换系数。
逆变换单元230对变换系数进行逆变换以获得残差信号(残差块或残差样本阵列)。
预测器可以对当前块执行预测,并生成包括关于当前块的预测样本的预测块。预测器可以基于从熵解码单元210输出的关于预测的信息来确定对当前块应用帧内预测还是帧间预测,并且确定具体的帧内/帧间预测模式。
帧内预测单元265可以参考当前图片中的样本来预测当前块。根据预测模式,参考样本可以与当前块相邻或者可以与当前块分离。在帧内预测中,预测模式可以包括多个非方向模式和多个方向模式。帧内预测265可以使用应用于相邻块的预测模式来确定应用于当前块的预测模式。
帧间预测单元260可以基于由参考图片上的运动矢量指定的参考块(参考样本阵列)来导出关于当前块的预测块。在此,为了减少在帧间预测模式中发送的运动信息量,可以基于相邻块和当前块之间的运动信息的相关性,以块、子块或样本为单位来预测运动信息。运动信息可以包括运动矢量和参考图片索引。运动信息可以进一步包括帧间预测方向(L0预测、L1预测、Bi预测等)信息。在帧间预测的情况下,相邻块可以包括当前图片中存在的空间相邻块和参考图片中存在的时间相邻块。例如,帧间预测单元260可以基于相邻块形成运动信息候选列表并且基于接收到的候选选择信息来导出当前块的运动矢量和/或参考图片索引。可以基于各种预测模式来执行帧间预测,并且关于预测的信息可以包括指示用于当前块的帧间预测模式的信息。
加法器235可以通过将获得的残差信号与从帧间预测单元260或帧内预测单元265输出的预测信号(预测块或预测样本阵列)相加来生成重构信号(重构图片、重构块或重构样本阵列)。当不存在关于处理目标块的残差时(如在应用跳过模式的情况下),可以将预测块用作重构块。
加法器235也可以被称为重构单元或重构块生成器。生成的重构信号可以被用于当前图片中的下一个处理目标块的帧内预测,或者通过稍后将描述的滤波,被用于下一个图片的帧间预测。
滤波单元240可以通过对重构信号应用滤波来提高主观/客观图片质量。例如,滤波单元240可以通过对重构图片应用各种滤波方法来生成修正的重构图片,并将修正的重构图片发送到解码图片缓冲器250。各种滤波方法可以包括例如去块滤波、采样自适应偏移、自适应环路滤波和双边滤波。
发送到解码图片缓冲器250的修正的重构图片可以被帧间预测单元260用作参考图片。
在本说明书中,在编码装置100的滤波单元160、帧间预测单元180和帧内预测单元185中描述的实施例可以被同样地或以相应的方式应用于解码装置的滤波单元240、帧间预测单元260和帧内预测单元265。
图4是作为应用本公开的实施例的内容流传输系统的结构图。
应用本公开的内容流传输系统可以包括编码服务器410、流传输服务器420、Web服务器430、媒体存储装置440、用户设备450和多媒体输入设备460。
编码服务器410用于将从诸如智能电话、相机和摄像机的多媒体输入设备输入的内容压缩成数字数据以生成比特流,并将该比特流发送到流传输服务器420。作为另一示例,当多媒体输入设备460(诸如智能电话、相机和摄像机)直接生成比特流时,可以省略编码服务器410。
可以通过应用本公开的编码方法或比特流生成方法来生成比特流,并且流传输服务器420可以在发送或接收比特流的过程中临时存储比特流。
流传输服务器420通过Web服务器430,基于用户请求向用户设备450发送多媒体数据,并且Web服务器430用作向用户告知服务的媒介。当用户向Web服务器430发送对期望服务的请求时,Web服务器430将该请求传送给流传输服务器420并且流传输服务器420向用户发送多媒体数据。在此,内容流传输系统可以包括另外的控制服务器,并且在这种情况下,控制服务器用于控制内容流传输系统中的设备之间的命令/响应。
流传输服务器420可以从媒体存储装置440和/或编码服务器410接收内容。例如,当从编码服务器410接收内容时,流传输服务器420可以实时接收内容。在这种情况下,流传输服务器420可以在预定时间内存储比特流以便提供流畅的流传输服务。
用户设备450的示例可以包括蜂窝电话、智能电话、膝上型计算机、数字广播终端、PDA(个人数字助理)、PMP(便携式多媒体播放器)、导航设备、板式PC、平板PC、超极本、可穿戴设备(例如智能手表、智能眼镜和HMD(头戴式显示器))、数字TV、台式计算机、数字标牌等。
内容流传输系统中的每个服务器都可以作为分布式服务器操作,并且在这种情况下,由每个服务器接收到的数据都可以以分布式的方式进行处理。
图5示出了本公开适用的实施例,图5a是用于描述根据QT(四叉树)的块分段结构的图,图5b是用于描述根据BT(二叉树)的块分段结构的图,图5c是用于描述根据TT(三叉树)的块分段结构的图,以及图5d是用于描述根据AT(非对称树)的块分段结构的图。
在视频编译中,可以基于QT分段单个块。此外,根据QT分段的单个子块可以使用QT进一步被递归地分段。不再根据QT分段的叶块可以使用BT、TT和AT中的至少一种进行分段。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进一步递归地分段。
图5a示出了QT分段的示例。根据QT,可以将块A分段为四个子块A0、A1、A2和A3。子块A1可以根据QT被进一步分段为四个子块B0、B1、B2和B3。
图5b示出了BT分段的示例。不再根据QT分段的块B3可以分段成垂直BT(C0和C1)或水平BT(D0和D1)。诸如块C0的每个子块可以被进一步递归地分段成水平BT(E0和E1)或垂直BT(F0和F1)。
图5c示出了TT分段的示例。不再根据QT分段的块B3可以被分段成垂直TT(C0、C1和C2)或水平TT(D0、D1和D2)。每个子块(诸如块C1)可以进一步被递归地分段成水平TT(E0、E1和E2)或垂直TT(F0、F1和F2)。
图5d示出了AT分段的示例。不再根据QT分段的块B3可以被分段成垂直AT(C0和C1)或水平AT(D0和D1)。每个子块(诸如块C1)可以被进一步递归地分段成水平AT(E0和E1)或垂直TT(F0和F1)。
同时,可以以组合方式使用BT、TT和AT分段。例如,根据BT分段的子块可以根据TT或AT分段。此外,根据TT分段的子块可以根据BT或AT分段。根据AT分段的子块可以根据BT或TT分段。例如,每个子块可以在水平BT分段之后被分段成垂直BT,或者每个子块可以在垂直BT分段之后被分段成水平BT。在这种情况下,虽然分段顺序不同,但最终分段的形状是相同的。
此外,当对块进行分段时,可以以各种方式定义块搜索顺序。一般来说,搜索从左到右、从上到下执行,并且块搜索可以是指确定是否每个分段的子块将附加地被分段的顺序、当子块不再被分段时的子块的编码顺序,或当子块参考相邻其他块的信息时的搜索顺序。
可以对根据分段结构分段的处理单元(或变换块)执行变换,如图5a至5d所示,具体地,可以在行方向和列方向上执行分段并且可以应用变换矩阵。根据本公开的实施例,可以根据行方向或列方向中的处理单元(或变换块)的长度来使用不同的变换类型。
对残差块应用变换以便尽可能多地去相关残差块,将系数集中在低频上并且在块的末尾生成零尾。JEM软件中的变换部分包括两个主要功能(核心变换和二次变换)。核心变换由应用于残差块的所有行和列的离散余弦变换(DCT)和离散正弦变换(DST)变换族组成。此后,二次变换可以附加地应用于核心变换的输出的左上角。类似地,可以按照逆二次变换和逆核心变换的顺序应用逆变换。首先,可以将逆二次变换应用于系数块的左上角。然后,将逆核心变换应用于逆二次变换的输出的行和列。核心变换或逆变换可以被称为一次变换或逆变换。
图6和图7示出了应用本公开的实施例,图6是编码装置100中的变换和量化单元120/130和逆量化和逆变换单元140/150的示意性框图,以及图7是解码装置200中的逆量化和逆变换单元220/230的示意性框图。
参考图6,变换和量化单元120/130可以包括一次变换单元121、二次变换单元122和量化单元130。逆量化和逆变换单元140/150可以包括逆量化单元140、逆二次变换单元151和逆一次变换单元152。
参考图7,逆量化和逆变换单元220/230可以包括逆量化单元220、逆二次变换单元231和逆一次变换单元232。
在本公开中,可以通过多个阶段来执行变换。例如,可以应用一次变换和二次变换的两个阶段,如图6所示,或可以根据算法使用多于两个的变换阶段。在此,一次变换可以被称为核心变换。
一次变换单元121可以对残差信号应用一次变换。在此,一次变换可以在编码器和/或解码器中以表来预定义。
二次变换单元122可以将二次变换应用于一次变换的信号。在此,二次变换可以以在编码器和/或解码器中以表来预定义。
在实施例中,不可分离二次变换(NSST)可以有条件地应用为二次变换。例如,NSST仅被应用于帧内预测块并且可以具有适用于每个预测模式组的变换集。
在此,可以基于关于预测方向的对称性来设置预测模式组。例如,预测模式52和预测模式16基于预测模式34(对角方向)对称,因此可以生成一个组并且可以对其应用相同的变换集。在此,当应用预测模式52的变换时,输入数据被转置,然后应用变换,因为预测模式52的变换集与预测模式16的变换集相同。
在平面模式和DC模式的情况下,不存在关于方向的对称性,因此它们具有各自的变换集,并且相应的变换集可以由两个变换组成。对于剩余方向模式,每个变换集可以由三个变换组成。
量化单元130可以对二次变换的信号执行量化。
逆量化和逆变换单元140/150执行与上述过程相反的过程,并且省略冗余的描述。
图7是解码装置200中的逆量化和逆变换单元220/230的示意性框图。
参考图7,逆量化和逆变换单元220/230可以包括逆量化单元220、逆二次变换单元231和逆一次变换单元232。
逆量化单元220使用量化步长信息从熵解码信号获得变换系数。
逆二次变换单元231对变换系数执行逆二次变换。在此,逆二次变换是指图6中描述的二次变换的逆变换。
逆一次变换单元232对逆二次变换的信号(或块)执行逆一次变换并获得残差信号。在此,逆一次变换是指图6中描述的一次变换的逆变换。
除了应用于HEVC的DCT-2和4x4 DST-4之外,自适应多重变换(或显式多重变换)(AMT或EMT)被用于帧间和帧内编译块的残差编译。除了HEVC中的变换之外,还使用了从DCT/DST族中选择的多个变换。JEM中新引入的变换矩阵是DST-7、DCT-8、DST-1和DCT-5。下表1示出了所选DST/DCT的基本函数。
[表1]
EMT可以被应用于宽度和高度等于或小于64的CU,并且可以通过CU级别标志来控制是否应用EMT。当CU级别标志为0时,将DCT-2应用于CU以对残差进行编码。发信号告知两个附加标志以便识别要用于应用了EMT的CU中的亮度编译块的水平和垂直变换。如在HEVC中那样,可以在JEM中以变换跳过模式对块的残差进行编译。对于帧内残差编译,由于其他帧内预测模式的其他残差统计,使用模式相关变换候选选择过程。如在下表2中所示,定义了三个变换子集,并且如在表3中所示,基于帧内预测模式选择变换子集。
[表2]
连同子集概念,首先通过使用具有CU级别EMT_CU_flag为1的CU的帧内预测模式,基于表2确认变换子集。此后,对于水平(EMT_TU_horizontal_flag)和垂直(EMT_TU_vertical_flag)变换中的每一个,根据表3,基于使用标志的显式信令,选择确认的变换子集中的两个变换候选之一。
[表3]
[表4]
表4示出了作为应用本公开的实施例的应用自适应多重变换(AMT)的变换配置组。
参考表4,基于预测模式确定变换配置组,并且组的数量可以是6(G0到G5)。另外,G0到G4对应于应用帧内预测的情况,以及G5表示应用于根据帧间预测生成的残差块的变换组合(或变换集或变换组合集)。
一个变换组合可以由应用于相应2D块的行的水平变换(或行变换)和应用于其列的垂直变换(或列变换)组成。
在此,每个变换配置组可以具有四个变换组合候选。可以使用变换组合索引0到3来选择或确定四个变换组合候选,并且可以编码变换组合索引并且将其从编码器发送到解码器。
在实施例中,通过帧内预测获得的残差数据(或残差信号)可以根据帧内预测模式具有不同的统计特性。因此,如表4所示,对于各个帧内预测,可以应用除了正常余弦变换之外的变换。在本说明书中,变换类型可以被表示为例如DCT-类型2、DCT-II或DCT-2。
参考表4,示出了使用35个帧内预测模式的情况和使用67个帧内预测模式的情况。可以对在每个帧内预测模式列中分类的每个变换配置组应用多个变换组合。例如,多个变换组合可以由四个组合(行方向上的变换和列方向上的变换)组成。作为具体示例,DST-7和DCT-5可以在行(水平)方向和列(垂直)方向上都应用于组0,因此总共可以应用四个组。
由于可以将总共四个变换核组合应用于每个帧内预测模式,因此可以每变换单元发送用于从中选择一个的变换组合索引。在本描述中,变换组合索引可以被称为AMT索引并且可以由amt_idx表示。
此外,除了表4中所示的变换核之外,由于残差信号的特性,可能生成对于行方向和列方向DCT-2都是最佳的情况。因此,可以通过对每个编译单元定义AMT标志来自适应地应用变换。在此,当AMT标志为0时,DCT-2可以应用于行方向和列方向,当AMT标志为1时,可以通过AMT索引选择或确定四个组合之一。
在实施例中,如果当AMT标志为0时,对一个变换单元,变换系数的数量小于3,则不应用表4的变换核,而是可以将DST-7应用于行方向和列方向。
在实施例中,如果先前解析了变换系数值并且因此变换系数的数量小于3,则不解析AMT索引并且应用DST-7,由此可以减少附加信息的传输量。
在实施例中,仅当变换单元的宽度和高度都等于或小于32时才可以应用AMT。
在实施例中,可以通过离线训练预设表4。
在实施例中,AMT索引可以被定义为可以指示水平变换和垂直变换的组合的一个索引。可替代地,AMT索引可以被定义为单独的水平变换索引和垂直变换索引。
图8是示出执行自适应多重变换(AMT)的过程的流程图。
尽管在本说明书中基本描述了关于在水平方向和垂直方向上单独应用的可分离变换的实施例,但是变换组合可以由不可分离变换组成。
可替代地,变换组合可以被配置为可分离变换和不可分离变换的混合。在这种情况下,当使用可分离变换时,行/列方式的变换选择或水平/垂直方向的选择是不必要的,并且仅当选择了可分离变换时才能使用表4的变换组合。
此外,可以与一次变换和二次变换无关地应用本说明书中提出的方法。也就是说,这些方法可以应用于这两种变换。在此,一次变换可以指用于初始变换残差块的变换,而二次变换可以指用于将变换应用于作为一次变换的结果生成的块的变换。
首先,编码装置100可以确定与当前块对应的变换组(S805)。在此,变换组可以指表4的变换组,但本公开不限于此,变换组可以由其他变换组合组成。
编码装置100可以对变换组中的可用候选变换组合执行变换(S810)。作为变换的结果,编码装置100可以确定或选择具有最低速率失真(RD)成本的变换组合(S815)。编码装置100可以对与选择的变换组合相对应的变换组合索引进行编码(S820)。
图9是示出执行AMT的解码过程的流程图。
首先,解码装置200可以确定当前块的变换组(S905)。解码装置200可以解析变换组合索引,并且变换组合索引可以对应于变换组中的多个变换组合之一(S910)。解码装置200可以导出与变换组合索引对应的变换组合(S915)。在此,虽然变换组合可以指表4中所示的变换组合,但是本公开不限于此。即,变换组合可以被配置为其他变换组合。
解码装置200可以基于变换组合对当前块执行逆变换(S920)。当变换组合由行变换和列变换组成时,可以先应用行变换,然后再应用列变换。然而,本公开不限于此,可以在应用列变换之后应用行变换,并且当变换组合由不可分离变换组成时,可以立即应用不可分离变换。
在另一个实施例中,确定变换组的过程和解析变换组合索引的过程可以同时执行。
在本公开的实施例中,上述术语“AMT”可以被重新定义为“多重变换集或多重变换选择(MTS)”。下面描述的MTS相关语法和语义在通用视频编码(VVC)JVET-K1001-v4中进行了概述。
在本公开的实施例中,两个MTS候选可以被用于方向模式,以及四个MTS候选可以被用于非方向模式如下。
A)非方向模式(DC和平面)
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DST-7被用于垂直变换,并且DCT-8被用于水平变换。
当MTS索引为2时,DCT-8被用于垂直变换,并且DST-7被用于水平变换。
当MTS索引为3时,DCT-8被用于水平和垂直变换。
B)属于水平组模式的模式
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DCT-8被用于垂直变换,并且DST-7被用于水平变换。
C)属于垂直组模式的模式
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DST-7被用于垂直变换,并且DCT-8被用于水平变换。
在此(在使用67个模式的VTM 2.0中),水平组模式包括帧内预测模式2至34,并且垂直模式包括帧内预测模式35至66。
在本公开的另一个实施例中,三个MTS候选被用于所有帧内预测模式。
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DST-7被用于垂直变换,并且DCT-8被用于水平变换。
当MTS索引为2时,DCT-8被用于垂直变换,并且DST-7被用于水平变换。
在本公开的另一个实施例中,两个MTS候选被用于方向预测模式,并且三个MTS候选被用于非方向模式。
A)非方向模式(DC和平面)
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DST-7被用于垂直变换,并且DCT-8被用于水平变换。
当MTS索引为2时,DCT-8被用于垂直变换,并且DST-7被用于水平变换。
B)对应于水平组模式的预测模式
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DCT-8被用于垂直变换,并且DST-7被用于水平变换。
C)对应于垂直组模式的预测模式
当MTS索引为0时,DST-7被用于水平和垂直变换。
当MTS索引为1时,DST-7被用于垂直变换,并且DCT-8被用于水平变换。
在本公开的另一实施例中,一个MTS候选(例如,DST-7)可以被用于所有帧内模式。在这种情况下,编码时间可以减少40%,而编译损失很小。此外,可以使用一个标志来在DCT-2和DST-7之间指示。
图10是示出了根据本公开实施例的基于MTS的逆变换过程的流程图。
应用本公开的解码装置200可以获得sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag(S1005)。在此,sps_mts_intra_enabled_flag指示cu_mts_flag是否存在于帧内编译单元的残差编译语法中。例如,如果sps_mts_intra_enabled_flag=0,则在帧内编译单元的残差编译语法中不存在cu_mts_flag,如果sps_mts_intra_enabled_flag=1,则在帧内编译单元的残差编译语法中存在cu_mts_flag。另外,sps_mts_inter_enabled_flag指示cu_mts_flag是否存在于帧间编译单元的残差编译语法中。例如,如果sps_mts_inter_enabled_flag=0,则cu_mts_flag不存在于帧间编译单元的残差编译语法中,如果sps_mts_inter_enabled_flag=1,则cu_mts_flag存在于帧间编译单元的残差编译语法中。
解码装置200可以基于sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag,获得cu_mts_flag(S1010)。例如,当sps_mts_intra_enabled_flag=1或sps_mts_inter_enabled_flag=1时,解码装置200可以获得cu_mts_flag。在此,cu_mts_flag指示是否将MTS应用于亮度变换块的残差样本。例如,如果cu_mts_flag=0,则不将MTS应用于亮度变换块的残差样本,如果cu_mts_flag=1,则将MTS应用于亮度变换块的残差样本。
解码装置200可以基于cu_mts_flag获得mts_idx(S1015)。例如,当cu_mts_flag=1时,解码装置200可以获得mts_idx。在此,mts_idx指示在水平方向和/或垂直方向中,对当前变换块的亮度残差样本应用哪个变换核。
例如,本说明书中描述的实施例中的至少一个可以应用于mts_idx。
解码装置200可以导出对应于mts_idx的变换核(S1020)。例如,对应于mts_idx的变换核可以被分别定义为水平变换和垂直变换。
例如,当MTS应用于当前块时(即,cu_mts_flag=1),解码装置200可以基于当前块的帧内预测模式来配置MTS候选。在这种情况下,图10的解码流程图可以进一步包括配置MTS候选的步骤。然后,解码装置200可以使用mts_idx,从配置的MTS候选中确定要应用于当前块的MTS候选。
作为另一个示例,不同的变换核可以应用于水平变换和垂直变换。然而,本公开不限于此,可以将相同的变换核应用于水平变换和垂直变换。
解码装置200可以基于变换核来执行逆变换(S1025)。
此外,在说明书中,MTS可以被表示为AMT或EMT,并且mts_idx可以被表示为AMT_idx、EMT_idx、AMT_TU_idx、EMT_TU_idx等,但本公开不限于此。
本公开通过基于MTS标志分为应用MTS的情况和不应用MTS的情况来描述,但不限于这样的表述。例如,是否应用MTS可以与是否使用除预定义的特定变换类型(可以被称为基本变换类型、默认变换类型等)之外的其他变换类型(或变换核)相同的含义。如果应用MTS,则除了基本变换类型之外的变换类型(例如,多个变换类型中的任何一个变换类型或两个或更多个变换类型的组合变换类型)可以被用于变换。此外,如果不应用MTS,则可以将基本变换类型用于变换。在实施例中,基本变换类型可以被配置(或定义)为DCT-2。
例如,指示是否将MTS应用于当前变换块的MTS标志语法,以及当应用MTS时指示应用于当前块的变换类型的MTS索引语法,也可以从编码器被单独发送到解码器。作为另一示例,包括关于是否将MTS应用于当前变换块的信息以及当应用MTS时应用于当前块的变换类型两者的语法(例如,MTS索引)也可以从编码器被发送到解码器。即,在后一示例中,指示包括上述基本变换类型的所有变换类型组(或变换类型集)中的应用于当前变换块(或单元)的变换类型的语法(或语法元素)可以从编码器被发送到解码器。
因此,尽管有这些表述,但是指示应用于当前变换块的变换类型的语法(MTS索引)可以包括关于是否应用MTS的信息。换言之,在后一实施例中,可以仅发信号告知MTS索引而无需MTS标志。在这种情况下,可以将DCT-2解释为包括在MTS中。然而,在本公开中,可以将应用DCT-2的情况描述为不应用MTS的情况。然而,与MTS相关的技术范围不限于相应定义的内容。
图11是根据本公开实施例的基于MTS执行解码的装置的框图。
应用本公开的解码装置200可以包括序列参数获取单元1105、MTS标志获取单元1110、MTS索引获取单元1115和变换核导出单元1120。
序列参数采集单元1105可以获取sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag。在此,sps_mts_intra_enabled_flag指示cu_mts_flag是否存在于帧内编译单元的残差编译语法中,而sps_mts_inter_enabled_flag指示cu_mts_flag是否存在于帧间编译单元的残差编译语法中。参考图10的描述可以应用于具体示例。
MTS标志获取单元1110可以基于sps_mts_intra_enabled_flag或sps_mts_inter_enabled_flag来获取cu_mts_flag。例如,当sps_mts_intra_enabled_flag=1或sps_mts_inter_enabled_flag=1时,MTS标志获取单元1110可以获取cu_mts_flag。在此,cu_mts_flag指示MTS是否被应用于亮度变换块的残差样本。参考图10的描述可以应用于具体示例。
MTS索引获取单元1115可以基于cu_mts_flag获取mts_idx。例如,当cu_mts_flag=1时,MTS索引获取单元1115可以获取mts_idx。在此,mts_idx指示在水平方向和/或垂直方向中,对当前变换块的亮度残差样本应用哪个变换核。参考图10的描述可以应用于具体示例。
变换核导出单元1120可以导出对应于mts_idx的变换核。然后,解码装置200可以基于导出的变换核来执行逆变换。
由解码装置200通过逆变换从变换块生成包括残差样本的块的方法可以如下。
该过程的输入如下:
–亮度位置定位(xTbY,yTbY)指示当前图片的左上亮度样本的当前亮度变换块的左上样本,
–指示当前变换块的宽度的变量nTbW,
–指示当前变换块的高度的变量nTbH,
–指示当前块的色度分量的变量cIdx,
–对于x=0..nTbW–1,y=0..nTbH–1,缩放变换系数的(nTbW)x(nTbH)阵列d[x][y]。
对于x=0..nTbW–1,y=0..nTbH–1,该过程的输出是残差样本的(nTbW)x(nTbH)阵列r[x][y]。
可以基于表5的mts_idx[x][y]和CuPredMode[x][y]导出指示水平变换核的变量trTypeHor和指示垂直变换核的变量trTypeVer。
残差样本的(nTbW)x(nTbH)阵列可以导出如下:
1.对于列x=0..nTbW–1,通过一维变换过程,将每个缩放变换系数d[x][y](x=0..nTbW–1,y=0..nTbH–1)的(垂直)列变换为e[x][y](x=0..nTbW–1,y=0..nTbH–1)。在这种情况下,输入是变换类型变量trType(其与变换块的高度nTbH相同地设置)、列表d[x][y](y=0..nTbH–1)和trTypeVer。输出列表e[x][y](y=0..nTbH–1)。
2.如公式4导出中间样本值g[x][y](x=0..nTbW–1,y=0..nTbH–1)。
g[x][y]=Clip3(CoeffMin,CoeffMax,(e[x][y]+256)>>9)
3.对每一行y=0..nTbH–1,通过一维变换过程,将每个中间阵列g[x][y](x=0..nTbW–1,y=0..nTbH–1)的(水平)行转换为r[x][y](x=0..nTbW–1,y=0..nTbH–1)。在这种情况下,输入是变换类型变量trType(其与变换块的宽度nTbW相同地设置)、列表g[x][y](x=0..nTbW–1)和trTypeVer。输出列表r[x][y](y=0..nTbH–1)。
[表5]
CuPredMode指示应用于当前CU的预测模式。
引入了模式相关的不可分离二次变换(MDNSST)。为了保持低复杂度,在一次变换后MDNSST仅应用于低频系数。此外,主要应用于低频系数的不可分离变换可以被称为低频不可分离变换(LFNST)。如果变换系数块的宽度(W)和高度(H)都等于或大于8,则8x8不可分离二次变换被应用于变换系数块的8x8左上区域。如果宽度或高度小于8,则应用4x4不可分离二次变换,并且可以对变换系数块的左上min(8,W)x min(8,H)执行4x4不可分离二次变换。在此,min(A,B)是输出A和B之间较小值的函数。此外,WxH是块大小,W代表宽度,H代表高度。
在实施例中,对于4x4和/或8x8块大小,可以存在总共35x3个不可分离二次变换。在这种情况下,35是由帧内预测模式指定的变换集的数量。3是用于每个预测模式的NSST候选的数量。可以不同地定义从帧内预测模式到变换集的映射。
为了指示变换集中的变换核,可以编译NSST索引(NSST idx)。当不应用NSST时,将发信号告知等于0的NSST索引。
图12和图13是示出作为应用本公开的实施例的应用二次变换的编码/解码的流程图。
在JEM中,二次变换(MDNSST)不应用于利用变换跳过模式编译的块。当对于CU发信号告知MDNSST索引并且其不等于0时,MDNSST不用于在CU中以变换跳过模式编译的分量的块中。包括系数编译和NSST索引编译的整体编译结构如图12和图13所示。编码CBF标志以确定是否执行系数编译和NSST编译。在图12和图13中,CBF标志可以表示亮度块cbg标志(cbf_luma标志)或色度块cbf标志(cbf_cb标志或cbf_cr标志)。当CBF标志为1时,对变换系数进行编译。
参考图12,编码装置100检查CBF是否为1(S1205)。如果CBF为0,则编码装置100不执行变换系数编码和NSST索引编译。如果CBF为1,则编码装置100对变换系数执行编码(S1210)。此后,编码装置100确定是否执行NSST索引编码(S1215)并且执行NSST索引编译(S1220)。当不应用NSST索引编译时,编码装置100可在不应用NSST的情况下结束变换过程并执行后续步骤(例如,量化)。
参考图13,解码装置200检查CBF是否为1(S1305)。如果CBF为0,则解码装置200不执行变换系数解码和NSST索引解码。如果CBF是1,则解码装置200对变换系数执行解码(S1310)。此后,解码装置200确定是否执行NSST索引编译(S1315)并解析NSST索引(S1320)。
NSST可以应用于8x8或4x4左上区域,而不是应用于已经应用了一次变换的整个块(在HEVC的情况下为TU)。例如,当块大小为8x8或更大(即块的宽度和高度均大于或等于8)时,可以应用8x8 NSST,当块大小小于8x8(即,宽度和高度均小于8)时,可以应用4x4 NSST。此外,当应用8x8 NSST时(即当块大小为8x8或更大时),可以每4x4块应用4x4 NSST(即,左上8x8区域被划分为4x4块,并且4x4 NSST应用于每个4x4块)。8x8 NSST和4x4 NSST均可根据上述变换集配置来确定,并且8x8 NSST可以具有64个输入数据和64个输出数据,而4x4NSST可以具有16个输入和16个输出,因为它们是不可分离变换。
图14和图15示出了应用本公开的实施例,图14是描述Givens旋转的图,而图15示出由Givens旋转层和置换组成的4x4 NSST中的一轮的配置。
8x8 NSST和4x4 NSST都可以被配置为Givens旋转的分层组合。对应于一个Givens旋转的矩阵被表示为公式1,并且矩阵乘积被表示为图14。
[公式1]
在图14中,根据Givens旋转的t
[公式2]
t
t
由于Givens旋转旋转了两个数据,如图14所示,因此需要32或8个Givens旋转来处理64个(在8x8 NSST的情况下)或16个(在4x4 NSST的情况下)数据。因此,一组32或8个Givens旋转可以形成Givens旋转层。如图15所示,一个Givens旋转层的输出数据通过置换(混洗)被发送为下一个Givens旋转层的输入数据。常规定义如图15所示置换的图案,以及在4x3 NSST的情况下,四个Givens旋转层和相应的置换形成一轮。4x4 NSST通过两轮执行,而8x8 NSST通过四轮执行。虽然不同的轮次使用相同的置换图案,但应用的Givens旋转角度是不同的。因此,需要存储构成用于每个置换的所有Givens旋转的角度数据。
作为最后一个步骤,最终对通过Givens旋转层输出的数据再进行一次置换,并为每个置换单独存储关于相应排置换的信息。相应的置换在正向NSST末尾执行,相应的反向置换最初应用于逆NSST。
反向NSST反向地执行应用于正向NSST的Givens旋转层和置换,并且通过对每个Given旋转角度取负值来执行旋转。
缩减二次变换(RST)
图16示出了作为应用本公开的实施例的RST的操作。
当表示变换的正交矩阵为NxN时,缩减变换(RT)仅留下N个变换基本矢量中的R个(R [公式3]
由于关于反向RT的矩阵是正向RT矩阵的转置矩阵,所以图示化了正向RT和反向RT的应用,如图16a和图16b所示。 应用于已经应用一次变换的变换系数块的8x8左上块的RT可以被称为8x8 RST。当公式3中的R设置为16时,正向8x8 RST具有16x64矩阵的形式,反向8x8 RST具有64x16矩阵的形式。在这种情况下,MxN矩阵可以由M行和N列组成。此外,如表5所示的变换集配置可以应用于8x8 RST。即,可以根据表5所示的帧内预测模式,基于变换集确定8x8RST。由于根据帧内预测模式,一个变换集由两个或三个变换组成,因此可以选择包括未应用二次变换的情况的最多四个变换之一(一个变换可以对应于各向异性矩阵)。当索引0、1、2和3被指派给四个变换时,可以通过发信号告知对应于每个变换系数块的NSST索引的语法元素来指定要应用的变换。例如,索引9可以被指派给各向异性矩阵,即不应用二次变换的情况。因此,通过NSST索引,针对8x8左上块,可以根据JEM NSST指定8x8 NSST,并且根据RST配置指定8x8RST。 图17是示出作为应用本公开的实施例,以反向扫描顺序从第64系数到第17系数执行反向扫描的过程的图。 当应用如由公式3表示的8x8 RST时,生成16个有效变换系数,因此构成8x8区域的64条输入数据缩减到16条输出数据,并且根据二维区域的角度,仅四分之一区域填充了有效变换系数。因此,通过应用正向8×8RST获得的16条输出数据填充了图17的左上区域。 在图17中,4x4的左上区域变成了用有效变换系数填充的感兴趣区域(ROI),其余区域是空的。空区域可以用0作为默认值填充。如果在除图17的ROI之外的区域中发现非零有效变换系数,可以肯定没有应用8x8 RST,因此对于相应的NSST索引可以省略相应的编译。另一方面,如果在除图17的ROI之外的区域中没有发现非零有效变换系数(应用了8x8RST或除ROI以外的区域填充0),则NSST索引可以被编译,因为可能应用了8x8 RST。这种有条件的NSST索引编译需要检查非零变换系数的存在与否,因此可以在残差编译过程之后执行。 图18是示出作为应用本公开的实施例的使用单一变换指示符的编码的示例性流程图。 在本公开的实施例中,引入了单一变换指示符(STI)。当使能STI(STI编译==1)时可以应用单一变换,而不是顺序使用两个变换(一次变换和二次变换)。在此,单一变换可以是任何类型的变换。例如,单一变换可以是可分离变换或不可分离变换。单一变换可以是从不可分离变换近似的变换。当已经使能STI时,可以发信号告知单一变换索引(图18中的ST_idx)。在此,单一变换索引可以指示在可用变换候选之中要应用的变换。 参考图18,编码装置100确定CBF是否为1(S1805)。当CBF为1时,编码装置100确定是否应用STI编译(S1810)。当应用STI编译时,编码装置100对STI索引STI_idx进行编码(S1845)并对变换系数执行编译(S1850)。当不应用STI编译时,编码装置100对指示是否在CU级别应用EMT(或MTS)的标志EMT_CU_Flag进行编码(S1815)。此后,编码装置100对变换系数执行编译(S1820)。然后,编码装置100确定EMT是否被应用于变换单元(TU)(S1825)。当EMT被应用于TU时,编码装置100对应用于TU的一次变换索引EMT_TU Idx进行编码(S1830)。随后,编码装置100确定是否应用NSST(S1835)。当应用NSST时,编码装置100对指示要应用的NSST的索引NSST_Idx进行编码(S1840)。 在示例中,如果满足/启用单一变换编译条件(例如,STI_coding==1),则可以隐式导出单一变换索引ST_Idx而不是发信号告知。可以基于块大小和帧内预测模式隐式确定ST_idx。在此,ST_Idx可以指示应用于当前变换块的变换(或变换核)。 如果满足以下一个或多个条件,则可以使能STI(STI_coding==1)。 1)块大小对应于预定值,诸如4或8。 2)块宽度==块高度(方形块) 3)帧内预测模式是预定模式之一,诸如DC和平面模式。 在另一个示例中,可以发信号告知STI编译标志以便指示是否应用单一变换。可以基于STI编译值和CBF发信号告知STI编译标志。例如,当CBF为1并且使能STI编译时,可以发信号告知STI编译标志。此外,考虑到块大小、块形状(方形块或非方形块)或帧内预测模式,可以有条件地发信号告知STI编译标志。 为了使用在系数编译期间获取的信息,可以在系数编译之后确定ST_idx。在示例中,可以基于块大小、帧内预测模式和非零系数的数量来隐式确定ST_idx。在另一个示例中,可以基于块大小、块形状、帧内预测模式和/或非零系数的数量有条件地编码/解码ST_idx。在另一示例中,取决于非零系数的分布(即,非零系数的位置),可以省略ST_idx信令。特别地,当在除4x4左上区域之外的区域中发现非零系数时,可以省略ST_idx信令。 图19是示出作为应用本公开的实施例的使用统一变换指示符(UTI)的编码的示例性流程图。 在本公开的实施例中,引入了统一变换指示符。UTI包括一次变换指示符和二次变换指示符。 参考图19,编码装置100确定CBF是否为1(S1905)。当CBF为1时,编码装置100确定是否应用UTI编译(S1910)。当应用UTI编译时,编码装置100对UTI索引UTI_idx进行编码(S1945)并对变换系数执行编译(S1950)。当未应用UTI编译时,编码装置100对指示是否在CU级别应用EMT(或MTS)的标志EMT_CU_Flag进行编码(S1915)。此后,编码装置100对变换系数执行编译(S1920)。然后,编码装置100确定EMT是否被应用于变换单元(TU)(S1925)。当EMT被应用于TU时,编码装置100对应用于TU的一次变换索引EMT_TU Idx进行编码(S1930)。随后,编码装置100确定是否应用了NSST(S1935)。当应用NSST时,编码装置100对指示要应用的NSST的索引NSST_Idx进行编码(S1940)。 可以针对每个预定单元(CTU或CU)编译UTI。 UTI编译模式可能取决于以下条件。 1)块大小 2)块形状 3)帧内预测模式 预先定义如何从UTI导出/提取核心变换索引。预先定义如何从UTI导出/提取二次变换索引。 可以选择地使用UTI的语法结构。UTI可以取决于CU(TU)大小。例如,较小的CU(TU)可能具有较窄范围内的UTI索引。在示例中,如果满足预定义条件(例如,块大小小于预定义的阈值),则UTI可以仅指示核心变换索引。 [表6]
在另一示例中,当未指示使用二次变换时(例如,二次变换索引==0或已经预定二次变换),可以将UTI索引视为核心变换索引。以相同的方式,当核心变换索引被视为是已知时,UTI索引可以被视为二次变换索引。具体地,考虑到帧内预测模式和块大小,可以使用预定核心变换。 图20A和图20B图示了作为应用本公开的实施例,使用UTI进行编码的两个示例性流程图。 在另一示例中,变换编译结构可以使用UTI索引编译,如图20a和图20b所示。在此,可以早于系数编译或晚于系数编译来编译UTI索引。 参考图20a的左侧流程图,编码装置100检查CBF是否为1(S2005)。当CBF为1时,编码装置100对UTI索引UTI_idx进行编码(S2010)并对变换系数执行编译(S2015)。 参考图20b的右侧流程图,编码装置100检查CBF是否为1(S2055)。当CBF为1时,编码装置100对变换系数执行编译(S2060)并对UTI索引UTI_idx进行编码(S2065)。 在本公开的另一个实施例中,引入了变换指示符的数据隐藏和隐式编译方法。在此,变换指示符可以包括ST_idx、UTI_idx、EMT_CU_Flag、EMT_TU_Flag、NSST_Idx以及可以用于指示变换核的任何种类的变换相关索引。可以不发信号告知上述变换指示符,但是可以在系数编译过程中插入相应的信息(它可以在系数编译过程期间被提取)。系数编译过程可以包括以下部分。 -Last_position_x,Last_position_y -组标志 -有效值映射 -Greather_than_1标志 -Greather_than_2标志 -剩余级别编译 -符号编译 例如,可以在上述系数编译过程中的一个或多个中插入变换指示符信息。为了插入变换指示符信息,可以联合考虑以下几点。 符号编译的图案 剩余级别的绝对值 Greather_than_1标志的数量 Last_position_X和Last_position_Y的值 可以有条件地考虑上述数据隐藏方法。例如,数据隐藏方法可能取决于非零系数的数量。 在另一个示例中,NSST_idx和EMT_idx可能是相关的。例如,当EMT_CU_Flag等于零(或1)时,NSST_idx可能不为零。在这种情况下,可以发信号告知NSST_idx-1而不是NSST_idx。 在本公开的另一个实施例中,引入了基于帧内预测模式的NSST变换集映射,如下表7所示。虽然在下面将NSST描述为不可分离变换的示例,但是另一个已知术语(例如,LFNST)可用于不可分离变换。例如,NSST集和NSST索引可以被替换为LFNST集和LFNST索引。此外,作为使用在应用于变换块的至少一个区域(4x4或8x8左上区域或8x8块中除4x4右下区域之外的区域)的方形不可分离变换矩阵中,具有缩减的输入长度和/或缩减的输出长度的非方形变换矩阵的不可分离变换(例如,LFNST)的示例,本说明书中描述的RST也可以用LFNST代替。 [表7]
可以从0到3重新排列NSST集编号,如表8所示。 [表8]
在NSST变换集中,只使用了4个(而不是35个)变换集,这样可以减少所需的存储器空间。 此外,可以如下使用每个变换集的各种数量的变换核。 情况A:每个变换集使用两个可用的变换核,因此NSST索引范围从0到2。例如,当NSST索引为0时,可以不应用二次变换(基于解码器的逆二次变换)。当NSST索引为1或2时,可以应用二次变换。变换集可以包括可以映射索引1或2的两个变换核。 [表9]
参考表9,两个变换核被用于不可分离变换(NSST或LFNST)集0到3中的每一个。 情况B:两个可用变换核用于变换集0,一个用于其他变换集。用于变换集0(DC和平面)的可用NSST索引是0到2。但是,用于其他模式(变换集1、2和3)的NSST索引是0到1。 [表10]
参考表10,为对应于索引0的不可分离变换(NSST)集设置两个不可分离变换核,并且为对应于索引1、2和3的每个不可分离变换(NSST)集设置一个不可分离变换核。 情况C:每个变换核使用一个变换核,NSST索引范围为0到1。 [表11]
图21是示出作为应用本公开的实施例的用于执行变换的编码的示例性流程图。 编码装置100对残差块执行一次变换(S2105)。一次变换可以被称为核心变换。作为实施例,编码装置100可以使用上述MTS来执行一次变换。此外,编码装置100可以将指示MTS候选中的特定MTS的MTS索引发送到解码装置200。在此,可以基于当前块的帧内预测模式来配置MTS候选。 编码装置100确定是否应用二次变换(S2110)。例如,编码装置100可以基于一次变换的残差块的变换系数来确定是否应用二次变换。例如,二次变换可以是NSST或RST。 编码装置100确定二次变换(S2115)。在此,编码装置100可以基于根据帧内预测模式指定的NSST(或RST)变换集来确定二次变换。 例如,在步骤S2115之前,编码装置100可以基于当前块的大小来确定将应用二次变换的区域。 编码装置100执行在步骤S2115中确定的二次变换(S2120)。 图22是示出作为应用本公开的实施例的用于执行变换的解码的示例性流程图。 解码装置200确定是否应用逆二次变换(S2205)。例如,逆二次变换可以是NSST或RST。例如,解码装置200可以基于从编码装置100接收到的二次变换标志来确定是否应用逆二次变换。 解码装置200确定逆二次变换(S2210)。在此,解码装置200可以基于根据前述帧内预测模式指定的NSST(或RST)变换集来确定应用于当前块的逆二次变换。 此外,例如,在步骤S2210之前,解码装置200可以基于当前块的大小来确定将应用逆二次变换的区域。 解码装置200使用在步骤S2210中确定的逆二次变换对逆量化的残差块执行逆二次变换(S2215)。 解码装置对逆二次变换的残差块执行逆一次变换(S2220)。逆一次变换可以被称为逆核心变换。在实施例中,解码装置200可以使用前述MTS来执行逆一次变换。此外,作为示例,解码装置200可以在步骤S2220之前确定MTS是否被应用于当前块。在这种情况下,图22的解码流程图可以进一步包括确定是否应用MTS的步骤。 例如,当MTS应用于当前块时(即,cu_mts_flag=1),解码装置200可以基于当前块的帧内预测模式来配置MTS候选。在这种情况下,图22的解码流程图可以进一步包括配置MTS候选的步骤。此外,解码装置200可以使用指示所配置的MTS候选中的特定MTS的mtx_idx来确定应用于当前块的逆一次变换。 图23是作为应用本公开的实施例的编码装置100中的变换单元120的详细框图。 应用本公开的实施例的编码装置100可以包括一次变换单元2310、二次变换应用确定单元2320、二次变换确定单元2330和二次变换单元2340。 一次变换单元2310可以对残差块执行一次变换。一次变换可以被称为核心变换。作为实施例,一次变换单元2310可以使用上述MTS来执行一次变换。此外,一次变换单元2310可以将指示MTS候选中的特定MTS的MTS索引发送到解码装置200。在此,可以基于当前块的帧内预测模式来配置MTS候选。 二次变换应用确定单元2320可以确定是否应用二次变换。例如,二次变换应用确定单元2320可以基于一次变换的残差块的变换系数来确定是否应用二次变换。例如,二次变换可以是NSST或RST。 二次变换确定单元2330确定二次变换。在此,二次变换确定单元2330可以基于根据如上所述的帧内预测模式指定的NSST(或RST)变换集来确定二次变换。 例如,二次变换确定单元2330可以基于当前块的大小来确定将应用二次变换的区域。 二次变换单元2340可以执行所确定的二次变换。 图24是作为应用本公开的实施例的解码装置200中的逆变换单元230的详细框图。 应用本公开的解码装置200包括逆二次变换应用确定单元2410、逆二次变换确定单元2420、逆二次变换单元2430和逆一次变换单元2440。 逆二次变换应用确定单元2410可以确定是否应用逆二次变换。例如,逆二次变换可以是NSST或RST。例如,逆二次变换应用确定单元2410可以基于从编码装置100接收到的二次变换标志来确定是否应用逆二次变换。 逆二次变换确定单元2420可以确定逆二次变换。在此,逆二次变换确定单元2420可以基于根据帧内预测模式指定的NSST(或RST)变换集来确定应用于当前块的逆二次变换。 此外,例如,逆二次变换确定单元2420可以基于当前块的大小来确定将应用逆二次变换的区域。 逆二次变换单元2430可以使用所确定的逆二次变换对逆量化的残差块执行逆二次变换。 逆一次变换单元2440可以对逆二次变换的残差块执行逆一次变换。在实施例中,逆一次变换单元2440可以使用前述MTS来执行逆一次变换。此外,作为示例,逆一次变换单元2440可以确定MTS是否被应用于当前块。 例如,当MTS被应用于当前块时(即,cu_mts_flag=1),逆一次变换单元2440可以基于当前块的帧内预测模式来配置MTS候选。此外,逆一次变换单元2440可以使用指示所配置的MTS候选之中的特定MTS的mtx_idx来确定应用于当前块的逆一次变换。 图25是作为应用本公开的实施例的处理视频信号的流程图。图25的流程图的过程可以由解码装置200或逆变换单元230执行。 首先,解码装置200可以基于不可分离变换索引以及当前块的宽度和高度来确定是否将反向不可分离变换应用于当前块。例如,如果不可分离变换索引不为0并且当前块的宽度和高度等于或大于4,则解码装置200可以确定应用不可分离变换。如果不可分离变换索引为0或者当前块的宽度或高度小于4,则解码装置200可以省略反向不可分离变换并执行逆一次变换。 在步骤S2505中,解码装置200确定不可分离变换集索引,该不可分离变换集索引指示在基于当前块的帧内预测模式预定义的不可分离变换集中的用于当前块的不可分离变换的不可分离变换集。可以设置不可分离变换集索引,使得其被分配给根据帧内预测模式的范围配置的四个变换集中的每一个,如表7或表8所示。即,当帧内预测模式为0和1时,不可分离变换集索引可以被确定为第一索引值,当帧内预测模式为2到12或56到66时被确定为第二索引值,当帧内预测模式为13至23或45至55时被确定为第三索引值,而当帧内预测模式为24至44时,被确定为第四索引值,如表7或表8所示。 在此,每个预定义的不可分离变换集可以包括两个变换核,如表9所示。此外,每个预定义的不可分离变换集可以包括一个或两个变换核,如表10或表11所示。 在步骤S2510中,解码装置200将包括在由不可分离变换集索引指示的不可分离变换集中的变换核当中的由用于当前块的不可分离变换索引所指示的变换核确定为不可分离变换矩阵。例如,可以为每个不可分离变换集索引值配置两个不可分离变换核,并且解码装置200可以在对应于不可分离变换集索引的两个变换矩阵核之间的基于由不可分离变换索引指示的变换核,来确定不可分离变换矩阵。 在步骤S2515中,解码装置200将不可分离变换矩阵应用于基于当前块的宽度和高度确定的当前块的左上区域。例如,如果当前块的宽度和高度都等于或大于8,则不可分离变换可以应用于当前块的8x8左上区域,而如果当前块的宽度或高度小于8,则可以将不可分离变换应用于当前块的4x4左上区域。响应于将应用不可分离变换的区域,不可分离变换的大小也可以设置为对应于8x8或4x4的大小(例如48x16、16x16)。 此外,解码装置200可以对已经应用了不可分离变换的当前块应用水平变换和垂直变换。在此,可以基于用于选择预测模式的MTS索引和应用于当前块的变换矩阵来确定水平变换和垂直变换。 在下文中,描述以组合方式应用一次变换和二次变换的方法。即,本公开的实施例提出了一种高效设计在一次变换和二次变换中使用的变换的方法。在这种情况下,可以应用图1至图25所示的方法,并且省略多余的描述。 如上所述,一次变换表示在编码器中首先应用于残差块的变换。如果应用二次变换,则编码器可以对一次变换残差块执行二次变换。如果应用了二次变换,则可以在解码器中在逆一次变换之前执行逆二次变换。解码器可以对经逆二次变换的变换系数块执行逆一次变换以导出残差块。 此外,如上所述,不可分离变换可以被用作二次变换,以及二次变换可以仅应用于左上特定区域的低频系数以保持低复杂度。应用于这些低频系数的二次变换可以被称为不可分离二次变换(NSST)、低频不可分离变换(LFNST)或缩减二次变换(RST)。一次变换可以被称为核心变换。 在本公开的实施例中,一次变换中使用的一次变换候选和二次变换中使用的二次变换核可以被预定义为各种组合。在本公开中,一次变换中使用的一次变换候选可以被称为MTS候选,但不限于该名称。例如,一次变换候选可以是分别应用于水平和垂直方向的变换核(或变换类型)的组合,并且变换核可以是DCT-2、DST-7和/或DCT8之一。换言之,一次变换候选可以是DCT-2、DST-7和/或DCT-8的至少一种组合。下面的描述通过详细的示例给出。 -组合A 在组合A中,如下表12所示,可以根据帧内预测模式定义一次变换候选和二次变换核。 [表12]
参考上表12,作为示例(情况1),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性(例如,DC、平面模式),则可以使用四个一次变换候选模式。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括两个变换核。即,如上所述,可以根据帧内预测模式预定义多个二次变换核集,并且多个预定义二次变换核集中的每一个可以包括两个变换核。 此外,作为示例(情况2),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性,则可以使用四个一次变换候选。在这种情况下,如果帧内预测模式具有方向性,则二次变换候选可以包括一个变换核,以及如果帧内预测模式没有方向性,则二次变换候选可以包括两个变换核。 此外,作为示例(情况3),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性,则可以使用四个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括一个变换核。 -组合B 在组合B中,如下表13所示,可以根据帧内预测模式定义一次变换候选和二次变换核。 [表13]
参考上表13,作为示例(情况1),不管帧内预测模式的方向性如何,都可以使用三个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括两个变换核。即,如上所述,可以根据帧内预测模式预定义多个二次变换核集,并且多个预定义二次变换核集中的每一个可以包括两个变换核。 此外,作为示例(情况2),不管帧内预测模式的方向性如何,都可以使用三个一次变换候选。在这种情况下,如果帧内预测模式具有方向性,则二次变换候选可以包括一个变换核,如果帧内预测模式没有方向性,则二次变换候选可以包括两个变换核。 此外,作为示例(情况3),不管帧内预测模式的方向性如何,都可以使用三个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括一个变换核。 -组合C 在组合C中,如下表14所示,可以根据帧内预测模式定义一次变换候选和二次变换核。 [表14]
参考上表14,作为示例(情况1),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性(例如,DC、平面模式),则可以使用三个一次变换候选模式。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括两个变换核。即,如上所述,可以根据帧内预测模式预定义多个二次变换核集,并且多个预定义二次变换核集中的每一个可以包括两个变换核。 此外,作为示例(情况2),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性,则可以使用三个一次变换候选。在这种情况下,如果帧内预测模式具有方向性,则二次变换候选可以包括一个变换核,如果帧内预测模式没有方向性,则二次变换候选可以包括两个变换核。 此外,作为示例(情况3),如果帧内预测模式具有方向性,则可以使用两个一次变换候选,如果帧内预测模式没有方向性,则可以使用三个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括一个变换核。 上面的描述是针对使用多个一次变换候选的情况给出的。下面通过示例描述在使用固定的一次变换候选的情况下一次变换和二次变换的组合。 -组合D 在组合D中,如下表15所示,可以根据帧内预测模式定义一次变换候选和二次变换核。 [表15]
参考上表15,作为实施例,可以固定地使用一个一次变换候选,而不管帧内预测模式如何。例如,固定一次变换候选可以是DCT-2、DST-7和/或DCT-8的至少一种组合。 作为示例(情况1),不考虑帧内预测模式如何,都可以固定地使用一个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括两个变换核。即,如上所述,可以根据帧内预测模式预定义多个二次变换核集,并且多个预定义二次变换核集中的每一个可以包括两个变换核。 此外,作为示例(情况2),不管帧内预测模式如何,都可以固定使用一个一次变换候选。在这种情况下,如果帧内预测模式具有方向性,则二次变换候选可以包括一个变换核,如果帧内预测模式没有方向性,则二次变换候选可以包括两个变换核。 此外,作为示例(情况3),不管帧内预测模式如何,都可以固定使用一个一次变换候选。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括一个变换核。 -组合E 在组合E中,如下表16所示,可以根据帧内预测模式定义一次变换候选和二次变换核。 [表16]
参考上表16,只要将DCT-2用作一次变换,就可以定义二次变换。换句话说,如果不应用MTS(即,如果DCT-2用作一次变换),则可以应用二次变换。如上图10所示,通过划分成应用MTS的情况和不应用MTS的情况来描述本公开,但不限于这样的表述。例如,是否应用MTS可以与是否使用除预定义的特定变换类型(可以被称为基本变换类型、默认变换类型等)以外的变换类型(或变换核)相同的含义。如果应用MTS,则可以将除了基本变换类型之外的变换类型(例如,多个变换类型中的任何一个变换类型或两个或更多个变换类型的组合变换类型)用于变换。此外,如果不应用MTS,则可以将基本变换类型用于变换。在实施例中,基本变换类型可以被配置(或定义)为DCT-2。 作为示例(情况1),当DCT-2应用于一次变换时,可以应用二次变换。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括两个变换核。即,如上所述,可以根据帧内预测模式预定义多个二次变换核集,并且多个预定义二次变换核集中的每一个可以包括两个变换核。 此外,作为示例(情况2),当DCT-2应用于一次变换时,可以应用二次变换。在这种情况下,如果帧内预测模式具有方向性,则二次变换候选可以包括一个变换核,如果帧内预测模式没有方向性,则二次变换候选可以包括两个变换核。 此外,作为示例(情况3),当DCT2应用于一次变换时,可以应用二次变换。在这种情况下,不管帧内预测模式的方向性如何,二次变换候选都可以包括一个变换核。 图26是图示根据应用本公开的实施例的用于变换视频信号的方法的流程图。 参考图26,为了便于说明,本公开基于解码器进行描述,但不限于此。根据本公开的实施例的用于视频信号的变换方法可以基本上等同地适用于甚至编码器。图26所示的流程图可以由解码装置200或逆变换单元230来执行。 在S2601中,解码装置200解析指示应用于当前块的一次变换的一次变换核的第一语法元素。 在S2602中,解码装置200基于第一语法元素确定二次变换是否适用于当前块。 如果二次变换适用于当前块,则在S2603中,解码装置200解析指示应用于当前块的二次变换的二次变换核的第二语法元素。 在S2604中,解码装置200通过使用由第二语法元素指示的二次变换核,对当前块的左上特定区域执行二次逆变换来导出二次逆变换块。 在S2605中,解码装置200通过使用由第一语法元素指示的一次变换核,对二次逆变换的块执行一次逆变换来导出当前块的残差块。 如上所述,如果第一语法元素指示预定义的第一变换核,则可以通过确定二次变换适用于当前块来执行步骤S2602。在这种情况下,第一变换核可以被定义为DCT-2。 此外,如上所述,解码装置200可以基于当前块的帧内预测模式,在预定义的二次变换核集当中确定用于当前块的二次变换的二次变换核集。第二语法元素可以指示在所确定的二次变换核集中,应用于当前块的二次变换的二次变换核。 此外,如上所述,每个预定义的二次变换核集可以包括两个变换核。 在本公开的实施例中,将描述使用多重变换集(MTS)的语法结构的示例。 例如,下表17示出了序列参数集的语法结构的示例。 [表17]
参考表17,可以通过序列参数集语法发信号告知是否可以使用根据本公开的实施例的MTS。在此,sps_mts_intra_enabled_flag指示在关于帧内编译单元的较低级别语法(例如,残差编译语法或变换单元语法)中是否存在MTS标志或MTS索引。此外,sps_mts_inter_enabled_flag指示在关于帧间编译单元的较低级别语法中是否存在MTS标志或MTS索引。 作为另一示例,下表18示出了变换单元语法结构的示例。 [表18]
参考表18,cu_mts_flag指示是否将MTS应用于亮度变换块的残差样本。例如,如果cu_mts_flag=0,则不将MTS应用于亮度变换块的残差样本,如果cu_mts_flag=1,则将MTS应用于亮度变换块的残差样本。 如上所述,尽管在本公开中分别描述了基于MTS标志,应用MTS的情况和不应用MTS的情况,但是本公开不限于此。例如,是否应用MTS可以是指是否使用除预定义的特定变换类型(其可以被称为基本变换类型、默认变换类型等)之外的变换类型(或变换核)。如果应用MTS,则除了默认变换类型之外的变换类型(例如,多个变换类型中的任何一个或者其两个或更多个的组合)可以用于变换,并且如果不应用MTS,则可以使用默认变换类型。在实施例中,可以将默认变换类型设置(或定义)为DCT-2。 例如,指示是否将MTS应用于当前变换块的MTS标志语法,以及当应用MTS时指示应用于当前块的变换类型的MTS索引语法,可以从编码器单个地发送到解码器。作为另一示例,包括关于是否将MTS应用于当前变换块的信息以及当应用MTS时应用于当前块的变换类型两者的语法(例如,MTS索引)可以从编码器被发送到解码器。即,在后一实施例中,指示包括前述默认变换类型的变换类型组(或变换类型集)中的应用于当前变换块(或单元)的变换类型的语法(或语法元素)可以从编码器被发送到解码器。 因此,尽管有这些表述,但是指示应用于当前变换块的变换类型的语法(MTS索引)可以包括关于是否应用MTS的信息。换言之,在后一实施例中,可以仅发信号告知MTS索引,而无需MTS标志。在这种情况下,DCT-2可以被解释为包含在MTS中。然而,在本公开中,可以将应用DCT-2的情况描述为不应用MTS的情况。然而,与MTS相关的技术范围不限于相应定义的内容。 作为另一示例,下表19示出了残差单元语法结构的示例。 [表19]
参考表19,transform_skip_flag和/或mts_idx语法(或语法元素)可以通过残差语法发信号告知。然而,这仅仅是示例,并且本公开不限于此。例如,transform_skip_flag和/或mts_idx语法可以通过变换单元语法发信号告知。 在下文中,提出了一种通过仅对预定义区域应用一次变换来改善复杂度的方法。当诸如MTS的各种变换(或变换核)(例如DCT-2、DST-7、DCT-8、DST-1、DCT-5等)的组合被有选择地应用于一次变换时,复杂性可能会增加。特别是,随着编译块(或变换块)大小的增加,需要考虑各种变换,这可能会显著增加复杂度。 因此,在本公开的实施例中,提出了一种根据特定条件仅对预定义区域执行变换而不是对所有区域执行变换以降低复杂度的方法。 作为实施例,编码器可以基于上文参考图16-图24所述的缩减变换(RT)方法,通过将正向一次变换应用于M×M像素块(亮度块)来获得R×R变换块而不是M×M变换块。例如,R×R区域可以是当前块(编译块或变换块)的左上R×R区域。解码器可以通过仅对R×R(M≧R)区域执行逆一次变换来获得M×M变换块。 结果,非零系数可能仅存在于R×R区域中。在这种情况下,解码器可以将对存在于除R×R区域之外的区域中的系数归零而不对其执行计算。编码器可以执行正向变换,从而仅保留R×R区域(使得非零系数仅存在于R×R区域中)。 此外,解码器可以仅对根据编译块(或变换块)的大小和/或变换(或变换核)类型确定的预定义区域应用一次变换(即,逆变换)。下表20示出了使用取决于变换的大小(或变换块的大小)的预定义R值(其可以被称为缩减因子、缩减变换因子等)的缩减自适应多重变换(RAMT)。在本公开中,表示取决于块大小而自适应地确定的缩减变换的缩减自适应多重变换(RAMT)可以被称为缩减MTS(多重变换选择)、缩减显式多重变换、缩减一次变换等。 [表20]
参考表20,可以取决于变换大小(或变换块大小)定义至少一个缩减变换。在实施例中,可以根据应用于当前块(编译块或变换块)的变换(或变换核)来确定将使用表20中所示的缩减变换当中的哪一个缩减变换。尽管在表20中假设了使用三个缩减变换的情况,但是本公开不限于此,并且可以取决于变换大小来预定义一个或多个各种缩减变换。 此外,在本公开的实施例中,可以取决于应用上述缩减自适应多重变换中的一次变换来确定缩减变换因子(R)。例如,当一次变换为DCT-2时,由于DCT-2的计算复杂度低于其他一次变换(例如,DST-7和/或DCT-8的组合)的计算复杂度,因此可以通过对小块不使用缩减变换或使用相对较大的R值来最小化编译性能劣化。下表21示出了取决于变换大小(或变换块大小)和变换核使用预定义R值的缩减自适应多重变换(RAMT)。 [表21]
参考表21,在作为一次变换应用的变换是DCT-2的情况和作为一次变换应用的变换是除DCT-2外的变换(例如,DST7和/或DCT8的组合)的情况下,可以使用不同的缩减变换因子。 图27是图示作为应用本公开的实施例的使用缩减变换对视频信号进行编码的方法的图。 参考图27,编码器确定是否对当前块应用变换(S2701)。编码器可根据确定结果对变换跳过标志进行编码。在这种情况下,编码变换跳过标志的步骤可以被包括在步骤S2701中。 当变换应用于当前块时,编码器确定应用于当前块的一次变换的变换核(S2702)。编码器可以对指示所确定的变换核的变换索引进行编码。在这种情况下,编码变换索引的步骤可以被包括在步骤S2702中。 编码器基于应用于当前块的一次变换的变换核和当前块的大小来确定当前块内存在有效系数的区域(S2703)。 作为一个实施例,当由变换索引所指示的变换核是预定义的变换并且当前块的宽度和/或高度大于预定大小时,编码器可以将具有对应于预定义大小的宽度和/或高度的区域确定为存在有效系数的区域。 例如,预定义变换可以是DST-7和/或DCT-8的多个变换组合之一,以及预定义大小可以是16。可替代地,预定义变换可以是除DCT-2之外的变换。作为示例,当由变换索引指示的变换核是DCT-2并且当前块的宽度和/或高度大于32时,编码器可以将具有宽度和/或高度为32的区域确定为应用一次变换的区域。 此外,作为一个实施例,当由变换索引指示的变换核属于第一变换组时,编码器可以将当前块的宽度与第一阈值之间的较小值确定为应用一次变换的区域的宽度,并且将当前块的高度和第一阈值之间的较小值确定为存在有效系数的区域的高度。例如,第一阈值可以是32,但本公开不限于此,第一阈值可以是4、8或16,如表20或表21所示。 此外,当由变换索引指示的变换核属于第二变换组时,编码器可以将当前块的宽度和第二阈值之间的较小值确定为应用一次变换的区域的宽度,并且将当前块的高度和第二阈值之间的较小值确定为存在有效系数的区域的高度。例如,第二阈值可以是16,但本公开不限于此,第二阈值可以是4、6、8、12或32,如表20或表21所示。 作为一个实施例,第一变换组可以包括DCT2,并且第二变换组可以包括DST7和/或DCT8的多个变换组合。 编码器使用应用于当前块的一次变换的变换核来执行正向一次变换(S2704)。编码器可以通过执行正向一次变换,获得存在有效系数的区域中的一次变换的变换系数。作为实施例,编码器可以对一次变换的变换系数应用二次变换。在这种情况下,可以应用上文参考图6至图26所述的方法。 图28是图示作为应用本公开的实施例的使用缩减变换对视频信号进行解码的方法的图。 解码器检查变换跳过是否应用于当前块(S2801)。 当变换跳过未应用于当前块时,解码器从视频信号获得指示应用于当前块的变换核的变换索引(S2802)。 解码器基于由变换索引指示的变换核和当前块的大小(即,宽度和/或高度),确定对当前块应用一次变换(即,一次逆变换)的区域(S2803)。 作为实施例,解码器可以将除了应用一次变换的区域之外的剩余区域的系数设置为0。 另外,作为实施例,当变换索引所指示的变换核是预定义的变换并且当前块的宽度和/或高度大于预定义的大小时,解码器可以将具有对应于预定义大小的宽度和/或高度的区域确定为应用一次变换的区域。 例如,预定义变换可以是DST-7和/或DCT-8的多个变换组合中的任意一个,并且预定义大小可以是16。可替代地,预定义变换可以是除DCT-2之外的变换。例如,当变换索引所指示的变换核为DCT-2并且当前块的宽度和/或高度大于32时,解码器可以将宽度和/或高度为32的区域确定为应用一次变换的区域。 此外,作为实施例,当变换索引所指示的变换核属于第一变换组时,解码器可以将当前块的宽度和第一阈值之间的较小值确定为应用一次变换的区域的宽度,并且将当前块的高度和第一阈值之间的较小值确定为应用一次变换的区域的高度。例如,第一阈值可以是32,但本公开不限于此,第一阈值可以是4、8或16,如表20或表21所示。 此外,当由变换索引指示的变换核属于第二变换组时,解码器可以将当前块的宽度与第二阈值之间的较小值确定为应用一次变换的区域的宽度,并且将当前块的高度与第二阈值之间的较小值确定为应用一次变换的区域的高度。例如,第二阈值可以是16,但本公开不限于此,第二阈值可以是4、6、8、12或32,如表20或表21所示。 作为实施例,第一变换组可以包括DCT-2,而第二变换组可以包括DST7和/或DCT8的多个变换组合。 解码器使用由变换索引指示的变换核,对应用一次变换的区域执行逆一次变换(S2804)。解码器可以通过执行逆一次变换来获得一次逆变换的变换系数。作为实施例,解码器可以在一次变换之前,将二次变换应用于逆量化的变换系数。在这种情况下,可以应用上文参考图6至图26描述的方法。
根据本公开的实施例,可以通过根据特定条件,仅对预定义区域执行变换,显著降低最坏情况复杂度。 此外,在本公开的实施例中,当MTS(EMT或AMT)标志为0时(即,当在水平(横向)方向和垂直(纵向)方向上均应用DCT-2变换时),编码器/解码器可以对除水平和垂直方向上的32个左上系数外的高频分量进行归零(即,将高频分量导出或设置为0)。尽管在稍后描述的实施例中,为了便于描述,将本实施例称为第一实施例,但是本公开的实施例不限于此。 例如,在64×64TU(或CU)的情况下,编码器/解码器可以只保留左上32×32区域的变换系数,并对剩余区域的系数执行归零。此外,在64×16TU的情况下,编码器/解码器可以仅保留左上32×16区域的变换系数,并对剩余区域的系数执行归零。此外,在8×64TU的情况下,编码器/解码器可以只保留左上8×32区域的变换系数,并对剩余区域的系数执行归零。即,可以将变换系数设置为使得变换系数在水平和垂直方向上仅存在最大长度为32,这可以提高变换效率。 作为实施例,这种归零方法可以仅应用于对其应用了帧内预测的残差信号、仅应用于对其应用了帧间预测的残差信号,或应用于对其应用了帧内预测的残差信号和对其应用了帧间预测的残差信号两者。
此外,在本公开的实施例中,当MTS标志为1时(即,当在水平方向和垂直方向上应用除DCT-2变换之外的变换(例如,DST-7或DCT-8)时),编码器/解码器可以对除特定左上区域的系数之外的高频分量执行归零(即,将高频分量导出或设置为0)。尽管在稍后将描述的实施例中,为了便于描述,将本实施例称为第二实施例,但是本公开的实施例不限于此。 作为实施例,如在下述示例中,编码器/解码器可以仅保留与左上区域的一部分相对应的变换系数区域。即,编码器/解码器可以取决于宽度和/或高度,预设对其应用一次变换的在水平和/或垂直方向上的变换系数的长度(或数量)。例如,超出应用了一次变换的长度的系数可以被归零。 -当宽度(w)等于或大于2 -当高度(h)等于或大于2 例如,值m、n、p和q可以被预定义为各种值。例如,值m、n、p和q可以被设置为等于或大于0的整数值。可替代地,可以如在下述示例中设置它们。 1)(m,n,p,q)=(5,5,1,1) 2)(m,n,p,q)=(4,4,1,1) 当预定义1)的配置时,例如,相对于32×16TU,可以仅对左上16×16区域保留变换系数,相对于8×32TU,可以仅对左上8×16区域保留变换系数。 作为实施例,这种归零方法可以仅应用于对其应用了帧内预测的残差信号、仅应用于对其应用了帧间预测的残差信号,或应用于对其应用了帧内预测的残差信号和对其应用了帧间预测的残差信号两者。
在本公开的另一个实施例中,当MTS标志为1时(即,当在水平方向和垂直方向上适用除DCT-2变换之外的变换(例如,DST-7或DCT-8)时)),编码器/解码器可以对除特定左上区域的系数之外的高频分量执行归零(即,将高频分量导出或设置为0)。更具体地说,编码器可以保留特定左上区域的系数并对剩余的高频分量执行归零,并且解码器可以预先辨识归零区域并且使用非归零区域的系数执行解码。然而,本公开实施例不限于此,从解码器的角度来看,归零过程可以被理解为将归零区域导出(辨识或设置)为0的过程。虽然在稍后所述的实施例中,为了方便描述,将本实施例称为第三实施,但本公开的实施例不限于此。 作为实施例,如在下述示例中,编码器/解码器可以仅保留与左上区域的一部分相对应的变换系数区域。即,取决于宽度和/或高度,编码器/解码器可以预设对其应用了一次变换的在水平和/或垂直方向上的变换系数的长度(或数量)。例如,超出对其应用了一次变换的长度的系数可以归零。 -当高度(h)等于或大于宽度(w)且等于或大于2 -当宽度(w)大于高度(h)并且等于或大于2 尽管在上述示例中,当高度(h)等于宽度(w)时,使垂直方向上的长度减小(h/2 例如,值m、n、p和q可以被预定义为各种值。例如,值m、n、p和q可以被设置为等于或大于0的整数值。可替代地,可以如在下述示例中设置它们。 1)(m,n,p,q)=(4,4,1,1) 2)(m,n,p,q)=(5,5,1,1) 当预定义1)的配置时,例如,相对于32×16TU,可以仅对左上16×16区域保留变换系数,相对于8×16TU,可以仅对左上8×8区域保留变换系数。 作为实施例,这种归零方法可以仅应用于对其应用了帧内预测的残差信号、仅应用于对其应用了帧间预测的残差信号,或应用于对其应用了帧内预测的残差信号和对其应用了帧间预测的残差信号两者。 与MTS标志为0时限制变换系数区域的方法有关的第一实施例,以及与MTS标志为1时限制变换系数区域的方法有关的第二实施例和第三实施例可以单独应用或可以以组合方式应用。 作为实施例,可以应用如下组合的配置。 1)第一实施例+第二实施例 2)第一实施例+第三实施例 如在第二实施例和第三实施例中提到的,作为实施例,归零方法可以仅应用于对其应用了帧内预测的残差信号、仅应用于对其应用了帧间预测的残差信号,或应用于对其应用了帧内预测的残差信号和对其应用了帧间预测的残差信号两者。因此,如下组合的配置可以应用于MTS标志为1的情况。在此,第一实施例可以应用于MTS标志为0的情况。 [表22]
在本公开的实施例中,编码器/解码器可以对被视为根据归零而具有变换系数为0的区域的区域不执行残差编译。即,可以定义编码器/解码器,使得它们仅对除归零区域之外的区域执行残差编译。 在上述第一、第二和第三实施例中,明显地确定了需要具有值0的区域(或系数)。即,使除了允许存在变换系数的左上区域之外的区域归零。因此,在熵编译(或残差编译)过程中,编码器/解码器可以被配置为绕过确保具有值0的区域而不对其执行残差编译。 在实施例中,编码器/解码器可以对指示系数组(CG)中非零变换系数的存在与否的标志(称为subblock_flag)(或语法,或语法元素)进行编码。在此,CG是TU的子块并且可以根据TU块的形状和/或TU是否是色度/亮度分量被设置为4x4或2x2块。 在此,编码器/解码器仅在subblock_flag为1的情况下才能扫描CG以编码系数值(或系数级别值)。因此,编码器/解码器可以配置属于归零区域的CG,使得它们具有默认为0的值,而不对其执行subblock_flag编译。 此外,在实施例中,编码器可以首先对位于正向扫描顺序中最后的系数的位置(或指示最后有效系数的位置的语法或语法元素)进行编码。例如,编码器可以编码last_coefficient_position_x,即水平位置,以及last_coefficient_position_y,即垂直位置。在本文档中,最后有效系数是当在一个变换块内从左上位置起按扫描顺序布置变换系数时位于末端的非零变换系数。扫描顺序中的最后有效系数之后的位置填充0(被视为0)。 尽管last_coefficient_position_x和last_coefficient_position_y的可用值的最大值可以被确定为TU的(宽度-1)和(高度-1),但是,当根据归零,存在非零系数的区域可能受限制时,last_coefficient_position_x和last_coefficient_position_y的可用值的最大值也可能受到限制。 因此,编码器/解码器可以考虑到归零而限制last_coefficient_position_x和last_coefficient_position_y的可用值的最大值,然后对它们进行编码。例如,当应用于last_coefficient_position_x和last_coefficient_position_y的二值化方法是截断一元(或截断莱斯(TR),或截断二进制(TB))二值化方法时,编码器/解码器可以控制(减少)截断一元码的最大长度使得它对应于调整后的最大值(即last_coefficient_position_x和last_coefficient_position_y的可用最大值)。 图29是根据本公开的实施例的应用可分离变换的情况的示例。图29a图示了存在有效系数的区域和在正向变换时应用归零的区域。图29b图示了存在有效系数的区域和在反向变换时应用归零的区域。 基于正向变换,相对于对其应用MTS的块,对于留下有低频区域(例如,32x32块中的左上16x16区域)的系数的剩余部分应用归零(填充为0或导出为0)的方案,可以表示为RMTS(缩减多重变换选择)。例如,在图29a中,如果包括残差样本值的块的大小是32x32并且通过应用RMTS输出16x16缩小的块,则在由应用水平变换生成的系数中仅留下位于行方向的左区域中的系数(从左边起16个系数),而右区域被视为系数为0。此后,在由应用垂直变换生成的系数中仅留下位于列方向上的上区域中的系数(从上起16个系数)。其余较低区域被视为系数为0。 参考图29b,包括变换系数的变换块的大小是32x32,通过应用RMTS对左上16x16区域应用变换,并且剩余区域被认为系数为0。由于对16x16区域应用了垂直逆变换,因此在变换块的左区域中产生有效系数,而右区域仍然被视为系数为0。此后,由于对右区域应用了水平逆变换,因此对于变换块的整个32x32区域可能存在有效系数。 作为本公开的实施例,提出了缩减的32点MTS(RMTS32),其中省略了对高频系数的变换。在这种情况下,32点MTS指示对长度为32的行或列应用变换的方法。在这种情况下,考虑到最差的计算复杂度,32点MTS可能需要每个输出样本最多64个乘法运算。提出RMTS32以降低操作复杂性和减少存储器使用。 根据RMTS32,当MTS标志为1(或当MTS索引大于0)并且块宽度(高度)大于或等于32时,保持最大左上16x16区域并将剩余区域视为0(归零),并且保持直至左(上)16个系数。水平或垂直地独立应用归零,RMTS可以应用于所有块形状。假设将RMTS应用于32长度,对于32x32变换块,可以保持左上16x16区域,对于32x8变换块,可以保持左上16x8区域,以及对于16x32,可以保持左上16x16区域。 从操作计数的角度来看,使用RMTS32,可以将32点MTS的操作复杂度降低一半。在这种情况下,32点MTS是应用于块的长度为32的行或列的变换矩阵(当MTS标志为1或MTS索引大于0时)。此外,从存储器使用的角度来看,可能只需要存储32点MTS矩阵的变换基矢量的一半。关于被视为是0的区域,可以省略残差编译,因为相关子块标志被隐式地导出为0。也可以通过考虑最大可能位置来调整最后系数位置的截断一元二值化。 从存储器使用的角度来看,RMTS32对具有32长度的行或列生成16个系数。因此,在32x32 DST-7/DCT-8中,只需要存储前16个变换基矢量。因此,用于存储32长度DST-7/DCT-8的存储器使用量可以减少一半(例如,从2KB到1KB)。 例如,用于实现上述RMTS32的残差编译语法可以如表23中设置。 [表23]
此外,可以如下确定变换块中应用变换的区域的有效宽度(nonZeroW)和有效高度(nonZeroH)。 nonZeroW=Min(nTbW,trTypeHor==0?32:16) nonZeroH=Min(nTbH,trTypeVer==0?32:16) 在这种情况下,nTbW指示当前块(变换块)的宽度,nTbH指示当前块(变换块)的高度,以及trTypeHor和trTypeVer分别指示水平变换核的类型和垂直变换核的类型。Min(A,B)是用于输出A和B当中的较小值的函数。 例如,可以基于MTS索引(mts_idx),即指示变换类型的索引,如在表24中确定trTypeHor和trTypeVer。 [表24]
在这种情况下,trTypeHor、trTypeVer的值指示变换核的类型之一。例如,0可以指示DCT-2,1可以指示DST-7,以及2可以指示DCT-8。在表24中,当mts_idx为0时,trTypeHor和trTypeVer也被确定为0。当mts_idx不为0时(大于0时),trTypeHor和trTypeVer也被确定为非零(大于0)值。 换言之,当变换索引(trTypeHor)大于参考值(例如,0)时(即,当trTypeHor不为0时),应用变换的区域的有效宽度(nonZeroW)被确定为当前块(变换块)的宽度(nTbW)和16中的较小值,而当变换索引(trTypeHor)不大于参考值(例如,0)时(即,当trTypeHor为0时),将其确定为当前块的宽度和32中的较小值。 此外,当垂直变换类型索引(trTypeVer)大于参考值(例如0)时,应用变换的区域的有效高度(nonZeroH)可以被确定为当前块(变换块)的高度(nTbH)和16中的较小值,而当垂直变换类型索引(trTypeVer)不大于参考值(例如,0)时,可以将其确定为当前块(变换块)的高度(nTbH)和32之间的较小值。 根据本公开的实施例,如下所述,32长度的DST-7/DCT-8的仅一半可以被存储在存储器中。 例如,当(水平或垂直)变换类型索引(trType)为1(例如,DST-7)并且变换目标块的行或列的样本数(nTbs)为32时,变换矩阵可以如表25和表26中那样导出。表25和表26的矩阵水平地级联以构成一个矩阵。在[m][n]中,m为横向索引,n为纵向索引。如果将表25的矩阵和表26的矩阵级联,就导出16×32的矩阵,并且相应的矩阵就变成了用于正向变换的矩阵。可以通过由表25和表26配置的矩阵以及适当的索引来执行逆变换。此外,在表25和表26中,下面16行的删除线是指删除该16行,因为它们因应用缩减变换而变得不必要。 [表25]
[表26]
此外,当(水平或垂直)变换类型索引(trType)为2(例如,DCT-8)并且变换目标块的行或列的样本数(nTbs)为32时,如在表27和表28中那样导出变换矩阵。表27和表28的矩阵水平级联以构成一个矩阵。在[m][n]中,m为横向索引,n为纵向索引。如果将表27的矩阵和表28的矩阵级联,则导出16x32的矩阵,并且相应的矩阵就变成了用于正向变换的矩阵。可以通过由表27和表28配置的矩阵以及适当的索引来执行逆变换。此外,在表27和表28中,下面16行的删除线是指删除这16行,因为它们由于应用缩减变换而变得不必要。 [表27]
[表28]
通过如在表25和表26或表27和表28中,相对于包括32个残差信号样本(在正向变换时)的输入矢量,生成包括16个样本值的输出矢量,并且通过使用表25和表26或表27和表28的矩阵以及对逆变换(在反向变换时)进行索引,执行相对于包括16个值的输入矢量,输出包括32个残差信号样本的输出矢量的逆变换,可以降低操作复杂度和存储器使用。 在实施例中,关于非零最后有效系数的位置(last_sig_coeff_x_prefix、last_sig_coeff_y_prefix)的信息可以如表29中被二值化。 [表29]
表29的过程是指示二值化方法的类型的项目,以及TR指示截断莱斯(或截断一元)二值化方法。此外,cMax和cRiceParam是用于确定用于一元二值化的bin串长度的参数。bin串的长度可以被确定为cMax>>cRiceParam。 在表29中,可以通过考虑指示是否应用MTS的标志(tu_mts_flag)是否为1(或MTS索引是否大于1)以及变换块的宽度,以及与宽度相关的信息(log2TbWidth,log2TbHeight)来确定有关非零最后有效系数位置的信息(last_sig_coeff_x_prefix,last_sig_coeff_y_prefix)。如上所述,最后有效系数是变换块内按扫描顺序位于最后的非零系数。 换言之,可以说是基于变换块的宽度(log2TbWidth)确定用于将最后有效系数的列位置(x位置)的前缀(last_sig_coeff_x_prefix)二值化的输入参数(cMax)。可以说是基于变换块的高度(log2TbHeight)确定用于将最后有效系数的行位置(y位置)的前缀(last_sig_coeff_y_prefix)二值化的输入参数。作为同等含义,可以说是基于变换块的有效宽度(log2ZoTbWidth)确定用于将最后有效系数的列位置(x位置)的前缀(last_sig_coeff_x_prefix)二值化的输入参数(cMax)。可以说是基于变换块的有效高度(log2ZoTbHeight)确定用于将最后有效系数的行位置(y位置)的前缀(last_sig_coeff_y_prefix)二值化的输入参数。在这种情况下,当变换块的宽度(log2TbWidth)为32(5)时,将有效宽度(log2ZoTbWidth)确定为16(4),而当变换块的宽度(log2TbWidth)不是32(5)时,将其确定为变换块的宽度(log2TbWidth)和32(5)中的较小值。此外,当变换块的高度(log2TbHeight)为32(5)时,有效高度(log2ZoTbHeight)被确定为16(4),而当变换块的高度(log2TbHeight)不是32(5)时,其被确定为变换块的高度(log2TbHeight)和32(5)之间的较小值。在本文档中,有效宽度是指变换块内可能存在非零变换系数的区域的宽度(从左边起的长度)。有效高度是指变换块内可能存在非零变换系数的区域的高度(从顶部起的长度)。 此外,本公开的另一个实施例提供了一种用于RMTS32的残差编译的方法。在本实施例中,可以仅在可能存在非零系数的区域中扫描系数。换句话说,归零区域没有被扫描,并且可以被视为填充了0。在RMTS32的归零的情况下,扫描区域可能是左上16x16区域,并且与16x16 TU相同的扫描顺序可以应用于左上16x16区域。此外,可以通过考虑最大可能位置来调整在最后系数位置处的截断的一元二值化。 根据本实施例的残差编译语法可以与表30相同。 [表30]
在表30中,last_sig_coeff_x_prefix和last_sig_coeff_y_prefix,即,与最后有效系数的位置相关的语法元素可以定义如下。 last_sig_coeff_x_prefix指示变换块内的根据扫描顺序的最后有效系数的列位置的前缀。阵列索引x0,y0指示图片的左上样本的变换块的左上样本的位置(x0,y0)。阵列索引cIdx指示色度分量的指示符,并且对于亮度,可以设置为0,对于Cb设置为1,并且对于Cr设置为2。last_sig_coeff_x_prefix的值可以是从0到(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1范围内的值。 换句话说,last_sig_coeff_x_prefix的最大值可以是(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。在这种情况下,log2TbWidth是在变换块的宽度中,取以2为底的log的值。tu_mts_flag指示是否将MTS应用于变换块。当tu_mts_flag为1时,DST-7或DCT-8可以水平和垂直地应用于变换块。当tu_mts_flag为1时并且当MTS索引(mts_idx)大于0时,意义相同。因此,tu_mts_flag[x0][y0]==1可以表示为mts_idx[x0][y0]>0。此外,Min(A,B)是用于输出A和B中的较小值的函数。 即,未应用MTS时(tu_mts_flag为0时),基于log2TbWidth和5中的较小值确定last_sig_coeff_x_prefix的最大值。当应用MTS时(tu_mts_flag不为0时),基于log2TbWidth和4中的较小值确定last_sig_coeff_x_prefix的最大值。换句话说,当MTS应用于亮度块并且变换块的宽度为32(如果log2TbWidth为5并且对某个区域应用变换)时,last_sig_coeff_x_prefix的最大值被确定为(4<<1)–1=7。 换言之,可以说是基于变换块的有效宽度(log2ZoTbWidth)确定变换块内的根据扫描顺序的最后有效系数的行位置的前缀(last_sig_coeff_x_prefix)。在这种情况下,当应用MTS时(当mts_flag不为0或当mts_idx大于1时),当变换块的宽度为32时(当log2TbWidth为5并且对某个区域应用了变换时),有效宽度(log2ZoTbWidth)被确定为16(log2ZoTbWidth为4),以及当变换块的宽度不是32时,有效宽度(log2ZoTbWidth)被确定为变换块的宽度和32中的较小值(log2TbWidth和5中的较小值)。 last_sig_coeff_y_prefix指示变换块内的根据扫描顺序的最后有效系数的行位置的前缀。阵列索引x0,y0指示图片的左上样本的变换块的左上样本的位置(x0,y0)。阵列索引cIdx表示色度分量的指示符,并且可以对于亮度设置为0、对于Cb为1、对于Cr为2。last_sig_coeff_y_prefix的值可以是从0到(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1范围内的值。 与last_sig_coeff_x_prefix一样,last_sig_coeff_y_prefix的最大值可能是(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。在这种情况下,log2TbHeight指示在变换块的高度中取以2为底的log的值。 即,未应用MTS时(tu_mts_flag为0时),基于log2TbHeight和5中的较小值确定last_sig_coeff_y_prefix的最大值。应用MTS时(tu_mts_flag不为0时),基于log2TbHeight和4中的较小值确定last_sig_coeff_y_prefix的最大值。换句话说,当应用MTS并且变换块的高度为32时(当log2TbHeight为5时),last_sig_coeff_y_prefix的最大值被确定为(4<<1)–1=7。 换句话说,可以说是基于变换块的有效高度来确定变换块内的根据扫描顺序的最后有效系数的列位置的前缀(last_sig_coeff_y_prefix)。在这种情况下,当应用MTS时(当mts_flag不为0时或当mts_idx大于1时),当变换块的高度为32时(log2TbHeight为5时),有效高度被确定为16(log2ZoTbHeight为4),当变换块的高度不是32时,将有效宽度(log2ZoTbWidth)确定为变换块的高度和32中的较小值(log2TbHeight和5中的较小值)。 可以使用如上所述导出的last_sig_coeff_x_prefix、last_sig_coeff_y_prefix来导出变换块内的最后有效系数的位置。可以基于最后有效系数的位置对变换块执行扫描或变换。 此外,用于确定最后有效系数的位置的后缀可以被附加地使用。参考表30,当last_sig_coeff_x_prefix大于参考值3时,可以获得与最后有效系数的列位置相关的后缀(last_sig_coeff_x_suffix)。此外,当last_sig_coeff_y_prefix大于参考值3时,可以获得与最后有效系数的行位置相关的后缀(last_sig_coeff_y_suffix)。如果存在last_sig_coeff_x_suffix,则可以基于last_sig_coeff_x_prefix和last_sig_coeff_x_suffix来确定最后有效系数的列位置(LastSignificantCoeffX)。此外,如果存在last_sig_coeff_y_suffix,则可以基于last_sig_coeff_y_prefix和last_sig_coeff_y_suffix来确定最后有效系数的列位置(LastSignificantCoeffY)。 为方便起见,可以对本公开的上述实施例中的一些实施例进行划分和描述,但是本公开不限于此。即,上述实施例可以独立执行,也可以将一个或多个实施例组合起来执行。 图30图示了根据本公开的实施例的用于编码视频信号的流程图的示例。 图30的操作被描述为由编码器执行,但是根据本实施例的用于视频信号的变换方法也可以基本上相同地应用于解码器。图30的流程图可以由编码装置100或变换单元120执行。 在步骤S3010中,编码装置100通过对视频信号中包括除预测信号之外的残差信号的处理目标块的变换目标区域执行变换,生成包括变换系数的变换块。 在步骤S3020中,编码装置100对与残差信号相关的残差编译信息进行编码。在这种情况下,残差编译信息包括变换块内的根据扫描顺序的最后有效系数的位置信息。最后有效系数的位置信息包括最后有效系数的列位置的第一前缀(last_sig_coeff_x_prefix)和最后有效系数的行位置的第二前缀(last_sig_coeff_y_prefix)。 具体来说,基于变换块的有效宽度(log2ZoTbWidth)确定第一前缀(last_sig_coeff_x_prefix)的范围,以及基于变换块的有效高度(log2ZoTbHeight)确定第二前缀(last_sig_coeff_y_prefix)的范围。如果变换块的宽度(log2TbWidth)对应于第一大小(例如,5)(如果应用RMTS32),则变换块的有效宽度(log2ZoTbWidth)被确定为第二大小4。如果变换块的高度(log2TbHeight)对应于第一大小5(如果应用RMTS32),则变换块的有效高度(log2ZoTbHeight)被确定为第二大小4。在这种情况下,第二大小可以是比第一大小更小的任何值。 例如,第一前缀(last_sig_coeff_x_prefix)的范围可以被设置为从0到(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。此外,第二前缀(last_sig_coeff_y_prefix)的范围可以被设置为从0到(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。也就是说,如上所述,由于当MTS应用于宽度(log2TbWidth)为32的亮度块时,对一些缩小区域应用了变换,因此有效宽度(log2ZoTbWidth)被确定为16(4)。同样地,由于当MTS应用于高度(log2TbHeight)为32的亮度块时,变换应用于一些缩小的区域,因此有效宽度(log2ZoTbHeight)被确定为16(4)。 在实施例中,如果变换块的宽度(log2TbWidth)不同于第一大小5,则变换块的有效宽度(log2ZoTbWidth)可以被确定为变换块的宽度(log2TbWidth)和第一大小5之间的较小值(log2ZoTbWidth=Min(log2TbWidth,5))。如果变换块的高度(log2TbHeight)与第一大小5不同,则变换块的有效高度(log2ZoTbHeight)可以被确定为变换块的高度(log2TbHeight)和第一大小5中的较小值(log2ZoTbHeight=Min(log2TbHeight,5))。 在实施例中,第一大小可以被设置为32,并且第二大小可以被设置为16。如表30中,如果使用已对其应用log的变量(log2ZoTbWidth,log2TbHeight),则可以设置第一大小为5,并且将第二大小设置为4。 在实施例中,可以基于变换块的宽度(log2TbWidth)确定对第一前缀(last_sig_coeff_x_prefix)进行二值化的输入参数(cMax),以及可以基于变换块的高度(log2TbWidth),确定对第二前缀(last_sig_coeff_y_prefix)进行二值化的输入参数。如表29所示,可以将用于二值化第一前缀(last_sig_coeff_x_prefix)和第二前缀(last_sig_coeff_y_prefix)的输入参数设置为cMax=(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5)<<1)–1,cMax=(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5)<<1)–1。 在实施例中,基于第一前缀(last_sig_coeff_x_prefix)和第一后缀(last_sig_coeff_x_suffix)确定最后有效系数的列位置。基于第二前缀(last_sig_coeff_y_prefix)和第二后缀(last_sig_coeff_y_suffix)确定最后有效系数的行位置。在这种情况下,当第一前缀(last_sig_coeff_x_prefix)大于参考值3时,可以将第一后缀(last_sig_coeff_x_suffix)包括在残差编译信息中并进行编译。当第二前缀(last_sig_coeff_y_prefix)大于参考值3时,可以将第二后缀(last_sig_coeff_y_suffix)包括在残差编译信息中并进行编译。 在实施例中,当处理目标块的宽度或高度对应于第一大小时,编码装置100可以将变换目标区域的宽度或高度设置为第二大小,并且可以将处理目标块内除变换目标区域之外的部分视为0。 图31图示根据本公开的实施例的用于解码视频信号的流程图的示例。 图30的操作被描述为由解码器执行,但本公开不限于此。根据本实施例的视频信号的变换方法可以基本相同地应用于编码器。图31的流程图可以由解码装置200或逆变换单元230执行。 在步骤S3110中,解码装置200获得变换块内的根据扫描顺序的最后有效系数的位置信息。 在这种情况下,最后有效系数的位置信息包括最后有效系数的列位置的第一前缀(last_sig_coeff_x_prefix)和最后有效系数的行位置的第二前缀(last_sig_coeff_y_prefix)。 具体来说,基于变换块的有效宽度(log2ZoTbWidth)确定第一前缀(last_sig_coeff_x_prefix)的范围,以及基于变换块的有效高度(log2ZoTbHeight)确定第二前缀(last_sig_coeff_y_prefix)的范围。如果应用RMTS32并且变换块的宽度(log2TbWidth)对应于第一大小(例如,5),则变换块的有效宽度(log2ZoTbWidth)被确定为第二大小4。如果应用RMTS32并且变换块的高度(log2TbHeight)对应于第一大小(例如5),则变换块的有效高度(log2ZoTbWidth)被确定为第二大小(例如4)。在这种情况下,第二大小可以是小于第一大小的任何值。 例如,第一前缀(last_sig_coeff_x_prefix)的范围可以设置为从0到(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。此外,第二前缀(last_sig_coeff_y_prefix)的范围可以设置为从0到(Min(log2TbWidth,(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5))<<1)–1。 在实施例中,如果变换块的宽度(log2TbWidth)不同于第一大小5,则变换块的有效宽度(log2ZoTbWidth)可以被确定为变换块的宽度(log2TbWidth)和第一大小5中的较小值(log2ZoTbWidth=Min(log2TbWidth,5))。如果变换块的高度(log2TbHeight)与第一大小5不同,则变换块的有效高度(log2ZoTbHeight)可以确定为变换块的高度(log2TbHeight)和第一大小5中的较小值(log2ZoTbHeight=Min(log2TbHeight,5))。 在实施例中,如在表30中,如果使用已经对其应用log的变量(log2ZoTbWidth,log2TbHeight),则第一大小可以被设置为5,并且第二大小可以被设置为4。如果未应用log,则第一大小可以被设置为32,第二大小可以被设置为16。 在实施例中,可以基于变换块的宽度(log2TbWidth)来确定用于二值化第一前缀(last_sig_coeff_x_prefix)的输入参数(cMax)。可以基于变换块的高度(log2TbWidth)来确定用于二值化第二前缀(last_sig_coeff_y_prefix)的输入参数。如在表29中,用于二值化第一前缀(last_sig_coeff_x_prefix)和第二前缀(last_sig_coeff_y_prefix)的输入参数可以被设置为cMax=(Min(log2TbWidth,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5)<<1)–1,cMax=(Min(log2TbHeight,(tu_mts_flag[x0][y0]==1&&cIdx==0)?4:5)<<1)–1。 在实施例中,基于第一前缀(last_sig_coeff_x_prefix)和第一后缀(last_sig_coeff_x_suffix)确定最后有效系数的列位置。基于第二前缀(last_sig_coeff_y_prefix)和第二后缀(last_sig_coeff_y_suffix)确定最后有效系数的行位置。在这种情况下,当第一前缀(last_sig_coeff_x_prefix)大于参考值3时,可以获得第一后缀(last_sig_coeff_x_suffix)。当第二前缀(last_sig_coeff_y_prefix)大于参考值3时,可以获得第二后缀(last_sig_coeff_y_suffix). 在实施例中,当变换块的宽度或高度对应于第一大小时,解码装置200可以将变换目标区域的宽度或高度设置为第二大小,并且可以将变换块内除变换目标区域之外的部分视为0。 在步骤S3120中,解码装置200基于最后有效系数的位置信息执行残差编译。 图32是应用本公开的实施例并且图示了用于处理视频信号的装置的框图的示例。图32的用于处理视频信号的装置可以对应于图1的编码装置100或图2的解码装置200。 用于处理图像信号的图像处理装置3200包括用于存储图像信号的存储器3220和耦合到存储器、用于处理图像信号的处理器3210。 根据本公开的实施例的处理器3210可以包括用于处理图像信号的至少一个处理电路,以及可以通过执行对图像信号进行编码或解码的指令来处理图像信号。也就是说,处理器3210可以通过执行上述编码或解码方法来对原始图像数据进行编码或对编码后的图像信号进行解码。 此外,可以以由计算机执行并存储在计算机可读记录介质中的程序的形式来制造应用本公开的处理方法。具有根据本公开的数据结构的多媒体数据也可以被存储在计算机可读记录介质中。计算机可读记录介质包括所有类型的存储设备和存储计算机可读的数据的分布式存储设备。计算机可读记录介质可以包括例如蓝光光盘(BD)、通用串行总线(USB)、ROM、PROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储设备。此外,计算机可读记录介质包括以载波形式实现的介质(例如,通过互联网传输)。此外,由编码方法生成的比特流可以被存储在计算机可读记录介质中或者可以通过有线/无线通信网络传输。 此外,本公开的实施例可以根据程序代码被实现为计算机程序产品,以及根据本公开的实施例,程序代码可以在计算机中执行。程序代码可以被存储在计算机可读载体上。 如上所述,本公开的实施例可以在处理器、微处理器、控制器或芯片上实现和执行。例如,各图中所示的功能单元可以在计算机、处理器、微处理器、控制器或芯片上实现和执行。 此外,应用本发明的解码器和编码器可以被包括在多媒体广播发送/接收设备、移动通信终端、家庭影院视频系统、数字影院视频系统、监控摄像机、视频通话设备、诸如视频通信的实时通信装置、移动流传输设备、存储介质、摄像机、视频点播(VoD)服务提供装置、过顶(over the top,OTT)视频系统、互联网流传输服务提供装置、3D视频系统、视频电话视频系统、医疗视频系统等,并且可以被用来处理视频信号或数据信号。例如,OTT视频系统可以包括游戏机、蓝光播放器、互联网接入电视、家庭影院系统、智能电话、平板计算机、数字视频录像机(DVR)等。 此外,可以以由计算机执行并存储在计算机可读记录介质中的程序的形式来制造应用本公开的处理方法。具有根据本公开的数据结构的多媒体数据也可以被存储在计算机可读记录介质中。计算机可读记录介质包括所有类型的存储设备和存储计算机可读的数据的分布式存储设备。计算机可读记录介质可以包括例如蓝光光盘(BD)、通用串行总线(USB)、ROM、PROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储设备。此外,计算机可读记录介质包括以载波形式实现的介质(例如,通过互联网传输)。此外,由编码方法生成的比特流可以被存储在计算机可读记录介质中或者可以通过有线/无线通信网络发送。 此外,本公开的实施例可以根据程序代码被实现为计算机程序产品,以及根据本公开的实施例,程序代码可以在计算机中执行。程序代码可以被存储在计算机可读载体上。 上述实施例是本公开的元素和特征的组合。除非另有说明,元素或特征可被认为是选择性的。可以在不与其他元素或特征组合的情况下实施每个元素或特征。此外,可以通过组合元素和/或特征的部分来构造本公开的实施例。本公开的实施例中描述的操作顺序可以重新排列。任何一个实施例的一些构造可以被包括在另一实施例中并且可以被另一实施例的对应构造替换。对本领域技术人员来说显而易见的是,在所附权利要求中没有相互明确引用的权利要求可以作为示例性实施例组合呈现,或者在提交申请后通过后续修改作为新的权利要求被包括在内。 本公开的实施方式可以通过各种方式来实现,例如硬件、固件、软件或者它们的组合。在硬件配置中,根据本公开的实施方式的方法可以通过一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等来实现。 在固件或软件配置中,本公开的实施方式可以以模块、过程、函数等的形式来实现。软件代码可以被存储在存储器中并由处理器执行。存储器可以位于处理器的内部或外部,并且可以经由各种已知方式,向处理器发送数据和从处理器接收数据。 本领域技术人员将理解,在不脱离本公开的精神和基本特征的情况下,可以以不同于本文中阐述的方式的其他具体方式来实现本公开。因此,上述实施例在所有方面均应被解释为说明性而非限制性的。本公开的范围应由所附权利要求及其法律等效物确定,而不是由以上描述确定,落在所附权利要求书的含义和等效范围内的所有改变旨在包含在其中, 工业适用性 尽管出于说明的目的描述了本公开的示例性方面,但是本领域技术人员将理解到,在不脱离本公开的基本特征的情况下,各种修改、添加和替换是可能的。
- 视频信号处理设备和视频信号处理方法、视频信号编码设备和视频信号编码方法、及程序
- 视频信号处理设备和视频信号处理方法、视频信号编码设备和视频信号编码方法、及程序