用于处理图像信号的方法及设备

文档序号:1048037 发布日期:2020-10-09 浏览:34次 >En<

阅读说明:本技术 用于处理图像信号的方法及设备 (Method and apparatus for processing image signal ) 是由 具文模 M·萨勒海法尔 金昇焕 林宰显 于 2019-09-02 设计创作,主要内容包括:本发明的实施方式提供了用于处理视频信号的方法及设备。根本发明实施方式的图像信号解码方法包括以下步骤:基于当前块的高度和宽度,确定非分离变换的输入长度和输出长度;确定与非分离变换的输入长度和输出长度相对应的非分离变换矩阵;以及向当前块应用非分离变换矩阵,其中,在当前块的高度和宽度中的每一个为4时,非分离变换的输入长度和输出长度分别被确定为8和16。(The embodiment of the invention provides a method and equipment for processing a video signal. The image signal decoding method according to an embodiment of the present invention includes the steps of: determining an input length and an output length of a non-split transform based on a height and a width of a current block; determining a non-split transform matrix corresponding to an input length and an output length of the non-split transform; and applying a non-split transform matrix to the current block, wherein when each of a height and a width of the current block is 4, an input length and an output length of the non-split transform are determined to be 8 and 16, respectively.)

用于处理图像信号的方法及设备

技术领域

本发明涉及一种用于处理图像信号的方法及设备,尤其涉及一种通过执行变换对图像信号进行编码或解码的方法及设备。

背景技术

压缩编码是指用于通过通信线路发送数字化信息或将数字化信息以适当形式存储在存储介质中的信号处理技术。诸如视频、图像和音频之类的媒体可以是压缩编码的对象,并且特别地,对图像执行压缩编码的技术被称为视频图像压缩。

下一代视频内容将具有场景表示的高维度、高空间分辨率和高帧速率的特征。为了处理这样的内容,存储器存储、存储器访问速率和处理能力将显著增加。

因此,需要设计一种更有效地处理下一代视频内容的编码工具。尤其是,在高效视频编码(HEVC)标准之后的视频编解码器标准需要用于将空间域视频信号变换为频域信号的高效变换技术以及具有更高准确性的预测技术。

发明内容

技术问题

本公开的实施方式提供了一种采用高编码效率和低复杂度变换的图像信号处理方法及装置。

通过本公开解决的技术问题不限于以上技术问题,并且从以下描述,本文中未描述的其它技术问题对于本领域技术人员将变得显而易见。

技术方案

根据本公开的实施方式,一种用于对图像信号进行解码的方法包括:基于当前块的高度和宽度,确定非分离变换的输入长度和输出长度;确定与非分离变换的输入长度和输出长度相对应的非分离变换矩阵;以及将所述非分离变换矩阵应用于依据所述当前块中所述输入长度的数量的系数,其中,如果当前块的高度和宽度中的每一个等于4,则非分离变换的输入长度确定为8,并且非分离变换的输出长度确定为16。

此外,如果当前块的高度和宽度中的每一个不等于8,则将非分离变换的输入长度和输出长度确定为16。

此外,应用非分离变换矩阵包括:如果当前块的高度和宽度中的每一个不等于4并且宽度和高度的乘积小于阈值,则将非分离变换矩阵应用于当前块的左上侧的4×4区域。

此外,应用非分离变换矩阵包括:如果当前块的高度和宽度的每一个不等于4并且宽度大于或等于高度,则将非分离变换矩阵应用于当前块的左上侧的4×4区域和位于左上侧的4×4区域的右侧的4×4区域。

此外,应用非分离变换矩阵包括:如果当前块的高度和宽度的每一个不等于4、宽度与高度的乘积大于或等于阈值,并且宽度小于高度,则将非分离变换矩阵应用于当前块的左上侧的4×4区域和位于左上侧的4×4区域的底侧的4×4区域。

此外,确定非分离变换矩阵包括:基于当前块的帧内预测模式确定非分离变换集合索引;确定与非分离变换集合索引中所包括的非分离变换集合中的非分离变换索引相对应的非分离变换内核;以及基于输入长度和输出长度,从非分离变换确定非分离变换矩阵。

根据本公开的另一实施方式,一种用于对图像信号进行解码的设备包括:被配置为存储图像信号的存储器以及联接至存储器的处理器,其中,处理器被配置为基于当前块的高度和宽度,确定非分离变换的输入长度和输出长度;确定与非分离变换的输入长度和输出长度相对应的非分离变换矩阵;以及将所述非分离变换矩阵应用于依据所述当前块中所述输入长度的数量的系数,其中,如果当前块的高度和宽度中的每一个等于4,则将非分离变换的输入长度确定为8,并且非分离变换的输出长度确定为16。

技术效果

根据本公开的实施方式,可以通过基于当前块的尺寸应用变换来提供具有高编码效率和低复杂度的视频编码方法及装置。

本公开的效果不限于上述效果,并且从以下描述,本文中未描述的其它效果对于本领域技术人员将变得显而易见。

附图说明

本公开的更完整理解及其许多伴随方面在结合附图考虑时,通过参照以下详细描述,将变得更容易获得,同样更好理解,在附图中:

图1是示意性地例示了根据本公开实施方式的用于对视频/图像信号进行编码的编码装置的框图。

图2是示意性地例示了根据本公开实施方式的对图像信号进行解码的解码装置的框图。

图3是可以应用本发明的实施方式,图3a、图3b、图3c和图3d是例示了根据本公开实施方式的分别通过四叉树(QT)、二叉树(BT)、三叉树(TT)和非对称树(AT)的块分割结构的图。

图4是示意性地例示了根据本公开实施方式的包括变换和量化单元的图1的编码装置的框图,并且图5是示意性例示了根据本公开实施方式的包括逆量化和逆变换单元的解码装置的框图。

图6是例示了根据本公开实施方式的经由初次变换和二次变换对视频信号进行编码的示例的流程图。

图7是例示了根据本公开实施方式的经由二次逆变换和主逆变换对视频信号进行解码的示例的流程图。

图8例示了根据本公开实施方式的、应用了自适应多重变换(AMT)的示例性变换配置组。

图9是例示了根据本公开实施方式的应用了AMT的编码的流程图。

图10是例示了根据本公开实施方式的应用了AMT的解码的流程图。

图11是例示了根据本公开实施方式的对AMT标志和AMT索引进行编码的示例的流程图。

图12是例示了用于基于AMT标志和AMT索引执行变换的示例性解码的流程图。

图13是例示了根据本公开实施方式的Givens(吉文斯)旋转的图,并且图14例示了根据本公开实施方式的由置换和Givens旋转层组成的4×4NSST中的一轮的配置。

图15例示了根据本公开实施方式的每个帧内预测模式的非分离变换集合的示例性配置。

图16例示了在变换系数或变换系数块上的三个正向扫描顺序,其中(a)例示了对角线扫描,(b)例示了水平扫描,以及(c)例示了垂直扫描。

图17例示了根据本公开实施方式的在将4×4RST应用于4×8块时在施加正向对角线扫描的情况下的变换系数的位置,并且图18例示了根据本公开实施方式的将两个4×4块的有效变换系数合并为单个块的示例。

图19例示了根据本公开实施方式的配置每个帧内预测模式的混合NSST集合的示例性方法。

图20例示了根据本公开实施方式的考虑变换块的尺寸和帧内预测模式来选择NSST集合(或内核)的示例性方法。

图21a和图21b例示了根据本公开实施方式的正向和逆缩减变换。

图22是例示了根据本公开实施方式的使用缩减变换进行解码的示例的流程图。

图23是例示了根据本公开实施方式的用于应用条件缩减变换的示例的流程图。

图24是例示了根据本公开实施方式的对应用了条件缩减变换的二次逆变换进行解码的示例的流程图。

图25a、图25b、图26a和图26b例示了根据本公开的实施方式的缩减变换和缩减逆变换的示例。

图27例示了根据本公开实施方式的应用了缩减二次变换的示例性区域。

图28例示了根据本公开实施方式的每缩减因子的缩减变换。

图29是例示了根据本公开实施方式的应用了变换的解码的示例的流程图。

图30是例示了根据本公开实施方式的用于处理视频信号的装置的框图。

图31例示了根据本公开实施方式的示例性视频编码系统。

图32是例示了根据本公开实施方式的修道院流传输系统的结构的视图。

具体实施方式

参照附图详细描述本公开的一些实施方式。要与附图一起公开的详细描述旨在描述本公开的一些实施方式,并非旨在描述本公开的唯一实施方式。以下详细描述包括更多细节以提供对本公开的全面理解。然而,本领域技术人员将理解,可以在没有这种更多细节的情况下实现本公开。

在一些情况下,为了避免本公开的概念变得模糊,已知的结构和装置被省略或者基于每个结构和装置的核心功能以框图的形式示出。

尽管本公开中使用的大多数术语是从本领域中广泛使用的通用术语中选择的,但是申请人已经任意选择了一些术语,并且根据需要在以下描述中详细解释了它们的含义。因此,本公开应该以术语的期望含义而不是其简单名称或含义来理解。

已经提供了以下描述中使用的特定术语以帮助理解本公开,并且可以在不脱离本公开的技术精神的情况下以各种形式改变这些特定术语的使用。例如,可以在每个编码过程中适当地替换和解释信号、数据、样本、图片、帧、块等。

在本说明书中,“处理单元”是指其中执行诸如预测、变换和/或量化的编码/解码处理的单元。此外,处理单元可以解释为包括用于亮度分量的单元和用于色度分量的单元的含义。例如,处理单元可以对应于块、编码单元(CU)、预测单元(PU)或变换单元(TU)。

另外,处理单元可以解释为用于亮度分量的单元或用于色度分量的单元。例如,处理单元可以对应于亮度分量的编码树块(CTB)、编码块(CB)、PU或变换块(TB)。此外,处理单元可以对应于色度分量的CTB、CB、PU或TB。而且,处理单元不限于此,并且可以解释为包括用于亮度分量的单元和用于色度分量的单元的含义。

另外,处理单元不必限于正方形块,并且可以被配置为具有三个或更多个顶点的多边形形状。

如本文中所使用的,“像素”和“系数”(例如,变换系数或已经经历了第一变换的变换系数)可以被统称为样本。当使用样本时,这可以意味着例如使用像素值或系数(例如,变换系数或经历了第一变换的变换系数)。

在下文中,相对于静止图像或视频的编码/解码描述了一种考虑在最坏情况下的计算复杂性而设计和应用缩减二次变换(RST)的方法。

本公开的实施方式提供了用于压缩图像和视频的方法及装置。压缩数据具有比特流的形式,并且该比特流可以存储在各种类型的存储器中,并且可以经由网络流传输给配备有解码器的终端。如果终端具有显示装置,则终端可以在显示装置上显示解码图像,或者可以简单地存储比特流数据。根据本公开的实施方式提出的方法和装置适用于编码器和解码器二者,或者适用于比特流生成器和比特流接收器两者,而与终端是否通过显示装置进行输出无关。

图像压缩装置主要包括预测单元、变换和量化单元以及熵编码单元。图1和图2是分别示意性例示了编码装置和解码装置的框图。在这些组件中,变换和量化单元经由例如离散余弦变换(DCT)-2,将从原始信号中减去预测信号所得的残差信号变换为频域信号,并向频域信号应用量化,从而实现图像压缩,同时非零信号的数量显著减少。

图1是示意性地例示了根据本公开实施方式的用于对视频/图像信号进行编码的编码装置的框图。

图像分割器110可以将输入到编码装置100的图像(或图片或帧)分割为一个或更多个处理单元。作为示例,处理单元可以称为编码单元(CU)。在这种情况下,编码单元可以是根据四叉树二叉树(QTBT)结构从编码树单元(CTU)或最大编码单元(LCU)递归地分割地。例如,基于四叉树结构和/或二叉树结构,一个编码单元可以分割为深度更深的多个编码单元。在这种情况下,例如,可以首先应用四叉树结构,然后可以应用二叉树结构。或者,可以首先应用二叉树结构。可以基于不再被分割的最终编码单元来执行根据本公开实施方式的编码过程。在这种情况下,基于例如每个图像属性的编码效率,最大编码单元可以立即用作最终编码单元,或者根据需要,编码单元可以递归地分割为深度更低的编码单元,并且最佳尺寸的编码单元可以用作最终编码单元。编码过程可以包括例如以下描述的预测、变换或重构。作为示例,进行单元可以进一步包括预测单元PU或变换单元TU。在这种情况下,预测单元和变换单元各可以分割为上述最终编码单元或从上述最终编码单元分区。预测单元可以是样本预测的单元,并且变换单元可以是用于推导变换系数的单元和/或用于从变换系数推导残差信号的单元。

在一些情况下,术语“单元”可以与“块”或“区域”互换使用。通常,M×N块可以表示由M列和N行组成的样本或变换系数的集合。通常,样本可以表示像素或像素值,或者可以表示仅亮度分量的像素/像素值,或者仅色度分量的像素/像素值。样本可以用作与一个图片(或图像)的像素或画素相对应的术语。

编码装置100可以通过从输入图像信号(原始块或原始样本阵列)减去从帧间预测器180或帧内预测器185输出的预测信号(预测块或预测样本阵列),来生成残差信号(残差块或残差样本阵列),并且所产生的残差信号传送给变换器120。在这种情况下,如图所示,在编码器100中用于从输入图像信号(原始块或原始样本阵列)中减去预测信号(预测块或预测样本阵列)的单元可以称为减法器115。预测器可以对用于处理的目标块(在下文中,当前块)执行预测,并生成包括当前块的预测样本的预测块。预测器可以确定在每个块或CU单元中是应用帧内预测还是帧间预测。预测器可以生成诸如预测模式信息之类的用于预测的各种信息,如以下结合各预测模式所述的,并将所生成的信息传送给熵编码器190。预测相关信息可以由熵编码器编码并以比特流的形式输出。

帧内预测器185可以通过参考当前图片中的样本来预测当前块。依据预测模式,参考样本可以与当前块相邻或位于远离当前块。在帧内预测中,预测模式可以包括多个非方向模式和多个方向模式。非方向模式可以包括例如DC模式和平面模式。依据预测方向的精细程度,方向模式可以包括例如33个方向预测模式或65个方向预测模式。然而,这仅是示例,并且可以使用更多或更少的方向预测模式。帧内预测器185可以使用应用于相邻块的预测模式来确定应用于当前块的预测模式。

帧间预测器180可以基于由参考图片上的运动向量所指定的参考块(参考样本阵列)来推导当前块的预测块。在此,为了减少在帧间预测模式下发送的运动信息的量,可以基于相邻块和当前块之间的运动信息中的相关性,每个块、每个子块或每个样本地预测运动信息。运动信息可以包括运动向量和参考图片索引。运动信息还可以包括帧间预测方向(L0预测、L1预测或Bi预测)信息。在帧间预测的情况下,相邻块可以包括存在当前图片中的空间相邻块和存在参考图片中的时间相邻块。包括参考块的参考图片可以与包括时间相邻块的参考图片相同或不同。时间相邻块可以称为例如共位参考块或共位CU(colCU),并且包括时间相邻块的参考图片可以称为共位图片(colPic)。例如,帧间预测器180可以基于相邻块来构造运动信息候选列表,并且生成指示使用哪个候选来推导当前块的运动向量和/或参考图片索引的信息。可以基于各种预测模式来执行帧间预测。例如,在跳过模式或合并模式下,帧间预测器180可以将相邻块的运动信息用作当前块的运动信息。在跳过模式下,与在合并模式下不同,不会发送任何残留信号。在运动向量预测(MVP)模式下,相邻块的运动向量可以用作运动向量预测器,并且可以用信号通知运动向量差,从而指示当前块的运动向量。

经由帧间预测器180或帧内预测器185生成的预测信号可以用于生成重构信号或残差信号。

变换器120可以将变换方案应用于残差信号,生成变换系数。例如,变换方案可以包括离散余弦变换(DCT)、离散正弦变换(DST)、Karhunen-Loeve变换(KLT)、基于图形的变换(GBT)或有条件的非线性变换(CNT)中的至少一个。GBT表示从其中表示关于像素之间关系的信息的图形获得的变换。CNT表示基于使用所有先前重构的像素生成预测信号而获得的变换。此外,变换过程可以应用于具有相同尺寸的正方形像素块,或者还可以应用于非正方形可变尺寸的块。

量化器130可以对变换系数进行量化并且将量化后的变换系数发送给熵编码器190,并且熵编码器190可以对量化后的信号(关于量化后的变换系数的信息)进行量化并且以比特流输出编码信号。针对量化后的变换系数的信息可以称为残差信息。量化器130可以基于系数扫描顺序以一维向量的形式对块状的量化后的变换系数进行重新排序,并且可以基于量化后的变换系数的一维形式来生成关于量化后的变换系数的信息。熵编码器190可以执行各种编码方法,诸如,例如指数Golomb(哥伦布)、上下文自适应可变长度编码(CAVLC)、或上下文自适应二进制算术编码(CABAC)。熵编码器190可以将重构视频/图像所需的信息的值(例如,语法元素)与量化后的变换系数一起或与量化后的变换系数分开地编码。编码信息(例如,视频/图像信息)可以以每网络抽象层(NAL)为基础以比特流的形式发送或存储。比特流可以经由网络传输或存储在数字存储介质中。网络可以包括例如广播网络和/或通信网络,并且数字存储介质可以包括例如USB、SD、CD、DVD、蓝光、HDD、SSD或其它各种存储介质。用于发送从熵编码器190输出的信号的发送器(未示出)和/或用于存储从熵编码器190输出的信号的存储单元(未示出)可以被配置为编码装置100的内部/外部元件,或者该发送器可以是熵编码器190的组件。

从量化器130输出的量化后的变换系数可以用于生成预测信号。例如,可以通过经由环路中的逆量化器140和逆变换器150对量化后的变换系数应用逆量化和逆变换来重构残差信号。加法器155可以将重构的残差信号与从帧间预测器180或帧内预测器185输出的预测信号相加,从而生成重构信号(重构图片、重构块或重构样本阵列)。如在应用跳过模式的情况下,当没有用于处理的目标块的残差时,预测块可以用作重构块。加法器155可以表示为重构器或重构块生成器。所生成的重构信号可以用于当前图片中的下一目标处理块的帧内预测,并且如下所述,所生成的重构信号可以被滤波,然后用于下一图片的帧间预测。

滤波器160可以通过将滤波应用于重构信号来增强主观/客观图像质量。例如,滤波器160可以通过将各种滤波方法应用于重构图片来生成修正的重构图片,并且将修正的重构图片发送到解码图像缓冲器170。各种滤波方法可以包括例如解块滤波、样本自适应偏移、自适应环路滤波器或双边滤波器。如以下结合各滤波方法所描述的,滤波器160可以生成用于滤波的各种信息,并且将所得信息传送给熵编码器190。滤波相关信息可以由熵编码器190编码,并且可以以比特流的形式输出。

发送给解码图片缓冲器170的修正的重构图片可以用作帧间预测器180中的参考图片。编码装置100在应用帧间预测时可以避免编码装置100与解码装置之间的预测不匹配,并提高编码效率。

解码图片缓冲器170可以存储修正的重构图片,作为帧间预测器180中的参考图片。

图2是示意性地例示了根据本公开实施方式的对图像信号进行解码的解码装置的框图。

参照图2,解码装置200可以包括熵解码器210、逆量化器220、逆变换器230、加法器235、滤波器240、解码图片缓冲器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可以基于诸如指数Golomb编码、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。各种滤波方法可以包括例如解块滤波、样本自适应偏移(SAO)、自适应环路滤波器(ALF)或双边滤波器。

帧间预测器260可以将发送给解码图片缓冲器250的修正的重构图片用作参考图片。

在本公开中,可以以与解码装置200的滤波器240、帧间预测器260和帧内预测器265相同或相对应的方式来应用以上结合编码装置100的滤波器160、帧间预测器180和帧内预测器185所描述的实施方式。

图3a、图3b、图3c和图3d是例示了根据本公开实施方式的分别按照四叉树(QT)、二叉树(BT)、三叉树(TT)和非对称树(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进一步递归地分割。

图3a示出了QT分割的示例。块A可以按照QT分割为四个子块(A0、A1、A2、A3)。子块A1可以按照QT再次分割为四个子块(B0、B1、B2、B3)。

图3b示出了BT分割的示例。按照QT不再分割的块B3可以分割为垂直BT(C0、C1)或水平BT(D0、D1)。像块C0一样,每个子块可以例如以水平BT(E0、E1)或垂直BT(F0、F1)的形式进一步递归地分割。

图3c示出了TT分割的示例。按照QT不再分割的块B3可以分割为垂直TT(C0、C1、C2)或水平TT(D0、D1、D2)。像块C1一样,每个子块可以例如以水平TT(E0、E1、E2)或垂直TT(F0、F1、F2)的形式进一步递归地分割。

图3d示出了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分割。在这种情况下,尽管应用了不同的分割次序,但分割后的最终形状可能相同。

当对块进行分割时,可以定义搜索块的各种次序。通常,从左到右或从上到下地执行搜索。搜索块可以意味着确定是否进一步分割每个分割子块的次序,或者如果不再分割该块,则意味着对每个子块进行编码的次序,或者当子块参考其它相邻块时搜索的次序。

可以每个通过如图3a至图3d所示的分割结构分割的处理单元(或变换块)地执行变换。具体地,它可以按行方向和列方向分割,并且可以应用变换矩阵。根据本公开的实施方式,可以沿着处理单元(或变换块)的行方向或列方向使用其它类型的变换。

图4和图5是应用本公开的实施方式。图4是示意性地例示了根据本公开实施方式的、包括变换和量化单元120/130的、图1的编码装置100的框图,并且图5是示意性例示了根据本公开实施方式的包括逆量化和逆变换单元220/230的解码装置200的框图。

参照图4,变换和量化单元120/130可以包括初次变换单元121、二次变换单元122和量化器130。逆量化和逆变换单元140/150可以包括逆量化器140、逆二次变换单元151和逆初次变换单元152。

参照图5,逆量化和逆变换单元220/230可以包括逆量化器220、逆二次变换单元231和逆初次变换单元232。

在本公开中,可以通过多个步骤来执行变换。例如,如图4所示,可以应用初次变换和二次变换两个步骤,或者依据算法可以应用更多变换步骤。在此,初次变换可以称为核心变换。

初次变换单元121可以对残差信号应用初次变换。在此,初次变换可以预先定义为编码器和/或解码器中的表。

二次变换单元122可以对初次变换后的信号应用二次变换。在此,二次变换可以预先定义为编码器和/或解码器中的表。

根据实施方式,非分离二次变换(NSST)可以有条件地应用为二次变换。例如,NSST可以仅应用于帧内预测块,并且可以具有适用于每个预测模式组的变换集合。

这里,可以基于预测方向的对称性来设置预测模式组。例如,由于预测模式52和预测模式16相对于预测模式34(对角线方向)对称,因此它们可以形成一个组,并且相同的变换集合可以应用于它们。一旦对预测模式52应用了变换,在对输入数据进行转置之后,该变换应用于转置的输入数据,这是因为预测模式52的变换集合与预测模式16的变换集合相同。

同时,由于平面模式和DC模式缺乏方向对称性,所以它们具有各自的变换集合,并且每个变换集合可以由两个变换组成。对于其它方向模式,每个变换集合可以由三个变换组成。

量化器130可以对二次变换后的信号执行量化。

逆量化和逆变换单元140/150可以相反地执行上述处理,并且不给出重复的描述。

图5是示意性例示了解码装置200中的逆量化和逆变换单元220/230的框图。

参照图5,逆量化和逆变换单元220/230可以包括逆量化器220、逆二次变换单元231和逆初次变换单元232。

逆量化器220使用量化步长信息从熵解码的信号获得变换系数。

逆二次变换单元231对变换系数执行逆二次变换。在此,逆二次变换表示以上结合图4所描述的二次变换的逆变换。

逆初次变换单元232对逆二次变换后的信号(或块)执行逆初次变换,并获得残差信号。这里,逆初次变换表示以上结合图4描述的初次变换的逆变换。

图6是例示了根据本公开实施方式的经由初次变换和二次变换对视频信号进行编码的示例的流程图。图6的操作可以由编码装置100的变换器120执行。

编码装置100可以基于当前块的预测模式、块形状和/或块尺寸中的至少一项来确定(或选择)正向二次变换(S610)。

编码装置100可以经由速率失真(RD)优化来确定最优的正向二次变换。最佳正向二次变换可以对应于多个变换组合之一,并且可以通过变换索引来定义多个变换组合。例如,对于RD优化,编码装置100可以比较针对各个候选执行正向二次变换、量化和残差编码的所有结果。

编码装置100可以发信号通知与最优正向二次变换相对应的第二变换索引(S620)。在此,本公开中描述的其它实施方式可以应用于二次变换索引。

同时,编码装置100可以对当前块(残差块)执行正向初次扫描(S630)。

编码装置100可以使用最优正向二次变换对当前块执行正向二次变换(S640)。同时,正向二次变换可以是下面描述的RST。RST表示输入N个残差数据(N×1残差向量)并且输出R(R<N)个变换系数数据(R×1变换系数向量)的变换。

根据实施方式,RST可以应用于当前块的特定区域。例如,在当前块是N×N时,特定区域可以表示左上侧的N/2×N/2区域。然而,本公开不限于此,并且可以依据预测模式、块形状或块尺寸中的至少一项,将特定区域设置为不同。例如,在当前块是N×N时,特定区域可以表示左上侧的M×M区域(M≤N)。

同时,编码装置100可以对当前块执行量化,从而生成变换系数块(S650)。

编码装置100可以对变换系数块执行熵编码,从而生成比特流。

图7是例示了根据本公开实施方式的经由二次逆变换和初次对视频信号进行解码的示例的流程图。图7的操作可以由解码装置200的逆变换器230执行。

解码装置200可以从比特流获得二次变换索引。

解码装置200可以归纳与二次变换索引相对应的二次变换。

然而,步骤S710和S720仅是实施方式,并且本公开不限于此。例如,解码装置200可以基于当前块的预测模式、块形状和/或块尺寸中的至少一者来归纳二次变换,而无需获得二次变换索引。

同时,解码器200可以通过对比特流进行熵解码来获得变换系数块,并且可以对变换系数块执行逆量化(S730)。

解码器200可以对逆量化的变换系数块执行逆二次变换(S740)。例如,逆二次变换可以是逆RST。逆RST是以上结合图6描述的RST的转置矩阵,并且表示输入R个变换系数数据(R×1变换系数向量)并输出N个残差数据(N×1残差向量)的变换。

根据实施方式,可以将缩减的二次变换应用于当前块的特定区域。例如,在当前块是N×N时,特定区域可以表示左上侧的N/2×N/2区域。然而,本公开不限于此,并且可以依据预测模式、块形状或块尺寸中的至少一项,将特定区域设置为不同。例如,在当前块是N×N时,特定区域可以表示左上侧的M×M区域(M≤N)或M×L(M≤N,L≤N)。

解码器200可以对逆二次变换的结果执行逆初次变换(S750)。

解码器200经由步骤S750生成残差块,并且通过将残差块和预测块相加来生成重构块。

图8例示了根据本公开实施方式的应用自适应多重变换(AMT)的示例性变换配置组。

参照图8,可以基于预测模式来确定变换配置组,并且可以存在总共六个(G0至G5)组。G0至G4对应于应用帧内预测的情况,并且G5表示应用于通过帧间预测生成的残留块的变换组合(或变换集合或变换组合集合)。

一个变换组合可以由应用于二维块的行的水平变换(或行变换)和应用于二维块的列的垂直变换(或列变换)组成。

在此,每个变换配置组可以包括四个变换组合候选。可以经由0到3的变换组合索引来选择或确定四个变换组合候选,并且可以经由编码过程从编码装置100向解码装置200发送变换组合索引。

根据实施方式,经由帧内预测获得的残差数据(或残差信号)可以依据帧内预测模式而具有不同的统计特征。因此,如图8所示,可以按每个预测模式应用除常规余弦变换之外的变换。变换类型在本文中可以表示为DCT类型2、DCT-II或DCT-2。

图8例示了在使用35个帧内预测模式时和在使用67个帧内预测模式时的各个变换集合配置。可以按帧内预测模式列中区分开的每个变换配置组应用多个变换组合。例如,多个变换组合(沿着行方向的变换、沿着列方向的变换)可以由四个组合组成。更具体地,由于在组0中DST-7和DCT-5可以应用于行(水平)方向和列(垂直)方向,所以可以有四个组合。

由于总共四个变换内核组合可以应用于每个帧内预测模式,因此可以按变换单元发送用于选择它们中之一的变换组合索引。在本公开中,变换组合索引可以指示为AMT索引并且可以表示为amt_idx。

在除图8中提出的内核之外的内核中,存在DCT-2由于残留信号的性质而在行方向和列方向二者上最佳的情况。因此,可以通过每个编码单元地定义AMT标志来自适应地执行变换。在此,如果AMT标志为0,则DCT-2可以应用于行方向和列方向二者,并且如果AMT标志为1,则可以经由AMT索引来选择或确定四个组合之一。

根据实施方式,在AMT标志为0的情况下,如果对于一个变换单元,变换系数的数量为3或更小,则不应用图8的变换内核,并且DST-7可以应用于行方向和列方向二者。

根据实施方式,首先解析变换系数值,并且如果变换系数的数量为3或更小,则不解析AMT索引,并且可以应用DST-7,从而减少附加信息的传输。

根据实施方式,仅当变换单元的宽度和高度两者均为32或更小时,才可以应用AMT。

根据实施方式,可以通过离线训练预先设置图8。

根据实施方式,可以用可以同时指示水平变换和垂直变换的组合的一个索引来定义AMT索引。或者,可以用水平变换索引和垂直变换索引分别定义AMT索引。

像上述AMT一样,应用从多个内核(例如,DCT-2、DST-7和DCT-8)当中选择的变换的方案可以表示为多重变换选择(MTS)或增强多重变换(EMT),并且AMT索引可以表示为MTS索引。

图9是例示了根据本公开实施方式的应用了AMT的编码的流程图。图9的操作可以由编码装置100的变换器120执行。

尽管本公开基本上描述了针对水平方向和垂直方向分别应用变换,但是变换组合可以由非分离变换组成。

或者,可分的变换和非分离变换可以混合。在这种情况下,如果使用非分离变换,则不需要按行/列方向进行变换选择或按水平/垂直方向进行选择,并且仅当选择了可分的变换时,图8的变换组合才可以投入使用。

此外,可以应用本公开中提出的方案,而不管它是初次变换还是二次变换。换句话说,没有限制应该应用于任何一方,而是可以应用于双方。在此,初次变换可以意味着用于首先对残差块进行变换的变换,并且二次变换可以意味着应用于从初次变换得到的块的变换。

首先,编码装置100可以确定与当前块相对应的变换配置组(S910)。这里,变换配置组可以由如图8所示的组合组成。

编码装置100可以对变换配置组中可用的候选变换组合执行变换(S920)。

作为执行变换的结果,编码装置100可以确定或选择具有最小速率失真(RD)成本的变换组合(S930)。

编码装置100可以对与所选择的变换组合相对应的变换组合索引进行编码(S940)。

图10是例示了根据本公开实施方式的应用了AMT的解码的流程图。图10的操作可以由解码装置200的逆变换器230执行。

首先,解码装置200可以确定用于当前块的变换配置组(S1010)。解码装置200可以从视频信号解析(或获得)变换组合索引,其中变换组合索引可以对应于变换配置组中的多个变换组合中的任何一个(S1020)。例如,变换配置组可以包括DCT-2、DST-7或DCT-8。

解码装置200可以归纳与变换组合索引相对应的变换组合(S1030)。在此,变换组合可以由水平变换和垂直变换组成,并且可以包括DCT-2、DST-7或DCT-8中的至少之一。此外,作为变换组合,可以使用以上结合图8描述的变换组合。

解码装置200可以基于所归纳的变换组合对当前块执行逆变换(S1040)。在变换组合由行(水平)变换和列(垂直)变换组成的情况下,可以先应用行(水平)变换,然后再应用列(垂直)变换。然而,本公开不限于此,并且可以应用其相反的方式,或者,如果仅由非分离变换组成,则可以立即应用非分离变换。

根据实施方式,如果垂直变换或水平变换是DST-7或DCT-8,则可以按每列然后按每行应用DST-7的逆变换或DCT-8的逆变换。此外,在垂直变换或水平变换中,可以按每行和/或按每列应用不同的变换。

根据实施方式,可以基于指示是否执行AMT的AMT标志来获得变换组合索引。换句话说,仅当根据AMT标志执行AMT时,才可以获得变换组合索引。此外,解码装置200可以识别非零变换系数的数量是否大于阈值。此时,仅当非零变换系数的数量大于阈值时,才可以解析变换组合索引。

根据实施方式,可以在序列、图片、切片、块、编码单元、变换单元或预测单元中的至少一个的级别来定义AMT标志或AMT索引。

同时,根据另一实施方式,可以同时执行确定变换配置组的过程和解析变换组合索引的步骤。或者,可以在编码装置100和/或解码装置200中预设步骤S1010并且省略步骤S1010。

图11是例示了根据本公开实施方式的对AMT标志和AMT索引进行编码的示例的流程图。图11的操作可以由编码装置100的变换器120执行。

编码装置100可以确定AMT是否应用于当前块(S1110)。

如果应用了AMT,则编码装置100可以在AMT标志=1的情况下执行编码(S1120)。

编码装置100可以基于当前块的预测模式、水平变换或垂直变换中的至少一项来确定AMT索引(S1130)。在此,AMT索引表示指示用于每个帧内预测模式的多个变换组合中的任何一个的索引,并且可以按每个变换单元来发送AMT索引。

当确定了AMT索引时,编码装置100可以对AMT索引进行编码(S1140)。

另一方面,除非应用了AMT,否则编码装置100可以在AMT标志=0的情况下执行编码(S1150)。

图12是例示了用于基于AMT标志和AMT索引执行变换的解码的流程图。

解码装置200可以从比特流解析AMT标志(S1210)。在此,AMT标志可以指示是否向当前块应用了AMT。

解码装置200可以基于AMT标志来识别是否向当前块应用了AMT(S1220)。例如,解码装置200可以识别AMT标志是否为1。

如果AMT标志为1,则解码装置200可以解析AMT索引(S1230)。在此,AMT索引表示指示用于每个帧内预测模式的多个变换组合中的任何一个的索引,并且可以按每个变换单元来发送AMT索引。或者,AMT索引可以意味着指示在预设的变换组合表中定义的任何一个变换组合的索引。预设的变换组合表可以意味着图8,但是本公开不限于此。

解码装置200可以基于AMT索引或预测模式中的至少一项来归纳或确定水平变换和垂直变换(S1240)。

或者,解码装置200可以归纳与AMT索引相对应的变换组合。例如,解码装置200可以归纳或确定与AMT索引相对应的水平变换和垂直变换。

同时,如果AMT标志为0,则解码装置200可以按每列应用预设的垂直逆变换(S1250)。例如,垂直逆变换可以是DCT-2的逆变换。

解码装置200可以按每行应用预设的水平逆变换(S1260)。例如,水平逆变换可以是DCT-2的逆变换。也就是说,当AMT标志为0时,可以在编码装置100或解码装置200中使用预设的变换内核。例如,不是在如图8所示的变换组合表中定义的一个变换内核,而是可以使用广泛使用的变换内核。

NSST(非分离二次变换)

二次变换表示使用初次变换的应用结果作为输入,再次应用变换内核。初次变换可以包括HEVC中的DCT-2或DST-7或上述AMT。非分离变换表示将N×N二维残差块视为N2×1向量后,仅向N2×1向量应用N2×N2变换核一次,而不是依次向行方向和列方向应用N×N变换核。

也就是说,NSST可以表示应用于由变换块的系数组成的向量的非分离方阵。此外,尽管本公开实施方式的描述集中于NSST作为应用于根据块尺寸确定的左上侧区域(低频区域)的非分离变换的示例,但是本公开的实施方式不限于术语“NSST”,而是任何类型的非分离变换都可以应用于本公开的实施方式。例如,应用于根据块尺寸确定的左上侧区域(低频区域)的非分离变换可以表示为低频非分离变换(LFNST)。在本公开中,M×N变换(或变换矩阵)意味着由M行和N列组成的矩阵。

在NSST中,将通过应用初次变换获得的二维块数据分割为M×M个块,然后,将M2×M2非分离变换应用于每个M×M块。M可以是例如4或8。不是将NSST应用于通过初次变换而获得的二维块中的所有区域,而是可以将NSST仅应用于一些区域。例如,NSST可以仅应用于左上侧的8×8块。此外,仅当通过初次变换获得的二维块的宽度和高度二者均为8或更大时,才可以将64×64非分离变换应用于左上侧的8×8区域,其余的可以分割为4×块,并且可以将16×16非分离变换应用于每个4×4块。

M2×M2非分离变换可以矩阵乘积的形式应用,但是,为了减少计算载荷和内存需求,可以近似为Givens旋转层和置换层的组合。图13例示了一个Givens旋转。如图13所示,可以用一个Givens旋转的一个角度来描述。

图13是例示了根据本公开实施方式的Givens旋转的图,并且图14例示了根据本公开实施方式的由置换和Givens旋转层组成的4×4NSST中的一轮的配置。

8×8NSST和4×4NSST二者均可以由Givens旋转的层级结构组合来配置。对应于一个Givens旋转的矩阵如式1所示,并且矩阵乘积可以表示成图表,如图13所示。

[式1]

Figure BDA0002644966030000201

[式2]

tm=xmcosθ-xnsinθ

tn=xmsinθ+xncosθ

由于如图13所示,一次Givens旋转旋转了两个数据,因此分别需要32或8个Givens旋转来处理64条数据(在8×8NSST的情况下)或16条数据(在4×4NSST的情况下)。因此,一束32或8个Givens旋转可以形成一个Givens旋转层。如图14所示,一个Givens旋转层的输出数据通过置换(或混洗)作为下一Givens旋转层的输入数据进行传输。在图14中,规则地定义了置换模式,并且在4×4NSST的情况下,四个Givens旋转层及其相应的置换形成了一轮。4×4NSST执行两轮,而8×8NSST执行四轮。尽管不同轮次使用相同的置换模式,但应用了不同的Givens旋转角度。因此,需要存储组成每个变换的所有Givens旋转的角度数据。

在最后一步中,对经过Givens旋转层输出的数据执行最后一次多置换,并且按每个变换分别存储置换信息。在正向NSST的结束执行置换,并且逆置换首先应用于逆NSST。

逆NSST以相反的次序执行应用于正向NSST的Givens旋转层和置换,并对每个Givens旋转的角度取负(-)值进行旋转。

图15例示了根据本公开实施方式的每个帧内预测模式的非分离变换集合的示例性配置。

应用相同NSST或NSST集合的帧内预测模式可以形成一个组。在图15中,67个帧内预测模式分为35个组。例如,编号20的模式和编号48的模式二者属于编号20的组(在下文中,模式组)。

针对每个模式组,在集合中可以配置多个NSST而不是一个NSST。每个集合可以包括不应用NSST的情况。例如,在三个不同的NSST可以应用于一个模式组的情况下,可以选择包括不应用NSST的情况在内的四种情况之一。此时,可以在每个TU中发送用于区分四种情况中的一种的索引。NSST的数量可以配置为每个模式组不同。例如,可以分别发信号通知编号0的模式组和编号1的模式组,以选择包括不应用NSST的情况在内的三种情况中的一种。

实施方式1:适用于4×4块的RST

适用于一个4×4块的非分离变换是16×16变换。也就是说,如果组成4×4块的数据元素以行优先或列优先顺序排在一行中,则它变成16×1向量,并且非分离变换可以应用于16×1向量。正向16×16变换由16个行方向变换基本向量组成,并且16×1向量和每个变换基本向量的内积得到变换基本向量的变换系数。获得所有16个变换基本向量的变换系数的过程是将16×16非分离变换矩阵乘以输入的16×1向量。通过矩阵乘积获得的变换系数具有16×1向量的形式,并且每个变换系数的统计特性可以有所不同。例如,如果16×1变换系数向量由第0个元素到第15个元素组成,则第0个元素的方差可能大于第15个元素的方差。也就是说,元件位于越靠前的位置,该元件具有越大的方差,因此具有越大的能量值。

如果从16×1变换系数向量应用了逆16×16非分离变换(当忽略量化或整数化的效果时),则可以重构原始4×4块信号。如果正向16×16非分离变换是正交变换,则可以通过对用于正向16×16变换的矩阵进行转置来获得逆16×16变换。简而言之,可以通过将逆16×16非分离变换矩阵乘以16×1变换系数向量来获得16×1向量形式的数据,并且如果首先应用的按行优先或列优先次序进行排序,则可以重构4×4块信号。

如上所述,16×1变换系数向量的元素每个可以具有不同的统计特性。如在上述示例中,如果位于前面(靠近第零元素)的变换系数具有更大的能量,则可以通过对首先出现的一些变换系数应用逆变换来重构显著接近原始信号的信号,甚至无需使用全部变换系数。例如,当逆16×16非分离变换由16个列基本向量组成时,仅保留L个列基本向量以配置16×L矩阵,并且在变换系数当中,仅保留更重要的L个变换系数(L×1向量,在上述示例中这可以首先出现的),然后将16×L矩阵与L×1向量相乘,从而能够重构与原始16×1向量数据相差不大的16×1向量。结果,仅L个系数涉及数据重构。因此,一旦获得变换系数,获得L×1变换系数向量足够,而不是16×1变换系数向量。也就是说,从正向16×16非分离变换矩阵中挑选出L个行方向变换向量以配置L×16变换,然后与16×1输入向量相乘,从而获得L个主变换系数。

实施方式2:配置4×4RST的应用区域和变换系数的布置

可以应用4×4RST作为二维变换,并且此时,4×4RST可以二次应用于已经应用了诸如DCT类型2之类的初次变换的块。当应用初次变换的块的尺寸为N×N时,它通常大于4×4。因此,一旦4×4RST应用于N×N块,可以考虑以下两种方法。

4×4RST可以应用于N×N区域的一些区域,而不是全部N×N区域。例如,4×4RST可以仅应用于左上侧的M×M区域(M<=N)。

要对其应用二次变换的区域可以分割为4×4块,并且4×4RST可以应用于每个块。

方法1)和2)可以混合。例如,仅左上侧的M×M区域可以分割为4×4块,然后可以应用4×4RST。

在特定实施方式中,二次变换可以仅应用于左上侧的8×8区域。如果N×N块等于或大于8×8,则可以应用8×8RS;如果N×N块小于8×8(4×4、8×4或4×8),则可以将其分割为4×4块,然后可以应用4×4RST,如以上2)。

如果在应用4×4RST之后生成了L个变换系数(1<=L<16),则关于如何布置L个变换系数出现了自由度。然而,由于在残差编码部中读取和处理变换系数时可以存在确定的次序,因此编码性能可以依据在二维块中如何布置L个变换系数而变化。在高效视频编码(HEVC)标准中,残差编码从距DC位置最远的位置开始,这是为了利用以下事实来提高编码性能:经过量化的系数值随着位于距DC位置越远而为0或接近0。因此,就编码性能而言,在编码次序中将L个变换系数当中越关键和越高能量的系数放置在后面可以是有利的。

图16例示了在HEVC标准中应用的变换系数或变换系数块上的三个正向扫描顺序,其中(a)例示了对角线扫描,(b)例示了水平扫描,并且(c)例示了垂直扫描。

图16例示了在HEVC标准中应用的变换系数或变换系数块(4×4块,系数组(CG))的三个正向扫描顺序。以与(a)、(b)或(c)的扫描顺序相反的顺序执行残差编码(也就是说,以从16到1的顺序编码)。根据帧内预测模式选择(a)、(b)和(c)中所示的三个扫描顺序。因此,同样对于L个变换系数,可以根据帧内预测模式来确定扫描顺序。

L属于1<=L<16的范围。通常,可以通过任何方法从16个变换基本向量中选择L个变换基本向量。然而,从编码和解码的观点来看,如以上提出的示例那样,选择在能量方面具有更高重要性的变换基本向量对于编码效率而言可以是有利的。

图17例示了根据本公开实施方式的当4×4RST应用于4×8块时在施加正向对角线扫描的情况下的变换系数的位置,并且图18例示了根据本公开实施方式的将两个4×4块的有效变换系数合并为单个块的示例。

如果一旦根据图18的(a)的对角线扫描顺序将左上侧的4×8块分割为4×4块并应用4×4RST,L为8(也就是说,如果在16个变换系数当中仅剩下8个变换系数),则变换系数可以如图17所示地定位,其中,每个4×4块中只有一半可以具有变换系数,并且标有X的位置可以默认用0填充。因此,根据图18的(a)中提出的扫描顺序,将L个变换系数布置在每个4×4块中,并且在假设每个4×4块的其余(16-L)个位置用0填充的情况下,可以应用残差编码(例如,HEVC中的残差编码)。

此外,在一个块可以配置如图18所示的已经布置在两个4×4块中的L个变换系数。具体地,由于当L为8时,一个4×4块被两个4×4块的变换系数完全填充,所以没有变换系数留在其它块中。因此,由于对于变换系数为空的4×4块不需要残差编码,因此在HEVC的情况下,可以用0来编码表示残差编码是否应用于该块的标志(coded_sub_block_flag)。可以有各种方案来组合两个4×4块的变换系数的位置。例如,可以根据任何顺序组合位置,并且也可以应用以下方法。

1)两个4×4块的变换系数按扫描顺序交替组合。也就是说,当上块的变换系数为并且下块的变换系数为时,它们一一交替地组合,如同 一样。而且,可以按顺序互换(也就是说,可以在先)。

2)可以首先布置第一4×4块的变换系数,然后,可以布置第二4×4块的变换系数。也就是说,它们可以如同

Figure BDA0002644966030000242

一样来连接和布置。当然,顺序可以更改,如同

Figure BDA0002644966030000243

一样。

实施方式3:用于4×4RST的NSST(非分离二次变换)索引的编码方法

如果如图17所示的那样应用4×4RST,则根据每个4×4块的变换系数扫描顺序,可以用0填充第L+1个位置至第16个位置。因此,如果在两个4×4块的任何一个中的第L+1个位置至第16个位置中存在非零值,则推断未应用4×4RST。如果4×4RST具有应用从像联合实验模型(JEM)NSST准备的变换集合中选择的变换的结构,则可以发信号通知要应用变换的索引。

在一些解码器中,可以经由比特流解析来知道NSST索引,并且可以在残差解码之后执行比特流解析。在这种情况下,如果通过残差解码使非零变换系数呈现为存在于第L+1个位置和第16个位置之间,则由于一定没有应用4×4RST,因此解码器可以避免解析NSST索引。因此,通过仅在必要时可选地解析NSST索引,可以降低信令成本。

如果在如图17所示的特定区域中,4×4RST应用于多个4×4块(此时,可以应用相同或不同的4×4RST),则可以经由一个NSST索引来指定应用于所有4×4块的(相同或不同的)4×4RST。由于通过一个NSST索引针对全部4×4块确定4×4RST以及是否应用了4×4RST,如果由于针对全部4×4块检查在第L+1个位置到第16个位置中是否存在非零变换系数,所以在残差解码的过程中,非零变换系数存在于非允许位置(从第L+1个位置到第16个位置),编码装置100可以配置为不对NSST索引进行编码。

编码装置100可以针对亮度块和色度块分别发信号通知各个NSST索引,并且可以针对Cb分量和Cr分量分别发信号通知各个分开的NSST索引,并且在色度块的情况下可以使用一个公共的NSST索引。在使用一个NSST索引的情况下,NSST索引的信令也仅执行一次。如果Cb分量和Cr分量共享一个NSST索引,则可以应用由同一NSST索引指示的4×4RST,并且在这种情况下,Cb分量和Cr分量的4×4RST可以相同,或者尽管NSST索引相同,但是可以为Cb分量和Cr分量设置各自的4×4RST。在使用为Cb分量和Cr分量共享的NSST索引的情况下,针对Cb分量和Cr的全部4×4块检查从第L+1个位置到第6个位置是否存在非零变换系数,并且如果在第L+1个位置到第16个位置发现非零变换系数,则可以跳过NSST索引的信令。

即使在如图18所示,两个4×4块的变换系数合并为一个4×4块时,编码装置100也可以检查当应用4×4RST时在非有效变换系数要存在于的位置处是否出现非零变换系数,然后可以确定是否发信号通知NSST索引。具体地,在L为8并且因此应用4×4RST的情况下,如图18所示,在一个44块中存在非有效变换系数(图18(b)中用X标记的块),可以检查关于是否对块应用残差编码的标志(coded_sub_block_flag),并且如果为1,则可以不用信号通知NSST索引。如上所述,尽管以下将NSST描述为示例性非分离变换,但是其它已知术语(例如,LFNST)可以用于非分离变换。例如,NSST集合和NSST索引可以分别与LFNS集合和LFNS索引互换使用。此外,本文描述的RST是非分离变换(例如,LFNST)的示例,其使用应用于变换块的至少一些区域(左上侧的4×4、8×8区域、或者在8×8块中除右下侧的4×4区域以外的其余区域)的正方形非分离变换中具有缩减的长度和缩减的输入长度的非正方形变换矩阵,并且可以与LFNST互换使用。

实施方式4:在残差编码之前对执行4×4索引进行编码的情况下的优化方法

在残差编码之前执行对NSST索引的编码的情况下,预先确定是否应用4×4RST。因此,可以省略在用0填充变换系数的位置上的残差编码。这里,可以经由NSST索引来确定是否应用4×4RST(例如,如果NSST索引为0,则不应用4×4RST),否则,可以经由单独的语法元素(例如,NSST标志)来用信号通知是否应用4×4RST。例如,如果单独的语法元素是NSST标志,则解码装置200首先解析NSST标志,从而确定是否应用了4×4RST。然后,如果NSST标记为1,则如上所述,可以省略在可能存在非有效变换系数的位置上的残差编码(解码)。

在HEVC的情况下,在进行残差编码时,首先在TU中的最后的非零系数位置中执行编码。如果对NSST索引的编码是在对最后的非零系数位置进行编码之后执行的,并且最后的非零系数位置是在假设应用4×4RST的前提下不存在非零系数的位置,则解码装置200可以配置为在不解码NSST索引的情况下不应用4×4RST。例如,由于在图17中用X标记的位置中当应用4×4RST(可以用0填充)时,定位有非有效变换系数,所以如果最后的非零系数位于用X标记的区域中,则解码装置200可以跳过对NSST索引的编码。如果最后的非零系数不是位于用X标记的区域中,则解码装置200可以执行对NSST索引的编码。

如果通过在非零系数位置上进行编码之后对NSST索引进行条件地编码,知道是否应用了4×4RST,则可以通过以下两种方案来处理其余残差编码:

1)在未应用4×4RST的情况下,执行常规的残差编码。也就是说,在非零变换系数可以存在于从最后的非零系数位置到DC的任何位置中的假设下执行编码。

2)在应用4×4RST的情况下,在特定位置或特定4×4块(例如,图17中的X位置)(默认用0填充)上不存在变换系数。因此,可以省略对该位置或块的残差编码。例如,一旦在根据图17的扫描顺序进行扫描的同时到达X标记的位置,可以省略对关于在HEVC标准中的位置中是否存在非零系数的标志(sig_coeff_flag)的编码。在如图18所示,两个块的变换系数合并为一个块的情况下,可以省略对指示是否在用0填充的4×4块上应用残差编码的标志(例如,HEVC标准中的coded_sub_block_flag)的编码,并且可以使该值为0,并且可以用0填充4×4块,无需单独编码。

如果在对最后的非零系数位置进行编码后对NSST索引进行编码,则如果最后的非零系数的x位置(Px)和y位置(Py)分别小于Tx和Ty,则省略对NSST索引的编码,并且可以不应用4×4RST。例如,如果Tx=1,Ty=1并且在DC位置中存在最后的非零系数,则省略NSST索引编码。通过与阈值进行比较来确定是否执行NSST索引编码的这种方案可以不同地应用于亮度分量和色度分量。例如,不同的Tx和Ty可以应用于亮度分量和色度分量中的各个,以及阈值可以应用于亮度分量,而不应用于色度分量。相反,阈值可以应用于色度分量,而不应用于亮度分量。

可以同时应用上述两种方法(如果最后的非零系数位于存在非有效变换系数的区域中,则省略NSST索引编码,并且当最后的非零系数的X和Y坐标每个小于阈值时,省略NSST索引编码)。例如,首先识别用于最后的非零系数的位置坐标的阈值比较,然后可以检查最后的非零系数是否位于不存在有效变换系数的区域中,并且两种方法可以按顺序互换。

实施方式4)中提出的方法也可以应用于8×8RST。也就是说,如果最后的非零系数位于左上侧的8×8区域中不是左上侧的4×4的区域中,则可以省略NSST索引编码,否则,可以执行NSST索引编码。此外,如果最后的非零系数的位置的X坐标和Y坐标二者均小于一定阈值,则可以省略NSST索引编码。这两种方法可以同时执行。

实施方式5:在应用RST时,将不同的NSST索引编码和残差编码应用于亮度分量和 色度分量中的每一个

以上结合实施方式3和4描述的方案可以不同地应用于亮度分量和色度分量。也就是说,不同的NSST索引编码和残差编码方案可以应用于亮度分量和色度分量。例如,以上结合实施方式4描述的方案可以应用于亮度分量,并且以上结合实施方式3描述的方案可以应用于色度分量。此外,在实施方式3或4中提出的有条件的NSST索引编码可以应用于亮度分量,以及有条件的NSST索引编码可以不应用于亮度分量,反之亦然(有条件的NSST索引编码应用于色度分量但不应用于亮度分量)。

实施方式6

根据本公开的实施方式,提供了一种用于在应用NSST的过程中应用各种NSST条件的混合NSST变换集合(MNTS)以及应用MNTS的方法。

根据JEM,4×4NSST集合仅包括4×4内核,而8×8NSST集合依据预先选择的低块的尺寸仅包括8×8内核。根据本公开的实施方式,还提出了一种如下配置混合NSST集合的方法。

-NSST集合可以包括NSST内核,NSST内核是NSST集合中可用的并且具有一个或更多个可变尺寸,但不是固定尺寸(例如,一个NSST集合中包括4×4NSST内核和8×8NSS内核)。

-NSST集合中可用的NSST内核的数量可以不是固定的而是变化的(例如,第一集合包括三个内核,而第二集合包括四个内核)。

-依据NSST集合,NSST内核的顺序可以是可变的,而不是固定的(例如,在第一集合中,NSST内核1、2和3分别映射到NSST索引1、2和3,但是,在第二组中,NSST内核3、2和1分别映射到NSST索引1、2和3)。

更具体地说,以下是配置混合NSST变换集合的示例性方法。

-可以依据NSST内核尺寸(例如,4×4NSST和8×8NSST)确定NSST变换集合中可用的NSST内核的优先级。

例如,如果块大,则8×8NSST内核可以比4×4NSST内核更重要。因此,较小值的NSST索引被指配给8×8NSST内核。

-可以依据NSST内核的顺序来确定NSST变换集合中可用的NSST内核的优先级。

例如,给定的4×4NSST第一内核可以优先于4×4NSST第二内核。

由于NSST索引被编码并发送,因此可以给越频繁的NSST内核分配越高的优先级(越小的索引),从而可以用更少的比特用信号通知NSST索引。

下表1和表2表示根据当前实施方式提出的示例性混合NSST集合。

[表1]

Figure BDA0002644966030000281

[表2]

Figure BDA0002644966030000282

实施方式7

根据本公开的实施方式,提出了一种在确定二次变换集合的过程中考虑块尺寸和帧内预测模式来确定NSST集合的方法。

在当前实施方式中提出的方法与实施方式6结合配置适合于帧内预测模式的变换集合,从而允许配置各种尺寸的内核并应用于块。

图19例示了根据本公开实施方式的按每个帧内预测模式地配置混合NSST集合的示例性方法。

图19例示了根据结合实施方式6应用实施方式2中提出的方法的示例表。换句话说,如图19所示,可以定义指示每个帧内预测模式是遵循传统NSST集合配置方法还是其它NSST集合配置方法的索引(“混合类型(Mixed Type)”)。

更具体地,在图19的索引(“Mixed Type”)定义为1的帧内预测模式的情况下,不遵循JEM的NSST集合配置方法,而是使用系统中定义的NSST集合配置方法来配置NSST集合。这里,系统中定义的NSST集合配置方法可以意味着实施方式6中提出的混合NSST集合。

作为另一实施方式,尽管结合图19的表描述了基于与帧内预测模式相关的混合类型信息(标志)的两种变换集合配置方法(基于JEM的NSST集合配置和根据本公开实施方式提出的混合类型NSST集合配置方法),但是可以有一种或更多种混合类型NSST配置方法,并且混合类型信息可以表示为N(N>2)个各种值。

在另一实施方式中,可以考虑帧内预测模式和变换块尺寸二者来确定是否以混合类型配置适合于当前块的变换集合。例如,如果与帧内预测模式相对应的模式类型为0,则遵循JEM的NSST集合配置,否则(模式类型==1),可以依据变换块尺寸确定各种混合类型的NSST集合。

图20例示了根据本公开实施方式的考虑变换块尺寸和帧内预测模式来选择NSST集合(或内核)的示例性方法。

当确定变换集合时,解码装置200可以使用NSST索引信息来确定所使用的NSST内核。

实施方式8

根据本公开的实施方式,提供了一种在应用二次变换期间考虑帧内预测模式和块尺寸来配置变换集合时,考虑在编码后发送的NSST索引的统计分布的变化来有效地编码NSST索引的方法。根据本公开的实施方式,提供了一种使用指示内核尺寸的语法来选择要应用的内核的方法。

根据本公开的实施方式,还提供了依据每个集合可用于有效二值化的最大NSST索引值的、如下表3中所示的截断的一元二值化方法,这是因为可用的NSST内核的数量按每个变换集合而不同。

[表3]

Figure BDA0002644966030000301

表3表示NSST索引的二值化。由于可用的NSST内核数量按每个变换集合而不同,因此可以根据最大NSST索引值对NSST索引进行二值化。

实施方式9:缩减变换

由于复杂性问题(例如,大块变换或非分离变换),提供了适用于内核变换(例如,DCT或DST)和二次变换(例如,NSST)的缩减变换。

缩减变换的主要思想是将N维向量映射到另一空间中的R维向量,其中,R/N(R<N>是缩减因子。缩减变换是R×M矩阵,以下式3表示。

[式3]

在式1中,变换的R行是新的N维空间中的R个基。因此,之所以这样称呼缩减变换的原因是通过变换输出的向量的元素数量小于所输入的向量的元素数量(R<N)。用于缩减变换的逆变换矩阵是正向变换的转置。下面参照图21a和图21b描述正向缩减变换和逆缩减变换。

图21a和图21b例示了根据本公开实施方式的正向缩减变换和逆缩减变换。

缩减变换中的元素数量为R×N,其是比完整矩阵的尺寸(N×N)小的R/N,这意味着所需存储器为完整矩阵的R/N。

此外,所需乘法的数量为R×N,其比原始N×N小的R/N。

如果X是N维向量,则在应用缩减变换后获得R个系数,这意味着仅传递R个值而不是原本打算的N个系数就足够了。

图22是例示了根据本公开实施方式的使用缩减变换进行解码的示例的流程图。

所提出的缩减变换(解码器中的逆变换)可以应用于系数(逆量化后的系数),如图21所示。可以需要预定的缩减因子(R或R/N)以及用于执行变换的变换内核。在此,可以基于诸如块尺寸(宽度或高度)、帧内预测模式或Cidx之类的可用信息来确定变换内核。如果当前编码块是亮度块,则Cldx为0。否则(Cb或Cr块),Cldx为非零值,例如1。

如表4和表5定义了以下在本公开中使用的运算符。

[表4]

[表5]

Figure BDA0002644966030000312

图23是例示了根据本公开实施方式的用于应用条件缩减变换的示例的流程图。图23的操作可以由解码装置200的逆量化器140和逆变换器150执行。

根据实施方式,当满足特定条件时可以使用缩减变换。例如,如下,缩减变换可以应用于大于预定尺寸的块。

-宽度>TH&&高度>HT(其中TH是预定义的值(例如,4))

或者,

-宽度*高度>K&&MIN(宽度,高度)>TH(K和TH为预定义的值)

也就是说,如上述条件,在当前块的宽度大于预定义的值(TH)并且当前块的高度大于预定义的值(TH)时,可以应用缩减变换。或者,在当前块的宽度和高度的乘积大于预先确定的值(K),并且当前块的宽度和高度中的较小者大于预先定义的值(TH)时,可以应用缩减变换。

缩减变换可以如下地应用于一组预先确定的块。

-宽度==TH&&高度==TH

或者

-宽度==高度

也就是说,如果当前块的宽度和高度各等于预先确定的值(TH),或者当前块的宽度和高度相同(在当前块为正方形块时),则可以应用缩减变换。

除非满足使用缩减变换的条件,否则可以应用常规变换。常规变换可以是在视频编码系统中预定义并且可用的变换。正则变换的示例如下。

-DCT-2、DCT-4、DCT-5、DCT-7、DCT-8

或者,

-DST-1、DST-4、DST-7

或者,

-非分离变换

或者,

-JEM-NSST(HyGT)

如图23所示,缩减变换可以依赖于指示要使用哪个变换(例如,DCT-4或DST-1)或要应用哪个内核(当多个内核可用时)的索引(Transform_idx)。具体地,Transmission_idx可以被发送两次。一个是指示水平变换的索引(Transform_idx_h),并且另一个是指示垂直变换的索引(Transform_idx_v)。

更具体地,参照图23,解码装置200对输入比特流执行逆量化(S2305)。此后,解码装置200确定是否应用了变换(S2310)。解码装置200可以经由指示是否跳过变换的标志来确定是否应用了变换。

在应用了变换的情况下,解码装置200解析指示要应用的变换的变换索引(Transform_idx)(S2315)。或者,解码装置200可以选择变换内核(S2330)。例如,解码装置200可以选择与变换索引(Transform_idx)相对应的变换内核。此外,解码装置200可以考虑块尺寸(宽度、高度)、帧内预测模式或Cldx(亮度、色度)来选择变换内核。

解码装置200确定是否满足用于应用缩减变换的条件(S2320)。用于应用缩减变换的条件可以包括上述条件。当不应用缩减变换时,解码装置200可以应用常规逆变换(S2325)。例如,在步骤S2330中,解码装置200可以从所选择的变换内核确定逆变换矩阵,并且可以将所确定的逆变换矩阵应用于包括变换系数的当前块。

当应用了缩减变换时,解码装置200可以应用缩减逆变换(S2335)。例如,在步骤S2330中,解码装置200可以考虑缩减因子从所选择的变换内核确定缩减逆变换矩阵,并且可以将缩减逆变换矩阵应用于包括变换系数的当前块。

图24是例示了根据本公开实施方式的、对应用了条件缩减变换的二次逆变换的解码的示例的流程图。图24的操作可以由解码装置200的逆变换器230执行。

根据实施方式,缩减变换可以应用于二次变换,如图24所示。如果解析了NSST索引,则可以应用缩减变换。

参照图24,解码装置200执行逆量化(S2405)。解码装置200确定是否将NSST应用于经由逆量化生成的变换系数(S2410)。也就是说,解码装置200依据是否应用NSST来确定是否需要解析NSST索引(NSST_indx)。

当应用NSST时,解码装置200解析NSST索引(S2415),并确定NSST索引是否大于0(S2420)。可以由熵解码器210经由诸如CABAC之类的方案来重构NSST索引。当NSST索引为0时,解码装置200可以省略二次逆变换并且应用核心逆变换或初次(S2445)。

此外,当应用NSST时,解码装置200选择用于二次逆变换的变换内核(S2435)。例如,解码装置200可以选择与NSST索引(NSST_idx)相对应的变换内核。此外,解码装置200可以考虑块尺寸(宽度、高度)、帧内预测模式、或Cldx(亮度、色度)来选择变换内核。

当NSST索引大于0时,解码装置200确定是否满足用于应用缩减变换的条件(S2425)。用于应用缩减变换的条件可以包括上述条件。当不应用缩减的变换时,解码装置200可以应用常规二次逆变换(S2430)。例如,在步骤S2435中,解码装置200可以从所选择的变换内核确定二次逆变换矩阵,并且可以将所确定的二次逆变换矩阵应用于包括变换系数的当前块。

当应用缩减变换时,解码装置200可以应用缩减二次逆变换(S2440)。例如,在步骤S2335中,解码装置200可以考虑缩减因子从所选择的变换内核确定缩减逆变换矩阵,并且可以将缩减逆变换矩阵应用于包括变换系数的当前块。此后,解码装置200应用核心逆变换或初次(S2445)。

实施方式10:作为具有不同块尺寸的二次变换的缩减变换

图25a、图25b、图26a和图26b例示了根据本公开实施方式的缩减变换和缩减逆变换的示例。

根据本发明的实施方式,对于诸如4×4、8×8或16×16之类的不同块尺寸,在视频编解码器中缩减变换可以用作二次变换和二次逆变换。作为8×8块尺寸和缩减因子R=16的示例,可以如图25a和图25b所示地设置二次变换和二次逆变换。

缩减变换和缩减逆变换的伪代码可以如图26所示地设置。

[表6]

Figure BDA0002644966030000341

[表7]

Figure BDA0002644966030000342

实施方式11:作为具有非矩形形状的二次变换的缩减变换

图27例示了根据本公开实施方式的、应用缩减二次变换的示例性区域。

如上所述,由于复杂性问题,二次变换可以应用于4×4和8×8的角部。缩减变换可以应用于非正方形形状。

如图27所示,RST可以仅应用于块的一些区域(阴影区域)。在图27中,每个正方形代表4×4区域,并且RST可以应用于10个4×4像素(也就是说,160个像素)。在缩减因子R=16的情况下,整个RST矩阵为16×16矩阵,并且这可以是可接受的计算量。

实施方式12:缩减因子

图28例示了根据本公开实施方式的根据缩减因子的缩减变换。

缩减因子的变化可能导致存储器和乘法复杂度的变化。如上所述,由于缩减因子的改变,存储器和乘法复杂度可以按照缩减因子R/N减小。例如,在对于8×8NSST,R=16的情况下,存储器和乘法复杂度可以降低1/4。

实施方式13:高级语法

在视频编码中以下语法元素可以用于处理RST。与缩减变换有关的语义可以存在于序列参数集合(SPS)或条带报头中。

Reduced_transform_enabled_flag为1表示可以进行缩减变换。Reduced_transform_enabled_flag为0表示不可以进行缩减的转换。当不存在Reduced_transform_enabled_flag时,推断其为0。(Reduced_transform_enabled_flag等于1指定了使能并应用缩减转换。Reduced_transform_enabled_flag等于0指定了不使能缩减转换。当Reduced_transform_enabled_flag不存在时,推断其等于0)。

Reduced_transform_factor指示缩减变换要保持的缩减后的维数。不存在Reduced_transform_factor,推断其等于R。(Reduced_transform_factor指定了缩减变换要保留的缩减后的维数。Reduced_transform_factor不存在,推断其等于R)。

min_reduced_transform_size指示应用缩减变换的最小变换尺寸。不存在min_reduced_transform_size,推断其为0。(min_reduced_transform_size指定了要应用缩减变换的最小变换尺寸。当不存在min_reduced_transform_size时,推断其等于0)。

max_reduced_transform_size指示应用缩减变换的最大变换尺寸。不存在max_reduced_transform_size,推断其为0。

reduced_transform_factor指示缩减变换要保持的缩减后的维数。不存在reduced_transform_size,推断其为0。(reduced_transform_size指定了缩减变换要保留的缩减后的维数。当不存在Reduced_transform_factor时,推断其等于0。)

[表8]

Figure BDA0002644966030000371

实施方式14:用于最坏情况处理的4×4RST的条件应用

适用于4×4块的非分离二次变换(4×4NSST)是16×16变换。4×4NSST二次应用于经历了诸如DCT-2、DST-7或DCT-8之类的初次变换的块。当应用初次变换的块的尺寸为N×M时,在将4×4NSST应用于N×M块时可以考虑以下方法。

1)以下是将4×4NSST应用于N×M区域的条件a)和b)。

a)N>=4

b)M>=4

2)4×4NSST可以应用于N×M区域的一些区域,而不是全部。例如,4×4NSST可以仅应用于左上侧的K×J区域。以下a)和b)是这种情况的条件。

a)K>=4

b)J>=4

3)要应用二次变换的区域可以分割为4×4块,并且4×4NSST可以应用于每个块。

4×4NSST的计算复杂度是编码器和解码器的非常关键的考虑因素,因此将对此进行详细分析。具体而言,基于乘法计数来分析4×4NSST的计算复杂度。在正向NSST的情况下,16×16二次变换由16个行方向变换基本向量组成,并且16×1向量与每个变换基本向量的内积得到针对变换基本向量的变换系数。获得针对16个变换基本向量的全部变换系数的过程是将16×16非分离变换矩阵乘以输入的16×1向量。因此,4×4正向NSST所需的总乘法计数为256。

当在解码器中对16×1变换系数应用逆16×16非分离变换时(当忽略诸如量化和整数化之类的影响)时,可以重构原始4×4初次变换块的系数。换句话说,可以通过将逆16×16非分离变换矩阵乘以16×1变换系数向量来获得16×1向量形式的数据,并且如果数据是如第一次应用一样按行优先或列优先的次序排序时,则可以重构4×4块信号(初次变换系数)。因此,4×4逆NSST所需的总乘法计数为256。

如上所述,当应用4×4NSST时,每个样本单元所需的乘法计数为16。这是当将总乘法计数256除以样本的总数16时获得的数字,该总乘法计数是在每个变换基本向量和16×1向量的内积的过程中获得的,这是执行4×4NSST的过程。正向4×4NSST和逆4×4NSST二者所需的乘法计数为16。

在8×8块的情况下,应用4×4NSST时所需的每个样本的乘法计数是依据已应用4×4NSST的区域而确定的。

1.在4×4NSST仅应用于左上侧的4×4区域的情况下:256(4×4NSST处理所需的乘法计数)/64(8×8块中的总样本计数)=4乘法计数/样本

2.在4×4NSST应用于左上侧的4×4区域和右上侧的4×4区域的情况下:512(两个4×4NSST所需的乘法计数)/64(8×8块中的总样本计数)=8乘法计数/样本

3.在4×4NSST应用于8×8块中的全部4×4区域的情况下:1024(四个4×4NSST所需的乘法计数)/64(8×8块中的总样本计数)=16乘法计数/样本

如上所述,如果块尺寸大,则可以减小4×4NSST的应用范围,以减少每个样本端所需的、在最坏场景情况下的乘法计数。

因此,如果使用4×4NSST,则当TU尺寸为4×4时会出现最坏场景的情况。在这种情况下,以下方法可以降低最坏情况下的复杂度。

方法1.对较小的TU(也就是说,4×4TU)不应用4×4NSST。

方法2.对4×4块(4×4TU)应用4×4RST而不是4×4NSST。

以实验方式观察到,方法1导致编码性能显著下降,因此不适用于4×4NSST。揭示了方法2通过即使没有使用全部变换系数,将逆变换应用于就16×1变换系数向量的元素的统计特性而言位置在前的一些变换系数,能够重构非常接近原始信号的信号,并且因此能够保持大部分编码性能。

具体地,在4×4RST的情况下,当逆向(或正向)16×16非分离变换由16个列基本向量组成时,仅留下L个列基本向量,并配置16×L矩阵。由于保留变换系数当中仅L个更关键的变换系数,因此16×L矩阵与L×1向量的乘积可以得到16×1向量的重构,其与原始16×1向量数据的差异很小。

结果,只有L个系数参与数据重构。因此,对于获得变换系数,获得L×1变换系数向量就足够,而不是16×1变换系数向量。也就是说,通过从正向16×16非分离变换矩阵中选择L个行方向变换向量来配置L×16变换矩阵,并且通过将L×16变换矩阵乘以16×1输入向量来获得L个变换系数。

L属于1<=L<16的范围。通常,可以通过任何方法从16个变换基本向量中选择L个变换基本向量。然而,如上所述,从编码和解码的观点来看,选择在信号能量方面具有更高重要性的变换基本向量对于编码效率而言是有利的。关于L值根据变换在4×4块中每样本的最坏情况乘法计数如下表9所示。

[表9]

L 总乘法 每像素乘法
16 256 16
8 128 8
4 64 4
2 32 2

如上所述,如下面的表10所示,可以综合使用4×4NSST和4×4RST,以降低最坏情况下的乘法复杂度。(但是,以下示例描述了在应用4×4NSST的条件下(也就是说,在当前块的宽度和高度二者等于或大于4时)应用4×4NSST和4×4RST的条件)。

如上所述,用于4×4块的4×4NSST是接收16个数据并输出16个数据的方形(16×16)变换矩阵,而对于编码器侧而言,4×4RST意味着接收16个数据并输出小于16的R(例如,8)个数据的非方形(8×16)变换矩阵。对于解码器侧而言,4×4RST意味着接收少于16个的R(例如,8)个数据并且输出16个数据的非正方形(16×8)变换矩阵。

[表10]

参照表10,在当前块的宽度和高度为4时,将基于8×16矩阵的4×4RST应用于当前块,否则(如果当前块的宽度或高度不为4),4×4NSST可以应用于当前块的左上侧的4×4区域。更具体地,如果当前块的尺寸为4×4,则可以应用输入长度为16且输出长度为8的非分离变换。在非分离逆变换的情况下,可应用输入长度为8而输出长度为16的非分离变换。

如上所述,如下表11所示,可以组合使用4×4NSST和4×4RST,以降低最坏情况下的乘法复杂度。(但是,以下示例描述了在应用4×4NSST的条件下(也就是说,在当前块的宽度和高度二者等于或大于4时)应用4×4NSST和4×4RST的条件)。

[表11]

参照表11,在当前块的宽度和高度各为4时,应用基于8×16矩阵的4×4RST,并且如果当前块的宽度和高度的乘积小于阈值(TH),则将4×4NSST应用于当前块的左上侧的4×4区域,以及如果当前块的宽度等于或大于高度,则将4×4NSST应用于当前块的左上侧的4×4区域以及位于左上侧的4×4区域右侧的4×4区域,并且对于其余情况(在当前块的宽度和高度的乘积等于或大于阈值以及当前块的宽度小于高度时),将4×4NSST应用于当前块的左上侧的4×4区域以及位于左上侧的4×4区域下方的4×4区域。

因此,可以将4×4RST(例如,8×16矩阵)而不是4×4NSST应用于4×4块,以降低最坏情况下的乘法的计算复杂度。

实施方式15:用于最坏情况处理的8×8RST的条件应用

适用于一个8×8块的非分离二次变换(8×8NSST)是64×64变换。8×8NSST二次应用于经历了诸如DCT-2、DST-7或DCT-8之类的初次变换的块。当应用初次变换的块的尺寸为N×M时,在将8×8NSST应用于N×M块时可以考虑以下方法。

1)以下是将8×8NSST应用于N×M区域的条件c)和d)。

c)N>=8

d)M>=8

2)8×8NSST可以应用于N×M区域的一些区域,而不是全部。例如,8×8NSST可以仅应用于左上侧的K×J区域。以下c)和d)是这种情况的条件。

c)K>=8

d)J>=8

3)要应用二次变换的区域可以分割为8×8的块,并且8×8的NSST可以应用于每个块。

8×8NSST的计算复杂度是编码器和解码器的非常关键的考虑因素,因此将对此进行详细分析。具体而言,基于乘法计数来分析8×8NSST的计算复杂度。在正向NSST的情况下,64×64二次变换由64个行方向变换基本向量组成,并且64×1向量与每个变换基本向量的内积得到针对变换基本向量的变换系数。获得针对64个变换基本向量的全部变换系数的过程是将64×64非分离变换矩阵乘以输入的64×1向量。因此,8×8正向NSST所需的总乘法计数为4,096。

当在解码器中对64×1变换系数应用逆64×64非分离变换时(当忽略诸如量化和整数化之类的影响)时,可以重构原始8×8初次变换块的系数。换句话说,可以通过将逆64×64非分离变换矩阵乘以64×1变换系数向量来获得64×1向量形式的数据,并且如果数据是如第一次应用一样按行优先或列优先的次序排序时,则可以重构8×8块信号(初次变换系数)。因此,8×8逆NSST所需的总乘法计数为4,096。

如上所述,当应用8×8NSST时,每个样本单位所需的乘法计数为64。这是将总乘法计数4,096除以样本总数64时获得的数字,该总乘法计数是在每个变换基本向量和64×1向量的内积的过程中获得的,这是执行8×8NSST的过程。正向8×8NSST和逆8×8NSST二者所需的乘法计数为64。

对于16×16块,应用8×8NSST时所需的每个样本的乘法计数是依据已应用8×8NSST的区域而确定的。

1.在8×8NSST仅应用于左上侧的8×8区域:4096(8×8NSST处理所需的乘法计数)/256(16×16块中的总样本计数)=16乘法计数/样本

2.在8×8NSST应用于左上侧的8×8区域和右上侧的8×8区域的情况下:8192(两个8×8NSST所需的乘法计数)/256(16×16块中的总样本计数)=32乘法计数/样本

3.在8×8NSST应用于16×16块中的全部8×8区域的情况下:16384(四个8×8NSST所需的乘法计数)/256(16×16块中的总样本计数)=64乘法计数/样本

如上所述,如果块尺寸大,则可以减小8×8NSST的应用范围,以减少每个样本端所需的、在最坏场景情况下的乘法计数。

在应用8×8NSST的情况下,由于8×8块是可适用8×8NSST的最小TU,因此从每个样本所需的乘法计数来看,TU尺寸为8×8的情况是最坏情况。在这种情况下,以下方法可以降低最坏情况下的复杂度。

方法1.对较小的TU(也就是说,8×8TU)不应用8×8NSST。

方法2.对8×8块(8×8TU)应用8×8RST而不是应用8×8NSST。

以实验方式观察到,方法1导致编码性能显著下降,因此不适用于8×8NSST。揭示了方法2通过即使没有使用全部变换系数,将逆变换应用于就64×1变换系数向量的元素的统计特性而言位置在前的一些变换系数,能够重构非常接近原始信号的信号,并且因此能够保持大部分编码性能。

具体地,在8×8RST的情况下,当逆向(或正向)64×64非分离变换由16个列基本向量组成时,仅留下L个列基本向量,并且配置64×L矩阵。由于保留变换系数当中仅L个更关键的变换系数,因此64×L矩阵与L×1向量的乘积可以得到64×1向量的重构,其与原始64×1向量数据的差别很小。

结果,只有L个系数参与数据重构。因此,对于获得变换系数,获得L×1变换系数向量就足够,而不是64×1变换系数向量。也就是说,通过从正向64×64非分离变换矩阵中选择L个行方向变换向量来配置L×64变换矩阵,并且通过将L×64变换矩阵乘以64×1输入向量来获得L个变换系数。

L属于1<=L<64的范围。通常,可以通过任何方法从64个变换基本向量中选择L个变换基本向量。然而,如上所述,从编码和解码的观点来看,选择在信号能量方面具有更高重要性的变换基本向量对于编码效率而言是有利的。关于L值根据变换在8×8块中每样本的最坏情况乘法计数如下表12所示。

[表12]

如上所述,如下面的表13所示,可以综合使用具有不同L值的8×8RST,以降低最坏情况下的乘法复杂度。(但是,以下示例描述了在应用8×8NSST的条件下(也就是说,在当前块的宽度和高度二者等于或大于8时)应用8×8RST的条件)。

[表13]

Figure BDA0002644966030000432

参照表13,在当前块的宽度和高度各为8时,将基于8×64矩阵的8×8RST应用于当前块,否则(如果当前块的宽度或高度不为8),基于16×64矩阵的8×8RST可以应用于当前块。更具体地,在当前块的尺寸为8×8时,可以应用输入长度为64且输出长度为8的非分离变换,否则,可以应用输入长度为64且输出长度为16的非分离变换。在非分离逆变换的情况下,在当前块为8×8时,可以应用输入长度为8且输出长度为64的非分离变换,否则可以应用输入长度为16且输出长度为64的非分离变换。

表14示出了在应用8×8NSST的条件下(也就是说,在当前块的宽度和高度二者等于或大于8时)应用各种8×8RST的示例。

[表14]

Figure BDA0002644966030000433

参照表14,在当前块的宽度和高度各为8时,应用基于8×64矩阵的8×8RST,并且如果当前块的宽度和高度的乘积小于阈值(TH),将基于16×64矩阵的8×8RST应用于当前块的左上侧的8×8区域,以及如果当前块的宽度等于或大于高度,则将基于32×64矩阵的8×8RST应用于位于当前块的左上侧的8×8区域中的4×4区域,并且对于其余情况(在当前块的宽度和高度的乘积等于或大于阈值以及当前块的宽度小于高度时),将基于32×64矩阵的8×8RST应用于当前块的左上侧的8×8区域。

图29是例示了根据本公开实施方式的应用了变换的解码的示例的流程图。图29的操作可以由解码装置200的逆变换器230执行。

在步骤S2905中,解码装置200基于当前块的高度和宽度来确定非分离变换的输入长度和输出长度。这里,如果当前块的高度和宽度各为4,则非分离变换的输入长度和输出长度可以分别确定为8和16。换句话说,可以应用基于8×16矩阵的4×4RST的逆变换(基于16×8矩阵的逆4×4RST)。如果当前块的高度和宽度中的每一个不等于4,则非分离变换的输入长度和输出长度被确定为16。

在步骤S2910中,解码装置200确定与非分离变换的输入长度和输出长度相对应的非分离变换矩阵。例如,如果非分离变换的输入长度和输出长度分别为8和16(在当前块的大小为4×4时),则从变换内核归纳出的16×8矩阵可以被确定为非分离变换块,并且,如果非分离变换的输入长度和输出长度分别为16和16(例如,在当前块小于8×8而不是4×4时),则16×16变换内核可以确定为非分离变换。

根据本公开的实施方式,解码装置200可以基于当前块的帧内预测模式确定非分离变换集合索引(例如,NSST索引),确定与非分离变换集合索引中所包括的非分离变换集合中的非分离变换索引相对应的非分离变换内核,并且基于在步骤S2905中确定的输入长度和输出长度,从非分离变换内核确定非分离变换矩阵。

在步骤S2915中,解码装置200将在当前块中确定的非分离变换矩阵应用于当前块。例如,如果非分离变换的输入长度和输出长度分别为8和16,则从变换内核归纳出的8×16矩阵可以应用于当前块,并且如果非分离的变换的输入长度和输出长度分别为16和16,则从变换内核归纳出的16×16矩阵可以应用于当前块的左上侧的4×4区域的系数。

对于除当前块的高度和宽度各为4以外的情况,如果当前块的宽度和高度的乘积小于阈值,则解码装置200可以将非分离变换矩阵应用于当前块的左上侧的4×4区域,如果当前块的宽度等于或大于高度,则将非分离变换矩阵应用于当前块的左上侧的4×4区域,并且位于左上侧的4×4区域右侧的4×4区域,并且如果当前块的宽度和高度的乘积等于或大于阈值,并且当前块的宽度小于高度,则非分离变换矩阵应用于当前块的左上侧的4×4区域和位于左上侧的4×4区域下方的4×4区域。

图30是例示了根据本公开实施方式的用于处理视频信号的装置的框图。图26的视频信号处理装置3000可以对应于图1的编码装置100或图2的解码装置200。

用于处理视频信号的视频信号处理装置3000可以包括用于存储视频信号的存储器3020和与该存储器联接以处理视频信号的处理器3010。

根据本公开的实施方式,处理器3010可以被配置为用于处理图像信号的至少一个处理电路,并且可以执行用于对图像信号进行编码或解码的指令,从而处理图像信号。换句话说,处理器3010可以通过执行上述编码或解码方法来对原始图像数据进行编码或对编码图像信号进行解码。

图31例示了根据本公开实施方式的示例性视频编译系统。

视频编码系统可以包括源装置和接收装置。源装置可以经由数字存储介质或网络以文件或流形式向接收装置传送编码视频/图像信息或数据。

源装置可以包括视频源、编码装置和发送器。接收装置可以包括接收器、解码装置和渲染器。编码装置可以称为视频/图像编码装置,并且解码装置可以称为视频/图像解码装置。发送器可以包括在编码装置中。接收器可以包括在解码装置中。渲染器可以包括显示单元,并且显示单元可以配置为单独的装置或外部组件。

视频源可以通过捕获、合成或生成视频/图像来获取视频/图像。视频源可以包括视频/图像捕获装置和/或视频/图像生成装置。视频/图像捕获装置可以包括例如一个或更多个相机以及包括先前捕获的视频/图像的视频/图像档案。视频/图像生成装置可以包括例如计算机、平板PC或智能电话,并且可以(电子地)生成视频/图像。例如,可以经由例如计算机来生成虚拟视频/图像,在这种情况下,用于生成其相关数据的过程可以代替视频/图像捕获过程。

编码装置可以对输入的视频/图像进行编码。编码装置可以执行用于压缩和编码效率的一系列处理,诸如预测、变换和量化。编码数据(编码视频/图像信息)可以以比特流的形式输出。

发送器可以经由数字存储介质或网络以文件或流形式向接收装置的接收器传送已经以比特流形式输出的编码视频/图像信息或数据。数字存储介质可以包括各种类型的存储介质,诸如USB、SD、CD、DVD、蓝光、HDD或SDD。发送器可以包括用于以预定文件格式生成媒体文件的元件以及用于在广播/通信网络上进行传输的元件。接收器可以提取比特流并向解码装置传送比特流。

解码装置可以执行与编码装置的操作相对应的一系列过程,诸如逆量化、逆变换和预测,以对视频/图像进行解码。

渲染器可以渲染解码的视频/图像。渲染的视频/图像可以显示在显示单元上。

图32是例示了根据本公开实施方式的修道院流系统的结构的视图。

应用本公开的内容流系统可以主要包括编码服务器、流服务器、网络服务器、媒体存储器、用户装置和多媒体输入装置。

编码服务器可以将从诸如智能手机、相机或便携式摄像机之类的多媒体输入装置输入的内容压缩为数字数据,生成比特流,并向流服务器发送该比特流。作为示例,当诸如智能电话、相机或便携式摄像机之类的多媒体输入装置自身生成比特流时,可以省略编码服务器。

可以通过应用了本公开的编码或比特流生成方法来生成比特流,并且流服务器可以在发送或接收比特流的同时临时存储比特流。

流服务器可以基于用户的请求通过网络服务器向用户装置发送多媒体数据,并且网络服务器扮演代理的角色,以通知用户提供了哪些服务。如果用户向网络服务器发送对所需服务的请求,则网络服务器向流服务器传送该请求,然后流服务器向用户发送多媒体数据。内容流系统可以包括单独的控制服务器,在这种情况下,控制服务器控制内容流系统中的装置之间的命令/响应。

流服务器可以从媒体存储器和/或编码服务器接收内容。例如,当从编码服务器接收内容时,可以实时地接收内容。在这种情况下,为了无缝地提供服务,流服务器可以将比特流存储预定时间。

用户装置的示例可以包括移动电话、智能电话、膝上型计算机、数字广播终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、导航装置、触屏电脑、平板电脑、超极本、诸如智能手表、智能眼镜或头戴式显示器(HMD)之类的可穿戴装置、数字TV、台式计算机或数字标牌装置。

在内容流系统中,服务器可以是分布式服务器,在这种情况下,可以分发和处理由每个服务器接收的数据。

此外,应用本公开的处理方法可以以由计算机执行并存储在计算机可读记录介质中的程序的形式来制造。具有根据本公开的数据结构的多媒体数据也可以存储在计算机可读记录介质中。计算机可读记录介质包括其中存储计算机可读数据的所有类型的存储装置和分布式存储装置。例如,计算机可读记录介质可以包括蓝光盘(BD)、通用串行总线(USB)、ROM、PROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储装置。此外,计算机可读记录介质包括以载波的形式(例如,通过互联网传输)实现的介质。此外,通过编码方法生成的比特流可以存储在计算机可读记录介质中,或者可以在有线/无线通信网络上传输。

此外,本公开的实施方式可以根据程序代码被实现为计算机程序产品,并且该程序代码可以根据本公开实施方式在计算机中执行。程序代码可以存储在计算机可读载体上。

如上所述,本公开的实施方式可以在处理器、微处理器、控制器或芯片上实现和执行。例如,每个图中所示的功能单元可以在计算机、处理器、微处理器、控制器或芯片上实现和执行。

此外,应用本公开的解码器和编码器可以包括在多媒体广播发送/接收设备、移动通信终端、家庭影院视频系统、数字影院视频系统、监控相机、视频会话设备、实时通信设备,诸如视频通信之类的实时通信设备、移动流装置、储存介质、便携式摄像机、视频点播(VoD)服务提供设备、过顶视频(OTT video)视频系统、互联网流服务提供设备、3D视频系统、视频电话视频系统、医疗视频系统等中,并且可以用于处理视频信号或数据信号。例如,OTT视频系统可以包括游戏机、蓝光播放器、互联网接入TV、家庭影院系统、智能电话、平板PC、数字视频记录仪(DVR)等。

此外,应用本公开的处理方法可以以计算机执行并且存储在计算机可读记录介质中的程序的形式制造。具有根据本公开的数据结构的多媒体数据也可以存储在计算机可读记录介质中。计算机可读记录介质包括其中存储计算机可读数据的所有类型的存存储装置和分布式存储装置。例如,计算机可读记录介质可以包括例如蓝光盘(BD)、通用串行总线(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储装置。此外,计算机可读记录介质包括以载波(例如,经由互联网的传输)形式实现的介质。此外,通过编码方法生成的比特流可以存储在计算机可读记录介质中或经由有线/无线通信网络来传输。

此外,本公开的实施方式可以根据程序代码实现为计算机程序产品,并且程序代码可以根据本公开的实施方式在计算机中执行。程序代码可以存储在计算机可读载体上。

以上描述的实施方式是本公开的元件和特征的组合。除非另外提及,否则可以认为元件或特征是选择性的。每个元件或特征可以在不与其它元件或特征组合的情况下实施。此外,可以通过组合元件和/或特征中的一部分来构造本公开的实施方式。在本公开的实施方式中描述的操作顺序可以重新排列。任何一个实施方式的一些结构可以包括在另一实施方式中,并且可以用另一实施方式的相应结构代替。对于本领域技术人员而言显而易见的是,提交申请之后,在所附权利要求中彼此没有明确引用的权利要求可以组合呈现来作为示例性实施方式,或者在提交申请之后通过随后的修改作为新的权利要求而被包括进来。

可以通过例如,硬件、固件、软件或其组合的各种手段来实现本公开的实施方式。在硬件配置中,根据本公开的实现的方法可以通过一个或更多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等来实现。

在固件或软件配置中,本公开的实现可以以模块、过程、功能等的形式实现。软件代码可以存储在存储器中并由处理器执行。存储器可以位于处理器的内部或外部,并且可以经由各种已知手段向处理器发送数据以及从处理器接收数据。

本领域技术人员将理解,在不脱离本公开的精神和基本特征的情况下,本公开可以按照除了本文所提出之外的其它特定方式实施。因此,以上实施方式在所有方面都被解释为示例性的而非限制性的。本公开的范围应由所附权利要求及其合法等同范围来确定,而不是由以上描述确定,并且落入所附权利要求的含义和等同范围内的所有变型都旨在包含于本公开中。

工业适用性

尽管出于示例性目的描述了本公开的示例性方面,但是本领域技术人员将理解,在不脱离本公开的基本特征的情况下,可以进行各种修改、增加和替换。

63页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于处理图像信号的方法和设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类