掌桥专利:专业的专利平台
掌桥专利
首页

解码设备、编码设备和发送设备

文献发布时间:2024-04-18 20:01:23


解码设备、编码设备和发送设备

本申请是原案申请号为202080009419.7的发明专利申请(国际申请号:PCT/KR2020/001533,申请日:2020年1月31日,发明名称:基于二次变换的图像编码方法及其设备)的分案申请。

技术领域

本公开总体上涉及图像编码技术,更具体地,涉及图像编码系统中的基于变换的图像编码方法及其设备。

背景技术

如今,在各个领域中对诸如4K、8K或更高的超高清(UHD)图像/视频这样的高分辨率和高质量图像/视频的需求已经不断增长。随着图像/视频数据变成更高分辨率和更高质量,与传统图像数据相比,所发送的信息量或比特量增加。因此,当使用诸如传统有线/无线宽带线这样的介质来发送图像数据或者使用现有存储介质来存储图像/视频数据时,其传输成本和存储成本增加。

另外,如今,对于诸如虚拟现实(VR)和人工现实(AR)内容或全息图等这样的沉浸式媒体的兴趣和需求正在增加,并且对具有与诸如游戏图像这样的真实图像不同的图像特征的图像/视频的广播正在增加。

因此,需要有效地压缩并发送或存储以及再现具有如上所述的各种特征的高分辨率和高质量图像/视频的信息的高效图像/视频压缩技术。

发明内容

技术问题

本公开的技术方面在于提供用于增加图像编码效率的方法和设备。

本公开的另一技术方面在于提供用于增加变换效率的方法和设备。

本公开的又一技术方面在于提供一种基于变换过程的修剪(clipping)的图像编码方法和图像编码设备。

本公开的又一技术方面在于提供一种用于通过根据帧内预测模式改变变换系数的阵列来增加二次变换的效率的方法和设备。

本公开的又一技术方面在于提供一种用于通过优化应用于二次变换的变换核矩阵来增加二次变换的效率的图像编码方法和图像编码设备。

本公开的又一技术方面在于提供一种基于用于增加编码效率的变换集的图像编码方法和图像编码设备。

技术方案

根据本公开的实施方式,提供了一种由解码设备执行的图像解码方法。该方法可以包括:接收目标块的量化变换系数和不可分离的二次变换的变换索引;通过对量化变换系数进行解量化来推导变换系数;基于与变换索引相关的变换集中的变换核矩阵和与解量化变换系数的大小对应的变换系数列表的矩阵运算来推导修改的变换系数;将修改的变换系数修剪到预定范围内的值;以及基于针对经修剪的修改的变换系数的逆一次变换来推导目标块的残差样本。

该方法还可以将残差样本修剪到预定范围内的值。

根据本公开的另一实施方式,提供了一种由编码设备执行的图像编码方法。该方法可以包括:基于应用于目标块的帧内预测模式来推导预测样本;基于预测样本来推导目标块的残差样本;通过将一次变换应用于残差样本来推导变换系数;基于不可分离的二次变换被应用于变换系数,推导与应用不可分离的二次变换的变换系数的长度相关的输入变换系数大小、与已经应用不可分离的二次变换的修改的变换系数的长度相关的输出变换系数大小、和映射到所标块的帧内模式的变换集;基于变换集中的任何一个变换核矩阵和与输入变换系数大小对应的变换系数的矩阵运算来推导修改的变换系数;将修改的变换系数修剪到预定范围内的值;以及通过基于经修剪的修改的变换系数执行量化来推导量化变换系数。

根据本公开的又一实施方式,可以提供一种数字存储介质,该数字存储介质存储包括根据由编码设备执行的图像编码方法生成的编码的图像信息和比特流的图像数据。

根据本公开的又一实施方式,可以提供一种数字存储介质,该数字存储介质存储包括编码的图像信息和比特流的图像数据以使解码设备执行图像解码方法。

技术效果

根据本公开,可以增加整体图像/视频压缩效率。

根据本公开,可以通过根据帧内预测模式改变变换系数的阵列来增加二次变换的效率。

根据本公开,可以通过基于变换过程的修剪执行图像编码来增加图像编码效率。

根据本公开,可以通过优化应用于二次变换的变换核矩阵来增加二次变换的效率。

附图说明

图1示意性地例示了可应用本公开的视频/图像编码系统的示例。

图2是示意性地例示可应用本公开的视频/图像编码设备的配置的图。

图3是示意性地例示可应用本公开的视频/图像解码设备的配置的图。

图4示意性地例示了根据本公开的实施方式的多变换技术。

图5例示了65个预测方向的定向帧内模式。

图6是例示根据本公开的实施方式的RST的图。

图7是例示根据本公开的实施方式的变换系数扫描顺序的图。

图8是例示根据本公开的实施方式的逆RST处理的流程图。

图9例示了根据本公开的实施方式的使用16×48变换矩阵的正向RST 8×8。

图10是例示根据本公开的实施方式的视频解码设备的操作的流程图。

图11是例示根据本公开的实施方式的由解码设备进行的图像解码方法的控制流程图。

图12是例示根据本公开的实施方式的视频编码设备的操作的流程图。

图13是例示根据本公开的实施方式的由编码设备进行的图像编码方法的控制流程图。

图14例示了应用本公开的内容流传输系统的结构。

具体实施方式

尽管本公开可能易于进行各种修改并且包括各种实施方式,但是其具体实施方式已在附图中通过示例的方式示出,并且现在将对其进行详细描述。然而,这并不旨在将本公开限制于本文公开的具体实施方式。本文中使用的术语只是出于描述特定实施方式的目的,并不旨在限制本公开的技术思路。除非上下文另外清楚指示,否则单数形式可以包括复数形式。诸如“包括”和“具有”之类的术语旨在指示存在以下描述中使用的特征、数字、步骤、操作、元件、组件或其组合,因此不应被理解为预先排除了存在或添加一个或更多个不同特征、数字、步骤、操作、元件、组件或其组合的可能性。

此外,为了方便描述彼此不同的特性功能,独立地例示了本文中描述的附图上的各组件,然而,并不意指各组件由单独的硬件或软件来实现。例如,可以组合这些组件中的任何两个或更多个以形成单个组件,并且任何单个组件可以被划分成多个组件。其中组件被组合和/或划分的实施方式将属于本公开的专利权的范围,只要它们不脱离本公开的实质即可。

在下文中,将参照附图更详细地说明本公开的优选实施方式。另外,在附图中,相同的附图标号用于相同的组件,并且将省略对相同组件的重复描述。

本文档涉及视频/图像编码。例如,本文档中公开的方法/示例可以涉及VVC(通用视频编码)标准(ITU-T Rec.H.266)、VVC之后的下一代视频/图像编码标准、或其它视频编码相关标准(例如,HEVC(高效视频编码)标准(ITU-T Rec.H.265)、EVC(基本视频编码)标准、AVS2标准等)。

在本文档中,可以提供与视频/图像编码相关的各种实施方式,并且除非相反地指定,否则这些实施方式可以彼此组合并执行。

在本文档中,视频可以是指一段时间内一系列图像的集合。通常,图片是指表示特定时间区域的图像的单元,而条带/贴片是构成图片的一部分的单元。条带/贴片可以包括一个或更多个编码树单元(CTU)。一幅图片可以由一个或更多个条带/贴片组成。一幅图片可以由一个或多个贴片组组成。一个贴片组可以包括一个或更多个贴片。

像素或图元(pel)可以是指构成一幅图片(或图像)的最小单元。另外,“样本”可用作与像素相对应的术语。样本通常可以表示像素或像素值,并且可以仅表示亮度分量的像素/像素值或仅表示色度分量的像素/像素值。另选地,样本可以意指空间域中的像素值,或者当该像素值被变换为频域时,其可以意指频域中的变换系数。

单元可以表示图像处理的基本单位。单元可以包括特定区域和与该区域相关的信息中的至少一个。一个单元可以包括一个亮度块和两个色度(例如,cb、cr)块。根据情况,可以将单元和诸如块、区域等这样的术语互换地使用。在通常情况下,M×N块可以包括由M列和N行组成的样本(或样本阵列)或变换系数的集(或阵列)。

在本文档中,术语“/”和“,”应该被解释为指示“和/或”。例如,表述“A/B”可以意指“A和/或B”。另外,“A、B”可以意指“A和/或B”。另外,“A/B/C”可以意指“A、B和/或C中的至少一个”。另外,“A/B/C”可以意指“A、B和/或C中的至少一个”。

另外,在该文档中,术语“或”应该被解释为指示“和/或”。例如,表述“A或B”可以包括1)仅A、2)仅B和/或3)A和B二者。换句话说,本文档中的术语“或”应该被解释为指示“附加地或另选地”。

图1示意性地例示可应用本公开的视频/图像编码系统的示例。

参照图1,视频/图像编码系统可以包括第一装置(源装置)和第二装置(接收装置)。源装置可以经由数字存储介质或网络以文件或流的形式将编码后的视频/图像信息或数据传递到接收装置。

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

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

编码设备可以对输入视频/图像进行编码。编码设备可以执行诸如针对压缩和编码效率的预测、变换和量化这样的一系列过程。编码后的数据(编码后的视频/图像信息)可以以比特流的形式输出。

发送器可以通过数字存储介质或网络以文件或流的形式将以比特流的形式输出的编码后的视频/图像信息或数据发送到接收装置的接收器。数字存储介质可以包括诸如USB、SD、CD、DVD、蓝光、HDD、SSD等这样的各种存储介质。发送器可以包括用于通过预定文件格式生成媒体文件的元件,并且可以包括用于通过广播/通信网络进行发送的元件。接收器可以接收/提取比特流,并且将接收/提取的比特流发送到解码设备。

解码设备可以通过执行与编码设备的操作对应的诸如解量化、逆变换、预测等这样的一系列过程来解码视频/图像。

渲染器可以渲染解码后的视频/图像。可以通过显示器显示渲染后的视频/图像。

图2是示意性地例示可应用本公开的视频/图像编码设备的配置的图。在下文中,所谓的视频编码设备可以包括图像编码设备。

参照图2,编码设备200可以包括图像划分器210、预测器220、残差处理器230、熵编码器240、加法器250、滤波器260和存储器270。预测器220可以包括帧间预测器221和帧内预测器222。残差处理器230可以包括变换器232、量化器233、解量化器234、逆变换器235。残差处理器230可以进一步包括减法器231。加法器250可以称为重构器或重构块生成器。根据实施方式,以上描述的图像划分器210、预测器220、残差处理器230、熵编码器240、加法器250和滤波器260可以由一个或更多个硬件组件(例如,编码器芯片组或处理器)构成。此外,存储器270可以包括解码图片缓冲器(DPB),并且可以由数字存储介质构成。硬件组件可以进一步包括作为内部/外部组件的存储器270。

图像划分器210可以将输入到编码设备200的输入图像(或图片或帧)划分为一个或更多个处理单元。作为一个示例,处理单元可以被称为编码单元(CU)。在这种情况下,从编码树单元(CTU)或最大编码单元(LCU)开始,可以根据四叉树二叉树三叉树(QTBTTT)结构来递归地划分编码单元。例如,基于四叉树结构、二叉树结构和/或三叉树结构,一个编码单元可以被划分为深度较深的多个编码单元。在这种情况下,例如,可以首先应用四叉树结构,并且可以稍后应用二叉树结构和/或三叉树结构。另选地,可以首先应用二叉树结构。可以基于未进一步划分的最终编码单元来执行根据本公开的编码过程。在这种情况下,基于根据图像特性的编码效率,最大编码单元可以直接用作最终编码单元。另选地,可以根据需要将编码单元递归地划分为更深的深度的编码单元,由此可以将最佳大小的编码单元用作最终编码单元。这里,编码过程可以包括诸如预测、变换和重构之类的过程,其将在后面描述。作为另一示例,处理单元可以进一步包括预测单元(PU)或变换单元(TU)。在这种情况下,预测单元和变换单元可以与上述最终编码单元分开或划分开。预测单元可以是样本预测的单元,并且变换单元可以是用于推导变换系数的单元和/或用于从变换系数推导残差信号的单元。

根据情况,可以使用单元和诸如块、区域等之类的术语来代替彼此。在通常情况下,M×N块可以表示由M列和N行构成的样本或变换系数的集。样本通常可以表示像素或像素值,并且可以仅表示亮度分量的像素/像素值,或者仅表示色度分量的像素/像素值。样本可用作与一幅图片(或图像)的像素或图元(pel)相对应的术语。

减法器231从输入图像信号(原始块、原始样本阵列)中减去从帧间预测器221或帧内预测器222输出的预测信号(预测块、预测样本阵列)以生成残差信号(残差块、残差样本阵列),并且所生成的残差信号被发送到变换器232。在这种情况下,如图所示,编码设备200中的从输入图像信号(原始块、原始样本阵列)减去预测信号(预测块、预测样本阵列)的单元可以被称为减法器231。预测器可以对处理目标块(下文称为“当前块”)执行预测,并且可以生成包括当前块的预测样本的预测块。预测器可以确定是以当前块或CU为基础应用帧内预测还是应用帧间预测。如稍后在每个预测模式的描述中所讨论的,预测器可以生成与预测有关的各种信息(例如,预测模式信息),并将所生成的信息发送到熵编码器240。关于预测的信息可以在熵编码器240中编码并以比特流的形式输出。

帧内预测器222可以通过参考当前图片中的样本来预测当前块。根据预测模式,参考样本可以位于当前块的附近或与当前块分开。在帧内预测中,预测模式可以包括多种非定向模式和多种定向模式。非定向模式可以包括例如DC模式和平面模式。根据预测方向的详细程度,定向模式可以包括例如33种定向预测模式或65种定向预测模式。然而,这仅仅是示例,并且根据设置,可以使用更多或更少的定向预测模式。帧内预测器222可以通过使用应用于邻近块的预测模式来确定应用于当前块的预测模式。

帧间预测器221可以基于参考图片上的运动向量所指定的参考块(参考样本阵列)来推导针对当前块的预测块。此时,为了减少在帧间预测模式下发送的运动信息的量,可以基于邻近块与当前块之间的运动信息的相关性以块、子块或样本为基础来预测运动信息。运动信息可以包括运动向量和参考图片索引。运动信息还可以包括帧间预测方向(L0预测、L1预测、Bi预测等)信息。在帧间预测的情况下,邻近块可以包括当前图片中存在的空间邻近块和参考图片中存在的时间邻近块。包括参考块的参考图片和包括时间邻近块的参考图片可以彼此相同或彼此不同。时间邻近块可以被称为并置参考块、并置CU(colCU)等,并且包括时间邻近块的参考图片可以被称为并置图片(colPic)。例如,帧间预测器221可以基于邻近块来配置运动信息候选列表,并且生成指示哪个候选被用于推导当前块的运动向量和/或参考图片索引的信息。可以基于各种预测模式来执行帧间预测。例如,在跳变模式和合并模式的情况下,帧间预测器221可以使用邻近块的运动信息作为当前块的运动信息。在跳变模式下,与合并模式不同,不能发送残差信号。在运动信息预测(运动向量预测、MVP)模式的情况下,邻近块的运动向量可以被用作运动向量预测符,并且可以通过发信号通知运动向量差来指示当前块的运动向量。

预测器220可以基于各种预测方法来生成预测信号。例如,预测器可以将帧内预测或帧间预测应用于对一个块的预测,并且也可以同时应用帧内预测和帧间预测。这可以被称为组合的帧间和帧内预测(CIIP)。另外,预测器可以基于块内复制(IBC)预测模式或调色板模式,以便对块执行预测。IBC预测模式或调色板模式可以被用于诸如屏幕内容编码(SCC)这样的游戏等的内容图像/视频编码。尽管IBC基本上在当前块中执行预测,但是其执行方式与帧间预测的相似之处在于,它推导当前块中的参考块。也就是说,IBC可以使用本公开中描述的帧间预测技术中的至少一种。

通过帧间预测器221和/或帧内预测器222生成的预测信号可以被用于生成重构信号或者生成残差信号。变换器232可以通过向残差信号应用变换技术来生成变换系数。例如,变换技术可以包括离散余弦变换(DCT)、离散正弦变换(DST)、Karhunen-Loève变换(KLT)、基于图的变换(GBT)或有条件非线性变换(CNT)中的至少一种。这里,GBT意指当用曲线图表示像素之间的关系信息时从曲线图获得的变换。CNT是指基于使用所有先前重构的像素生成的预测信号而获得的变换。另外,变换处理可以被应用于大小相同的正方形像素块,或者可以应用于大小可变的块而非正方形的块。

量化器233可以对变换系数进行量化并且将它们发送到熵编码器240,并且熵编码器240可以对量化后的信号(关于量化变换系数的信息)进行编码并且输出比特流中的编码后的信号。关于量化变换系数的信息可以被称为残差信息。量化器233可以基于系数扫描顺序将块类型的量化变换系数重新布置成一维向量形式,并且基于一维向量形式的量化变换系数来生成关于量化变换系数的信息。熵编码器240可以执行诸如例如指数哥伦布(exponential Golomb)、上下文自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)等这样的各种编码方法。熵编码器240可以对除了量化变换系数(例如,语法元素的值等)之外的视频/图像重构所需的信息一起或分别进行编码。编码后的信息(例如,编码后的视频/图像信息)可以以比特流的形式在网络抽象层(NAL)的单元基础上进行发送或存储。视频/图像信息还可以包括关于诸如适应参数集(APS)、图片参数集(PPS)、序列参数集(SPS)、视频参数集(VPS)等这样的各种参数集的信息。另外,视频/图像信息还可以包括常规约束信息。在本公开中,从编码设备发送到/发信号通知给解码设备的信息和/或语法元素可以被包括在视频/图像信息中。视频/图像信息可以通过上述编码过程进行编码并且被包括在比特流中。可以通过网络传输比特流,或者将其存储在数字存储介质中。这里,网络可以包括广播网络、通信网络和/或类似物,并且数字存储介质可以包括诸如USB、SD、CD、DVD、蓝光、HDD、SSD等这样的各种存储介质。发送从熵编码器240输出的信号的发送器(未示出)或存储其的存储器(未示出)可以被配置为编码设备200的内部/外部元件,或者发送器可以被包括在熵编码器240中。

从量化器233输出的量化变换系数可以被用于生成预测信号。例如,通过利用解量化器234和逆变换器235向量化变换系数应用解量化和逆变换,可以重构残差信号(残差块或残差样本)。加法器155将重构后的残差信号与从帧间预测器221或帧内预测器222输出的预测信号相加,使得可以生成重构信号(重构图片、重构块、重构样本阵列)。当如在应用跳变模式的情况下一样没有针对处理目标块的残差时,可以将预测块用作重构块。加法器250可以被称为重构器或重构块生成器。所生成的重构信号可以被用于当前块中的下一处理目标块的帧内预测,并且如随后描述的,可以被用于通过滤波进行的下一图片的帧间预测。

此外,在图片编码和/或重构处理中,可以应用具有色度缩放的亮度映射(LMCS)。

滤波器260可以通过向重构信号应用滤波来改善主观/客观视频质量。例如,滤波器260可以通过向重构图片应用各种滤波方法来生成修改后的重构图片,并且可以将修改后的重构图片存储在存储器270中,尤其是存储在存储器270的DPB中。各种滤波方法可以包括例如解块滤波、样本自适应偏移、自适应环形滤波器、双边滤波器等。如随后在对每种滤波方法的描述中所讨论的,滤波器260可以生成与滤波相关的各种信息,并且将所生成的信息发送到熵编码器240。关于滤波的信息可以在熵编码器240中被编码并且以比特流的形式被输出。

已发送到存储器270的修改后的重构图片可以被用作帧间预测器221中的参考图片。据此,编码设备可以避免在应用帧间预测时编码设备100和解码设备中的预测失配,并且还可以提高编码效率。

存储器270DPB可以存储修改后的重构图片,以便使用它作为帧间预测器221中的参考图片。存储器270可以存储从中已推导(或编码了)运动信息的当前图片中的块的运动信息和/或已经重构的图片中的块的运动信息。所存储的运动信息可以被发送到帧间预测器221,以被用作邻近块的运动信息或时间邻近块的运动信息。存储器270可以存储当前图片中的重构块的重构样本,并且将它们发送到帧内预测器222。

图3是示意性地例示可应用本公开的视频/图像解码设备的配置的图。

参照图3,视频解码设备300可以包括熵解码器310、残差处理器320、预测器330、加法器340、滤波器350和存储器360。预测器330可以包括帧间预测器332和帧内预测器331。残差处理器320可以包括解量化器321和逆变换器322。根据实施方式,上面已描述的熵解码器310、残差处理器320、预测器330、加法器340和滤波器350可以由一个或更多个硬件组件(例如,解码器芯片组或处理器)构成。另外,存储器360可以包括解码图片缓冲器(DPB),并且可以由数字存储介质构成。硬件组件还可以包括存储器360作为内部/外部组件。

当输入包括视频/图像信息的比特流时,解码设备300可以与据此已在图2的编码设备中处理视频/图像信息的处理对应地重构图像。例如,解码设备300可以基于与从比特流获得的与块分割相关的信息来推导单元/块。解码设备300可以通过使用在编码设备中应用的处理单元来执行解码。因此,解码的处理单元可以是例如编码单元,可以用编码树单元或最大编码单元顺着四叉树结构、二叉树结构和/或三叉树结构对其进行分割。可以用编码单元推导一个或更多个变换单元。并且,可以通过再现器来再现通过解码设备300解码并输出的重构图像信号。

解码设备300可以以比特流的形式接收从图2的编码设备输出的信号,并且可以通过熵解码器310对接收到的信号进行解码。例如,熵解码器310可以对比特流进行解析,以推导图像重构(或图片重构)所需的信息(例如,视频/图像信息)。视频/图像信息还可以包括关于诸如自适应参数集(APS)、图片参数集(PPS)、序列参数集(SPS)、视频参数集(VPS)等这样的各种参数集的信息。另外,视频/图像信息还可以包括常规约束信息。解码设备可以进一步基于关于参数集的信息和/或常规约束信息对图片进行解码。在本公开中,随后将描述的发信号通知/接收的信息和/或语法元素可以通过解码过程被解码并且从比特流中获得。例如,熵解码器310可以基于诸如指数哥伦布编码、CAVLC、CABAC等这样的编码方法对比特流中的信息进行解码,并且可以输出图像重构所需的语法元素的值和关于残差的变换系数的量化值。更具体地,CABAC熵解码方法可以接收与比特流中的各语法元素对应的bin,使用解码目标语法元素信息以及邻近和解码目标块的解码信息或者在先前步骤中解码的符号/bin的信息来确定上下文模型,根据所确定的上下文模型来预测bin生成概率并且对bin执行算术解码以生成与每个语法元素值对应的符号。这里,CABAC熵解码方法可以在确定上下文模型之后使用针对下一个符号/bin的上下文模型解码的符号/bin的信息来更新上下文模型。在熵解码器310中解码的信息当中的关于预测的信息可以被提供到预测器(帧间预测器332和帧内预测器331),并且在熵解码器310中已对其执行了熵解码的残差值(即,量化变换系数)和关联的参数信息可以被输入到残差处理器320。残差处理器320可以推导残差信号(残差块、残差样本、残差样本阵列)。另外,在熵解码器310中解码的信息当中的关于滤波的信息可以被提供到滤波器350。此外,接收从编码设备输出的信号的接收器(未示出)还可以将解码设备300构成为内部/外部元件,并且接收器可以是熵解码器310的组件。此外,根据本公开的解码设备可以被称为视频/图像/图片编码设备,并且解码设备可以被分为信息解码器(视频/图像/图片信息解码器)和样本解码器(视频/图像/图片样本解码器)。信息解码器可以包括熵解码器310,并且样本解码器可以包括解量化器321、逆变换器322、加法器340、滤波器350、存储器360、帧间预测器332和帧内预测器331中的至少一个。

解量化器321可以通过对量化变换系数进行解量化来输出变换系数。解量化器321可以将量化变换系数重新布置为二维块的形式。在这种情况下,可以基于已在编码设备中执行的系数扫描的顺序来执行重新布置。解量化器321可以使用量化参数(例如,量化步长信息)对量化变换系数执行解量化,并且获得变换系数。

解量化器322通过对变换系数进行逆变换来获得残差信号(残差块、残差样本阵列)。

预测器可以对当前块执行预测,并且生成包括针对当前块的预测样本的预测块。预测器可以基于从熵解码器310输出的关于预测的信息来确定向当前块应用帧内预测还是帧间预测,并且具体地可以确定帧内/帧间预测模式。

预测器可以基于各种预测方法来生成预测信号。例如,预测器可以将帧内预测或帧间预测应用于对一个块的预测,并且也可以同时应用帧内预测和帧间预测。这可以被称为组合的帧间和帧内预测(CIIP)。另外,预测器可以针对块的预测执行块内复制(IBC)。块内复制可以被用于诸如屏幕内容编码(SCC)这样的游戏等的内容图像/视频编码。尽管IBC基本上在当前块中执行预测,但是其执行方式与帧间预测的相似之处在于,它推导当前块中的参考块。也就是说,IBC可以使用本公开中描述的帧间预测技术中的至少一种。

帧内预测器331可以通过参考当前图片中的样本来预测当前块。根据预测模式,参考样本可以位于当前块的附近或与当前块分开。在帧内预测中,预测模式可以包括多种非定向模式和多种定向模式。帧内预测器331可以通过使用应用于邻近块的预测模式来确定应用于当前块的预测模式。

帧间预测器332可以基于参考图片上的运动向量所指定的参考块(参考样本阵列)来推导针对当前块的预测块。此时,为了减少在帧间预测模式下发送的运动信息的量,可以基于邻近块与当前块之间的运动信息的相关性以块、子块或样本为基础来预测运动信息。运动信息可以包括运动向量和参考图片索引。运动信息还可以包括帧间预测方向(L0预测、L1预测、Bi预测等)信息。在帧间预测的情况下,邻近块可以包括当前图片中存在的空间邻近块和参考图片中存在的时间邻近块。例如,帧间预测器332可以基于邻近块来配置运动信息候选列表,并且基于接收到的候选选择信息来推导当前块的运动向量和/或参考图片索引。可以基于各种预测模式来执行帧间预测,并且关于预测的信息可以包括指示针对当前块的帧间预测的模式的信息。

加法器340可以通过将所获得的残差信号与从预测器330输出的预测信号(预测块、预测样本阵列)相加来生成重构信号(重构图片、重构块、重构样本阵列)。当如在应用跳变模式的情况下一样没有针对处理目标块的残差时,可以将预测块用作重构块。

加法器340可以被称为重构器或重构块生成器。所生成的重构信号可以被用于当前块中的下一处理目标块的帧内预测,并且如随后描述的,可以通过滤波来输出或者被用于下一图片的帧间预测。

此外,在图片解码处理中,可以应用具有色度缩放的亮度映射(LMCS)。

滤波器350可以通过向重构后的信号应用滤波来改善主观/客观视频质量。例如,滤波器350可以通过向重构图片应用各种滤波方法来生成修改后的重构图片,并且可以将修改后的重构图片发送到存储器360中,尤其是发送到存储器360的DPB中。各种滤波方法可以包括例如解块滤波、样本自适应偏移、自适应环形滤波器、双边滤波器等。

已存储在存储器360的DPB中的(修改后的)重构图片可以被用作帧间预测器332中的参考图片。存储器360可以存储从中已推导(或解码了)运动信息的当前图片中的块的运动信息和/或已经重构的图片中的块的运动信息。所存储的运动信息可以被发送到帧间预测器332,以被用作邻近块的运动信息或时间邻近块的运动信息。存储器360可以存储当前图片中的重构块的重构样本,并且将它们发送到帧内预测器331。

在本说明书中,在解码设备300的预测器330、解量化器321、逆变换器322和滤波器350中描述的示例可以分别类似地或对应地应用于编码设备200的预测器220、解量化器234、逆变换器235和滤波器260。

如上所述,执行预测,以便提高执行视频编码时的压缩效率。据此,可以生成包括针对作为编码目标块的当前块的预测样本的预测块。这里,预测块包括空间域(或像素域)中的预测样本。可以在编码设备和解码设备中相同地推导预测块,并且编码设备可以通过向解码设备发信号通知并非原始块本身的原始样本值而是关于原始块与预测块之间的残差的信息(残差信息)来提高图像编码效率。解码设备可以基于残差信息来推导包括残差样本的残差块,通过将残差块与预测块相加来生成包括重构样本的重构块,并且生成包括重构块的重构图片。

可以通过变换过程和量化过程来生成残差信息。例如,编码设备可以推导原始块与预测块之间的残差块,通过对残差块中所包括的残差样本(残差样本阵列)执行变换过程来推导变换系数,并且通过对变换系数执行量化过程来推导量化变换系数,使得它可以(通过比特流)向解码设备发信号通知关联的残差信息。这里,残差信息可以包括量化变换系数的值信息、位置信息、变换技术、变换核、量化参数等。解码设备可以基于残差信息来执行量化/解量化过程并且推导残差样本(或残差样本块)。解码设备可以基于预测块和残差块来生成重构块。编码设备可以通过对量化变换系数进行解量化/逆变换来推导残差块以便作为下一个图片的帧间预测的参考,并且可以基于此来生成重构图片。

图4示意性地例示根据本公开的实施方式的多变换技术。

参照图4,变换器可以对应于前述图2的编码设备中的变换器,并且逆变换器可以对应于前述图2的编码设备中的逆变换器、或者图3的解码设备中的逆变换器。

变换器可以通过基于残差块中的残差样本(残差样本阵列)执行一次变换来推导(一次)变换系数(S410)。该一次变换可以被称为核心变换。在本文中,一次变换可以基于多变换选择(MTS),并且当将多变换用作一次变换时,可以将其称为多核心变换。

多核心变换可以表示附加地使用离散余弦变换(DCT)类型2和离散正弦变换(DST)类型7、DCT类型8和/或DST类型1进行变换的方法。也就是说,多核心变换可以表示基于从DCT类型2、DST类型7、DCT类型8和DST类型1当中选择的多个变换核将空间域的残差信号(或残差块)变换为频域的变换系数(或一次变换系数)的变换方法。在本文中,从变换器的视角来看一次变换系数可以称为临时变换系数。

换句话说,当应用常规变换方法时,可以通过基于DCT类型2对残差信号(或残差块)应用从空间域到频率域的变换来生成变换系数。与此不同,当应用多核心变换时,可以通过基于DCT类型2、DST类型7、DCT类型8和/或DST类型1对残差信号(或残差块)应用从空间域到频率域的变换来生成变换系数(或一次变换系数)。在本文中,DCT类型2、DST类型7、DCT类型8和DST类型1可以被称为变换类型、变换核或变换核心。

作为参考,可以基于基函数来限定DCT/DST变换类型,并且基函数可以如下表所示。

[表1]

如果执行多核心变换,则可以从变换核当中选择用于目标块的垂直变换核心和水平变换核心,可以基于垂直变换核对目标块执行垂直变换,并且可以基于水平变换核对目标块执行水平变换。这里,水平变换可以表示针对目标块的水平分量的变换,并且垂直变换可以表示针对目标块的垂直分量的变换。可以基于包括残差块的目标块(CU或子块)的预测模式和/或变换索引来适应性地确定垂直变换核心/水平变换核心。

此外,根据示例,如果通过应用MTS来执行一次变换,则可以通过将特定基函数设置为预定值并组合要在垂直变换或水平变换中应用的基函数来设置变换核的映射关系。例如,当水平变换核表示为trTypeHor,并且垂直方向变换核表示为trTypeVer时,可以将值为0的trTypeHor或trTypeVer设置给DCT2,将值为1的trTypeHor或trTypeVer设置给DST7,并且将值为2的trTypeHor或trTypeVer可以设置给DCT8。

在这种情况下,MTS索引信息可以被编码并且发信号通知到解码设备以指示多个变换核集中的任何一个。例如,MTS索引0可以指示trTypeHor和trTypeVer值均为0,MTS索引1可以指示trTypeHor和trTypeVer值均为1,MTS索引2可以指示trTypeHor值为2并且trTypeVer值为1,MTS索引为3可以指示trTypeHor值为1并且trTypeVer值为2,而MTS索引4可以指示trTypeHor和trTypeVer值均为2。

变换器可以通过基于(一次)变换系数执行二次变换来推导修改的(二次)变换系数(S420)。一次变换是从空间域到频域的变换,而二次变换是指通过使用(一次)变换系数之间存在的相关性,变换为更具压缩性的表示。二次变换可以包括不可分离的变换。在这种情况下,二次变换可以称为不可分离的二次变换(NSST)或模式相关的不可分离的二次变换(MDNSST)。不可分离的二次变换可表示这样的变换,其通过基于不可分离的变换矩阵对通过一次变换推导出的(一次)变换系数进行二次变换来生成针对残差信号的修改的变换系数(或二次变换系数)。此时,垂直变换和水平变换可以不单独应用于(一次)变换系数(或者水平变换和垂直变换可以不独立应用),但是可以基于不可分离的变换一次地应用变换矩阵。换句话说,不可分离的二次变换可以表示这样的变换方法,其中,(一次)变换系数的垂直分量和水平分量不分离,并且例如,将二维信号(变换系数)通过某个确定的方向(例如,行第一方向或列第一方向)重新布置为一维信号,然后基于不可分离的变换矩阵生成修改的变换系数(或二次变换系数)。例如,根据行优先顺序,M×N个块以第一行、第二行、…和第N行的顺序设置成排。根据列优先顺序,M×N个块以第一列、第二列、…和第N列的顺序设置成排。不可分离的二次变换可以应用于配置有(一次)变换系数的块(在下文中,可以称为变换系数块)的左上区域。例如,如果变换系数块的宽度(W)和高度(H)均等于或大于8,则可以将8×8不可分离的二次变换应用于变换系数块的左上8×8区域。此外,如果变换系数块的宽度(W)和高度(H)均等于或大于4,并且变换系数块的宽度(W)或高度(H)小于8,那么可以将4×4不可分离的二次变换应用于变换系数块的左上min(8,W)×min(8,H)区域。然而,实施方式不限于此,并且例如,即使仅满足变换系数块的宽度(W)或高度(H)等于或大于4的条件,4×4不可分离的二次变换也可以应用于变换系数块的左上min(8,W)×min(8,H)区域。

具体地,例如,如果使用4×4输入块,则不可分离的二次变换可以如下执行。

4×4输入块X可以表示如下。

[式1]

如果X以向量的形式表示,则向量

[式2]

在式2中,向量

在这种情况下,可以如下计算不可分离的二次变换。

[式3]

在此式中,

通过前述式3,可以推导16×1变换系数向量

此外,在不可分离的二次变换中,可以将变换核(或变换核心、变换类型)选择为模式相关。在这种情况下,模式可以包括帧内预测模式和/或帧间预测模式。

如上所述,可以基于以变换系数块的宽度(W)和高度(H)为基础确定的8×8变换或4×4变换来执行不可分离的二次变换。8×8变换是指当W和H二者都等于或大于8时可应用于变换系数块中包含的8×8区域的变换,并且8×8区域可以是变换系数块中的左上8×8区域。类似地,4×4变换是指当W和H二者都等于或大于4时可应用于变换系数块中包含的4×4区域的变换,并且4×4区域可以是变换系数块中的左上4×4区域。例如,8×8变换核矩阵可以是64×64/16×64矩阵,而4×4变换核矩阵可以是16×16/8×16矩阵。

这里,为了选择基于模式的变换核,针对用于8×8变换和4×4变换二者的不可分离的二次变换,可以每个变换集配置三个不可分离的二次变换核,并且可以存在35个变换集。也就是说,可以针对8×8变换配置35个变换集,并且可以针对4×4变换配置35个变换集。在这种情况下,可以在针对8×8变换的35个变换集中的每个变换集中包含三个8×8变换核,并且可以在针对4×4变换的35个变换集中的每个变换集中包括三个4×4变换核。上面提及的每个集中的变换的大小、集的数量、以及变换核的数量仅用于说明。替代地,可以使用除8×8或4×4之外的大小,可以配置n个集,并且在每个集中可以包括k个变换核。

变换集可以被称为NSST集,并且NSST集中的变换核可以被称为NSST核。例如,可以基于目标块(CU或子块)的帧内预测模式来执行来自变换集当中的特定集的选择。

为了参照,作为示例,帧内预测模式可以包括两个非定向(或非角度)帧内预测模式和65个定向(或角度)帧内预测模式。非定向帧内预测模式可以包括0号平面帧内预测模式和1号DC帧内预测模式,并且定向帧内预测模式可以包括在2号帧内预测模式与66号帧内预测模式之间的65个帧内预测模式。然而,这是示例,并且本公开可以应用于帧内预测模式的数量不同的情况。此外,根据情况,可以进一步使用67号帧内预测模式,并且67号帧内预测模式可以表示线性模型(LM)模式。

图5例示性地例示了65个预测方向的帧内定向模式。

参照图5,基于具有左上对角线预测方向的34号帧内预测模式,可以对具有水平方向性的帧内预测模式和具有垂直方向性的帧内预测模式进行分类。图5的H和V分别是指水平方向性和垂直方向性,并且序号-32至32指示在样本网格位置上以1/32为单位的位移。这可以代表模式索引值的偏移。2号至33号帧内预测模式具有水平方向性,而34号至66号帧内预测模式具有垂直方向性。此外,严格来说,34号帧内预测模式可以被认为既不是水平的也不是垂直的,但是就确定二次变换的变换集而言,可以将其分类为属于水平方向性。这是因为输入数据被转置为用于基于34号帧内预测模式对称的垂直方向模式,并且用于水平模式的输入数据对齐方法被用于34号帧内预测模式。转置输入数据是指将二维块数据M×N的行和列转变为N×M数据。18号帧内预测模式和50号帧内预测模式可以分别表示水平帧内预测模式和垂直帧内预测模式,并且2号帧内预测模式可以被称为右上对角线帧内预测模式,因为它有左参考像素,并且在右上方向上预测。以相同的方式,34号帧内预测模式可以被称为右下对角线帧内预测模式,而第66号帧内预测模式可以被称为左下对角线帧内预测模式。

在这种情况下,例如,35个变换集与帧内预测模式之间的映射可以如下表所示。作为参考,如果将LM模式应用于目标块,则可以不将二次变换应用于目标块。

[表2]

此外,如果确定要使用特定集,则可以通过不可分离的二次变换索引来选择特定集中的k个变换核之一。编码设备可以基于率失真(RD)校验来推导指示特定变换核的不可分离的二次变换索引,并且可以将不可分离的二次变换索引发信号通知给解码设备。解码设备可以基于不可分离的二次变换索引从特定集中的k个变换核当中选择一个。例如,NSST索引值0可以指示第一不可分离的二级变换核,NSST索引值1可以指示第二不可分离的二次变换核,NSST索引值2可以指示第三不可分离的二次变换核。另选地,NSST索引值0可以指示第一不可分离的二次变换没有被应用于目标块,并且NSST索引值1至3可以指示三个变换核。

返回参照图4,变换器可以基于所选择的变换核来执行不可分离的二次变换,并且可以获得修改的(二次)变换系数。如上所述,修改的变换系数可以被推导为通过量化器量化的变换系数,并且可以被编码并发信号通知给解码设备,并且被传送到编码设备中的解量化器/逆变换器。

此外,如上所述,如果省略了二次变换,则可以将作为一次(可分离的)变换的输出的(一次)变换系数推导为如上所述通过量化器量化的变换系数,并且可以被编码并发信号通知给解码设备,并传送到编码设备中的解量化器/逆变换器。

逆变换器可以与在上述变换器中已经执行的顺序相反的顺序执行一系列过程。逆变换器可以接收(解量化的)变换系数,并且通过执行二次(逆)变换来推导(一次)变换系数(S450),并且可以通过对(一次)变换系数执行一次(逆)变换来获得残差块(残差样本)(S460)。就此而言,从逆变换器的视角来看,一次变换系数可以被称为修改的变换系数。如上所述,编码设备和解码设备可以基于残差块和预测块来生成重构块,并且可以基于重构块来生成重构图片。

解码设备还可以包括二次逆变换应用确定器(或用于确定是否应用二次逆变换的元件)和二次逆变换确定器(或用于确定二次逆变换的元件)。二次逆变换应用确定器可以确定是否应用二次逆变换。例如,二次逆变换可以是NSST或RST,并且二次逆变换应用确定器可以基于通过解析比特流而获得的二次变换标志来确定是否应用二次逆变换。在另一示例中,二次逆变换应用确定器可以基于残差块的变换系数来确定是否应用二次逆变换。

二次逆变换确定器可以确定二次逆变换。在这种情况下,二次逆变换确定器可以基于根据帧内预测模式指定的NSST(或RST)变换集来确定应用于当前块的二次逆变换。在实施方式中,可以取决于一次变换确定方法来确定二次变换确定方法。可以根据帧内预测模式来确定一次变换和二次变换的各种组合。此外,在示例中,二次逆变换确定器可以基于当前块的大小来确定应用二次逆变换的区域。

此外,如上所述,如果省略二次(逆)变换,则可以接收(解量化的)变换系数,可以执行一次(可分离的)逆变换,并且可以获得残差块(残差样本)。如上所述,编码设备和解码设备可以基于残差块和预测块来生成重构块,并且可以基于重构块来生成重构图片。

此外,在本公开中,可以在NSST的概念中应用其中减小了变换矩阵(核)的大小的缩减二次变换(RST),以便减少不可分离的二次变换所需的计算量和存储量。

此外,本公开中描述的变换核、变换矩阵以及构成变换核矩阵的系数,即,核系数或矩阵系数,可以以8比特来表示。这可以是在解码设备和编码设备中实现的条件,并且与现有的9比特或10比特相比,可以减少存储变换核所需的存储量,并且可以合理地适应性能劣化。另外,以8比特表示核矩阵可以允许使用小的乘法器,并且可以更适合于用于最佳软件实现的单指令多数据(SIMD)指令。

在本说明书中,术语“RST”可以是指基于大小根据缩减因子而减小的变换矩阵来对目标块的残差样本执行的变换。在执行缩减变换的情况下,由于变换矩阵的大小的减小,可以减少变换所需的计算量。也就是说,RST可以用于解决在大小大的块的变换或不可分离的变换时发生的计算复杂性问题。

RST可以被称为诸如缩减变换、缩减二次变换、缩小变换、简化变换和简单变换等之类的各种术语,并且RST可以被称为的名称不限于所列示例。另选地,由于RST主要在变换块中的包括非零系数的低频区域中执行,因此它可以被称为低频不可分离的变换(LFNST)。

此外,当基于RST执行二次逆变换时,编码设备200的逆变换器235和解码设备300的逆变换器322可以包括:逆缩减二次变换器,其基于变换系数的逆RST来推导修改的变换系数;以及逆一次变换器,其基于修改的变换系数的逆一次变换来推导目标块的残差样本。逆一次变换是指应用于残差的一次变换的逆变换。在本公开中,基于变换推导变换系数可以是指通过应用变换来推导变换系数。

图6是例示根据本公开的实施方式的RST的图。

在本说明书中,术语“目标块”可以指在其上执行编码的当前块或残差块。

在根据示例的RST中,可以将N维向量映射到位于另一个空间中的R维向量,从而可以确定缩减变换矩阵,其中R小于N。N可以是指应用了变换的块的侧边的长度的平方,或与应用了变换的块相对应的变换系数的总数,并且缩减因子可以是指R/N值。缩减因子可以被称为缩减因子、缩小因子、简化因子、简单因子或其它各种术语。此外,R可以被称为缩减系数,但是根据情况,缩减因子可以是指R。此外,根据情况,缩减因子可以是指N/R值。

在示例中,可以通过比特流来用信号通知缩减因子或缩减系数,但是示例不限于此。例如,可以在编码设备200和解码设备300中的每一个中存储针对缩减因子或缩减系数的预定值,并且在这种情况下,可以不单独发信号通知缩减因子或缩减系数。

根据示例的缩减变换矩阵的大小可以是小于N×N(常规变换矩阵的大小)的R×N,并且可以如下面的式4所限定。

[式4]

图6的(a)中所示的缩减变换块中的矩阵T可以是指式4的矩阵T

在示例中,如果应用了变换的块的大小是8×8并且R=16(即,R/N=16/64=1/4),则根据图6的(a)的RST可以被表示为以下式5所示的矩阵运算。在这种情况下,存储和乘法计算可以通过缩减因子缩减至大约1/4。

在本文档中,矩阵运算可以理解为通过将矩阵放置在列向量的左侧以使矩阵与列向量相乘来获得列向量的运算。

[式5]

在式5中,r

[式6]

作为式6的计算的结果,可以推导目标块的变换系数c

当从变换矩阵的大小的视角考虑时,常规变换矩阵的大小为64×64(N×N),但缩减变换矩阵的大小缩减为16×64(R×N),因此与执行常规变换的情况相比,执行RST的情况下的存储使用率可以减小R/N比率。另外,当与使用常规变换矩阵的情况下的乘法计算的数量N×N相比时,使用缩减变换矩阵可以将乘法计算的数量(R×N)减小R/N比率。

在示例中,编码设备200的变换器232可以通过对目标块的残差样本执行一次变换和基于RST的二次变换来推导目标块的变换系数。这些变换系数可以被传送到解码设备300的逆变换器,并且解码设备300的逆变换器322可以基于针对变换系数的逆缩减二次变换(RST)来推导修改的变换系数,并且可以基于针对修改的变换系数的逆一次变换来推导目标块的残差样本。

根据示例的逆RST矩阵T

图6的(b)所示的缩减逆变换块中的矩阵T

更具体地,当逆RST被用作二次逆变换时,当逆RST矩阵T

在示例中,如果应用逆变换的块的大小是8×8并且R=16(即,R/N=16/64=1/4),则根据图6的(b)的RST可以被表示为以下式7所示的矩阵运算。

[式7]

在式7中,c

[式8]

作为式8的计算的结果,可以推导表示目标块的修改的变换系数或目标块的残差样本的r

表2所示的变换集配置也可以应用于8×8RST。也就是说,可以根据表2中的变换集来应用8×8RST。由于根据帧内预测模式,一个变换集包括两个或三个变换(核),因此可以将其配置为选择包括在不应用二次变换的情况下在内的至多四个变换中的一个。在不应用二次变换的变换中,可以考虑应用恒等矩阵(identity matrix)。假设分别将索引0、1、2和3分配给四个变换(例如,可以将索引0分配给应用恒等矩阵的情况,即,不应用二次变换的情况),可以针对每个变换系数块发信号通知作为语法元素的NSST索引,由此指定要应用的变换。也就是说,通过NSST索引,可以为左上8×8块指定8×8NSST,并可以在RST配置中指定8×8RST。8×8NSST和8×8RST是指当要变换的目标块的W和H均等于或大于8时可应用于变换系数块中包括的8×8区域的变换,并且8×8区域可以是变换系数块中的左上8×8区域。类似地,4×4NSST和4×4RST是指当目标块的W和H均等于或大于4时可应用于变换系数块中包括的4×4区域的变换,并且4×4区域可以是变换系数块中的左上4×4区域。

如果应用了式4中所示的(正向)8×8RST,则生成16个有效变换系数。因此,考虑到形成8×8区域的64条输入数据被缩减为16条输出数据,并且从二维区域的角度来看,仅该区域的1/4被有效变换系数填充。因此,通过应用正向8×8RST获得的16条输出数据可以沿从1至16的对角线方向扫描顺序填充图7所示的块的左上区域(变换系数1至16,即通过式6或的c

图7是例示根据本公开的实施方式的变换系数扫描顺序的图。如上所述,当正向扫描顺序从第一变换系数开始时,可以在正向扫描顺序中从第64到第17变换系数按图7所示的箭头指示的方向和顺序执行反向扫描。

在图7中,左上4×4区域是填充有有效变换系数的兴趣区域(ROI),其余区域为空。默认情况下,空区域可以用0填充。

也就是说,当将具有16×64正向变换矩阵的8×8RST应用于8×8区域时,输出变换系数可以布置在左上4×4区域中,并且根据图7的扫描顺序可以将不存在输出变换系数的区域填充为0(从第64到第17变换系数)。

如果在图7的ROI之外发现非零有效变换系数,则确定尚未应用8×8RST,因此可以省略NSST索引编码。相反,如果在图7的ROI之外未发现非零变换系数(例如,如果在应用8×8RST的情况下在ROI之外的区域中将变换系数设置为0),则很可能已经应用了8×8RST,因此可以执行NSST索引编码。由于有必要检查是否存在非零变换系数,因此可以在残差编码处理之后执行该有条件的NSST索引编码。

本公开公开了用于优化RST的设计和关联的方法,该RST的设计和关联可以从本实施方式中描述的RST结构应用于4×4块。一些概念不仅可以应用于4×4RST,而且可以应用于8×8RST或其它类型的变换。

图8是例示根据本公开的实施方式的逆RST处理的流程图。

图8中公开的每个操作可以由图3所示的解码设备300来执行。具体地,S800可以由图3所示的解量化器321执行,并且S810和S820可以由图3所示的逆变换器322来执行。因此,对与上述参照图3所述的内容重叠的特定细节的说明将被省略或简述。在本公开中,RST可以被应用于正向变换,并且逆RST可以是指被应用于反向变换。

在实施方式中,根据逆RST的特定操作与根据RST的特定操作不同之处可以仅在于它们的操作顺序彼此相反,并且根据逆RST的特定操作可以基本上是类似于根据RST的特定操作。因此,本领域技术人员将容易理解,以下描述的用于逆RST的S800至S820的描述可以以相同或相似的方式应用于RST。

根据实施方式的解码设备300可以通过对目标块的量化变换系数执行解量化来推导变换系数(S800)。

解码设备300可以在逆二次变换之前确定是否应用逆二次变换。例如,逆二次变换可以是NSST或RST。例如,解码设备可以基于从比特流解析的二次变换标志来确定是否应用逆二次变换。在另一示例中,解码设备可以基于残差块的变换系数来确定是否应用逆二次变换。

解码设备300可以确定逆二次变换。在这种情况下,解码设备300可以基于根据帧内预测模式指定的NSST(或RST)变换集来确定应用于当前块的二次逆变换。在实施方式中,可以取决于一次变换确定方法来确定二次变换确定方法。例如,可以确定仅当将DCT-2用作一次变换中的变换核时才应用RST或LFNST。另选地,可以根据帧内预测模式来确定一次变换和二次变换的各种组合。

此外,在示例中,解码设备300可以在确定逆二次变换之前,基于当前块的大小来确定对其应用逆二次变换的区域。

根据实施方式的解码设备300可以选择变换核(S810)。更具体地,解码设备300可以基于关于变换索引、应用了变换的区域的宽度和高度、在图像解码中使用的帧内预测模式、以及目标块的颜色分量的信息中的至少一项来选择变换核。然而,示例不限于此,例如,可以预先定义变换核,并且可以不发信号通知用于选择变换核的单独信息。

在一个示例中,可以通过CIdx指示关于目标块的颜色分量的信息。如果目标块是亮度块,则CIdx可以指示0,并且如果目标块是色度块(例如,Cb块或Cr块),则CIdx可以指示非零值(例如,1)。

根据实施方式的解码设备300可以基于选择的变换核和缩减因子将逆RST应用于变换系数(S820)。

在下文中,提出了根据本公开的实施方式的考虑帧内预测模式和块的大小的确定二次NSST集(即,二次变换集或变换集)的方法。

在实施方式中,可以基于上述帧内预测模式来配置用于当前变换块的集,由此将包括具有各种大小的变换核的变换集应用于变换块。表3中的变换集使用表4中的0到3表示。

[表3]

[表4]

表3中所示的索引0、2、18和34分别对应于表4中的0、1、2和3。在表3和表4中,仅使用四个变换集而不是35个变换集,从而显著减少了存储器空间。

可以包括在每个变换集中的变换核矩阵的各种数量可以设置为如下表所示。

[表5]

[表6]

[表7]

根据表5,两个可用的变换核用于每个变换集,因此变换索引的范围是0到2。

根据表6,两个可用的变换核用于变换集0(即,根据帧内预测模式中的DC模式和平面模式的变换集),并且一个变换核用于每个其余变换集。这里,用于变换集1的可用变换索引的范围是0到2,而用于其余变换集1到3的变换索引的范围是0到1。

根据表7,一个可用的变换核用于每个变换集,因此变换索引的范围是0到1。

在表3的变换集映射中,可以使用总共四个变换集,并且可以将四个变换集重新布置以通过索引0、1、2和3进行区分,如表4所示。表8和表9例示了可用于二次变换的四个变换集,其中表8呈现了可应用于8×8块的变换核矩阵,而表9呈现了可应用于4×4块的变换核矩阵。表8和表9每个变换集包括两个变换核矩阵,并且两个变换核矩阵可以应用于表5中所示的所有帧内预测模式。

[表8]

/>

/>

/>

/>

/>

/>

/>

[表9]

/>

/>

/>

/>

/>

/>

/>

表8中所示的所有例示性变换核矩阵都是乘以作为缩放值的128的变换核矩阵。在表8的矩阵阵列中存在的g_aiNsst8×8[N1][N2][16][64]阵列中,N1表示变换集的数量(N1为4或35,由索引0、1、…和N1-1区分),N2表示各个变换集中包括的变换核矩阵的数量(1或2),而[16][64]表示16×64缩减二次变换(RST)。

如表3和表4所示,当变换集包括一个变换核矩阵时,可以将第一变换核矩阵或第二变换核矩阵用于表8中的变换集。

虽然在应用RST时输出16个变换系数,但是当仅应用16×64矩阵的m×64部分时,可以仅输出m个变换系数。例如,当通过设置m=8并且仅乘以来自上部的8×64矩阵而仅输出八个变换系数时,可以将计算量减少一半。为了在最坏的情况下减少计算量,可以将8×64矩阵应用于8×8变换单元(TU)。

可应用于8×8区域的m×64变换矩阵(m≤16,例如,表8中的变换核矩阵)接收64条数据并生成m个系数。也就是说,如式5中所示,当64条数据形成64×1向量时,通过将m×64矩阵和64×1向量依次相乘来生成m×1向量。这里,形成8×8区域的64条数据可以被适当地布置以形成64×1向量。例如,如表10中所示,数据可以按在8×8区域中的相应位置处指示的索引的顺序来布置。

[表10]

如表10中所示,数据沿行第一方向被布置在8×8区域中以用于二次变换。此顺序是指其中二维数据被一维地布置以用于二次变换(具体地,RST或LFNST)的顺序,并且可以应用于在编码设备中执行的正向二次变换。因此,在由编码设备的逆变换器或解码设备的逆变换器执行的逆二次变换中,作为变换的结果而生成的变换系数(即,一次变换系数)可以如表10中所示地二维地布置。

当如图5中所示存在67个帧内预测模式时,所有定向模式(模式2至模式66)关于模式34对称地配置。也就是说,模式(2+n)在预测方向方面关于模式34与模式(66-n)对称(0≤n≤31)。因此,如果用于配置模式(2+n)(即,模式2至33)的64×1输入向量的数据布置顺序对应于表10中所示的行第一方向,则可以按表11中所示的顺序来配置用于模式(66-n)的64×1输入向量。

[表11]

如表11中所示,数据沿列第一方向被布置在8×8区域中以用于二次变换。此顺序是指其中二维数据被一维地布置以用于二次变换(具体地,RST或LFNST)的顺序,并且可以应用于在编码设备中执行的正向二次变换。因此,在由编码设备的逆变换器或解码设备的逆变换器执行的逆二次变换中,作为变换的结果而生成的变换系数(即,一次变换系数)可以如表11中所示地二维地布置。

表11示出,对于帧内预测模式(66-n)(即,对于模式35至66),64×1输入向量可以根据列第一方向进行配置。

总之,可以在对称地布置根据行第一方向的模式(2+n)的输入数据和根据列第一方向的模式(66-n)(0≤n≤31)的输入数据的同时应用表8中所示的相同变换核矩阵。要应用于每一模式的变换核矩阵在表5至表7中示出。这里,表10中所示的布置顺序或表11中所示的布置顺序可以应用于帧内预测模式0的平面模式、帧内预测模式1的DC模式和帧内预测模式34。例如,对于帧内预测模式34,可以如表10中所示根据行第一方向来布置输入数据。

根据另一示例,表9中所示的可应用于4×4区域的所有例示性变换核矩阵都是乘以作为缩放值的128的变换核矩阵。在表9的矩阵阵列中存在的g_aiNsst4×4[N1][N2][16][64]阵列中,N1表示变换集的数量(N1为4或35,由索引0、1、…和N1-1区分),N2表示各个变换集中包括的变换核矩阵的数量(1或2),[16][16]表示16×16变换。

如表3和表4所示,当变换集包括一个变换核矩阵时,可以将第一变换核矩阵或第二变换核矩阵用于表9中的变换集。

如在8×8RST中一样,当仅应用16×16矩阵的m×16部分时,可以仅输出m个变换系数。例如,当通过设置m=8并且仅乘以来自上部的8×16矩阵而仅输出八个变换系数时,可以将计算量减少一半。为了在最坏的情况下减少计算量,可以将8×16矩阵应用于4×4变换单元(TU)。

基本上,表9中列出的可应用于4×4区域的变换核矩阵可以应用于4×4TU、4×MTU和M×4TU(M>4,4×M TU和M×4TU可以被划分为4×4的区域,每个指定的变换核矩阵都可以应用到该区域,或者变换核矩阵可以仅应用于最大左上4×8或8×4区域),或者可以仅应用于左上4×4区域。如果将二次变换配置为仅应用于左上4×4区域,则可能不需要表8中所示的可应用于8×8区域的变换核矩阵。

可应用于4×4区域的m×16变换矩阵(m≤16,例如,表9中的变换核矩阵)接收16条数据并生成m个系数。也就是说,当16条数据形成16×1向量时,通过将m×16矩阵和16×1向量依次相乘来生成m×1向量。这里,形成4×4区域的16条数据可以被适当地布置以形成16×1向量。例如,如表12中所示,数据可以按在4×4区域中的相应位置处指示的索引的顺序来布置。

[表12]

如表12中所示,数据沿行第一方向被布置在4×4区域中以用于二次变换。此顺序是指其中二维数据被一维地布置以用于二次变换(具体地,RST或LFNST)的顺序,并且可以应用于在编码设备中执行的正向二次变换。因此,在由编码设备的逆变换器或解码设备的逆变换器执行的逆二次变换中,作为变换的结果而生成的变换系数(即,一次变换系数)可以如表12中所示地二维地布置。

当如图5中所示存在67个帧内预测模式时,所有定向模式(模式2至模式66)关于模式34对称地配置。也就是说,模式(2+n)在预测方向方面关于模式34与模式(66-n)对称(0≤n≤31)。因此,如果用于配置模式(2+n)(即,模式2至33)的16×1输入向量的数据布置顺序对应于表12中所示的行第一方向,则可以按表13中所示的顺序来配置用于模式(66-n)的16×1输入向量。

[表13]

如表13中所示,数据沿列第一方向被布置在4×4区域中以用于二次变换。此顺序是指其中二维数据被一维地布置以用于二次变换(具体地,RST或LFNST)的顺序,并且可以应用于在编码设备中执行的正向二次变换。因此,在由编码设备的逆变换器或解码设备的逆变换器执行的逆二次变换中,作为变换的结果而生成的变换系数(即,一次变换系数)可以如表13中所示地二维地布置。

表13示出,对于帧内预测模式(66-n)(即,对于模式35至66),16×1输入向量可以根据列第一方向进行配置。

总之,可以在对称地布置根据行第一方向的模式(2+n)的输入数据和根据列第一方向的模式(66-n)(0≤n≤31)的输入数据的同时应用表9中所示的相同变换核矩阵。要应用于每一模式的变换核矩阵在表5至表7中示出。这里,表12中所示的布置顺序或表13中所示的布置顺序可以应用于帧内预测模式0的平面模式、帧内预测模式1的DC模式和帧内预测模式34。例如,对于帧内预测模式34,可以如表12中所示根据行第一方向来布置输入数据。

另一方面,根据本文档的另一实施方式,对于形成8×8区域的64条数据,不是表8和表9中的最大16×64变换核矩阵,而是可以通过仅选择48条数据来应用最大16×48核矩阵。这里,“最大”意味着对于能够生成m个系数的m×48变换核矩阵,m的最大值是16。

根据本实施方式的16×48变换核矩阵可以表示为如表14中所示。

[表14]

/>

/>

/>

/>

/>

/>

/>

当通过将m×48变换矩阵(m≤16)应用于8×8区域来执行RST时,输入48条数据并且可以生成m个系数。表14示出了当m为16,输入48条数据并且生成16个系数时的变换核矩阵的示例。也就是说,假设48条数据形成48×1向量,则可以通过将16×48矩阵和48×1向量依次相乘来生成16×1向量。此时,形成8×8区域的48条数据可以被适当地布置以形成48×1向量,并且输入数据可以按以下顺序布置。

[表15]

当执行RST时,如表14中所示,当通过应用最大16×48变换核矩阵来执行矩阵运算时,生成16个修改的变换系数,可以根据扫描顺序将16个修改的变换系数布置在左上4×4区域中,并且可以用零填充右下4×4区域和左下4×4区域。表16示出了通过矩阵运算生成的16个修改的变换系数的布置顺序的示例。

[表16]

如表16中所示,在应用最大16×48变换核矩阵时生成的修改的变换系数可以根据扫描顺序填充在左上4×4区域中。在此情况下,左上4×4区域中的每一位置的数量指示扫描顺序。通常,从16×48变换核矩阵的最顶行和48×1输入列向量的内积运算生成的系数是扫描顺序中的第一个。在这种情况下,向下到达底行的方向和扫描顺序可以匹配。例如,从48×1输入列向量与自16×48变换核矩阵中的顶部起的第n行之间的内积运算生成的系数变成扫描顺序中的第n个。

在最大16×48变换核矩阵的情况下,表16的右下的4×4区域是未应用二次变换的区域,因此原始输入数据(一次变换系数)被原样保留,并且右上4×4区域和左下4×4区域中的4×4区域将被填充为零。

另外,根据另一实施方式,也可以应用除了表16中所示的扫描顺序之外的扫描顺序。例如,行第一方向或列第一方向可以作为扫描顺序而被应用。

另外,即使应用表8中所示的16×64变换核矩阵,也同样生成16个变换系数,所以16个变换系数可以按表16中所示的扫描顺序来布置,并且在应用16×64变换核矩阵的情况下,由于使用所有64个(而不是48个)输入数据来执行矩阵运算,所以在除了左上4×4区域之外的所有4×4区域中填充零。同样在此情况下,可以应用如表16中所示的对角线方向的扫描顺序,并且可以应用诸如行第一方向或列第一方向之类的其它扫描顺序。

另一方面,当作为由解码设备执行的逆变换过程而执行逆RST或LFNST时,被应用以逆RST的输入系数数据根据表16的布置顺序由一维向量组成,并且通过将一维向量与来自左边的对应的逆RST矩阵相乘而获得的修改的系数向量可以根据表15中的布置顺序布置在二维块中。

然后,解码设备的逆变换器322可以将变换核矩阵应用于根据表16中的扫描顺序一维布置的变换系数。也就是说,可以通过根据表16中的扫描顺序布置的一维变换系数与基于表14中的变换核矩阵的变换核矩阵之间的矩阵运算来推导48个修改的变换系数。也就是说,可以通过与其中将表14中的变换核矩阵进行转置的矩阵的矩阵运算来将一维变换系数推导成48个修改的变换系数。

以此方式推导的48个修改的变换系数可以如表15中所示地二维地布置以用于逆一次变换。

总之,在变换过程中,当RST或LFNST被应用到8×8区域时,在8×8区域的变换系数当中位于不包括8×8区域中的右下4×4区域的8×8区域中的左上、右上和左下4×4区域中的48个变换系数与16×48变换矩阵核之间执行变换操作。对于矩阵运算,按表15中所示的顺序以一维阵列输入48个变换系数。当执行此矩阵运算时,推导出16个修改的变换系数,并且可以将修改的变换系数以表16中所示的形式布置在8×8区域中的左上区域中。

相反,在逆变换过程中,当将逆RST或LFNST应用到8×8区域时,8×8区域的变换系数当中的与8×8区域的左上对应的16个变换系数根据表16中所示的扫描顺序以一维阵列形式输入,使得在48×16变换核矩阵与16个变换系数之间执行变换操作。也就是说,在此情况下的矩阵运算可以表示为(48×16矩阵)*(16×1变换系数向量)=(48×1修改的变换系数向量)。这里,由于n×1向量可以被解释成与n×1矩阵相同的含义,因此它可以被表示为n×1列向量。此外,*表示矩阵乘法运算。当执行此矩阵运算时,可以推导出48个修改的变换系数,并且可以将48个修改的变换系数布置在8×8区域中的除了右下4×4区域之外的左上、右上和左下4×4区域中,如表15中所示。

此外,根据实施方式,如表15中所示,用于二次变换的8×8区域中的数据布置是按行优先顺序的。当如图5中所示存在67个帧内预测模式时,所有定向模式(模式2至模式66)关于模式34对称地配置。也就是说,模式(2+n)在预测方向方面关于模式34与模式(66-N)对称(0≤n≤31)。因此,如果用于配置模式(2+n)(即,模式2至33)的48×1输入向量的数据布置顺序对应于表15中所示的行第一方向,则可以按表17中所示的顺序来配置用于模式(66-n)的48×1输入向量。

[表17]

如表17中所示,数据沿列第一方向被布置在8×8区域中以用于二次变换。表17示出,对于帧内预测模式(66-n)(即,对于模式35至66),48×1输入向量可以根据列第一方向进行配置。

总之,可以在对称地布置根据行第一方向的模式(2+n)的输入数据和根据列第一方向的模式(66-n)(0≤n≤31)的输入数据的同时应用表14中所示的相同变换核矩阵。要应用于每一模式的变换核矩阵在表5至表7中示出。

这里,表15中所示的布置顺序或表17中所示的布置顺序可以应用于帧内预测模式0的平面模式、帧内预测模式1的DC模式和帧内预测模式34。例如,对于帧内预测模式0的平面模式、帧内预测模式1的DC模式和帧内预测模式34,可以如表15中所示根据行第一方向来布置输入数据并且可以将表16中所示的布置顺序应用于推导出的变换系数。另选地,对于帧内预测模式0的平面模式、帧内预测模式1的DC模式和帧内预测模式34,可以如表17中所示根据列第一方向来布置输入数据并且可以将表16中所示的布置顺序应用于推导出的变换系数。

如上文所描述,当将表14的16×48变换核矩阵应用于二次变换时,如表16中所示,8×8区域中的右上4×4区域和左下4×4区域被零填充。当将m×48(m≤16)变换核矩阵应用于二次变换时,不仅右上4×4区域和左下4×4区域,而且表16中所示的扫描顺序中从第(m+1)个到第16个也可以被零填充。

因此,如果在右上4×4区域或左下4×4区域中或者在扫描顺序中从第(m+1)个位置到第16个位置存在任何非零变换系数,则可以认为未应用m×48二次变换(m≤16)。在此情况下,可以不发信号通知二次变换的索引。解码设备首先解析变换系数且检查对应的条件(即,在变换系数应为0的区域中是否存在非零变换系数)是否被满足,并且如果它被满足,则解码设备可以推断二次变换的索引为零而不解析索引。例如,在m=16的情况下,可以通过检查在右上4×4区域或左下4×4区域中是否存在非零系数来确定是否应用二次变换及是否解析二次变换的索引。

此外,表18示出了可以应用于4×4区域的变换核矩阵的另一示例。

[表18]

/>

/>

/>

为了减少最坏情况下的计算量,可以提出以下实施方式。在本文档中,包括M行和N列的矩阵被表示为M×N矩阵,并且M×N矩阵是指在正向变换中(即,在编码设备执行变换(RST)时)应用的变换矩阵。因此,在由解码设备执行的逆变换(逆RST)中,可以使用通过转置M×N矩阵而获得的N×M矩阵。此外,以下描述了m×64变换核矩阵(m≤16)应用于8×8区域的变换矩阵的情况,但这可以相同地应用于输入向量是48×1并且变换核矩阵为m×48(m≤16)的情况。也就是说,16×64(或m×64)可以被16×48(或m×48)替代。

1)在具有W的宽度和H的高度(其中,W≥8且H≥8)的块(例如,变换单元)的情况下,将可应用于8×8区域的变换核矩阵应用于块的左上8×8区域。在W=8且H=8的情况下,可仅应用16×64矩阵的8×64部分。也就是说,可以生成八个变换系数。另选地,可以应用16×48矩阵的仅8×64部分。也就是说,可以生成8个变换系数。

2)在具有W的宽度和H的高度(其中,W和H之一小于8,即,W和H之一为4)的块(例如,变换单元)的情况下,将可应用于4×4区域的变换核矩阵应用于该块的左上区域。在W=4并且H=4的情况下,可以仅应用16×16矩阵的8×16部分,在这种情况下,生成八个变换系数。

如果(W,H)=(4,8)或(8,4),则仅对左上4×4区域应用二次变换。如果W或H大于8(即,如果W和H之一等于或大于16而另一个为4),则仅对两个左上4×4块应用二次变换。也就是说,仅左上的4×8或8×4区域可以被划分为两个4×4块,并且可以向其应用指定的变换核矩阵。

3)在具有W的宽度和H的高度(其中,W和H均为4)的块(例如,变换单元)的情况下,可以不应用二次变换。

4)在具有宽度W和高度H的块(例如,变换单元)的情况下,通过应用二次变换生成的系数的数量可以保持为变换单元的面积(即,变换单元中包括的像素总数=W×H)的1/4或更小。例如,当W和H都为4时,可以应用16×16矩阵的上部4×16矩阵,使得生成四个变换系数。

假设仅将二次变换应用于整个变换单元(TU)的左上角8×8区域,则需要针对4×8变换单元或8×4变换单元生成八个或更少的系数,因此可以将16×16矩阵的上部8×16矩阵应用于左上4×4区域。最多可以将16×64矩阵(或16×48矩阵)应用于8×8变换单元(最多可生成16个系数)。在4×N或N×4(N≥16)变换单元中,可以将16×16矩阵应用于左上4×4块,或者可以将16×16矩阵的上部8×16矩阵应用于两个左上4×4块。类似地,在4×8变换单元或8×4变换单元中,可以通过将16×16矩阵的上部4×16矩阵应用于两个左上4×4块来生成八个变换系数。

5)应用于4×4区域的二次变换的最大大小可以限制为8×16。在这种情况下,与16×16矩阵相比,可以将存储应用于4×4区域的变换核矩阵所需的存储器的量减少一半。

例如,在表9或表18所示的所有变换核矩阵中,可以通过仅提取每个16×16矩阵的上部8×16矩阵而将最大大小限制为8×16,并且可以将实际的图像编码系统实现为仅存储变换核矩阵的8×16矩阵。

如果最大可应用变换大小为8×16,并且生成一个系数所需的最大乘法数限制为8,则最多8×16矩阵可应用于4×4块,最多8×16矩阵可应用于包括在4×N块或N×4块(N≥8,N=2n,n≥3)中的最多两个左上的两个4×4块中的每一个。例如,可以对4×N块或N×4块(N≥8,N=2n,n≥3)中的一个左上4×4块应用8×16矩阵。

根据实施方式,当编码指定要应用于亮度分量的二次变换的索引时,具体地,当一个变换集包括两个变换核矩阵时,需要指定是否应用二次变换以及哪个变换核矩阵应用于二次变换。例如,当不应用二次变换时,可以将变换索引编码为0,而当应用二次变换时,可以将针对两个变换集的变换索引分别编码为1和2。

在这种情况下,当对变换索引进行编码时,可以使用截短一元编码。例如,可以分别将0、10和11的二进制码分配给变换索引0、1和2,由此对变换索引进行编码。

另外,当通过截短一元编码对变换索引进行编码时,可以将不同的CABAC上下文分配给每个bin。在以上示例中对变换索引0、10和11进行编码时,可以使用两个CABAC上下文。

当编码指定要应用于色度分量的二次变换的变换索引时,具体地,当一个变换集包括两个变换核矩阵时,类似于针对亮度分量对二次变换的变换索引编码时,有必要指定是否应用二次变换以及在二次变换中应用哪个变换核矩阵。例如,当不应用二次变换时,可以将变换索引编码为0,而当应用二次变换时,可以将两个变换集的变换索引分别编码为1和2。

在这种情况下,当对变换索引进行编码时,可以使用截短一元编码。例如,可以分别将0、10和11的二进制码分配给变换索引0、1和2,由此对变换索引进行编码。

另外,当通过截短一元编码对变换索引进行编码时,可以将不同的CABAC上下文分配给每个bin。在以上示例中对变换索引0、10和11进行编码时,可以使用两个CABAC上下文。

根据实施方式,可以根据色度帧内预测模式来分配不同的CABAC上下文集。例如,当色度帧内预测模式被划分为非定向模式(例如,平面模式或DC模式)和其它定向模式(即,分为两组)时,当在上述示例中编码0、10和11时,可以为每个组分配相对应的CABAC上下文集(包括两个上下文)。

当色度帧内预测模式被划分为多个组并且分配了相对应的CABAC上下文集时,有必要在对二次变换的变换索引进行编码之前找出色度帧内预测模式值。然而,在色度直接模式(DM)中,由于照原样使用亮度帧内预测模式值,因此还需要找出亮度分量的帧内预测模式值。因此,当编码关于色度分量的信息时,可能会出现对亮度分量信息的数据依赖。因此,在色度DM中,当在不具有关于帧内预测模式的信息的情况下对二次变换的变换索引进行编码时,可以通过映射到特定组来去除数据依赖。例如,如果色度帧内预测模式是色度DM,则可以使用假定平面模式或DC模式的相应CABAC上下文集来编码变换索引,或者可以假定其它定向模式来应用相应的CABAC上下文集。

在下文中,当考虑诸如RST或LFNST之类的二次变换时,在从通过预测生成的残差信号生成变换系数的正向图像处理中,通过将正向二次变换应用于作为输入的正向一次变换的结果值或正向一次变换的结果向量来生成变换系数。另外,在从通过解量化重构的变换系数生成像素域残差信号的逆图像处理中,通过将逆二次变换应用于作为输入的变换系数或变换系数向量来推导输出值,并且通过将逆一次变换应用于再次作为输入的该输出来推导最终的残差信号。

正向一次变换的输出和逆一次变换的输入可以被定义为具有针对每个元素的一定范围的值。这里,输出和输入可以是二维块,并且元素可以是构成二维块的每个值。

例如,如果输出或输入的每一元素需要被存储在以2补码的形式表示的16比特带符号整数变量中,那么可允许范围限于-2

(1)限制正向二次变换的输出范围

当通过应用正向二次变换来输出M×1向量时,例如,当应用针对8×8块的RST时,可以通过将64×1向量或48×1向量作为输入,将其乘以16×64矩阵或16×48矩阵,然后应用适当的缩放和/或舍入,来输出16×1向量。在此情况下,可以将构成M×1向量的每一M元素限制为具有作为最小值的minFwdSecTr值和作为最大值的maxFwdSecTr值。

下式表示Clip3函数并且可以用于限制每个元素的输出范围。

[式9]

式9中所示的Clip3(x,y,z)函数是收敛标量输入值z的函数,其中x和y分别指示允许的最大值和最小值。因此,如果N个元素中的每一个由z表示,那么可以输出通过将Clip3(maxFwdSecTr,minFwdSecTr,z)应用于每个z而获得的结果值。根据图像处理方面,应用Clip3(maxFwdSecTr,minFwdSecTr,z)的结果也可以被认为是正向二次变换的最终结果。此外,可以由针对每个元素的下式来执行缩放和舍入。

[式10]

y=(x+(1<<(S-1)))>>S

在式10中,x表示输入值,y表示输出值,并且如果二次变换矩阵按128缩放,则可以将S设置为7。

可以如式11中那样设置在正向Clip3(maxFwdSecTr,minFwdSecTr,z)函数中所示的两个变量maxFwdSecTR和minFwdSecTR。

[式11]

maxFwdSccTr=2

minFwdSecTr=-2

当变量如式11中那样被设置时,构成正向二次变换的输出的每个元素可以被存储在以2补码的形式表示的16比特带符号整数变量中。

当元素要被存储在N比特带符号整数变量中时,式11可以被表示为式12。

[式12]

ma×FwdSecTr=2

minFwdSecTr=-2

(2)限制逆二次变换的输出范围

当通过应用逆二次变换来输出M×1向量时,例如,当向8×8块应用RST时,可以通过将64×1向量或48×1向量作为输入,将其乘以16×64矩阵或16×48矩阵,然后应用适当的缩放和/或舍入,来输出16×1向量。在这种情况下,可以将构成M×1向量的每个M元素限制为具有作为最小值的minInvSecTr值和作为最大值的maxInvSecTr值。

也就是说,如果应用式9的Clip3函数,则当M个元素中的每一个由z表示时,可以输出通过将Clip3(maxInvSecTr,minInvSecTr,Z)应用于每个z而获得的结果值。根据图像处理方面,应用Clip3(maxInvSecTr,minInvSecTr,z)的结果可被视为后向二次变换的最终结果。此外,式10可以应用于针对每个元素的缩放和舍入,并且如上所述,如果二次变换矩阵按128缩放,则S可以被设置为7。

逆Clip3(maxInvSecTr,minInvSecTr,z)函数中所示的两个变量maxInvSecTr和minInvSecTr可以如式13中那样设置。

[式13]

maxInvSecTr=2

minInvSecTr=-2

当变量如式13中那样设置时,构成正向二次变换的输出的每个元素可以被存储在以2补码的形式表示的16比特带符号整数变量中。

当元素要存储在N比特带符号整数变量中时,式13可以表示为式14。

[式14]

maxlnvSecTr=2

minlnvSecTr=-2

(1)限制正向二次变换的输出范围以及(2)限制逆二次变换的输出范围二者可以应用于变换过程中,或者可以仅应用它们中的一个。也就是说,可以仅在图像的编码过程中应用正向二次变换的输出范围限制,或者可以仅在解码过程中应用逆二次变换的输出范围限制。

在下文中,例示了采用RST的各种测试的结果。

根据实施方式,进行了不考虑MT相关信息(是否应用MTS和关于MTS核的信息)的信令的测试1至测试4。测试1至测试4的配置如下,并且针对测试的配置的(A)到(D)的细节存在于表19中。

1)测试1:(A)

2)测试2:(A)+(B)

3)测试3:(A)+(B)+(C)

4)测试4:(A)+(B)+(D)

[表19]

测试的结果总结如下。

根据测试1的结果,与其中不应用前述条件的常规情况(例如,VTM锚)相比,测试的结果如下。

根据测试1的结果,与其中不应用前述条件的常规情况(例如,VTM锚)相比,编码时间是128%(AI)、108%(RA)和104%(LD),并且BD率的降低是-1.59%(AI)、-0.88%(RA)和-0.24%(LD)。

根据测试2的结果,与VTM锚相比,编码时间是128%(AI)、108%(RA)和104%(LD),并且BD率的降低是-1.40%(AI)、-0.76%(RA)和-0.21%(LD)。

根据测试3的结果,与VTM锚相比,编码时间是125%(AI)、107%(RA)和103%(LD),并且BD率的降低是-1.25%(AI)、-0.69%(RA)和-0.18%(LD)。

根据测试4的结果,与VTM锚相比,编码时间是129%(AI)、107%(RA)和104%(LD),并且BD率的降低是-1.34%(AI)、-0.71%(RA)和-0.18%(LD)。

测试1、测试2和测试3的存储器使用率被测量为10KB,并且测试4的存储器使用率被测量为8KB。

在这些测试中,针对二次变换提出了四个特征。

1.RST的应用

对于二次变换,应用四个变换集而不是35个变换集,并且在表20中示出了针对四个变换集的存储器映射。将16×64(测试4中的16×48)和16×16变换矩阵分别应用于8×8和4×4块。为方便起见,16×64(或16×48)变换矩阵可被称作RST 8×8,并且16×16变换矩阵可被称作RST 4×4。

[表20]

如上所述,具有缩减因子4(即,减小到1/4大小)的RST 8×8可应用于8×8区域。因此,可应用16×64矩阵,而非具有64×64的大小的典型的8×8不可分离的变换矩阵。也就是说,在解码设备中,64×16逆RST矩阵用于生成8×8区域中的核心变换系数,即,一次变换系数。正向RST 8×8针对8×8块使用16×64或8×64矩阵,因此仅在8×8区域中的左上4×4区域中生成非零系数。也就是说,当应用RST时,除了左上4×4区域之外的8×8区域可以填充有0。在RST 4×4中,针对4×4块执行16×16或8×16矩阵乘法。

仅当满足预定条件时,才有条件地执行逆RST。例如,当块具有等于或大于预设阈值(W≥4并且H≥4)的大小时并且当指示变换跳过模式的变换跳过模式标志为0时,可执行逆RST。

当变换系数块的宽度W及高度H两者大于4时,将逆RST 8×8应用于变换系数块的左上8×8区域。否则,RST 4×4可应用于变换系数块的左上min(8,w)×min(8,H)区域。

为0的RST索引(即,变换索引)可指示未应用RST,否则,可通过变换索引选择变换核。

此外,RST可应用于存在于帧内条带和帧间条带中的帧内编码单元以及用于亮度和色度两者的编码单元。当编码单元的分区类型为双树时,可以发信号通知亮度块和色度块的相应RST索引(变换索引)。对于未应用双树的帧间条带,可以发信号通知一个RST索引并将RST索引应用于亮度块和色度块两者。

当应用RST时,从表20所示的四个变换集中选择用于RST的变换矩阵,并且每个变换集包括两个变换。根据帧内预测模式确定的变换集被不同地表达,如表21所示。在此情况下,当帧内预测模式是三个CCLM模式(INTRA_LT_CCLM、INTRA_T_CCLM和INTRA_L_CCLM)中的任何一个时,选择变换集0,否则可如表21所示地映射变换集。

[表21]

根据表21,范围从-14到-1以及从67到80的帧内预测模式是用于广角帧内预测的变换模式。

2.缩减操作

在最坏的情况下,八个样本的乘法的数量被提出为8或更小。

当使用RST 8×8和RST 4×4时,当所有变换单元包括4×4变换单元或8×8变换单元时发生乘法的最坏情况。因此,矩阵的顶部的8×64和8×16部分(即,每一变换矩阵的顶部上的八个变

换基向量)应用于4×4变换单元或8×8变换单元。

当块大于8×8变换单元时,不发生最坏情况,因此将RST 8×8(例如,16×64矩阵)应用于左上8×8区域。对于8×4变换单元或4×8变换单元(例如,16×16矩阵),RST 4×4仅应用于除了其它4×4区域之外的左上4×4区域,以便防止最坏情况发生。对于4×N或N×4变换单元(N≥16),将RST 4×4应用到两个相邻的4×4区域的每一个。

3.缩减维度中的RST矩阵

在测试4中,在相同的变换集配置中应用16×48变换矩阵,而非16×64变换矩阵。从要变换的块的最上8×8区域中的除了右下4×4块之外的三个4×4块提取48条输入数据。由于维度的缩减,存储所有RST变换矩阵所需的存储器使用率在合理的性能劣化程度的情况下从10KB缩减到8KB。

图9例示根据本公开的实施方式的使用16×48变换矩阵的正向RST 8×8。

如图所示,当对宽度及高度两者都大于8的残差块执行二维正向一次变换时,生成M×N一次变换系数的块。可以将16×48二次变换矩阵应用于一次变换系数的块的左上8×8区域的除了右下4×4块之外的左上、右上和左下4×4块。也就是说,通过16×48变换核与48×1一次变换系数的矩阵乘法来生成16×1二次变换系数。所生成的16个修改的变换系数可以布置在8×8区域的左上4×4区域中,并且8×8区域的右上4×4区域和左下4×4区域可以填充有0。在二次变换中没有应用RST的其余区域原样填充一次变换系数。

每次测试的结果在以下表中示出。

表22至表26示出了其中应用了四个变换集和针对每个变换集的两个变换的测试1的结果。表22至表24示出了其中帧间MTS(MTS到帧间编码单元的应用)关闭的测试的结果,并且表25和表26示出了其中帧间MTS开启的测试的结果。

[表22]

[表23]

[表24]

[表25]

[表26]

表27至表31示出了测试2的结果,其中组合了特征(A)和(B)。表27至表29示出了其中帧间MTS关闭的测试的结果,并且表30和表31示出了其中帧间MTS开启的测试的结果。

[表27]

[表28]

[表29]

[表30]

[表31]

表32至表36示出了其中组合了特征(A)、(B)和(C)的测试3的结果。表32至表34示出了其中帧间MTS关闭的测试的结果,并且表35和表36示出了其中帧间MTS开启的测试的结果。

[表32]

[表33]

[表34]

/>

[表35]

[表36]

表37至表39示出了其中组合了特征(A)、(B)和(D)的测试4的结果。表37至表39示出了其中帧间MTS关闭的测试的结果。

[表37]

[表38]

/>

[表39]

在下表中示出了测试1至测试4的复杂性。

[表40]

/>

/>

/>

如测试1至测试4所示,在没有MTS的情况下应用使用四个变换集的RST(每个变换集包括两个RST候选)分别将BD率、编码时间和解码时间改进至-1.59%/128%/97%(AI)、-0.88%/108%/100%(RA)和-0.24%/104%/101%(LD)。此外,通过限制应用变换的区域中每个顶部像素的最大乘法数,BD率、编码时间和解码时间分别改进至-1.40%/128%/97%(AI)、-0.76%/108%/100%(RA)和-0.21%/104%/98%(LD)。也就是说,利用存储器成本和编码时间的合理增加来实现BD率的显著改进。

在下表中示出了应用于上述实施方式的二次变换过程的示例。

[表41]

7.3.2.1序列参数集RBSP语法

7.4.3.1序列参数集RBSP语义

……

sps_st_enabled_flag等于1规定st_idx可以存在于用于帧内编码单元的残差编码语法中。sps_st_endled_flag等于0规定st_idx不存在于用于帧内编码单元的残差编码语法中

……

[表42]

7.3.4.12残差编码语法

/>

/>

/>

/>

[表43]

7.3.4.6编码单元语法

/>

/>

7.4.5.6编码单元语义

……

st_idx[x0][y0]规定在所选择的变换集中的两个候选核之间应用哪个二次变换核。st_idx[x0][y0]等于0规定不应用二次变换。阵列索引x0,y0规定所考虑的变换块的左上样本相对于图片的左上样本的位置{x0,y0}。

当st_idx[x0][y0]不存在时,st_idx[x0][y0]被推断为等于0

[表44]

8.5.4.针对缩放变换系数的变化过程

8.5.4.1总则

此过程的输入为:

-亮度位置(xTbY,yTbY),其规定相对于当前图片的左上亮度样本的当前亮度变换块的左上样本,

-变量nTbW,其规定当前变换块的宽度,

-变量nTbH,其规定当前变换块的高度,

-变量cIdx,其规定当前块的色度分量,

-缩放变换系数的(nTbW)x(nTbH)阵列d[x][y],其中x=0..nTbW-1,

y=0..nTbH-1.

此过程的输入为残差样本的(nTbW)x(nTbH)阵列r[x][y],其中x=0..nTbW-1,

y=0..nTbH-1.

如果st_idx[xTbY][yTbY][cIdx]不等于0,则应用以下:

1.变量nStSize,log2StSize,numStX,numStY,和nonzeroSize被推导如下:

-如果nTbW和nTbH二者大于或等于8,则nStSize被设置为8并且log2StSize被设置为3。

-否则,nStSize被设置为4并且log2StSize被设置为2。

-如果nTbH等于4并且nTbW大于8,则numStX设置为等于2。

-否则,numStX设置为等于1。

-如果nTbW等于4并且nTbH大于8,则numStY设置为等于2。

-否则,numStY设置为等于1。

-如果nTbW和nTbH二者大于4或者nTbW和nTbH二者大于8,则nonzeroSize被设置为等于8。

-否则,nonZeroSize设置为等于16。

2.针对xSbldx=0..numStX-1和ySbldx=0..numStY-1,应用以下:

-变量阵列u[x](x=0…nonzeroSize-1)推导如下:

xC=(xSbldx<<log2StSize)+DiagScanOrder[log2StSize][log2StSize][x][0]

yC=(ySbldx<<log2StSize)+DiagScanOrder[log2StSize][log2StSize][x][1]

u[x]=d[xC][yC]

-u[x](x=0…nonzeroSize-1)通过调用如在章节8.5.4.4中规定的-维变换过程而被变换为变量阵列v[x](x=0…(1<<(log2StSize<<1))-1),其中缩放变换系数的变换输入长度nonZeroSize,变换输出长度(1<<(log2StSize<<1))-1,列表u[x](x=0…nonZeroSize-1),变换集选择索引stPredModeIntra和变换集中的变换选择索引st_idx[xTbY][yTbY][cldx]作为输入,并且输出是v[x](x=0…(1<<(log2StSize<<1))-1)。变量stPredModeIntra被设置为章节8.2.4.2.1中规定的predModeIntra。

-阵列d[(xSbldx<<log2StSize)+x][(ySbldx<<log2StSize)+y](x=0…nStSize-1,y=0…nStSize-1)被推导如下:

-如果stpredModeIntra小于或等于34,或者等于INTRA_LT_CCLM,INTRA_T_CCLM,或INTRA_L_CCLM,则应用以下:

d[(xSbldx<<log2StSize)+x][(ySbldx<<log2StSize)+y]=v[x+(y<<log2StSize)]

-否则,应用以下:

d[(xSbldx<<log2StSize)+x][(ySbldx<<log2StSize)+y]=v[y+(x<<log2StSize)]

规定水平变换核的变量trTypeHor和规定垂直变换核的变量trTypeVer在表8-16中根据

mts_idx[xTbY][yTbY][cldx]来推导。

变量nonzeroW和nonZeroH被推导如下:

nonZeroW=Min(nTbW,32) (8-833)

nonZeroH=Min(nTbH,32) (8-834)

残差样本的(nTbW)x(nTbH)阵列r被推导如下:

4.缩放变换系数d[x][y](x=0…nonZeroW-1,y=0…nonZeroH-1)的每个(垂直)列通过调用如在章节8.5.4.2中规定的-维变换过程针对每个列x=0…nonZeroW-1而被变换为e[x][y](x=0…nonZeroW-1,y=0…nTbH-1),其中变换块的高度nTbH,缩放变换系数的非零高度nonZeroH,列表d[x][y](y=0…nonZeroH-1)以及变换类型变量trType设置等于trTypeVer作为输入,并且输出是e[x][y](y=0…nTbH-1)。

5.中间样本值g[x][y](x=0…nonZeroW-1,y=0…nTbH-1)被推导如下:

g[x][y]=Clip3(CoeffMin,CoeffMax,(e[x][y]+64)>>7) (8-835)

6.结果阵列g[x][y](x=0…nonZeroW-1,y=0…nTbH-1)的每个(水平)行通过调用如在章节8.5.4.2中规定的一维变换过程针对每个行y=0…nTbH-1而被变换为r[x][y](x=0…nTbW-1,y=0…nTbH-1),其中变换块的宽度nTbW,结果阵列g[x][y]的非零宽度nonZeroW,列表g[x][y](x=0…nonZeroW-1)以及变换类型变量trType设置等于trTypeVer作为输入,并且输出是列表r[x][y](x=0…nTbW-1)。

表8-16-根据mts_idx[x][y][ddx]的trTypeHor和trTypeVer的规定

8.5.4.2一次变换过程

8.5.4.3一次变换矩阵推导过程

8.5.4.4二次变换过程

此过程的输入为:

-变量nTrS,其规定变换输出长度,

-变量nonZeroSize,其规定变换输入长度,

-变换输入的列表x[i](j=0…nonzeroSize-1),

-变量stPredModeIntra,其规定变换集选择索引,

-变量stldx,其规定集中的变换选择索引。

此过程的输出是变换样本的列表y[i](i=0…nTrS-1)。

章节8.5.4.5中规定的变换矩阵推导过程涉及变换输出长度nTrS,变换集选择索引stPredModeIntra,和集中的变换选择索引stldx作为输入,并且变换矩阵secTransMatrix作为输出。

变换样本的列表y[i](i=0…nTrS-1)被推导如下:

其中i=0..nTrS-1

8.5.4.5二次变换矩阵推导过程

此过程的输入为:

-变量nTrS,其规定变换输出长度,

-变量stPredModeIntra,其规定变换集选择索引,

-变量stldx,其规定指定的变换集中的变换选择索引。

此过程的输出是变换矩阵secTransMatrix。

变量stTrSetIdx被推导如下:

变换矩阵secTransMatrix被基于nTrS,stTrSetIdx和stIdx推导如下:

-如果nTrS等于16,stTrSetIdx等于0,并且stIdx等于1,则应用以下:

-如果nTrS等于16,stTrSetIdx等于0,并且stIdx等于2,则应用以下:

-如果nTrS等于16,stTrSetIdx等于1,并且stIdx等于1,则应用以下:

-如果nTrS等于16,stTrSetIdx等于1,并且stIdx等于2,则应用以下:

-如果nTrS等于16,stTrSetIdx等于2,并且stIdx等于1,则应用以下:

-如果nTrS等于16,stTrSetIdx等于2,并且stIdx等于2,则应用以下:

-如果nTrS等于16,stTrSetIdx等于3,并且stIdx等于1,则应用以下:

-如果nTrS等于16,stTrSetIdx等于3,并且stIdx等于2,则应用以下:

-如果nTrS等于64,stTrSetIdx等于0,并且stIdx等于1,则应用以下:

-如果nTrS等于64,st TrSet Idx等于0,并且st Idx等于2,则应用以下:

-如果nTrS等于64,stTrSetIdx等于1,并且stIdx等于1,则应用以下:

-如果nTrs等于64,stTrSetIdx等于1,并且st Idx等于2,则应用以下:

-如果nTrS等于64,stTrSetIdx等于2,并且stIdx等于1,则应用以下:

-如果nTrS等于64,st TrSet Idx等于2,并且st Idx等于2,则应用以下:

-如果nTrS等于64,stTrSetIdx等于3,并且stIdx等于1,则应用以下:

-如果nTrS等于64,stTrSetIdx等于3,并且stIdx等于2,则应用以下:

[表45]

表9-4-语法元索和相关联的二值化

表9-10-ctxInc到语法元素和上下文编码的bin的指派

9.2.4.2.8针对语法元素st_idx的ctxInc的推导过程

此过程的输入是颜色分量索引cldx,规定当前亮度或色度编码块的左上样本相对于当前图片的左上样本的取决于cldx的亮度或色度位置(x0,y0),树类型treeType,章节8.2.2中规定的亮度帧内预测模式IntraPredModeY[x0][y0],如章节7.4.5.6中规定的规定色度样本的帕内预测模武的语法元素intra_chroma_pred_mode[x0][y0],以及多次变换选择标志tu_mts_flag[x0][y0]。

此过程的输出是变量ctxInc。

变量intraModeCtx被推导如下:

-如果cldx等于0,则intraModeCtx被推导如下:

intraModeCtx=(IntraPredModeY[x0][y0]<=1)?1:0

-否则(cldx大于0),intraModeCtx被推导如下:

intraModeCtx=(intra_chroma_pred_mode[x0][y0]>=4)?1:0

变量mtsCtx被推导如下:

mtsCtx=(tu_mts_flag[x0][y0]==1&&treeType!=5NGLE_TREE)?1:0

变量ctxInc被推导如下:

CtxInc=(binldx<<1)+intraModeCtx+(mtsCtx<<2)

表44的变换核矩阵是应用于在解码设备中执行的逆二次变换的变换核矩阵,而不是用于正向二次变换的核矩阵。因此,编码设备可以基于表44中所示的变换过程的逆过程来执行二次变换,在此情况下,编码设备可使用表44的变换核矩阵的转置矩阵来执行RST。

图10是例示根据本公开的实施方式的视频解码设备的操作的流程图。

图10所示的每个操作可以由图3所示的解码设备300执行。具体地,S1010可以由图3所示的熵解码器310执行,S1020可以由图3所示的解量化器321执行,S1030和S1040可以由图3所示的逆变换器322执行,并且S1050可以由图3所示的加法器340执行。根据S1010至S1050的操作基于参照图4至图9说明的前述细节中的一些。因此,对与上面参照图3至图9说明的细节重叠的特定细节的描述将被省略或简述。

根据实施方式的解码设备300可以从比特流中推导目标块的量化变换系数(S1010)。具体地,解码设备300可以从比特流中解码关于目标块的量化变换系数的信息,并且可以基于关于目标块的量化变换系数的信息来推导目标块的量化变换系数。关于目标块的量化变换系数的信息可以被包括在序列参数集(SPS)或条带头部中,并且可以包括关于是否应用缩减变换(RST)的信息、关于缩减因子的信息、关于应用了RST的最小变换大小的信息、关于应用了RST的最大变换大小的信息、关于缩减逆变换大小的信息、以及关于指示包括在变换集中的任一变换核矩阵的变换索引的信息。

根据实施方式的解码设备300可以通过对目标块的量化变换系数进行解量化来推导变换系数(S1020)。

可以以4×4块为单位根据反向对角线扫描顺序来布置推导出的变换系数,并且还可以根据反向对角线扫描顺序来布置4×4块中的变换系数。也就是说,可以根据应用于诸如VVC或HEVC之类的视频编解码器中的反向扫描顺序来布置执行至解量化的变换系数。

根据实施方式的解码设备300可以基于变换系数的逆缩减二次变换(RST)来推导修改的变换系数(S1030)。

在示例中,可以基于逆RST变换矩阵来执行逆RST,并且逆RST变换矩阵可以是其中列数小于行数的非正方形矩阵。

在实施方式中,S1030可以包括:解码变换索引;基于变换索引来确定是否满足用于应用逆RST的条件;选择变换核矩阵;以及当满足用于应用逆RST的条件时,基于所选择的变换核矩阵和/或缩减因子来将逆RST应用于变换系数。在这种情况下,可以基于缩减因子来确定逆RST矩阵的大小。

根据实施方式的解码设备300可以基于修改的变换系数的逆变换来推导目标块的残差样本(S1040)。

解码设备300可以对目标块的修改的变换系数执行逆一次变换,在这种情况下,可以应用缩减逆变换,或可以将常规的可分离的变换用作逆一次变换。

根据实施方式的解码设备300可以基于目标块的残差样本和目标块的预测样本来生成重构样本(S1050)。

参照S1030,可以识别出,目标块的残差样本是基于目标块的变换系数的逆RST来推导的。从逆变换矩阵的大小的角度来看,由于常规逆变换矩阵的大小为N×N,而逆RST矩阵的大小缩减为N×R,因此与执行常规变换的情况相比,执行逆RST的情况的存储器使用量可以减少R/N比率。此外,与使用常规的逆变换矩阵的情况下的乘法的数量N×N相比,使用逆RST矩阵可以将乘法的数量(N×R)减少R/N比率。另外,由于当应用逆RST时仅需要解码R个变换系数,因此与在应用常规的逆变换时需要解码N个变换系数相比,目标块的变换系数的总数可以从N减少到R,因而增加了解码效率。也就是说,根据S1030,可以通过逆RST来增加解码设备300的(逆)变换效率和解码效率。

图11是例示根据本公开的实施方式的由解码设备进行的图像编码方法的控制流程图。参照图11描述用于变换图像的方法(具体地,由解码设备执行的二次变换过程或者由编码设备执行的与二次变换过程对应的逆二次变换)。在下文中,由解码设备执行的逆二次变换被称作不可分离的二次变换。

解码设备300通过比特流接收关于量化变换系数、帧内预测模式以及不可分离的二次变换的变换索引的信息(S1100)。

根据实施方式,与将要变换的系数垂直或水平分离并对系数进行变换的一次变换不同,不可分离的二次变换是在不在特定方向上分离系数的情况下对系数进行变换的不可分离的变换。不可分离的变换可以是仅变换低频区域而非要变换的整个目标块的低频不可分离的变换。

解码设备300还通过比特流接收指示是否存在变换索引的标志信息。

指示是否接收到变换索引的标志信息可为表41中的sps_st_enabled_flag,其可以根据二次变换的类型而修改为sps_lfnst_enabled_flag。标志信息可指示是否接收到变换索引,即变换索引是否存在于比特流中,并且可经由序列参数的语法接收标志信息。

当标志信息为0时,不存在变换索引,并且因此可以不执行不可分离的二次变换。当标志信息为1时,存在变换索引,因此可由解码设备接收并解析变换索引。

变换索引可存在于编码单元的语法中。

根据实施方式的变换索引的语法元素可指示是否应用不可分离的二次变换以及变换集中所包括的变换核矩阵中的任何一个。当变换集包括两个变换核矩阵时,变换索引的语法元素可以具有三个值。

也就是说,根据实施方式,变换索引的语法元素的值可以包括指示不可分离的二次变换未应用于目标块的0、指示变换核矩阵的第一变换核矩阵的1以及指示变换核矩阵的第二变换核矩阵的2。此信息作为语法信息接收,并且所述语法信息作为包括0和1的二值化bin串被接收。

在此情况下,可以根据截短的一元编码分别将变换索引的语法元素的三个值编码成0、10和11。也就是说,语法元素的值0可以被二值化为“0”,语法元素的值1可以被二值化为“10”,并且语法元素的值2可以被二值化为“11”。

根据实施方式,不同的上下文信息(即,不同概率模型)可分别应用于变换索引的两个bin。也就是说,可通过上下文方法而非通过旁路方法解码变换索引的所有两个bin,其中可以基于第一上下文信息解码变换索引的语法元素的bin中的第一bin,并且可以基于第二上下文信息解码变换索引的语法元素的bin中的第二bin。

可经由如图10的S1020所示的解量化从通过比特流接收的量化变换系数中推导变换系数(S1110)。以下变换系数指代解量化变换系数。

当所接收的变换索引不指示不执行不可分离的二次变换时,即,当变换索引不为0时,解码设备可推导指示应用不可分离的二次变换的解量化变换系数的长度的输入变换系数大小、指示已应用不可分离的二次变换的修改的变换系数的长度的输出变换系数大小及映射到目标块的帧内模式的变换集(S1120)。

如表44的8.5.4.4中所示,输入变换系数大小可由“nonZeroSize”表示,并且输出变换系数大小可由“nTrS”表示。

输入变换系数的大小指代变换系数的长度,即,经受与变换核矩阵的矩阵运算的变换系数的数量,并且输出变换系数的大小指代修改的变换系数的长度,即,在执行矩阵运算之后输出的修改的变换系数的数量。

根据示例,当目标块的大小为4×4或8×8时,输入变换系数的大小可为8,而当目标块的大小不是4×4或8×8时,输入变换系数的大小可为16。也就是说,当目标块(即,变换块)的大小为4×4时,从4×4块的左上位置以扫描顺序布置的八个变换系数为输入数据,并且当变换块的大小为8×8时,从8×8块的左上位置以扫描顺序布置的仅八个变换系数为输入数据。在不同于这两种情况的情况下,即,1)当目标块为4×N、N×4(N≥8)时,或者2)当目标块的宽度和高度二者都等于或大于8(为8或更大)以及宽度或高度大于8时,针对矩阵运算输入16个变换系数。

根据示例,当目标块的宽度和高度为8或更大时,输出变换系数的大小可为48,并且当目标块的宽度或高度小于8时,输出变换系数的大小可为16。

例如,当变换块的宽度和高度为8或更大时,应用逆RST 8×8。也就是说,不可分离的二次变换可应用于变换块的左上8×8区域的最多左上4×4区域,并且作为不可分离的二次变换的结果,可以在除了右下4×4区域之外的左上、右上和左下4×4区域而非整个8×8区域中推导48个修改的变换系数。然而,当目标块的宽度或高度小于8时,例如,在4×4、4×8或8×4变换块的情况下,将逆RST 4×4应用于变换块的左上4×4区域。也就是说,不可分离的二次变换可应用于从4×4区域的左上位置根据扫描顺序布置的8个或16个变换系数,并且作为不可分离的二次变换的结果,可在4×4区域中推导16个修改的变换系数。

可以根据目标块的帧内预测模式通过映射关系推导变换集,并且可以将一个变换集映射到多个帧内预测模式。例如,如表44的8.5.4.5中所示,可存在根据帧内预测模式的四个变换集。

当推导用于不可分离的二次变换的输入数据时,解码设备可以基于输出变换系数大小、变换集和变换索引推导变换核矩阵(S1130)。

每一个变换集可以包括多个变换核矩阵。变换索引可指示多个变换核矩阵中的任何一个。例如,当一个变换集包括两个变换核矩阵时,变换索引可指示两个变换核矩阵中的任何一个。

变换核矩阵可以基于修改的变换系数的数量、关于变换集的信息和变换索引的值而确定。表44示出基于变换输出长度nTrS(即,通过与变换核矩阵的矩阵运算输出的修改的变换系数的数量)、关于映射到目标块的帧内预测模式stIntraPredMode的变换集的信息stTrSetIdx以及变换索引值stIdx来确定变换矩阵。

如表8、表9、表14、表18和表44中所示,变换核矩阵的大小以及所选择的矩阵自身可以根据应用于目标块中具有预定大小的块的不可分离的二次变换(RST 8×8或RST 4×4)的类型以及输出的修改的变换系数的数量而改变。

根据示例,变换核矩阵可以根据二次变换的缩减或简化大小而应用于目标块的左上方处的特定区域(例如,8×8区域或4×4区域),并且通过应用变换核矩阵而输出的修改的变换系数的大小(即,变换系数的数量)可以基于变换索引、帧内预测模式以及应用不可分离的二次变换的目标块的大小来推导。

根据示例,当不可分离的二次变换应用于目标块的区域(即,8×8区域或4×4区域)中的变换系数时,不可分离的二次变换可仅应用于包括于8×8区域或4×4区域中的变换系数中的一些。当仅针对不可分离的二次变换输出8×8区域中的变换系数当中的48个变换系数时,可以将应用于8×8区域的64×m变换核矩阵进一步缩减到48×m变换核矩阵。另选地,当针对不可分离的二次变换输入4×4区域中的变换系数当中的仅八个变换系数时,应用于4×4区域的变换核矩阵为16×8矩阵。

根据示例,m可为16,并且48×16变换核矩阵可为基于表14的变换核矩阵,即,表14的矩阵的转置矩阵。另选地,根据示例,16×8变换核矩阵可以是基于表18的变换核矩阵。可应用仅包括通过转置表18的矩阵而获得的16×16矩阵中的左边的八个列的16×8变换核矩阵。另选地,可应用仅包括通过转置表14的矩阵而获得的48×16矩阵中的左侧的八个列的48×8矩阵。

总之,当输入变换系数的大小为8且输出变换系数的大小为16时,可以将包括从预设16×16变换核矩阵提取的八个列的矩阵用于矩阵运算。当输入变换系数的大小为16且输出变换系数的大小为16时,预设16×16变换核矩阵可用于矩阵运算。当输入变换系数的大小为16且输出变换系数的大小为48时,可以将预设48×16变换核矩阵用于矩阵运算。当输入变换系数的大小为8且输出变换系数的大小为48时,可以将包括从预设48×16变换核矩阵提取的八个列的矩阵用于矩阵运算。

存在四个变换集并且每一变换集可以包括两个变换核矩阵。在此情况下,变换索引可以是0,1或2,0指示不应用二次变换,1或2指示变换核矩阵中的任何一个。

解码设备可以基于变换核矩阵和对应于输入变换系数大小的变换系数列表的矩阵运算来推导修改的变换系数(S1140)。

变换系数列表可以包括根据目标块的正向对角线扫描顺序读取的解量化变换系数。

二维阵列中的修改的变换系数可以通过通过解量化推导的变换系数的一维阵列(即,变换系数列表)和变换核矩阵的矩阵运算来推导,如式7所示。

根据此实施方式,逆变换器322可以将变换核矩阵应用于目标块的8×8区域的左上4×4区域中的变换系数,由此推导8×8区域的左上4×4区域、右上4×4区域及左下4×4区域中的修改的变换系数。

根据示例,当执行8×8区域的左上4×4区域中的变换系数和变换核矩阵的矩阵运算时,8×8区域的左上4×4区域中的变换系数可如表16所示根据正向对角线扫描顺序一维地布置,并且在与变换核矩阵的矩阵运算之后,一维阵列中的变换系数可以根据应用于目标块的帧内预测模式根据如表15或表17所示的行第一顺序或列第一顺序二维地布置在8×8区域的左上4×4区域、右上4×4区域和左下4×4区域中。也就是说,可以将逆二次变换应用于8×8区域的左上4×4区域中的16个变换系数,并且可通过与变换核矩阵的运算推导8×8区域的左上4×4区域、右上4×4区域及左下4×4区域中的48个修改的变换系数。

根据实施方式,逆变换器322可以将变换核矩阵应用于目标块中的应用正向LFNST的4×4区域中的一些变换系数,例如,根据扫描顺序从4×4区域的左上位置开始的多达八个变换系数,由此推导出4×4区域中的16个修改的变换系数。在下文中,将八个变换系数布置在其中的区域称为4×4区域中的左上区域。

如上所述,当应用变换的目标块的高度或宽度小于8时,具有缩减的大小的变换矩阵的不可分离的二次变换可应用于(例如)4×4变换块、4×8变换块的上部的4×4块或8×4变换块的左部的4×4块。

根据示例,当执行4×4区域的左上区域中的变换系数与变换核矩阵的矩阵运算时,4×4区域的左上区域中的八个变换系数可以根据正向对角线扫描顺序一维地布置,并且在与变换核矩阵的矩阵运算之后,一维阵列中的变换系数可以根据应用于目标块的帧内预测模式(如表12或表13所示)根据行第一顺序或列第一顺序二维地布置在4×4区域中。也就是说,可以将逆二次变换应用于4×4区域中的8个变换系数,并且可通过与变换核矩阵的运算推导4×4区域中的16个修改的变换系数。

当适用于目标块的帧内预测模式为65方向模式中的任何一个时,帧内预测模式相对于帧内预测模式34在左上对角线方向上对称,并且应用于目标块的帧内预测模式包括基于帧内预测模式34在左方向上的模式2至34,修改的变换系数可以根据行第一顺序二维地布置。

当应用于目标块的帧内预测模式包括基于帧内预测模式34在右方向上的模式35至66时,修改的变换系数可以根据列第一顺序二维地布置。

当应用于目标块的帧内预测模式为平面模式或DC模式时,修改的变换系数可以根据行第一顺序二维地布置。

逆变换器322可应用不可分离的二次变换,由此生成8×8区域(具体来说,8×8区域中除了右下4×4区域之外的8×8区域)或4×4区域中的修改的变换系数,作为二维块。

当作为不可分离的二次变换的结果推导出修改的变换系数时,可以将修改的变换系数修剪到预定范围内的值(S1150)。

根据示例,可以基于式9修剪修改的变换系数,并且可以如式13中所示地设置指示修剪范围的最大值(maxFwdSecTr)和最小值(minInvSecTR)。

此时,可以根据式10对修改的变换系数进行缩放和修剪,并且根据示例,S可以是7,并且在此情况下,可以将修改的变换系数视为按128缩放。

解码设备可以基于相对于经修剪的修改的变换系数的逆一次变换来推导目标块的残差样本(S1160)。

根据本文档的实施方式,逆一次变换可以基于多变换选择(MTS)。作为一次变换应用多个变换的多核心变换是指附加地使用DCT(离散余弦变换)类型2和DST(离散正弦变换)类型7、DCT类型8和/或DST类型1进行变换的方法。根据此逆一次变换的频域中的修改的变换系数被变换成空间域中的残差信号。

解码设备可以将基于逆一次变换推导的残差样本修剪到预定范围内的值(S1170)。

可以将应用于修改的变换系数的修剪范围和应用于残差样本的修剪范围设置为相同的范围。另选地,根据另一示例,可以根据逆二次变换和逆一次变换而不同地设置修剪范围。

此外,根据本文档的另一实施方式,可以不执行残差样本的修剪。

图12是例示根据本公开的实施方式的视频编码设备的操作的流程图。

图12所示的每个操作可以由图2所示的编码设备200来执行。具体地,S1210可以由图2所示的预测器220来执行,S1220可以由图2所示的减法器231来执行,S1230和S1240可以由图2所示的变换器232来执行,并且S1250可以由图2所示的量化器233和熵编码器240来执行。根据S1210至S1250的操作是基于图4至图9中描述的一些内容。因此,对与上面的参照图2和图4至图9说明的细节重叠的特定细节的描述将被省略或简述。

根据实施方式的编码设备200可以基于应用于目标块的帧内预测模式来推导预测样本(S1210)。

根据实施方式的编码设备200可以推导目标块的残差样本(S1220)。

根据实施方式的编码设备200可以基于残差样本的一次变换来推导目标块的变换系数(S1230)。可以通过多个变换核来执行一次变换,并且可以基于帧内预测模式来选择变换核。

解码设备300可以对目标块的变换系数执行二次变换,特别是NSST,在这种情况下,可以基于缩减变换(RST)或不基于RST来执行NSST。当基于缩减变换来执行NSST时,可以执行根据S1240的操作。

根据实施方式的编码设备200可以基于变换系数的RST来推导目标块的修改的变换系数(S1240)。在示例中,可以基于缩减变换矩阵或变换核矩阵来执行RST,并且缩减变换矩阵可以是其中行数小于列数的非正方形矩阵。

在实施方式中,S1240可以包括:确定是否满足用于应用RST的条件;基于该确定来生成和编码变换索引;选择变换核;以及当满足用于应用RST的条件时,基于所选择的变换核矩阵和/或缩减因子将RST应用于残差样本。在这种情况下,可以基于缩减因子来确定缩减变换核矩阵的大小。

根据实施方式的编码设备200可以通过基于目标块的修改的变换系数执行量化来推导量化变换系数,并且可以对关于量化变换系数的信息进行编码(S1250)。

具体地,编码设备200可以生成关于量化变换系数的信息,并且可以对生成的关于量化变换系数的信息进行编码。

在示例中,关于量化变换系数的信息可以包括关于是否应用RST的信息、关于缩减因子的信息、关于应用了RST的最小变换大小的信息、以及关于应用了RST的最大变换大小的信息中的至少一个。。

参照S1240,可以识别出基于残差样本的RST来推导目标块的变换系数。在从变换核矩阵的大小的角度来看时,由于常规变换核矩阵的大小为N×N而缩减变换矩阵的大小缩减为R×N,因此与执行常规变换的情况相比,执行RST的情况下的存储器使用量可以减小R/N比率。此外,与使用常规变换核矩阵的情况下的乘法的数量N×N相比,使用缩减变换核矩阵可以使乘法的数量(R×N)减少R/N比率。另外,由于当应用RST时仅需要推导R个变换系数,因此与当应用常规变换时推导N个变换系数的情况相比,目标块的变换系数的总数可以从N减少至R,因而减少了由编码设备200向解码设备300发送的数据量。也就是说,根据S1240,可以通过RST来增加编码设备200的变换效率和编码效率。

图13是例示根据本公开的实施方式的由编码设备进行的图像编码方法的控制流程图。参照图13描述用于变换图像的方法(具体地,由编码设备执行的二次变换过程或者由解码设备执行的与逆二次变换过程对应的二次变换)。在下文中,由编码设备执行的二次变换被称作不可分离的二次变换。

根据实施方式,与将要变换的系数垂直或水平分离并对系数进行变换的一次变换不同,不可分离的二次变换是在不在特定方向上分离系数的情况下对系数进行变换的不可分离的变换。不可分离的变换可以是仅变换低频区域而非要变换的整个目标块的低频不可分离的变换(LFNST)。

首先,编码设备200通过将一次变换应用于目标块的残差样本来推导变换系数(S1300)。

编码设备200可以将推导的变换系数修剪为预定范围内的值(S1310)。

应用于一次变换系数的修剪过程可以根据实施方式而省略。

当将不可分离的二次变换应用于通过一次变换推导的变换系数时,编码设备推导输入变换系数的大小、输出变换系数的大小,以及映射到目标块的帧内模式的变换集(S1320)。

由编码设备执行的变换过程是由解码设备执行的变换过程的逆过程。因此,参见表44的8.5.4.4,输入变换系数的大小可由“nTrS”表示,并且输出变换系数的大小可由“nonZeroSize”表示。

输入变换系数的大小指代变换系数的长度,即,经受与变换核矩阵的矩阵运算的变换系数的数量,并且输出变换系数的大小指代修改的变换系数的长度,即,在执行矩阵运算之后输出的修改的变换系数的数量。

根据示例,当目标块的宽度和高度为8或更大时,输出变换系数的大小可为48,并且当目标块的宽度或高度小于8时,输出变换系数的大小可为16。

例如,当变换块的宽度和高度为8或更大时,应用RST 8×8。也就是说,不可分离的二次变换可应用于变换块的左上8×8区域,并且作为不可分离的二次变换的结果可以推导出8个(例如,8×8变换块)或16个(例如,大于8×8的变换块)修改的变换系数。然而,当目标块的宽度或高度小于8时,例如,在4×4、4×8或8×4变换块的情况下,将应用RST 4×4。因此,可以将不可分离的二次变换应用于变换块的左上4×4区域中的16个变换系数,并且作为不可分离的二次变换的结果可以推导出8个(例如,4×4变换块)或16个(例如,4×8或8×4的变换块)修改的变换系数。

根据示例,当目标块的大小为4×4或8×8时,输出变换系数的大小可为8,并且当目标块的大小不是4×4或8×8时,输出变换系数的大小可为16。也就是说,当目标块(即,变换块)的大小为4×4时,在不可分离的二次变换之后输出8个数据,并且甚至当变换块的大小为8×8时,在不可分离的二次变换之后仅输出8个变换系数。在除了这两种情况之外的情况下,即,1)当宽度和高度二者都等于或大于8并且宽度和高度中的至少一个大于8时,或者2)当目标块是4×N或N×4(N≥8)时,可以在每个矩阵运算中输出16个变换系数。

可以根据目标块的帧内预测模式通过映射关系推导变换集,并且可以将一个变换集映射到多个帧内预测模式。例如,如表44的8.5.4.5中所示,可存在根据帧内预测模式的四个变换集。

当推导不可分离的二次变换的输入数据时,编码设备可以基于变换集中包括的变换核矩阵中的任何一个与对应于输入变换系数的大小的变换系数的矩阵运算来推导修改的变换系数(S1330)。

编码设备的变换器232可选择变换集中所包括的多个变换核矩阵中的任何一个。

根据实施方式,可以根据目标块的帧内预测模式通过映射关系推导变换集,并且可以将一个变换集映射到多个帧内预测模式。此外,每一个变换集可以包括多个变换核矩阵。当一个变换集包括两个变换核矩阵时,可以将指示两个变换核矩阵中的任何一个的变换索引编码并发信号通知给解码设备。

当两个变换过程应用于残差样本时,残差样本可在一次变换之后被称作变换系数,并且可在一次变换并接着不可分离的二次变换之后被称作修改的变换系数。

每一个变换集可以包括多个变换核矩阵。变换索引可指示多个变换核矩阵中的任何一个。例如,当一个变换集包括两个变换核矩阵时,变换索引可指示两个变换核矩阵中的任何一个。

变换核矩阵可以基于修改的变换系数的数量、关于变换集的信息和变换索引的值而确定。表44示出基于变换输出长度nTrS(即,通过与变换核矩阵的矩阵运算输出的修改的变换系数的数量)、关于映射到目标块的帧内预测模式stIntraPredMode的变换集的信息stTrSetIdx以及变换索引值stIdx来确定变换矩阵。

如表8、表9、表14、表18和表44中所示,变换核矩阵的大小以及矩阵系数可以根据应用于目标块中具有预定大小的块的不可分离的二次变换(RST 8×8或RST 4×4)的类型以及输出的修改的变换系数的数量而改变。

根据示例,变换核矩阵可以根据二次变换的缩减或简化大小而应用于目标块的左上方处的特定区域(例如,8×8区域(具体地,除了8×8区域的右下4×4区域之外的8×8区域)或4×4区域),并且通过应用变换核矩阵而输出的修改的变换系数的大小(即,变换系数的数量)可以基于变换索引、帧内预测模式以及应用不可分离的二次变换的目标块的大小来推导。

根据示例,当不可分离的二次变换应用于目标块的区域(即,8×8区域或4×4区域)中的变换系数时,不可分离的二次变换可仅应用于包括于8×8区域或4×4区域中的变换系数中的一些。当仅针对二次变换输出8×8区域中的变换系数当中的48个变换系数时,可以将应用于8×8区域的m×64变换核矩阵进一步缩减到m×48变换核矩阵。另选地,当通过应用不可分离的二次变换而输出4×4区域中的变换系数当中的仅八个变换系数时,应用于4×4区域的变换核矩阵为8×16矩阵。

根据示例,m可为16,并且16×48变换核矩阵可为表14所示的变换核矩阵。另选地,根据示例,8×16变换核矩阵可以是基于表18的变换核矩阵。也就是说,当通过将二次变换应用于4×4区域而生成m个变换系数时,可以将m×16变换核矩阵应用于4×4区域。根据示例,m可为8,并且8×16变换核矩阵可为包括表18中的顶部八行的矩阵。另选地,根据示例,8×48变换核矩阵可以是基于表14的变换核矩阵。也就是说,当通过将二次变换应用于不包括右下4×4区域的8×8区域而生成m个变换系数时,可以将m×48变换核矩阵应用于不包括右下4×4区域的8×8区域。根据示例,m可为8,并且8×48变换核矩阵可为包括表14中的顶部八行的矩阵。

总之,当输入变换系数的大小为16并且输出变换系数的大小为8时,可以将包括从预设16×16变换核矩阵中提取的八个行的矩阵用于矩阵运算。当输入变换系数的大小为16并且输出变换系数的大小为16时,预设16×16变换核矩阵可用于矩阵运算。当输入变换系数的大小为48并且输出变换系数的大小为16时,可以将预设16×48变换核矩阵用于矩阵运算。当输入变换系数的大小为48并且输出变换系数的大小为8时,可以将包括从预设16×48变换核矩阵中提取的八个行的矩阵用于矩阵运算。

存在四个变换集并且每一变换集可以包括两个变换核矩阵。在此情况下,变换索引可以是0,1或2,0指示不应用二次变换,1或2指示变换核矩阵中的任何一个。

当使用变换核矩阵对变换系数执行不可分离的二次变换时,变换器232可以基于应用于目标块的帧内预测模式根据行第一顺序或列第一顺序将经由一次变换的二维阵列中的变换系数一维地布置。

具体地,根据实施方式,变换器232可以将变换核矩阵应用于目标块的8×8区域的左上4×4区域、右上4×4区域及左下4×4区域中的变换系数,由此推导对应于8×8区域的左上4×4区域的修改的变换系数。

变换核矩阵可应用于目标块的左上方处的特定区域(例如,8×8区域、4×4区域或8×8区域的一部分),这取决于二次变换的缩减或简化大小,并且可以基于变换核矩阵的大小、帧内预测模式和应用二次变换的目标块的大小来推导通过应用变换核矩阵而输出的修改的变换系数的大小(即,修改的变换系数的数量)。

如式5所示,为了与变换核矩阵的矩阵运算,需要将二维变换系数一维地布置,并且可通过式6所示的运算推导数量比变换系数的数量少的修改的变换系数。

也就是说,特定区域中的二维阵列中的变换系数可以根据某个顺序被一维地读取,并且通过与变换核矩阵的矩阵运算从其推导修改的变换系数。

根据示例,当执行用于8×8区域的变换核矩阵的矩阵运算时,8×8区域的左上4×4区域、右上4×4区域和左下4×4区域中的48个变换系数可以根据应用于目标块的帧内预测模式根据如表15或表17所示的行第一顺序或列第一顺序一维地布置,并且推导的16个修改的变换系数可在8×8区域的左上4×4区域中以对角线扫描方向布置,如表16所示。

如上所述,变换器232可以将变换核矩阵应用于4×4目标块中的16个变换系数,由此推导对应于4×4区域的左上区域的八个修改的变换系数。也就是说,要变换的4×4区域中的16个变换系数可以根据应用于目标块的帧内预测模式根据表12或表13所示的行第一方向或列第一方向一维地布置,并且推导的八个修改的变换系数可在4×4区域的左上区域中沿对角线扫描方向布置。

当可应用于目标块的帧内预测模式为65个定向模式中的任何一个时,帧内预测模式在左上对角线方向上相对于帧内预测模式34对称,并且应用于目标块的帧内预测模式包括基于帧内预测模式34在左方向上的模式2至模式34,并且8×8区域中的左上4×4区域、右上4×4区域和左下4×4区域中的变换系数可以根据行第一顺序一维地布置,如表15中所示。

当应用于目标块的帧内预测模式包括基于帧内预测模式34在右方向上的模式35至模式66时,8×8区域中的左上4×4区域、右上4×4区域和左下4×4区域中的变换系数可以根据列第一顺序一维地布置,如表17中所示。

当应用于目标块的帧内预测模式是平面模式或DC模式时,8×8区域中的左上4×4区域、右上4×4区域和左下4×4区域中的变换系数可以根据行第一顺序一维地布置。

编码设备可以将修改的变换系数修剪到预定范围内的值(S1340)。

根据示例,可以基于式9修剪修改的变换系数,并且可如式11中所示地设置指示修剪范围的最大值(maxFwdSecTr)和最小值(minFwdSecTr)。

在此情况下,可以根据式10对修改的变换系数进行缩放和修剪,并且根据示例,S可以是7,并且在此情况下,可以将修改的变换系数视为按128缩放。

根据示例,应用于变换系数的修剪范围和应用于修改的变换系数的修剪范围可以设置为相同的范围。另选地,根据另一示例,可以根据一次变换和二次变换而不同地设置修剪范围。

当以此方式执行不可分离的二次变换时,熵编码器240通过执行基于经修剪的修改的变换系数的量化来推导量化变换系数,并且可以编码关于量化变换系数的信息(S1350)。

首先,熵编码器240可以推导指示变换集中所包括的变换核矩阵中的任意一个的变换索引的语法元素值,可以对推导出的变换索引的语法元素值进行二值化,并且可以基于关于变换索引的bin串的上下文信息(即,上下文模型)来编码语法元素bin串的bin。

语法元素的编码的bin串可以作为比特流输出到解码设备300或外部。

在上述实施方式中,借助于一系列步骤或方框基于流程图解释了方法,但是本公开不限于步骤的顺序,并且可以按与上述顺序或步骤不同的顺序或步骤来执行某一步骤,或某一步骤与其它步骤并发地执行。此外,本领域普通技术人员可以理解,流程图中所示的步骤不是排它的,并且在不影响本公开的范围的情况下,可以并入另一步骤或者可以删除流程图中的一个或更多个步骤。

根据本公开的上述方法可以被实现为软件形式,并且根据本公开的编码设备和/或解码设备可以被包括在诸如电视、计算机、智能电话、机顶盒和显示装置等之类的用于图像处理的设备中。

当本公开中的实施方式通过软件来实施时,上述方法可以被实施为用于执行上述功能的模块(步骤、功能等)。这些模块可以存储在存储器中并且可以由处理器执行。存储器可以在处理器内部或外部,并且可以以各种众所周知的方式连接到处理器。处理器可以包括专用集成电路(ASIC)、其它芯片组、逻辑电路和/或数据处理装置。存储器可以包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、存储卡、存储介质和/或其它存储装置。也就是说,本公开中描述的实施方式可以在处理器、微处理器、控制器或芯片上实施和执行。例如,每个附图中所示的功能单元可以在计算机、处理器、微处理器、控制器或芯片上实施和执行。

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

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

图14例示了应用本公开的内容流系统的结构。

此外,应用本公开的内容流系统可以大致包括编码服务器、流服务器、web服务器、媒体存储装置、用户设备和多媒体输入装置。

编码服务器用于将从诸如智能电话、相机、便携式摄像机等的多媒体输入装置输入的内容压缩成数字数据以生成比特流,并且向流服务器发送它。作为另一示例,在诸如智能电话、相机、便携式摄像机等的多媒体输入装置直接生成比特流的情况下,可以省略编码服务器。可以通过应用本公开的编码方法或比特流生成方法来生成比特流。并且流服务器可以在发送或接收比特流的过程期间临时存储比特流。

流服务器基于用户的请求通过web服务器向用户装置发送多媒体数据,web服务器用作向用户通知存在什么服务的的器具。当用户请求用户想要的服务时,web服务器将请求传送至流服务器,并且流服务器向用户发送多媒体数据。在此而言,内容流系统可以包括单独的控制服务器,并且在这种情况下,控制服务器用于控制内容流系统中的相应装置之间的命令/响应。

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

例如,用户装置可以包括移动电话、智能电话、膝上型计算机、数字广播终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、导航仪、板式PC、平板PC、超级本、可穿戴装置(例如,手表型终端(智能手表)、眼镜型终端(智能眼镜)、头戴式显示器(HMD))、数字TV、台式计算机、数字标牌等。内容流系统中的各个服务器可以作为分布式服务器操作,并且在这种情况下,由各个服务器接收到的数据可以用分布式方式进行处理。

相关技术
  • 一种垂直起降载人飞行器的停机库及其控制方法
  • 一种新型垂直起降的飞行器
  • 新型喷气式垂直起降飞行器及其非线性控制方法
  • 一种新型概念垂直起降飞行器及其控制方法
技术分类

06120116550501