具体实施方式
尽管本文件可能易于进行各种修改并且包括各种实施方式,但是其具体实施方式已在附图中通过示例的方式示出,并且现在将对其进行详细描述。然而,这并不旨在将本文件限制于本文中公开的具体实施方式。本文中使用的术语只是出于描述特定实施方式的目的,而不旨在限制本文件的技术思路。单数形式可以包括复数形式,除非上下文中另外清楚指示。诸如“包括”和“具有”这样的术语旨在指示存在以下描述中使用的特征、数字、步骤、操作、元件、组件或其组合,因此不应该被理解为预先排除了存在或添加一个或更多个不同特征、数字、步骤、操作、元件、组件或其组合的可能性。
此外,为了方便描述彼此不同的特性功能,独立地例示了本文中描述的附图上的各组件,然而,并不意指各组件由单独的硬件或软件来实现。例如,可以组合这些组件中的任何两个或更多个以形成单个组件,并且任何单个组件可以被划分成多个组件。其中组件被组合和/或划分的实施方式将属于本文件的专利权的范围,只要它们不脱离本文件的实质即可。
下文中,将在参照附图的同时更详细地说明本文件的优选实施方式。另外,在附图上,相同的附图标记用于相同的组件,并且将省略对相同组件的重复描述。
图1示意性地呈现可以应用本文件的视频/图像编码***的示例。
参照图1,视频/图像编码***可以包括第一装置(源装置)和第二装置(接收装置)。源装置可以经由数字存储介质或网络以文件或流传输的形式将编码后的视频/图像信息或数据传递到接收装置。
源装置可以包括视频源、编码设备和发送器。接收装置可以包括接收器、解码设备和渲染器。编码设备可以被称为视频/图像编码设备,并且解码设备可以被称为视频/图像解码设备。发送器可以被包括在编码设备中。接收器可以被包括在解码设备中。渲染器可以包括显示器,并且显示器可以被配置为单独的装置或外部组件。
视频源可以通过捕获、合成或生成视频/图像的处理来获得视频/图像。视频源可以包括视频/图像捕获装置和/或视频/图像生成装置。视频/图像捕获装置可以包括例如一个或更多个相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成装置可以包括例如计算机、平板计算机和智能电话,并且可以(电子地)生成视频/图像。例如,可以通过计算机等生成虚拟视频/图像。在这种情况下,视频/图像捕获处理可以被生成相关数据的处理取代。
编码设备可以对输入视频/图像进行编码。编码设备可以执行诸如针对压缩和编码效率的预测、变换和量化这样的一系列过程。编码后的数据(编码后的视频/图像信息)可以以比特流的形式输出。
发送器可以通过数字存储介质或网络以文件或流传输的形式将以比特流的形式输出的编码后的视频/图像信息或数据发送到接收装置的接收器。数字存储介质可以包括诸如USB、SD、CD、DVD、蓝光、HDD、SSD等这样的各种存储介质。发送器可以包括用于通过预定文件格式生成媒体文件的元件,并且可以包括用于通过广播/通信网络进行发送的元件。接收器可以接收/提取比特流,并且将接收/提取的比特流发送到解码设备。
解码设备可以通过执行与编码设备的操作对应的诸如反量化、逆变换、预测等这样的一系列过程来解码视频/图像。
渲染器可以渲染解码后的视频/图像。可以通过显示器显示渲染后的视频/图像。
本文件涉及视频/图像编码。例如,本文件中公开的方法/实施方式可以应用于以通用视频编码(VVC)标准、基本视频编码(EVC)标准、AOMedia Video 1(AV1)标准、第二代音频视频编码标准(AVS2)或下一代视频/图像编码标准(例如,H.267、H.268等)公开的方法。
在本文件中,可以提供与视频/图像编码相关的各种实施方式,并且除非相反地指定,否则这些实施方式可以被彼此组合并执行。
在本文件中,视频可以意指随时间推移的一系列图像的集合。通常,图片意指表示特定时间区域的图像的单元,并且切片/图块(tile)是构成图片的一部分的单元。切片/图块可以包括一个或更多个编码树单元(CTU)。一幅图片可以由一个或更多个切片/图块构成。一幅图片可以由一个或更多个图块组构成。一个图块组可以包括一个或更多个图块。块部(brick)可以表示图片中的图块内的CTU行的矩形区域。图块可以被分割成多个块部,各块部由图块内的一个或更多个CTU行组成。没有被分割成多个块部的图块也可以称为块部。块部扫描可以是如下的分割图片的CTU的特定顺序排序:可以在块部中按CTU光栅扫描对CTU进行排序,可以按图块的块部的光栅扫描对图块内的块部进行连续排序,并且可以按图片的图块的光栅扫描对图片中的图块进行连续排序(块部扫描是如下的分割图片的CTU的特定顺序排序:在块部中按CTU光栅扫描对CTU进行连续排序,按图块的块部的光栅扫描对图块内的块部进行连续排序,并且按图片的图块的光栅扫描对图片中的图块进行连续排序)。图块是特定图块列和特定图块行内的CTU的矩形区域(图块是图片中的特定图块列和特定图块行内的CTU的矩形区域)。图块列是CTU的高度等于图片的高度并且宽度由图片参数集中的语法元素指定的矩形区域。图块行是CTU的宽度由图片参数集中的语法元素指定并且高度等于图片的高度的矩形区域(图块行是CTU的高度由图片参数集中的语法元素指定并且宽度等于图片的宽度的矩形区域)。块部扫描可以是以下的分割图片的CTU的特定顺序排序:可以在图块中按CTU光栅扫描对CTU进行连续排序,而可以按图片的图块的光栅扫描对图片中的图块进行连续排序(图块扫描可以是以下的分割图片的CTU的特定顺序排序:可以在图块中按CTU光栅扫描对CTU进行连续排序,而可以按图片的图块的光栅扫描对图片中的图块进行连续排序)。切片可以包括图片的可以被包含在单个NAL单元中的整数个块部(切片包括图片的可以被排他性地包含在单个NAL单元中的整数个块部)。切片可以由多个完整图块组成或者仅由一个图块的连续序列的完整块部组成。在本文件中,可以将图块组与切片彼此互换地使用。例如,在本文件中,图块组/图块组头可以被称为切片/切片头。
像素或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”二者。换句话说,本文件中的术语“或”应该被解释为指示“另外地或另选地”。(另外,在该文件中,术语“或”应该被解释为指示“和/或”。例如,表述“A或B”可以包括1)仅A、2)仅B和/或3)A和B二者。换句话说,本文件中的术语“或”应该被解释为指示“另外地或另选地”。)
图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对应的术语。
在编码设备200中,从输入图像信号(原始块、原始样本阵列)中减去从帧间预测器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可以包括帧间预测器331和帧内预测器332。残差处理器320可以包括反量化器321和逆变换器321。根据实施方式,上面已描述的熵解码器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输出的关于预测的信息来确定对当前块应用帧内预测还是帧间预测,并且具体地可以确定帧内/帧间预测模式。
预测器320可以基于各种预测方法来生成预测信号。例如,预测器可以将帧内预测或帧间预测应用于对一个块的预测,并且也可以同时应用帧内预测和帧间预测。这可以被称为组合的帧间和帧内预测(CIIP)。另外,预测器可以基于块内复制(IBC)预测模式或调色板模式,以便对块执行预测。IBC预测模式或调色板模式可以被用于诸如屏幕内容编码(SCC)这样的游戏等的内容图像/视频编码。尽管IBC基本上在当前块中执行预测,但是其执行方式与帧间预测的相似之处在于,它导出当前块中的参考块。即,IBC可以使用本文件中描述的帧间预测技术中的至少一种。调色板模式可以被视为帧内编码或帧内预测的示例。当应用调色板模式时,关于调色板表和调色板索引的信息可以被包括在视频/图像信息中并被发信号通知。
帧内预测器331可以通过参考当前图片中的样本来预测当前块。根据预测模式,参考样本可以位于当前块的附近或与当前块分开。在帧内预测中,预测模式可以包括多种非定向模式和多种定向模式。帧内预测器331可以通过使用应用于邻近块的预测模式来确定应用于当前块的预测模式。
帧间预测器332可以基于参考图片上的运动向量所指定的参考块(参考样本阵列)来导出针对当前块的预测块。此时,为了减少在帧间预测模式下发送的运动信息的量,可以基于邻近块与当前块之间的运动信息的相关性以块、子块或样本为基础来预测运动信息。运动信息可以包括运动向量和参考图片索引。运动信息还可以包括帧间预测方向(L0预测、L1预测、Bi预测等)信息。在帧间预测的情况下,邻近块可以包括当前图片中存在的空间邻近块和参考图片中存在的时间邻近块。例如,帧间预测器332可以基于邻近块来配置运动信息候选列表,并且基于接收到的候选选择信息来导出当前块的运动向量和/或参考图片索引。可以基于各种预测模式来执行帧间预测,并且关于预测的信息可以包括指示针对当前块的帧间预测的模式的信息。
加法器340将所获得的残差信号与从预测器(帧间预测器332或帧内预测器331)输出的预测信号(预测块、预测样本阵列)相加,使得可以生成重构信号(重构图片、重构块、重构样本阵列)。当如在应用跳过模式的情况下一样没有针对处理目标块的残差时,可以将预测块用作重构块。
加法器340可以被称为重构器或重构块生成器。所生成的重构信号可以被用于当前块中的下一处理目标块的帧内预测,并且如随后描述的,可以通过滤波来输出或者被用于下一图片的帧间预测。
此外,在图片解码处理中,可以应用具有色度缩放的亮度映射(LMCS)。
滤波器350可以通过向重构后的信号应用滤波来改善主观/客观视频质量。例如,滤波器350可以通过向重构图片应用各种滤波方法来生成修改后的重构图片,并且可以将修改后的重构图片发送到存储器360中,尤其是发送到存储器360的DPB中。各种滤波方法可以包括例如解块滤波、样本自适应偏移、自适应环形滤波器、双边滤波器等。
已存储在存储器360的DPB中的(修改后的)重构图片可以被用作帧间预测器332中的参考图片。存储器360可以存储从中已导出(或解码了)运动信息的当前图片中的块的运动信息和/或已经重构的图片中的块的运动信息。所存储的运动信息可以被发送到帧间预测器260,以被用作邻近块的运动信息或时间邻近块的运动信息。存储器360可以存储当前图片中的重构块的重构样本,并且将它们发送到帧内预测器331。
在本说明书中,在编码设备200的滤波器260、帧间预测器221和帧内预测器222中描述的实施方式可以类似地或对应地应用于解码设备300的滤波器350、帧间预测器332和帧内预测器331。
如上所述,执行预测,以便提高执行视频编码时的压缩效率。据此,可以生成包括针对作为编码目标块的当前块的预测样本的预测块。这里,预测块包括空间域(或像素域)中的预测样本。可以在编码设备和解码设备中相同地导出预测块,并且编码设备可以通过向解码设备发信号通知并非原始块本身的原始样本值而是关于原始块与预测块之间的残差的信息(残差信息)来提高图像编码效率。解码设备可以基于残差信息来导出包括残差样本的残差块,通过将残差块与预测块相加来生成包括重构样本的重构块,并且生成包括重构块的重构图片。
可以通过变换过程和量化过程来生成残差信息。例如,编码设备可以导出原始块与预测块之间的残差块,通过对残差块中所包括的残差样本(残差样本阵列)执行变换过程来导出变换系数,并且通过对变换系数执行量化过程来导出量化后的变换系数,使得它可以(通过比特流)向解码设备发信号通知关联的残差信息。这里,残差信息可以包括量化后的变换系数的值信息、位置信息、变换技术、变换核、量化参数等。解码设备可以基于残差信息来执行量化/反量化过程并且导出残差样本(或残差样本块)。解码设备可以基于预测块和残差块来生成重构块。编码设备可以通过对量化后的变换系数进行反量化/逆变换来导出残差块以便作为下一个图片的帧间预测的参考,并且可以基于此来生成重构图片。
在本文件中,将详细地描述图2中的编码设备的变换器、量化器、反量化器或逆变换器或者图3中的解码设备的反量化器或逆变换器。这里,编码设备可以从通过熵编码而被变换和量化的信息来导出比特流,并且解码设备可以通过熵解码从比特流导出经变换和量化的信息。下文中,将描述反量化器和逆变换器,并且变换器和量化器可以逆向地执行与在反量化器和逆变换器中相同的操作。另外,反量化器和逆变换器可以被用反量化和逆变换器表示,并且变换器和量化器也可以被用变换和量化器表示。
另外,在本文件中,多重变换选择(MTS)可以意指用于通过使用至少两种变换类型来执行变换的方法。这也可以被表示为自适应多重变换(AMT)或显式多重变换(EMT),同样地,mts_idx也可以被表示为AMT_idx、EMT_idx、AMT_TU_idx、EMT_TU_idx、变换索引、变换组合索引等,并且本文件不限于这种表述。
图4例示了反量化和逆变换器的示例。
参照图4,反量化和逆变换器400可以包括反量化器410、逆二次变换单元420和逆一次变换单元430。
反量化器410可以通过使用量化步长信息对熵解码信号(或量化后的变换系数)执行反量化来获得变换系数,并且逆二次变换单元420可以对变换系数执行逆二次变换。另外,逆一次变换单元430可以对经逆二次变换的信号或块(或变换系数)执行逆一次变换,并且可以获得通过逆一次变换而解码的残差信号。这里,逆二次变换可以表示二次变换的逆变换,并且逆一次变换可以表示一次变换的逆变换。
在本文件中,可以针对通过预测模式、块大小或块形状中的至少一种分类的各个变换配置组来配置变换组合,并且逆一次变换单元430可以基于通过本文件配置的变换组合来执行逆变换。另外,可以应用将在本文件中稍后描述的实施方式。
图5例示了逆二次变换单元和逆一次变换单元的示例。
参照图5具体地描述逆变换处理,逆变换处理可以使用逆二次变换应用存在/不存在确定器(或确定是否应用逆二次变换的元件)510、逆二次变换确定器(或确定逆二次变换的元件)520、逆二次变换单元530和逆一次变换单元540。这里,图4中例示的逆二次变换单元420可以与图5中例示的逆二次变换单元530相同,并且还可以包括图5中例示的逆二次变换应用存在/不存在确定器510、逆二次变换确定器520和逆二次变换单元530中的至少一个,但是可以根据表述而改变,使得本文件不限于此。另外,图4中例示的逆一次变换单元430可以与图5中例示的逆一次变换单元540相同,但是可以根据表述而改变,使得本文件不限于此。
逆二次变换应用存在/不存在确定器510可以确定是否应用逆二次变换。例如,逆二次变换可以是NSST或RST。例如,逆二次变换应用存在/不存在确定器510可以基于从编码设备接收到的第二变换标志来确定是否应用逆二次变换。作为另一示例,逆二次变换应用存在/不存在确定器510还可以基于残差块的变换系数来确定是否应用逆二次变换。
逆二次变换确定器520可以确定逆二次变换。此时,逆二次变换确定器520可以基于根据帧内预测模式指定的NSST(或RST)变换集合来确定应用于当前块的逆二次变换。
另外,例如,可以取决于一次变换确定方法来确定二次变换确定方法。可以根据帧内预测模式来确定一次变换和二次变换的不同的多种组合。
另外,例如,逆二次变换确定器520还可以基于当前块的大小来确定应用逆二次变换的区域。
逆二次变换单元530可以通过使用所确定的逆二次变换来对反量化后的残差块执行逆二次变换。
逆一次变换单元540可以对逆二次变换后的残差块执行逆一次变换。一次变换可以被称为核心变换。例如,逆一次变换单元540可以通过使用以上提到的MTS来执行一次变换。另外,例如,逆一次变换单元540可以确定是否对当前块应用MTS。
例如,当对当前块应用MTS时(或者当tu_mts_flag语法元素的值为1时),逆一次变换单元540可以基于当前块的帧内预测模式来配置MTS候选。另外,逆一次变换单元540可以通过使用指示所配置的MTS候选当中的特定MTS的mts_idx语法元素来确定应用于当前块的一次变换。
图6是基于变换相关参数的逆变换方法的示例。
参照图6,实施方式可以获得sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素(S600)。这里,sps_mts_intra_enabled_flag语法元素可以表示关于tu_mts_flag语法元素是否被包括在帧内编码单元的残差编码语法中的信息。例如,当sps_mts_intra_enabled_flag语法元素的值为0时,tu_mts_flag语法元素可以不被包括在帧内编码单元的残差编码语法中,并且当sps_mts_intra_enabled_flag语法元素的值为1时,tu_mts_flag语法元素可以被包括在帧内编码单元的残差编码语法中。
另外,sps_mts_inter_enabled_flag语法元素可以表示关于tu_mts_flag语法元素是否被包括在帧间编码单元的残差编码语法中的信息。例如,当sps_mts_inter_enabled_flag语法元素的值为0时,tu_mts_flag语法元素可以不被包括在帧间编码单元的残差编码语法中,并且当sps_mts_inter_enabled_flag语法元素的值为1时,tu_mts_flag语法元素可以被包括在帧间编码单元的残差编码语法中。
这里,tu_mts_flag语法元素可以表示多重变换选择(MTS)是否应用于亮度变换块的残差样本。
实施方式可以基于sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素来获得tu_mts_flag语法元素(S610)。例如,当sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素的值为1时,实施方式可以获得tu_mts_flag语法元素。例如,当tu_mts_flag语法元素的值为0时,MTS可以不应用于亮度变换块的残差样本,并且当tu_mts_flag语法元素的值为1时,MTS可以被应用于亮度变换块的残差样本。
实施方式可以基于tu_mts_flag语法元素获得mts_idx语法元素(S620)。这里,mts_idx语法元素可以表示关于根据当前(亮度)变换块的水平和/或垂直方向将哪个变换内核应用于亮度残差样本的信息。例如,当tu_mts_flag语法元素的值为1时,实施方式可以获得mts_idx语法元素。另选地,当tu_mts_flag语法元素的值为0时,实施方式可以不获得mts_idx语法元素。
实施方式可以诱导与mts_idx语法元素对应的变换内核(S630)。另选地,实施方式可以基于mts_idx语法元素来导出变换内核。
此外,在另一实施方式中,本文件的实施方式中的至少一个也可以应用于tu_mts_flag语法元素和/或mts_idx语法元素。
例如,tu_mts_flag语法元素可以基于sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素被包括在残差编码语法中,并且mts_idx语法元素可以基于tu_mts_flag语法元素被包括在变换单元语法中。
另选地,例如,可以通过sps_explicit_mts_intra_enabled_flag语法元素来表示sps_mts_intra_enabled_flag语法元素,并且可以通过sps_explicit_mts_inter_enabled_flag语法元素来表示sps_mts_inter_enabled_flag语法元素。另选地,可以省略tu_mts_flag语法元素,并且mts_idx语法元素也可以基于sps_explicit_mts_intra_enabled_flag语法元素或sps_explicit_mts_inter_enabled_flag语法元素被包括在编码单元语法中。
例如,可以通过将与mts_idx语法元素对应的变换内核分为水平变换和垂直变换来限定它。另选地,基于mts_idx语法元素确定的变换内核可以分为水平变换和垂直变换。此外,可以将不同的变换内核应用于水平变换和垂直变换,但是也可以将相同的变换内核应用于水平变换和垂直变换,使得本文件不限于此。
例如,关于基于mts_idx语法元素而确定的应用于水平变换和垂直变换的变换内核的信息可以是如表1或表2中例示的。
[表1]
mts_idx[xTbY][yTbY][cldx] |
trTypeHor |
trTypeVer |
-1 |
0 |
0 |
0 |
1 |
1 |
1 |
2 |
1 |
2 |
1 |
2 |
3 |
2 |
2 |
[表2]
mts_idx |
0 |
1 |
2 |
3 |
4 |
trTypeHor |
0 |
1 |
2 |
1 |
2 |
trTypeVer |
0 |
1 |
1 |
2 |
2 |
实施方式可以基于变换内核来执行逆变换(S640)。在本文件中,逆变换可以由变换表示,或者也可以由变换的逆处理表示。
图7是特定逆变换方法的示例。
参照图7,实施方式可以确认变换大小(nTbS)(S710)。例如,变换大小(nTbS)可以是表示缩放的变换系数的水平样本大小的变量。
实施方式可以确认变换内核类型(trType)(S720)。例如,变换内核类型(trType)可以是表示变换内核的类型的变量,并且可以应用本文件的各种实施方式。例如,变换内核类型也可以表示图6中例示的trTypeHor或trTypeVer。
实施方式可以基于变换大小(nTbS)或变换内核类型(trType)中的至少一个来执行变换矩阵相乘(S730)。例如,可以基于变换内核类型(trType)来应用特定操作。另选地,例如,可以基于变换大小(nTbS)和变换内核类型(trType)来应用预定的变换矩阵。
实施方式可以基于变换矩阵相乘来导出变换样本(S740)。
编码设备/解码设备可以执行以上提到的逆变换处理,并且编码设备还可以执行作为以上提到的逆变换处理的逆的变换处理。
图8是根据实施方式的CABAC编码***的框图,并且例示了用于对单个语法元素进行编码的上下文自适应二进制算术编码(CABAC)的框图。
当输入信号是语法元素而非二进制值时,CABAC的编码处理首先通过二值化将输入信号转换为二进制值。当输入信号已经是二进制值时,可以通过在不进行二值化的情况下旁路来输入该输入信号,即,输入编码引擎。这里,构成二进制值的各个二进制0或1可以被称为bin。例如,当二值化之后的二进制串为110时,1、1和0中的每一个都称为bin。一个语法元素的bin可以表示对应语法元素的值。
二值化后的bin可以被输入到常规编码引擎或旁路编码引擎。
常规编码引擎可以将反映概率值的上下文模型指派给对应的bin,并且基于所指派的上下文模型对对应的bin进行编码。常规编码引擎可以在对各个bin进行编码之后更新对应bin的概率模型。由此编码后的bin可以被称为上下文编码后的bin。
旁路编码引擎省略了估计输入bin的概率的过程以及在编码之后更新应用于对应bin的概率模型的过程。通过对通过应用均匀概率分布而非指派上下文而输入的bin进行编码,能够提高编码速度。由此编码后的bin可以被称为旁路bin。
熵编码可以确定是通过常规编码引擎执行编码还是通过旁路编码引擎执行编码,并且切换编码路径。熵解码逆向地执行与熵编码中相同的处理。
此外,在实施方式中,可以基于诸如transform_skip_flag、last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、coded_sub_block_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_remainder、dec_abs_level、coeff_sign_flag和/或mts_idx这样的语法元素对(量化后)的变换系数进行编码/解码。
例如,残差相关信息或残差相关信息中所包括的语法元素可以是如表3至表5中表示的。另选地,残差相关信息中所包括的残差编码信息或残差编码语法中所包括的语法元素可以是如表3至表5中表示的。表3至表5可以连续地表示一种语法。
[表3]
[表4]
[表5]
例如,残差相关信息可以包括残差编码信息(或残差编码语法中所包括的语法元素)或变换单元信息(或变换单元语法中所包括的语法元素),残差编码信息可以是如表6至表9中表示的并且变换单元信息可以是如表10或表11中表示的。表6至表9可以连续地表示一种语法。
[表6]
[表7]
[表8]
[表9]
[表10]
[表11]
语法元素transform_skip_flag表示是否省略了对关联块的变换。关联块可以是编码块(CB)或变换块(TB)。相对于变换(和量化)和残差编码过程,CB和TB可以可互换地使用。例如,如上所述,可以导出相对于CB的残差样本,并且可以通过对残差样本的变换和量化来导出(量化后的)变换系数,并且可以通过残差编码过程来生成和发信号通知高效地表示(量化后的)变换系数的位置、大小、符号等的信息(例如,语法元素)。量化后的变换系数可以被简称为变换系数。通常,当CB不大于最大TB时,CB的大小可以等于TB的大小,并且在这种情况下,要被变换(和量化)并且被残差编码的目标块可以被称为CB或TB。此外,当CB大于最大TB时,要被变换(和量化)并且被残差编码的目标块可以被称为TB。下文中,尽管将描述以变换块(TB)为单位发信号通知与残差编码相关的语法元素,但这是例示性的,并且如上所述,TB可以与编码块(CB)可互换地使用。
在表3至表5中,虽然已例示了基于残差编码语法来发信号通知语法元素transform_skip_flag,但是这是例示性的,并且还可以基于变换单元语法来发信号通知语法元素transform_skip_flag,如表10或表11中例示的。残差编码语法和变换单元语法可以被统称为残差(相关)信息。例如,可以仅针对亮度分量(亮度分量块)发信号通知语法元素transform_skip_flag(参见表10)。具体地,例如,当亮度分量块中存在非零有效系数时,残差相关信息可以包括亮度分量块的变换跳过标志(transform_skip_flag)。在这种情况下,残差相关信息不包括色度分量块的变换跳过标志。即,残差相关信息可以包括亮度分量块的变换跳过标志,并且可以不包括色度分量块的变换跳过标志。即,在这种情况下,没有显式地发信号通知色度分量块的变换跳过标志,并且色度分量块的变换跳过标志的值可以被导出/推断为0。
另选地,作为另一示例,还可以分别针对亮度分量(亮度分量块)和色度分量(色度分量块)发信号通知语法元素transform_skip_flag(参见表11)。
返回参照表3至表5或表6至表9,实施方式可以基于语法元素last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix和last_sig_coeff_y_suffix对变换块内的最后非零变换系数的(x,y)位置信息进行编码。更具体地,语法元素last_sig_coeff_x_prefix表示变换块内的按扫描顺序的最后有效系数的列位置的前缀,语法元素last_sig_coeff_y_prefix表示变换块内的按扫描顺序的最后有效系数的行位置的前缀,语法元素last_sig_coeff_x_suffix表示变换块内的按扫描顺序的最后有效系数的列位置的后缀,并且语法元素last_sig_coeff_y_suffix表示变换块内的按扫描顺序的最后有效系数的行位置的后缀。这里,有效系数可以表示非零系数。扫描顺序可以是右上对角扫描顺序。另选地,扫描顺序可以是水平扫描顺序或垂直扫描顺序。可以基于是否对目标块(CB或包括TB的CB)应用帧内/帧间预测和/或特定帧内/帧间预测模式来确定扫描顺序。
接下来,在变换块被分割成4×4子块之后,通过使用每4×4子块1位语法元素coded_sub_block_flag,指示当前子块内是否存在非零系数。子块可以与系数组(CG)可互换地使用。
当语法元素coded_sub_block_flag的值为0时,不再存在要发送的信息,使得可以终止对当前子块的编码处理。相反,当语法元素coded_sub_block_flag的值为1时,可以连续地执行对语法元素sig_coeff_flag的编码处理。由于包括最后非零系数的子块不需要对语法元素coded_sub_block_flag进行编码,并且包括变换块的DC信息的子块具有包括非零系数的高概率,因此语法元素coded_sub_block_flag的值可以被假定为1,而不进行编码。
如果语法元素coded_sub_block_flag的值为1并且确定在当前子块内存在非零系数,则可以根据逆扫描顺序对具有二进制值的语法元素sig_coeff_flag进行编码。可以根据扫描顺序针对各个系数对1位语法元素sig_coeff_flag进行编码。如果当前扫描位置处的变换系数的值不为0,则语法元素sig_coeff_flag的值可以为1。这里,在包括最后非零系数的子块的情况下,可以省略对该子块的编码处理,因为不必相对于最后非零系数对语法元素sig_coeff_flag进行编码。只有当语法元素sig_coeff_flag为1时才可以执行级别信息编码,并且在级别信息编码处理中可以使用四个语法元素。更具体地,各个语法元素sig_coeff_flag[xC][yC]可以表示在当前TB内的各个变换系数位置(xC,yC)处的对应变换系数的级别(值)是否为非零。在实施方式中,语法元素sig_coeff_flag可以对应于表示量化后的变换系数是否为非零有效系数的有效系数标志的示例。
对语法元素sig_coeff_flag进行编码之后的其余级别值可以是如下式1中所表示的。即,表示要编码的级别值的语法元素remAbsLevel可以如下式1中所表示的。这里,coeff可以意指实际变换系数值。
[式1]
remAbsLevel=|coeff|-1
语法元素abs_level_gt1_flag可以表示对应扫描位置(n)处的remAbsLevel′是否大于1。当abs_level_gtl_flag的值为0时,对应位置的系数的绝对值可以为1。当abs_level_gt1_flag的值为1时,随后要编码的级别值remAbsLevel可以是如下式2中所表示的。
[式2]
remAbsLevel=remAbSLevel-1
如在下式3中一样,通过语法元素par_level_flag,可以对式2中描述的remAbsLevel的最低有效系数(LSB)值进行编码。这里,语法元素par_level_flag[n]可以表示扫描位置(n)处的变换系数级别(值)的奇偶校验位。对语法元素par_level_flag进行编码之后的要编码的变换系数级别值remAbsLevel可以如下式4中所表示地被更新。
[式3]
par_Ievel_flag=remAbsLevel&1
[式4]
remAbsLevel′=remAbsLevel>>1
语法元素abs_level_gt3_flag可以表示对应扫描位置(n)处的remAbsLevel′是否大于3。只有当语法元素abs_level_gt3_flag为1时,才可以执行对语法元素abs_remainder的编码。作为实际变换系数值的coeff与各个语法元素之间的关系可以如下式5所表示地总结,并且下表12可以表示与式5相关的示例。最后,可以通过使用作为1位符号的语法元素coeff_sign_flag对各个系数的符号进行编码。|coeff|可以表示变换系数级别(值),并且也可以被表示为变换系数的AbsLevel。
[式5]
|coeff|=sig_coeff_flag+abs_level_gt1_flag+par_level_flag+2*(abs_Ievel_gt3_flag+abs_remainder)
[表12]
在实施方式中,par_level_flag可以表示量化后的变换系数的变换系数级别的奇偶校验位的奇偶校验位级别标志的示例,abs_level_gt1_flag可以表示关于变换系数级别或待编码级别(值)是否大于第一阈值的第一变换系数级别的示例,并且abs_level_gt3_flag可以表示关于变换系数级别或待编码级别(值)是否大于第二阈值的第二变换系数级别的示例。
图9是例示了4×4块内的变换系数的示例的示图。
图9中例示的4×4块可以表示量化后的系数的示例。图9中例示的块可以是4×4变换块,或者8×8、16×16、32×32和64×64变换块中的4×4子块。图9中例示的4×4块可以表示亮度块或色度块。例如,图9中例示的对角逆扫描系数的编码结果可以例如如表13中表示的。在表13中,scan_pos可以表示根据逆对角扫描的系数的位置。scan_pos 15可以表示首先被扫描的系数,即,4×4块中的右下角的系数,并且scan_pos 0可以表示最后被扫描的系数,即,4×4块中的左上角的系数。此外,在实施方式中,scan_pos也可以被称为扫描位置。例如,scan_pos 0可以被称为扫描位置0。
[表13]
scan_pos |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
系数 |
0 |
0 |
0 |
0 |
1 |
-1 |
0 |
2 |
0 |
3 |
-2 |
-3 |
4 |
6 |
-7 |
10 |
sig_coeff_flag |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
|
|
abs_level_gt1_flag |
|
|
|
|
0 |
0 |
|
1 |
|
1 |
1 |
1 |
1 |
1 |
|
|
par_level_flag |
|
|
|
|
|
|
|
0 |
|
1 |
0 |
1 |
0 |
0 |
|
|
abs_level_gt3_flag |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
abs_remainder |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
dec_abs_level |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
10 |
coeff_sign_flag |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
此外,CABAC提供高性能,但是具有吞吐量性能不良的缺点。这是由CABAC的常规编码引擎引起的,并且常规编码通过对先前bin的编码使用更新后的概率状态和范围,由此表现出高的数据依赖性,并且花费长时间来读取概率部分并确定当前状态。能够通过限制上下文编码后的bin的数目来解决CABAC的吞吐量问题。因此,如表3至表5或表6至表9中一样,根据子块的大小,用于表示语法元素sig_coeff_flag、abs_level_gt1_flag和par_level_flag的bin的总和在4×4子块的情况下被限制于28,并且在2×2子块的情况下被限制于6(remBinsPass1),并且语法元素abs_level_gt3_flag的上下文编码后的bin的数目可以在4×4子块的情况下被限制于4,并且在2×2子块的情况下被限制于2(remBinsPass2)。当所有受限制的上下文编码后的bin都用于对上下文元素进行编码时,可以在不使用CABAC执行旁路编码的情况下对其余系数进行二值化。
此外,本文件的实施方式可以提出统一变换类型信令方法。
例如,关于是否应用MTS的信息可以由tu_mts_flag语法元素表示,并且关于要应用的变换内核的信息可以由mts_idx语法元素表示。另外,tu_mts_flag语法元素可以被包括在变换单元语法中,并且mts_idx语法元素可以被包括在残差编码语法中,并且例如可以如表14和表15中所表示的。
[表14]
[表15]
然而,本文件的实施方式是统一变换类型信令,并且可以仅通过使用一条信息来表示关于是否应用MTS的信息以及关于要应用的变换内核的信息。例如,这条信息也可以由关于统一变换类型的信息表示,并且也可以由tu_mts_idx语法元素表示。在这种情况下,可以省略tu_mts_flag语法元素和mts_idx语法元素。tu_mts_idx语法元素可以被包括在变换单元语法中,并且可以例如如表16中所表示的。
[表16]
首先解析MTS标志(或tu_mts_flag语法元素),并且对于之后是MTS索引(或mts_idx语法元素)的变换跳过(TS)标志(或tranform_skip_flag语法元素),可以使用作为根据本文件的实施方式的截短一元(TU)二值化的新联合语法元素的tu_mts_idx语法元素,而非执行具有两个bin的固定长度编码。第一个bin可以表示TS、第二MTS和所有以下的MTS索引。
例如,tu_mts_idx语法元素的语义和二值化可以被如表17或表18中地表示。
[表17]
[表18]
例如,上下文模型的数目可以不改变,并且作为针对tu_mts_idx语法元素的各个bin的上下文索引增量的ctxInc的指派可以被如表19中地表示。
[表19]
此外,本文件的实施方式可以提出用于变换跳过的残差编码方法。
例如,可以修改以下各项,以使残差编码适应表示量化后的预测残差(空间域)的变换跳过级别的统计和信号特性。
(1)没有最后有效扫描位置:由于残差信号反映了预测后的空间残差,并且对于变换跳过(TS)没有执行通过变换进行的能量压缩,在变换块的右下角中可以不再提供候补零或无效级别的高概率。因此,可以省略最后有效扫描位置的信令。替代地,要处理的第一子块可以是变换块内最右下的子块。
(2)子块CBF:由于不存在最后有效扫描位置的信令,因此可以如下地修改具有用于TS的coded_sub_block_flag语法元素的子块CBF信令。
-由于量化,以上提到的无效序列仍可能在变换块内局部出现。因此,可以如上所述消除最后有效扫描位置,并且可以针对所有子块对coded_sub_block_flag语法元素进行编码。
-覆盖DC频率位置的子块(左上子块)的coded_sub_block_flag语法元素可以被表示为特例。例如,未发信号通知对应子块的coded_sub_block_flag语法元素,并且可以始终推断其为1。当最后有效扫描位置设置在另一子块中时,这可能意指在DC子块(覆盖DC频率位置的子块)之外存在至少一个有效级别。结果,对于DC子块,推断出对应子块的coded_sub_block_flag语法元素的值为1,但是可以仅包括0/无效级别。当TS中没有最后扫描位置信息时,可以发信号通知各个子块的coded_sub_block_flag语法元素。除了所有其它coded_sub_block_flag语法元素的值已经为0的情况之外,这可以包括DC子块的coded_sub_block_flag语法元素。在这种情况下,DC子块的coded_sub_block_flag语法元素的值可以被推断为1(inferDcSbCbf=1)。由于该DC子块需要具有至少一个有效级别,而非DC子块内的所有其它sig_coeff_flag语法元素的值为0,因此第一位置(0,0)的sig_coeff_flag语法元素可以不被发信号通知,并且sig_coeff_flag语法元素的值可以被推断为1(inferSbDcSigCoeffFlag=1)。
-coded_sub_block_flag语法元素的上下文建模可以改变。可以通过右侧的coded_sub_block_flag语法元素和底侧的coded_sub_block_flag语法元素的总和而非当前子块和这二者的逻辑分离来计算上下文模型索引。
(3)sig_coeff_flag语法元素的上下文建模:可以修改sig_coeff_flag语法元素的上下文建模的本地模板,以包括当前扫描位置的右邻近块(NB0)和下邻近块(NB1)。上下文模型偏移可以是有效邻近块位置sig_coeff_flag[NB0]+sig_coeff_flag[NB1]的数量。因此,可以根据当前变换块内的对角线(d)来消除对其它上下文集合的选择。这可能造成三个上下文模型和单个上下文模型集用于对sig_coeff_flag语法元素进行编码。
(4)abs_level_gt1_flag语法元素和par_level_flag语法元素的上下文建模:对于abs_level_gt1_flag语法元素和par_level_flag语法元素,可以使用单个上下文模型。
(5)abs_remainder语法元素的编码:通常,变换跳过残差绝对水平的经验分布仍然适于拉普拉斯或几何分布,但是可能存在比变换系数绝对水平大的非平稳性。特别地,对于残差绝对水平,连续实现的窗口内的方差可能更高。因此,可以如下地修改abs_remainder语法元素的二值化和上下文建模。
-通过使用较高的截止值进行二值化,即,用于sig_coeff_flag语法元素、abs_level_gt1_flag语法元素、par_level_flag语法元素和abs_level_gt3_flag语法元素的编码,用于针对abs_remainder语法元素的莱斯(rice)码和各个bin的位置的变换点的专用上下文模型可以造成较高的压缩效率。截止值的增大可能造成标志“大于X”,例如,诸如引入abs_level_gt5_flag语法元素和abs_level_gt7_flag语法元素,直到达到截止值。截止值本身可以被固定到5(numGtFlags=5)。
-可以修改用于导出莱斯参数的模板。即,可以类似于sig_coeff_flag语法元素的上下文建模的本地模板仅考虑当前扫描位置的左邻近块和下邻近块。
(6)coeff_sign_flag语法元素的上下文建模:由于符号序列内的非平稳性和预测残差频繁地出现偏置的事实,即使当全局经验分布几乎均匀地分布,也可以通过使用上下文模型对符号进行编码。单个专用上下文模型可以用于符号的编码,并且可以在sig_coeff_flag语法元素之后解析符号,以便将所有上下文编码后的bin保持在一起。
(7)减少上下文编码后的bin:可以不改变第一扫描过程,即,sig_coeff_flag语法元素、abs_level_gt1_flag语法元素和par_level_flag语法元素的发送。然而,可以消除每个样本的上下文编码后的bin(CCB)的最大数目限制,并且可以对其进行不同的处理。可以通过将作为CCB>k的模式指定为无效来确保CCB的减少。这里,k可以是正整数。例如,对于常规级别编码模式的k可以为2,但是不限于此。该限制可以对应于量化空间的减小。
例如,变换跳过残差编码语法可以是如表20中所表示的。
[表20]
图10是例示了根据本文件的示例的残差信号解码器的示图。
此外,如参照表3至表5或表6至表8所描述的,在对残差信号特别是残差信号进行编码之前,可以首先传递是否对对应的块应用变换。通过在变换域中表示残差信号之间的相关性,执行数据压缩并且将压缩后的数据传送到解码设备,并且如果残差信号之间的相关性不足,则数据压缩可能发生不充分。在这种情况下,可以省略包括复杂计算处理的变换处理,并且像素域(空间域)的残差信号可以被传送到解码设备。
由于尚未变换的像素域的残差信号具有与常见变换域的残差信号不同的特性(残差信号的分布、各个残差信号的绝对水平等),因此以下描述提出了根据本文件的实施方式的用于对残差信号进行编码以便将此信号高效地传送到解码设备的方法。
如图10中例示的,表示是否对对应的变换块和比特流(或关于编码后的二值化码的信息)应用变换的变换应用存在/不存在标志可以被输入到残差信号解码器1000,并且(解码后的)残差信号可以被输出。
变换应用存在/不存在标志可以由变换存在/不存在标志、变换跳过存在/不存在标志或语法元素transform_skip_flag表示。编码后的二值化码也可以通过二值化处理被输入到残差信号解码器1000。
残差信号解码器1000可以被包括在解码设备的熵解码器中。另外,尽管为了便于图10中的说明,已将变换应用存在/不存在标志与比特流区分开,但是变换应用存在/不存在标志可以被包括在比特流中。另选地,除了变换应用存在/不存在标志之外,比特流还可以包括关于变换系数的信息(当应用变换时,语法元素transform_skip_flag=0)或关于残差样本(的值)的信息(当不应用变换时,transform_skip_flag=1)。关于变换系数的信息可以包括例如表3至表5或表6至表9中例示的信息(或语法元素)。
可以以变换块为单位发送变换跳过存在/不存在标志,并且例如,在表3至表5中,变换跳过存在/不存在标志被限制于特定块大小(只有当变换块的大小是4×4或更小时才包括解析transform_skip_flag的条件),但是实施方式可以以各种方式配置确定是否解析变换跳过存在/不存在标志的块的大小。log2TbWidth和log2TbHeight的大小可以由变量wN和hN来确定,并且wN和hN可以具有例如式6中例示的以下值中的一个值。
[式6]
wN={2,3,4,5,6}
hN={2,3,4,5,6}
例如,可以应用具有根据式6的值的wN和hN的语法元素可以是如表21中所表示的。
[表21]
例如,wN和hN可以各自具有值5,在这种情况下,可以针对宽度小于或等于32且高度小于或等于32的块发信号通知变换跳过存在/不存在标志。另选地,wN和hN可以各自具有值6,在这种情况下,可以针对宽度小于或等于64且高度小于或等于64的块发信号通知变换跳过存在/不存在标志。例如,wN和hN可以具有如式6中所表示的值2、3、4、5或6,具有彼此相同的值,也可以具有彼此不同的值。另外,可以基于wN和hN的值来确定可以在其中发信号通知变换跳过存在/不存在标志的块的宽度和高度。
如上所述,可以根据变换跳过存在/不存在标志来确定对残差信号进行解码的方法。通过利用所提出的方法高效地处理具有彼此不同的统计特性的信号,能够降低熵解码处理的复杂度并提高编码效率。
图11是例示了根据本文件的实施方式的变换跳过标志解析确定器的示图。
此外,如参照表3至表5或表6至表9所描述的,在对残差信号进行编码之前,实施方式可以首先传送是否对对应的块应用变换。通过在变换域中表示残差信号之间的相关性,执行数据压缩,并且压缩后的数据被传送到解码器,并且如果残差信号之间的相关性不足,则数据压缩可能发生不充分。在这种情况下,可以省略包括复杂计算处理的变换处理,并且像素域(空间域)的残差信号可以被传送到解码器。由于尚未变换的像素域的残差信号具有与常见变换域的残差信号不同的特性(残差信号的分布度、各个残差信号的绝对水平等),因此以下描述提出了用于对残差信号进行编码以便将此信号高效地传送到解码器的方法。
可以以变换块为单位发送变换跳过存在/不存在标志,并且例如,变换跳过存在/不存在标志的信令被限制为特定块的大小(只有当变换块的大小为4×4或更小时才包括解析transform_skip_flag的条件),但是实施方式可以将确定是否解析变换跳过存在/不存在标志的条件限定为块内的像素或样本的数目,而非关于块的宽度或高度的信息。即,确定是否解析变换跳过存在/不存在标志的条件可以被限定为使用用于解析变换跳过存在/不存在标志(例如,语法元素transform_skip_flag)的条件当中的log2TbWidth和log2TbHeight的乘积。另选地,可以基于块的宽度(例如,log2TbWidth)与高度(例如,log2TbHeight)的乘积来解析变换跳过存在/不存在标志。另选地,可以根据通过块的宽度(例如,log2TbWidth)与高度(例如,log2TbHeight)的乘积而获得的值来确定是否解析变换跳过存在/不存在标志。例如,log2TbWidth和log2TbHeight可以具有式7中例示的以下值中的一个值。
[式7]
log2TbWidth={1,2,3,4,5,6}
log2TbHeight={1,2,3,4,5,6}
根据实施方式,当基于块内的样本数目来确定是否解析变换跳过存在/不存在标志时,各种形状的块可以被包括在变换排除块(其中变换跳过存在/不存在标志不被解析)中,而非基于块的宽度和高度来确定是否解析变换跳过存在/不存在标志。
例如,当所有log2TbWidth和log2TbHeight都被限定为2时,只有2×4、4×2和4×4的块可以被包括在变换排除块中,但是当受样本的数目控制时,其中块内的样本的数目为16或更少的块被包括在变换排除块中,使得除了2×4、4×2和4×4的块之外,2×8和8×2大小的块也可以被包括在变换排除块中。
可以根据变换跳过存在/不存在标志来确定对残差信号进行解码的方法,并且通过根据以上提到的实施方式高效地处理具有不同统计特性的信号,能够降低熵解码处理的复杂性并提高编码效率。
例如,如图11中例示的,关于是否启用高级语法内的变换跳过的信息、块大小信息以及关于是否应用多重变换选择(MTS)的信息可以被输入到变换跳过标志解析确定器1100,并且可以输出变换跳过标志。另选地,关于是否启用高级语法内的变换跳过的信息以及块大小信息可以被输入到变换跳过标志解析确定器,并且也可以基于该信息来输出变换跳过标志。即,当根据关于是否启用高级语法内的变换跳过的信息来启用变换跳过时,可以基于块大小信息来输出(或解析)变换跳过标志。以上提到的信息可以被包括在比特流或语法中。变换跳过标志解析确定器1100可以被包括在解码设备的熵解码器中。例如,基于以上提到的信息来确定变换跳过标志的方法可以如下。
图12是根据本文件的实施方式的用于说明对变换跳过存在/不存在标志进行编码的方法的流程图。
将如下地参照图12再次描述以上提到的实施方式。
首先,可以确定是否启用高级语法内的变换跳过(S1200)。例如,可以基于关于是否启用高级语法内的变换跳过的信息(例如,transform_skip_enabled_flag语法元素)来确定是否启用高级语法内的变换跳过。例如,可以基于序列参数集(SPS)来发信号通知关于是否启用变换跳过的信息(例如,transform_skip_enabled_flag语法元素)。另选地,关于是否启用变换跳过的信息可以通过被包括在SPS语法中来发信号通知。另选地,关于是否启用变换跳过的信息也可以基于图片参数集(PPS)来发信号通知或者通过被包括在PPS语法中来发信号通知,但是本文件不限于此。这里,启用高级语法内的变换跳过的事实可以表示参考对应的高级语法针对切片/块启用变换跳过。可以基于以上提到的变换跳过标志来确定是否对启用变换跳过的块实质上应用变换跳过。
例如,当启用高级语法内的变换跳过时,可以确定语法内的cu_mts_flag语法元素的值是否为0(S1210)。例如,可以基于关于是否启用多重变换选择(MTS)的信息来确定cu_mts_flag语法元素的值是否为0。另选地,可以基于sps_mts_enabled_flag语法元素来确定关于是否启用MTS的信息。
例如,当cu_mts_flag语法元素的值为0时,可以确定log2TbWidth和log2TbHeight的乘积是否小于或等于阈值(S1220)。另选地,可以确定通过当前块的宽度的以2为底的对数值和当前块的高度的以2为底的对数值的乘积而获得的值是否小于阈值。另选地,可以确定通过当前块的宽度与高度的乘积而获得的值是否小于阈值。例如,可以基于块大小信息来确定log2TbWidth与log2TbHeight的乘积是否小于或等于阈值。块大小信息可以包括关于当前块的宽度和高度的信息。另选地,块大小信息可以包括关于当前块的宽度和高度的以2为底的对数值的信息。
例如,当log2TbWidth与log2TbHeight的乘积小于或等于阈值时,变换跳过存在/不存在标志(或transform_skip_flag语法元素)的值可以被确定为1(S1230)。另选地,可以解析值为1的变换跳过存在/不存在标志。另选地,例如,当根据设置或条件,log2TbWidth与log2TbHeight的乘积小于或等于阈值时,变换跳过存在/不存在标志(或transform_skip_flag语法元素)的值可以被确定为0。另选地,可以解析值为0的变换跳过存在/不存在标志。另选地,可以不解析变换跳过存在/不存在标志。即,作为一个示例,所确定的变换跳过存在/不存在标志的值可以根据设置或条件而改变。即,变换跳过存在/不存在标志可以表示当log2TbWidth与log2TbHeight的乘积小于或等于阈值时变换跳过被应用于当前块的信息。另选地,当前块可以基于变换跳过存在/不存在标志被包括在变换排除块中,并且不对当前块应用变换。
例如,当未启用高级语法内的变换跳过时,当cu_mts_flag语法元素的值不为0时,或者当log2TbWidth与log2TbHeight的乘积大于阈值时,变换跳过存在/不存在标志(或transform_skip_flag语法元素)的值可以被确定为0(S1240)。另选地,可以解析值为0的变换跳过存在/不存在标志。另选地,可以不解析变换跳过存在/不存在标志。另选地,例如,根据设置或条件,当未启用高级语法内的变换跳过时,当cu_mts_flag语法元素的值不为0时,以及当log2TbWidth与log2TbHeight的乘积大于阈值时,变换跳过存在/不存在标志(或transform_skip_flag语法元素)的值可以被确定为1。另选地,可以解析值为1的变换跳过存在/不存在标志。即,所确定的变换跳过存在/不存在标志的值是示例,并且可以根据设置或条件而改变。即,当未启用高级语法内的变换跳过时,当cu_mts_flag语法元素的值不为0时,以及当log2TbWidth与log2TbHeight的乘积大于阈值时,变换跳过存在/不存在标志可以表示不对当前块应用变换跳过的信息。另选地,当前块可以基于变换跳过存在/不存在标志不被包括在变换排除块中,并且可以被变换。
另选地,例如,cu_mts_flag语法元素也可以由MTS tu_mts_flag语法元素或mts_flag语法元素表示,并且sps_mts_intra_enabled_flag语法元素(或sps_explicit_mts_intra_enabled_flag语法元素)或sps_mts_inter_enabled_flag语法元素(或sps_explicit_mts_inter_enabled_flag语法元素)可以基于sps_mts_enabled_flag语法元素而发信号通知(通过被包括在SPS语法中)。
此外,本文件的另一实施方式提出了用于在使用包括变换存在/不存在信息的变换内核索引时限定变换跳过大小的方法。
由于尚未被变换(或被变换编码)的块具有与通常已经被变换的块不同的残差数据特性,因此可能需要针对尚未被变换的块的高效残差数据编码方法。可以以变换块或变换单元为单位来发送表示是否执行变换的变换存在/不存在标志,并且本文件不限制变换块的大小。例如,当变换存在/不存在标志为1时,可以执行本文件中提出的残差(数据)编码(例如,表20和针对变换跳过的残差编码),而当变换存在/不存在标志为0时,可以执行如表3至表5或表6至表9中的残差编码。例如,变换存在/不存在标志可以包括残差编码语法或变换单元语法中所包括的transform_skip_flag语法元素。另外,当transform_skip_flag语法元素的值为1时,可以执行在本文件的实施方式中提出的残差编码方法(针对变换跳过)。
另选地,例如,当transform_skip_flag语法元素的值为1时,还可以根据if(!transform_skip_flag)条件基于变换跳过残差编码(residual_ts_coding)语法来执行没有被执行变换的残差编码。另选地,当transform_skip_flag语法元素的值为0时,可以根据if(!transform_skip_flag)条件来执行基于残差编码(residual_coding)语法执行变换的残差编码。
另选地,例如,在排除coded_sub_block_flag语法元素之下的coeff_sign_flag语法元素的残差编码可以遵循在本文件的实施方式中提出的残差编码方法(针对变换跳过)中的一些或全部。
另选地,例如,可以执行本发明的实施方式中提出的统一变换类型信令方法,此时,当tu_mts_idx语法元素的值为1时(或者当tu_mts_idx语法元素表示不向目标块应用变换的信息时),可以执行在本文件的实施方式中提出的残差编码方法(针对变换跳过)。另选地,当tu_mts_idx语法元素的值为0时(或者当tu_mts_idx语法元素的值是除了1之外的值时),可以执行如表3至表5或表6至表9中的残差编码或可以基于残差编码(residual_coding)语法执行变换的残差编码。在这种情况下,如在本文件的实施方式中提出的统一变换类型信令方法所描述的,可以在表3至表5中省略变换存在/不存在标志(或transform_skip_flag语法元素)和/或变换索引(或mts_idx语法元素)。
另选地,例如,假定值为0的tu_mts_idx语法元素表示不向目标块应用变换(或变换跳过),当tu_mts_idx语法元素的值为0时,可以执行在本文件的实施方式中提出的残差编码方法(针对变换跳过)。另选地,当tu_mts_idx语法元素的值不为0时,可以如表3至表5或表6至表9中地执行基于残差编码(residual_coding)语法执行变换的残差编码。在这种情况下,可以省略变换存在/不存在标志(或transform_skip_flag语法元素)和/或变换索引(或mts_idx语法元素)。在这种情况下,“tu_mts_idx==1?”确定过程或条件可以被“tu_mts_idx==0?”确定过程或条件替换。
如用本文件的实施方式中提出的统一变换类型信令方法所描述的,可以各自例如在如表17或表18中的MTS&TS启用、MTS启用和TS启用的情况下被不同地限定对于变换存在/不存在标志(或transform_skip_flag语法元素)或变换索引(或mts_idx语法元素)的二值化。另选地,还可以根据mts_enabled的值为0还是为1来不同地限定变换跳过被限定的大小(或能够进行变换跳过的大小)。另选地,还可以基于MTS启用(或关于是否启用MTS的信息)来限定能够进行变换跳过的大小。例如,MTS启用可以表示关于是否启用MTS的信息,并且可以基于sps_mts_enabled_flag语法元素来导出。例如,MTS启用的值为1的事实可以表示sps_mts_enabled_flag语法元素的值为1。另选地,MTS启用的值为1的事实也可以表示启用MTS的信息。另选,MTS启用的值为0的事实可以表示sps_mts_enabled_flag语法元素的值为0。另选地,MTS启用的值为0的事实也可以表示不启用MTS的信息。
例如,当MTS启用的值为1时,变换跳过的大小(或能够进行变换跳过的块大小)可以取决于启用的MTS。例如,如果MTS的大小以32或更小启用(或者如果只有当块大小为32或更小时,才启用MTS),则可以始终以与以上相同的方式针对大小为32或更小的块限定变换跳过。
另选地,例如,当MTS启用的值为1时,编码设备和解码设备可以使用预定或预设的最大大小。另外,可以根据最大大小来限定TS启用。例如,编码设备和解码设备可以被限定为对一边的长度小于或等于8的块使用变换跳过。在这种情况下,相对于块的一边的长度大于8的块,TS启用的值被限定为0,由此有效地应用表17或表18中例示的二值化表。另选地,也可以通过使用样本的最大数目而非块的一边的最大长度来表示变换跳过块(或能够进行变换跳过)的最大大小信息。
另选地,例如,当MTS启用的值为1时,变换跳过(或能够进行变换跳过的块)的最大大小可以与MTS的大小(或启用MTS的块大小)分开地限定。在这种情况下,关于变换跳过(或能够进行变换跳过的块)的大小的信息可以被发信号通知,以限定MTS的大小(或启用MTS的块大小)。另选地,信息可以从编码设备发送到解码设备。例如,如果MTS的大小以32或更小启用(或者如果只有当块大小为32或更小时,才启用MTS),则可以发信号通知关于是否遵循MTS的大小(或启用MTS的块大小)的标志,并且在不遵循MTS的最大大小(或启用MTS的块的最大大小)的情况下,可以发信号通知启用多达16的变换跳过(或能够进行变换跳过的块)的最大大小的信息。在这种情况下,当块的一边的长度为16或更大时,TS启用的值被限定为0,由此有效地应用表17或表18中例示的二值化表。另选地,也可以通过使用样本的最大数目而非块的一边的最大大小来表示变换跳过块(或能够进行变换跳过)的最大大小信息。
另选地,例如,当MTS启用的值为0时,编码设备和解码设备可以使用预定或预设的最大大小。例如,当MTS启用的值为0并且MTS启用的值为1时,编码设备和解码设备可以被限定为对一边的长度小于或等于8的块使用变换跳过。另选地,也可以通过使用样本的最大数目而非块的一边的最大大小来表示变换跳过块(或能够进行变换跳过)的最大大小信息。
另选地,例如,当MTS启用的值为0时,可以发送变换跳过(或能够进行变换跳过的块)的最大大小信息。例如,可以通过高级语法发信号通知启用多达16的变换跳过(或能够进行变换跳过的块)的最大大小的信息。在这种情况下,当块的一边的长度为16或更大时,TS启用的值被限定为0,由此有效地应用表17或表18中例示的二值化表。另选地,可以通过使用样本的最大数目而非块的一边的最大大小来表示变换跳过块(或能够进行变换跳过)的最大大小信息。
例如,可以基于以上提到的CABAC对tu_mts_idx语法元素进行编码/解码。在这种情况下,tu_mts_idx语法元素的bin串可以包括例如如表17或表18中例示的bin。可以基于上下文信息(或上下文模型)对tu_mts_idx语法元素的bin串的bin中的至少一个进行编码(或常规编码)。
可以基于上下文索引增量和上下文索引偏移来导出表示常规编码的bin中的每一个的上下文模型的上下文索引。另选地,例如,上下文索引可以由ctxIdx表示,上下文索引增量可以由ctxInc表示,并且上下文索引偏移可以由ctxIdxOffset表示。另外,可以通过ctxInc和ctxIdxOffset之和来导出ctxIdx。例如,对于各个bin,ctxInc的导出方式可以不同,如表19中例示的。ctxIdxOffset可以表示ctxIdx的最小值。另选地,例如,可以基于如表19中例示的编码四叉树深度(cqtDepth)来确定上下文索引。另选地,例如,可以根据块大小、块的宽高比、是对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等来确定上下文索引。
例如,当块大小小于8×8时,可以使用索引0的上下文模型,并且当块大小大于或等于8×8时,可以使用索引1的上下文模型。
另选地,例如,当块的宽高比为1时,可以使用索引0的上下文模型,当块的宽度大于块的高度时,可以使用索引1的上下文模型,并且当块的高度大于块的宽度时,可以使用索引2的上下文模型。在这种情况下,例如,基于块的宽度和高度而确定的上下文索引可以如下表22中例示的。
[表22]
另选地,例如,当当前块的预测模式是帧内模式时,可以使用索引0的上下文模型,并且当当前块的预测模式是帧间模式时,可以使用索引1的上下文模型。
例如,可以通过使用根据如上所述确定的索引的上下文模型对tu_mts_idx语法元素进行编码。由于可以基于概率和分布以各种方式限定上下文模型和模型的数目,因此本文件不限于特定上下文模型和上下文模型的数目。
例如,索引可以表示上下文索引,索引0可以表示ctxIdx值为0,索引1可以表示ctxIdx值为1。
例如,ctxIdx的最低值可以由ctxIdx的初始值(initValue)表示,并且ctxIdx的初始值可以基于上下文表来确定。另选地,可以通过使用上下文表和初始类型(initType)来确定ctxIdx的初始值。可以预先确定初始类型。另选地,初始类型也可以通过发信号通知相关信息来确定。例如,可以通过初始类型信息(例如,cabac_init_flag语法元素或cabac_init_idx语法元素)发信号通知初始类型。
即,可以基于用于相应bin的上下文模型对tu_mts_idx语法元素的bin串的bin进行基于上下文的编码(或常规编码)。在这种情况下,可以通过ctxInc与ctxIdxOffset之和来导出上下文模型。另外,可以针对各个bin不同地确定ctxInc。
例如,编码设备可以通过导出tu_mts_idx语法元素的值,通过二值化过程导出与该值对应的二值化bin并且导出用于各个bin的上下文模型来对bin进行编码。在这种情况下,可以根据基于上下文模型的算术编码来输出长度等于或短于bin的长度的位串。
例如,解码设备可以通过针对tu_mts_idx语法元素的二值化过程来导出候选bin串并且从比特流中依次解析tu_mts_idx语法元素的位来对tu_mts_idx语法元素的bin进行解码。在这种情况下,解码设备可以通过导出用于各个bin的上下文模型来对bin进行解码。可以确定解码后的bin是否对应于候选bin串中的一个。当解码后的bin对应于候选bin串中的一个时,解码设备可以将由对应bin串表示的值导出为tu_mts_idx语法元素的值。当解码后的bin不对应于候选bin串中的一个时,解码设备可以附加地解析该位并重复以上提到的过程。
如上所述,本文件的实施方式可以在对tu_mts_idx语法元素进行编码时基于块大小、块的宽高比、对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等中的至少一个来不同地确定ctxInc和/或ctxIdx,并且在这种情况下,可以在不发信号通知附加信息的情况下向同一bin索引(binIdx)的bin自适应性地应用不同的上下文模型。
例如,可以针对当前图片内的第一块的第i个bin导出第一上下文信息,并且可以针对当前图片内的第二块的同样的第i个bin导出第二上下文信息。这里,i可以对应于bin索引,并且可以表示例如如表19或表22中中例示的0至4中的一个值。例如,上下文信息可以包括关于上下文索引或上下文模型的信息。
此外,例如,根据本文件的上述实施方式的信息中的至少一些可以被包括在如表23至表27中例示的高级语法中。另选地,根据本文件的上述实施方式的信息中的至少一些可以通过被包括在高级语法中来发信号通知。另选地,根据以上提到的实施方式的信息中的至少一些可以被包括在序列参数集(SPS)语法中。另选地,根据以上提到的实施方式的信息中的至少一些可以通过被包括在SPS语法中来发信号通知。例如,表23至表27可以连续地表示一种语法,并且可以依次发信号通知、配置或解析语法中所包括的语法元素。
[表23]
[表24]
[表25]
[表26]
[表27]
例如,如表23至表27中例示的,由SPS语法中所包括的语法元素表示的信息或语法元素的语义可以是如表28至表35中表示的。
[表28]
[表29]
[表30]
[表31]
[表32]
[表33]
[表34]
[表35]
此外,例如,根据本文件的上述实施方式的信息中的至少一些可以被包括在如表36或表37至表39中例示的高级语法中。另选地,根据本文件的上述实施方式的信息中的至少一些可以通过被包括在高级语法中来发信号通知。另选地,根据以上提到的实施方式的信息中的至少一些可以被包括在图片参数集(PPS)语法中。另选地,根据以上提到的实施方式的信息中的至少一些可以通过被包括在PPS语法中来发信号通知。例如,表37至表39可以连续地表示一种语法,并且可以依次发信号通知、配置或解析语法中所包括的语法元素。
[表36]
[表37]
[表38]
[表39]
例如,如表36或表37至表39中例示的,由PPS语法中所包括的语法元素表示的信息或语法元素的语义可以是如表40至表42中表示的。
[表40]
[表41]
[表42]
此外,例如,根据本文件的上述实施方式的信息中的至少一些可以被包括在如表43至表47中例示的编码单元语法中。另选地,根据本文件的上述实施方式的信息中的至少一些可以通过被包括在编码单元语法中来发信号通知。例如,表43至表47可以连续地表示一种语法,并且可以依次发信号通知、配置或解析语法中所包括的语法元素。
[表43]
[表44]
[表45]
[表46]
[表47]
例如,如表43至表47中例示的,由编码单元语法中所包括的语法元素表示的信息或语法元素的语义可以是如表48至表51中表示的。
[表48]
[表49]
[表50]
[表51]
此外,例如,根据本文件的上述实施方式的信息中的至少一些可以被包括在如表52或表53和表54中例示的变换单元语法中。另选地,根据本文件的上述实施方式的信息中的至少一些可以通过被包括在变换单元语法中来发信号通知。例如,表53和表54可以连续地表示一种语法,并且可以依次发信号通知、配置或解析语法中所包括的语法元素。
[表52]
[表53]
[表54]
例如,如表52或表53和表54中例示的,由变换单元语法中所包括的语法元素表示的信息或语法元素的语义可以是如表55中表示的。
[表55]
此外,例如,根据本文件的上述实施方式的信息中的至少一些可以被包括在上述的表6至表9或者表56至表59中例示的残差编码语法中。另选地,根据本文件的上述实施方式的信息中的至少一些可以通过被包括在变换单元语法中来发信号通知。例如,表6至表9或者表56至表59可以连续地表示一种语法,并且可以依次发信号通知、配置或解析语法中所包括的语法元素。
[表56]
[表57]
[表58]
[表59]
例如,如以上所述的表6至表9或表56至表59中例示的,由残差编码语法中所包括的语法元素表示的信息或语法元素的语义可以是如上述用表6至表9表示的。
此外,例如,本文件的实施方式可以基于以上提到的语法或语法元素中的至少一些来执行缩放或变换过程。例如,实施方式可以导出当前(变换)块的样本的残差样本(或残差样本数组),如表60中例示的。
[表60]
此外,另选地,例如,本文件的实施方式可以基于以上提到的语法或语法元素中的至少一些来执行变换系数的变换过程。例如,实施方式可以基于关于如表61中例示的(缩放后的)变换系数的信息来导出残差样本(或残差样本数组)。
[表61]
此外,例如,在本文件的实施方式中,如表62和表63中例示的二值化可以被用于以上提到的语法或语法元素中的至少一些。另选地,实施方式可以通过使用如表62和表63中例示的二值化对以上提到的语法元素中的至少一些进行编码/解码。
[表62]
[表63]
此外,例如,本文件的实施方式可以指派上下文索引增量(ctxInc),以相对于以上提到的语法或语法元素中的至少一些导出(或表示)如表64和表65中例示的上下文索引(ctxIdx)。
[表64]
[表65]
图13和图14示意性地例示了根据本文件的实施方式的视频/图像编码方法和相关组件的示例。
图13中公开的方法可以由图2中公开的编码设备执行。具体地,例如,图13中例示的S1300可以由图14中的编码设备的预测器220执行,图13中例示的S1310可以由图14中的编码设备的残差处理器230执行,并且图13中例示的S1320图13可以由图14中的编码设备的熵编码器240执行。图13中公开的方法可以包括本文件中以上提到的实施方式。
参照图13,编码设备可以通过对当前块执行预测来导出预测样本(S1300)。例如,编码设备可以通过对当前块执行预测来导出预测样本,并且可以导出关于执行预测的预测模式的信息。例如,预测模式可以是帧内预测模式或帧间预测模式。例如,当预测模式是帧内预测模式时,编码设备可以基于当前块周围的样本来导出预测样本。另选地,当预测模式是帧间预测模式时,编码设备可以基于当前块的参考图片内的参考样本来导出预测样本。
编码设备可以导出当前块的残差样本(S1310)。例如,编码设备可以基于当前块的原始样本和预测样本(或预测块)来导出当前块的残差样本(或残差块)。这里,残差样本也可以由残差样本数组表示。另选地,例如,尽管未在图13中例示,但是编码设备可以基于预测样本和残余样本来生成当前块的重构样本。例如,编码设备还可以通过将残差样本(或残差块)与预测样本(或预测块)相加来生成重构样本(或重构块)。
编码设备可以对包括关于预测的预测模式信息和关于残差样本的残差相关信息的图像信息进行编码(S1320)。
例如,编码设备可以基于预测模式来生成预测模式信息,并且图像信息可以包括预测模式信息。即,当当前块通过帧内预测模式执行预测时,预测模式信息可以包括关于帧内预测模式的信息,并且当当前块通过帧间预测模式执行预测时,预测模式信息可以包括关于帧间预测模式的信息。
例如,编码设备可以生成包括关于残差样本(或残差样本数组)的信息的残差相关信息,并且图像信息可以包括残差相关信息。与残差样本相关的信息或残差相关信息可以包括关于与残差样本相关的变换系数的信息。
例如,残差相关信息可以包括残差编码信息(或残差编码语法)。另选地,残差相关信息可以包括变换单元信息(或变换单元语法)。另选地,残差相关信息还可以包括残差编码信息和变换单元信息。
例如,残差相关信息可以包括基于当前块的大小和最大变换跳过大小的变换跳过标志。另选地,可以基于当前块的大小和最大变换跳过大小来确定残差相关信息是否包括变换跳过标志。例如,变换跳过标志可以表示是否对当前块应用变换跳过。另选地,变换跳过标志也可以由transform_skip_flag语法元素表示。例如,当transform_skip_flag语法元素的值为0时,可以对当前块应用变换跳过,并且当transform_skip_flag语法元素的值为1时,可以不对当前块应用变换跳过。另选地,根据设置,当transform_skip_flag语法元素的值为1时,可以对当前块应用变换跳过,并且当transform_skip_flag语法元素的值为0时,可以不对当前块应用变换跳过。
例如,当前块的大小可以表示当前块的宽度和/或当前块的高度。最大变换跳过大小可以表示其中启用变换跳过(TS)的块的最大大小。另选地,最大变换跳过大小也可以由MaxTsSize表示。例如,当当前块的宽度或当前块的高度小于或等于最大变换跳过大小时,残差相关信息可以包括变换跳过标志。
例如,图像信息可以包括关于最大变换跳过大小的信息。另选地,关于最大变换跳过大小的信息可以通过被包括在图像信息中而被(熵)编码。例如,可以基于关于最大变换跳过大小的信息来表示最大变换大小。例如,关于最大变换跳过大小的信息可以被包括在高级语法中,并且高级语法可以通过被包括在图像信息中而被(熵)编码。例如,高级语法可以是网络抽象层(NAL)单元语法、序列参数集(SPS)语法、图片参数集(PPS)语法或图块头语法。
另选地,例如,关于最大变换跳过大小的信息可以被包括在SPS中,并且可以基于SPS中所包括的关于最大变换跳过大小的信息来表示最大变换大小。另选地,例如,关于最大变换跳过大小的信息可以被包括在PPS中,并且可以基于PPS中所包括的关于最大变换跳过大小的信息来表示最大变换大小。这里,SPS或PPS可以表示SPS语法或PPS语法,并且其它语法也可以通过省略术语语法来使用。
例如,关于最大变换跳过大小的信息可以包括关于通过将对数值加上-2而获得的值的信息,并且对数值可以是具有最大变换跳过大小的以2为底的对数值。即,关于最大变换跳过大小的信息可以表示关于通过将具有最大变换跳过大小的以2为底的对数值加上-2而获得的值的信息。另选地,例如,关于最大变换跳过大小的信息还可以包括关于最大变换跳过大小的对数值(具有基底2)的信息。
例如,关于最大变换跳过大小的信息可以包括log2_transform_skip_max_size_minus2语法元素。另选地,关于最大变换跳过大小的信息可以表示log2_transform_skip_max_size_minus2语法元素。例如,log2_transform_skip_max_size_minus2语法元素可以被包括在高级语法、SPS语法或PPS语法中。
例如,参照表41,可以基于MaxTsSize=1<<(log2_transform_skip_max_size_minus2+2)来表示最大变换跳过大小。这里,MaxTsSize可以表示最大变换跳过大小,并且log2_transform_skip_max_size_minus2可以表示log2_transform_skip_max_size_minus2语法元素的值。另外,<<可以表示算术移位运算符。即,log2_transform_skip_max_szie_minus2语法元素可以通过使用MaxTsSize=1<<(log2_transform_skip_max_size_minus2+2)来表示MaxTsSize。另选地,log2_transform_skip_max_szie_minus2语法元素可以根据MaxTsSize来表示log2_transform_skip_max_szie_minus2语法元素的值。另选地,log2_transform_skip_max_szie_minus2语法元素可以对应于MaxTsSize来表示log2_transform_skip_max_szie_minus2语法元素的值。例如,log2_transform_skip_max_size_minus2语法元素的值可以由候选值0至3中的一个表示,但是不限于此。另选地,log2_transform_skip_max_size_minus2语法元素的值可以由0、1、2或3表示,但是不限于此。
另外,例如,最大变换跳过大小可以由包括4、8、16或32的候选大小中的一个表示。可以基于log2_transform_skip_max_size_minus2语法元素的值来表示最大变换跳过大小。另选地,可以基于log2_transform_skip_max_size_minus2语法元素的值由包括4、8、16或32的候选大小中的一个表示最大变换跳过大小。例如,当log2_transform_skip_max_size_minus2语法元素的值为0时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)用4表示最大变换跳过大小。另选地,当log2_transform_skip_max_size_minus2语法元素的值为1时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)用8表示最大变换跳过大小。另选地,当log2_transform_skip_max_size_minus2语法元素的值为2时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)用16表示最大变换跳过大小。另选地,当log2_transform_skip_max_size_minus2语法元素的值为3时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)用32表示最大变换跳过大小。
例如,最大变换跳过大小为N的事实可以表示宽度的大小和高度的大小全都小于或等于N。另选地,最大变换跳过大小为N的事实可以表示宽度和高度中的较大值的大小小于或等于N。另选地,最大变换跳过大小为N的事实可以表示在正方形块的情况下一边的长度的大小小于或等于N。
另选地,例如,基于关于是否启用变换跳过的信息,也可以将关于最大变换跳过大小的信息包括在高级语法、SPS语法或PPS语法中。例如,当关于是否启用变换跳过的信息表示启用变换跳过的信息时,关于最大变换跳过大小的信息可以被包括在高级语法、SPS语法或PPS语法中。另选地,当关于是否启用变换跳过的信息表示不启用变换跳过的信息时,关于最大变换跳过大小的信息可以不被包括在高级语法、SPS语法或PPS语法中。
另选地,例如,还可以基于关于是否启用多重变换选择(MTS)的信息来表示最大变换跳过大小。另选地,可以基于关于是否启用MTS以及是否启用TS的信息来表示最大变换跳过大小。
例如,高级语法可以包括关于是否启用多重变换选择(MTS)的信息或关于是否启用TS的信息。另选地,关于是否启用MTS的信息或关于是否启用TS的信息可以被包括在SPS语法或PPS语法中。
例如,关于是否启用MTS的信息可以由sps_mts_enabled_flag语法元素表示。另选地,关于是否启用MTS的信息可以包括sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素。例如,可以基于sps_mts_enabled_flag语法元素将sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素包括在SPS语法中。可以通过sps_explicit_mts_intra_enabled_flag语法元素来表示sps_mts_intra_enabled_flag语法元素,并且可以通过sps_explicit_mts_inter_enabled_flag语法元素来表示sps_mts_inter_enabled_flag语法元素。例如,关于是否启用MTS的信息也可以由MTS启用信息表示。
例如,当关于是否启用MTS的信息表示启用MTS的信息时,可以表示MTS启用=1或sps_mts_enabled_flag语法元素的值为1。另选地,可以表示sps_mts_enabled_flag语法元素的值为1,并且sps_explicit_mts_intra_enabled_flag语法元素或sps_explicit_mts_inter_enabled_flag语法元素的值为1。另选地,当关于是否启用MTS的信息表示不启用MTS的信息时,可以表示MTS启用=0或sps_mts_enabled_flag语法元素的值为0。另选地,可以表示sps_mts_enabled_flag语法元素的值为1,并且sps_explicit_mts_intra_enabled_flag语法元素或sps_explicit_mts_inter_enabled_flag语法元素的值为0。例如,根据设置,该值也可以反过来表示与该值对应的信息。
例如,关于是否启用TS的信息可以由TS启用信息或sps_transform_skip_enabled_flag语法元素表示。例如,关于是否启用TS的信息也可以由TS启用信息表示。
例如,当关于是否启用TS的信息表示启用TS的信息时,可以表示TS启用=1或sps_transform_skip_enabled_flag语法元素的值为1。另选地,当关于是否启用TS的信息表示不启用TS的信息时,可以表示TS启用=0或sps_transform_skip_enabled_flag语法元素的值为0。例如,根据设置,该值也可以反过来表示与该值对应的信息。
例如,可以基于高级语法用包括8、16或32的候选大小中的一个表示最大变换跳过大小。例如,候选大小还可以包括4。另选地,例如,还可以基于关于是否启用MTS的信息来导出变换跳过大小。另选地,例如,可以基于关于是否启用MTS的信息用包括8、16或32的候选大小中的一个来表示最大变换跳过大小。另选地,可以基于关于是否启用高级语法中所包括的MTS的信息来表示变换跳过大小。另选地,例如,关于变换跳过大小的信息可以被包括在高级语法中,并且可以基于关于变换跳过大小的信息来表示变换跳过大小。这里,关于变换跳过大小的信息也可以包括关于是否启用MTS的信息作为能够导出变换跳过大小的信息。
例如,基于表示启用MTS的信息的关于是否启用MTS的信息,可以基于MTS的大小来确定最大变换跳过大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,可以基于MTS的大小来确定最大变换跳过大小。即,最大变换跳过大小可以取决于MTS。MTS的大小可以表示其中启用MTS的块的最大大小。例如,当MTS的大小为32或更小时,还可以针对大小为32或更小的块启用变换跳过。
另选地,例如,基于表示启用MTS的信息的关于是否启用MTS的信息,最大变换跳过大小可以被确定为预设大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,最大变换跳过大小可以被确定为预设大小。例如,当预设大小为8时,最大变换跳过大小可以被确定为预设大小8。
另选地,例如,基于表示启用MTS的信息的关于是否启用MTS的信息,高级语法可以包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来表示最大变换跳过大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,高级语法可以单独包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来表示最大变换跳过大小。另选地,例如,当关于是否启用MTS的信息表示启用MTS的信息时,高级语法可以包括关于是否基于MTS的大小来表示最大变换跳过大小的信息。当关于是否基于MTS的大小来表示最大变换跳过大小的信息表示基于MTS的大小来表示最大变换跳过大小的信息时,高级语法可以包括关于最大变换跳过大小的信息。关于最大变换跳过大小的信息可以被包括在SPS语法或PPS语法中。例如,当高级语法中所包括的关于最大变换跳过大小的信息表示关于32的信息时,可以基于关于最大变换跳过大小的信息用32表示最大变换跳过大小。另选地,当最大变换跳过大小被确定为32时,高级语法中所包括的关于最大变换跳过大小的信息可以由关于32的信息表示。
另选地,例如,基于表示不启用MTS的信息的关于是否启用MTS的信息,最大变换跳过大小可以被确定为预设大小。即,当关于是否启用MTS的信息表示不启用MTS的信息时,最大变换跳过大小可以被确定为预设大小。例如,当预设大小为8时,最大变换跳过大小可以被确定为预设大小8。
另选地,例如,基于表示不启用MTS的信息的关于是否启用MTS的信息,高级语法可以包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来表示最大变换跳过大小。即,当关于是否启用MTS的信息表示不启用MTS的信息时,高级语法可以单独包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来表示最大变换跳过大小。关于最大变换跳过大小的信息可以被包括在SPS语法或PPS语法中。例如,当高级语法中所包括的关于最大变换跳过大小的信息表示关于32的信息时,可以基于关于最大变换跳过大小的信息用32表示最大变换跳过大小。另选地,当最大变换跳过大小被确定为32时,高级语法中所包括的关于最大变换跳过大小的信息可以由关于32的信息表示。
例如,残差相关信息可以包括关于应用于当前块的变换类型的MTS索引信息。例如,MTS索引信息可以由tu_mts_idx语法元素或mts_idx语法元素表示。例如,MTS索引信息可以被包括在变换单元语法或编码单元语法中。例如,MTS索引信息可以表示关于应用于当前块的变换类型或变换跳过的信息。另选地,MTS索引信息可以基于关于是否启用MTS的信息和/或关于是否启用变换跳过的信息来表示关于应用于当前块的变换类型或变换跳过的信息。
例如,可以基于MTS索引信息的bin串中的bin来表示用MTS索引信息表示的信息。另选地,可以基于bin的上下文索引的值来表示用MTS索引信息表示的信息。另选地,可以基于bin串中的第一bin的上下文索引值来表示用MTS索引信息表示的信息。例如,可以基于上下文索引增量(ctxInc)和上下文索引偏移量(ctxIdxOffset)来表示上下文索引(ctxIdx)。
例如,可以基于关于是否启用MTS的信息、关于是否启用变换跳过的信息以及当前块的大小来表示MTS索引信息的第一bin的上下文索引的值。例如,可以基于表19或表22来表示MTS索引信息的第一bin的上下文索引的值。
例如,基于表示启用MTS的信息的关于是否启用MTS的信息以及表示启用变换跳过的关于是否启用变换跳过的信息,可以通过将当前块的宽度与当前块的高度进行比较来表示上下文索引的值。即,当关于是否启用MTS的信息表示启用MTS的信息并且关于是否启用TS的信息表示启用TS的信息时,可以通过将当前块的宽度与当前块的高度的进行比较来表示上下文索引的值。另选地,当当前块的宽度与当前块的高度相同时,上下文索引的值可以由0表示。另选地,当当前块的宽度大于当前块的高度时,上下文索引的值可以由1表示,并且当当前块的宽度小于当前块的高度时,上下文索引的值可以由2表示。
另选地,例如,基于表示启用MTS的信息的关于是否启用MTS的信息以及编码四叉树深度(cqtDepth),可以表示上下文索引的值。即,当关于是否启用MTS的信息表示启用MTS的信息时,可以基于cqtDepth来表示上下文索引的值。例如,上下文索引的值可以由通过将cqtDepth的值加1而获得的值表示,并且可以由1、2、3、4、5或6表示。
另选地,例如,基于表示启用变换跳过的信息的关于是否启用变换跳过的信息,可以通过将当前块的宽度与当前块的高度进行比较来表示上下文索引的值。即,当关于是否启用TS的信息表示启用TS的信息,可以通过将当前块的宽度与当前块的高度进行比较来表示上下文索引的值。另选地,当当前块的宽度与当前块的高度相同时,上下文索引的值可以由0表示。另选地,当当前块的宽度大于当前块的高度时,上下文索引的值可以由1表示,并且当当前块的宽度小于当前块的高度时,上下文索引的值可以由2表示。
另选地,例如,上下文索引的值可以基于块大小、块的宽高比、对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等中的至少一个来表示ctxInc和/或ctxIdx。另选地,可以限定基于块大小、块的宽高比、对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等中的至少一个的上下文模型,并且可以基于上下文模型来表示上下文索引的值。例如,可以基于上下文索引或上下文模型来获得关于当前块的变换类型或变换跳过的信息。
例如,残差相关信息可以包括或可以不包括如上所述的变换跳过标志。例如,当残差相关信息包括变换跳过标志时,当前块的残差样本可以表示在不进行变换的情况下导出的残差样本,并且可以在不进行变换的情况下在像素域(空间域)上发信号通知当前块的残差信号(或残差相关信息)。另选地,当残差相关信息不包括变换跳过标志时,当前块的残差样本可以表示被变换并导出的残差样本,并且可以在变换域上变换并发信号通知当前块的残差信号(或残差相关信息)。
编码设备可以通过对包括以上提到的信息(或语法元素)中的全部或一些的图像信息进行编码来生成比特流。另选地,编码设备可以以比特流形式输出编码后的信息。另外,可以通过网络或存储介质将比特流发送到解码设备。另选地,比特流可以被存储在计算机可读存储介质上。例如,比特流也可以用图像信息或视频信息表示。
图15和图16示意性地例示了根据本文件的实施方式的视频/图像解码方法和相关组件的示例。
图15和图16示意性地例示了根据本文件的实施方式的视频/图像解码方法和相关组件的示例。图15中公开的方法可以由图3中公开的解码设备执行。具体地,例如,图15中例示的S1500可以由图16中的解码设备的熵解码器310执行,图15中例示的S1510可以由图16中的解码设备的预测器330执行,图15中例示的S1520可以由图16中的解码设备的残差处理器320执行,并且图15中例示的S1530可以由图16中的解码设备的加法器340执行。图15中公开的方法可以包括本文件中以上提到的实施方式。
参照图15,解码设备可以从比特流获得预测模式信息和残差相关信息(S1500)。另选地,解码设备可以通过对比特流进行(熵)解码来获得预测模式信息或残差相关信息。
例如,预测模式信息可以包括关于当前块的预测模式的信息。另选地,预测模式信息可以包括关于帧内预测模式或帧间预测模式的信息。
例如,残差相关信息可以包括残差编码信息(或残差编码语法)。另选地,残差相关信息可以包括变换单元信息(或变换单元语法)。另选地,残差相关信息还可以包括残差编码信息和变换单元信息。
例如,残差相关信息可以包括基于当前块大小和最大变换跳过大小的变换跳过标志。另选地,可以基于当前块的大小和最大变换跳过大小来确定残差相关信息是否包括变换跳过标志。例如,变换跳过标志可以表示是否对当前块应用变换跳过。另选地,变换跳过标志可以由transform_skip_flag语法元素表示。例如,当transform_skip_flag语法元素的值为0时,可以对当前块应用变换跳过,并且当transform_skip_flag语法元素的值为1时,可以不对当前块应用变换跳过。另选地,根据设置,当transform_skip_flag语法元素的值为1时,可以对当前块应用变换跳过,并且当transform_skip_flag语法元素的值为0时,可以不对当前块应用变换跳过。
例如,当前块的大小可以表示当前块的宽度和/或当前块的高度。最大变换跳过大小可以表示其中启用变换跳过(TS)的块的最大大小。另选地,最大变换跳过大小也可以由MaxTsSize表示。例如,当当前块的宽度或当前块的高度小于或等于最大变换跳过大小时,残差相关信息可以包括变换跳过标志。
例如,可以从比特流获得关于最大变换跳过大小的信息。另选地,可以通过对比特流进行(熵)解码来获得关于最大变换跳过大小的信息。例如,可以基于关于最大变换跳过大小的信息来导出最大变换大小。例如,关于最大变换跳过大小的信息可以被包括在高级语法中,并且可以从比特流获得高级语法。另选地,可以通过对比特流进行(熵)解码来获得高级语法。例如,高级语法可以是网络抽象层(NAL)单元语法、序列参数集(SPS)语法、图片参数集(PPS)语法或图块头语法。
另选地,例如,关于最大变换跳过大小的信息可以被包括在SPS中,并且可以基于SPS中所包括的关于最大变换跳过大小的信息来导出最大变换大小。另选地,例如,关于最大变换跳过大小的信息可以被包括在PPS中,并且可以基于PPS中所包括的关于最大变换跳过大小的信息来导出最大变换大小。这里,SPS或PPS可以表示SPS语法或PPS语法,并且其它语法也可以通过省略术语语法来使用。
例如,关于最大变换跳过大小的信息可以包括关于通过将对数值加上-2而获得的值的信息,并且对数值可以是具有最大变换跳过大小的以2为底的对数值。即,关于最大变换跳过大小的信息可以表示关于通过将具有最大变换跳过大小的以2为底的对数值加上-2而获得的值的信息。另选地,例如,关于最大变换跳过大小的信息还可以包括关于最大变换跳过大小的对数值(具有基底2)的信息。
例如,关于最大变换跳过大小的信息可以包括log2_transform_skip_max_size_minus2语法元素。另选地,关于最大变换跳过大小的信息可以表示log2_transform_skip_max_size_minus2语法元素。例如,log2_transform_skip_max_size_minus2语法元素可以被包括在高级语法、SPS语法或PPS语法中。
例如,参照表41,可以基于MaxTsSize=1<<(log2_transform_skip_max_size_minus2+2)来导出最大变换跳过大小。这里,MaxTsSize可以表示最大变换跳过大小,并且log2_transform_skip_max_size_minus2可以表示log2_transform_skip_max_size_minus2语法元素的值。另外,<<可以表示算术移位运算符。例如,log2_transform_skip_max_size_minus2语法元素的值可以由候选值0至3中的一个表示,但是不限于此。另选地,可以被导出log2_transform_skip_max_size_minus2语法元素的值是0、1、2或3,但是不限于此。
另外,例如,可以导出最大变换跳过大小为包括4、8、16或32的候选大小中的一个。可以基于log2_transform_skip_max_size_minus2语法元素的值来导出最大变换跳过大小。另选地,可以基于log2_transform_skip_max_size_minus2语法元素的值,将最大变换跳过大小导出为包括4、8、16或32的候选大小中的一个。例如,当log2_transform_skip_max_size_minus2语法元素的值为0时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)将最大变换跳过大小导出为4。另选地,当log2_transform_skip_max_size_minus2语法元素的值为1时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)将最大变换跳过大小导出为8。另选地,当log2_transform_skip_max_size_minus2语法元素的值为2时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)将最大变换跳过大小导出为16。另选地,当log2_transform_skip_max_size_minus2语法元素的值为3时,可以基于以上提到的1<<(log2_transform_skip_max_size_minus2+2)将最大变换跳过大小导出为32。
例如,最大变换跳过大小为N的事实可以表示宽度和高度的大小全都小于或等于N。另选地,最大变换跳过大小为N的事实可以表示宽度和高度中的较大值的大小小于或等于N。另选地,最大变换跳过大小为N的事实可以表示在正方形块的情况下一边的长度的大小小于或等于N。
另选地,例如,基于关于是否启用变换跳过的信息,也可以将关于最大变换跳过大小的信息包括在高级语法、SPS语法或PPS语法中。例如,当关于是否启用变换跳过的信息表示启用变换跳过的信息时,关于最大变换跳过大小的信息可以被包括在高级语法、SPS语法或PPS语法中。另选地,当关于是否启用变换跳过的信息表示不启用变换跳过的信息时,关于最大变换跳过大小的信息可以不被包括在高级语法、SPS语法或PPS语法中。
另选地,例如,还可以基于关于是否启用多重变换选择(MTS)的信息来导出最大变换跳过大小。另选地,可以基于关于是否启用MTS的信息以及关于是否启用TS的信息来导出最大变换跳过大小。
例如,高级语法可以包括关于是否启用多重变换选择(MTS)的信息或关于是否启用TS的信息。另选地,关于是否启用MTS的信息或关于是否启用TS的信息可以被包括在SPS语法或PPS语法中。
例如,关于是否启用MTS的信息可以由sps_mts_enabled_flag语法元素表示。另选地,关于是否启用MTS的信息可以包括sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素。例如,可以基于sps_mts_enabled_flag语法元素将sps_mts_intra_enabled_flag语法元素或sps_mts_inter_enabled_flag语法元素包括在SPS语法中。可以通过sps_explicit_mts_intra_enabled_flag语法元素来表示sps_mts_intra_enabled_flag语法元素,并且可以通过sps_explicit_mts_inter_enabled_flag语法元素来表示sps_mts_inter_enabled_flag语法元素。例如,关于是否启用MTS的信息也可以由MTS启用信息表示。
例如,当关于是否启用MTS的信息表示启用MTS的信息时,可以表示MTS启用=1或sps_mts_enabled_flag语法元素的值为1。另选地,可以表示sps_mts_enabled_flag语法元素的值为1,并且sps_explicit_mts_intra_enabled_flag语法元素或sps_explicit_mts_inter_enabled_flag语法元素的值为1。另选地,当关于是否启用MTS的信息表示不启用MTS的信息时,可以表示MTS启用=0或sps_mts_enabled_flag语法元素的值为0。另选地,可以表示sps_mts_enabled_flag语法元素的值为1,并且sps_explicit_mts_intra_enabled_flag语法元素或sps_explicit_mts_inter_enabled_flag语法元素的值为0。例如,根据设置,该值也可以反过来表示与该值对应的信息。
例如,关于是否启用TS的信息可以由TS启用信息或sps_transform_skip_enabled_flag语法元素表示。例如,关于是否启用TS的信息也可以由TS启用信息表示。
例如,当关于是否启用TS的信息表示启用TS的信息时,可以表示TS启用=1或sps_transform_skip_enabled_flag语法元素的值为1。另选地,当关于是否启用TS的信息表示不启用TS的信息时,可以表示TS启用=0或sps_transform_skip_enabled_flag语法元素的值为0。例如,根据设置,该值也可以反过来表示与该值对应的信息。
例如,基于表示启用MTS的信息的关于是否启用MTS的信息,可以基于MTS的大小来导出最大变换跳过大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,可以基于MTS的大小来导出最大变换跳过大小。即,最大变换跳过大小可以取决于MTS。MTS的大小可以表示其中启用MTS的块的最大大小。例如,当MTS的大小为32或更小时,还可以针对大小为32或更小的块启用变换跳过。
另选地,例如,基于表示启用MTS的信息的关于是否启用MTS的信息,可以导出最大变换跳过大小是预设大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,可以导出最大变换跳过大小是预设大小。例如,当预设大小为8时,可以导出最大变换跳过大小是预设大小8。
另选地,例如,基于表示启用MTS的信息的关于是否启用MTS的信息,高级语法可以包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来导出最大变换跳过大小。即,当关于是否启用MTS的信息表示启用MTS的信息时,高级语法可以单独包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来导出最大变换跳过大小。另选地,例如,当关于是否启用MTS的信息表示启用MTS的信息时,高级语法可以包括关于是否基于MTS的大小来导出最大变换跳过大小的信息。当关于是否基于MTS的大小来导出最大变换跳过大小的信息表示基于MTS的大小来导出最大变换跳过大小的信息时,高级语法可以包括关于最大变换跳过大小的信息。关于最大变换跳过大小的信息可以被包括在SPS语法或PPS语法中。例如,当高级语法中所包括的关于最大变换跳过大小的信息表示32时,可以基于关于最大变换跳过大小的信息将最大变换跳过大小导出为32。
另选地,例如,基于表示不启用MTS的信息的关于是否启用MTS的信息,可以将最大变换跳过大小导出为预设大小。即,当关于是否启用MTS的信息表示不启用MTS的信息时,可以将最大变换跳过大小导出为预设大小。例如,当预设大小为8时,可以将最大变换跳过大小导出为预设大小8。
另选地,例如,基于表示不启用MTS的信息的关于是否启用MTS的信息,高级语法可以包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来导出最大变换跳过大小。即,当关于是否启用MTS的信息表示不启用MTS的信息时,高级语法可以单独包括关于最大变换跳过大小的信息,并且可以基于关于最大变换跳过大小的信息来导出最大变换跳过大小。关于最大变换跳过大小的信息可以被包括在SPS语法或PPS语法中。例如,当高级语法中所包括的关于最大变换跳过大小的信息表示32时,可以基于关于最大变换跳过大小的信息将最大变换跳过大小导出为32。
例如,残差相关信息可以包括关于应用于当前块的变换类型的MTS索引信息。例如,MTS索引信息可以由tu_mts_idx语法元素或mts_idx语法元素表示。例如,MTS索引信息可以被包括在变换单元语法或编码单元语法中。例如,MTS索引信息可以表示关于应用于当前块的变换类型或变换跳过的信息。另选地,MTS索引信息可以基于关于是否启用MTS的信息和/或关于是否启用变换跳过的信息来表示关于应用于当前块的变换类型或变换跳过的信息。
例如,可以基于MTS索引信息的bin串中的bin来导出用MTS索引信息表示的信息。另选地,可以基于bin的上下文索引的值来导出用MTS索引信息表示的信息。另选地,可以基于bin串中的第一bin的上下文索引的值来导出用MTS索引信息表示的信息。例如,可以基于上下文索引增量(ctxInc)和上下文索引偏移量(ctxIdxOffset)来导出上下文索引(ctxIdx)。
例如,可以基于关于是否启用MTS的信息、关于是否启用变换跳过的信息以及当前块的大小来导出MTS索引信息的第一bin的上下文索引的值。例如,可以基于表19或表22来导出MTS索引信息的第一bin的上下文索引的值。
例如,基于表示启用MTS的信息的关于是否启用MTS的信息以及表示启用变换跳过的信息的关于是否启用变换跳过的信息,可以通过将当前块的宽度与当前块的高度进行比较来导出上下文索引的值。即,当关于是否启用MTS的信息表示启用MTS的信息并且关于是否启用TS的信息表示启用TS的信息时,可以通过将当前块的宽度与当前块的高度的进行比较来导出上下文索引的值。另选地,当当前块的宽度与当前块的高度相同时,可以导出上下文索引的值为0。另选地,当当前块的宽度大于当前块的高度时,可以导出上下文索引的值为1,并且当当前块的宽度小于当前块的高度时,可以导出上下文索引的值为2。
另选地,例如,可以基于表示启用MTS的信息的关于是否启用MTS的信息以及编码四叉树深度(cqtDepth)来导出上下文索引的值。即,当关于是否启用MTS的信息表示启用MTS的信息时,可以基于cqtDepth来导出上下文索引的值。例如,可以导出上下文索引的值为将cqtDepth的值加1而获得的值,并且可以导出其为1、2、3、4、5或6。
另选地,例如,基于表示启用变换跳过的信息的关于是否启用变换跳过的信息,可以通过将当前块的宽度与当前块的高度进行比较来导出上下文索引的值。即,当关于是否启用TS的信息表示启用TS的信息,可以通过将当前块的宽度与当前块的高度进行比较来导出上下文索引的值。另选地,当当前块的宽度与当前块的高度相同时,可以导出上下文索引的值为0。另选地,当当前块的宽度大于当前块的高度时,可以导出上下文索引的值为1,并且当当前块的宽度小于当前块的高度时,可以导出上下文索引的值为2。
另选地,例如,上下文索引的值可以基于块大小、块的宽高比、对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等中的至少一个来确定ctxInc和/或ctxIdx。另选地,可以限定基于块大小、块的宽高比、对块执行帧内预测还是帧间预测、是否对邻近块应用变换跳过等中的至少一个的上下文模型,并且可以基于上下文模型来导出上下文索引的值。例如,可以基于上下文索引或上下文模型来获得关于当前块的变换类型或变换跳过的信息。
解码设备可以通过基于预测模式信息执行预测来导出当前块的预测样本(S1510)。例如,解码设备可以基于预测模式信息来导出当前块的预测模式。例如,预测模式信息可以包括关于帧内预测模式的信息或关于帧间预测模式的信息,并且基于该信息,可以将当前块的预测模式导出为帧内预测模式或帧间预测模式。
例如,解码设备可以基于预测模式来导出当前块的预测样本。例如,当预测模式是帧内预测模式时,解码设备可以基于当前块周围的样本来导出预测样本。另选地,当预测模式是帧间预测模式时,解码设备可以基于当前块的参考图片内的参考样本来导出预测样本。
解码设备可以基于残差相关信息来导出当前块的残差样本(S1520)。例如,残差相关信息可以包括关于针对残差样本的变换系数的信息。另选地,残差相关信息也可以包括变换跳过标志。
例如,当残差相关信息包括变换跳过标志时,可以在不进行变换的情况下在像素域(空间域)上发信号通知当前块的残差信号(或残差相关信息)。另选地,当残差相关信息不包括变换跳过标志时,可以在变换域上变换并发信号通知当前块的残差信号(或残差相关信息)。例如,解码设备可以基于未被变换或者被变换并发信号通知的残差信号来导出残差样本。
解码设备可以基于预测样本和残差样本来生成当前块的重构样本(S1530)。另选地,解码设备可以基于重构样本来导出重构块或重构图片。如上所述,如有必要,解码设备可以随后对重构图片应用诸如解块滤波和/或SAO过程这样的环路内滤波过程,以便改善主观/客观图像质量。
解码设备可以通过对比特流进行解码来获得包括以上提到的信息(或语法元素)中的全部或一些的图像信息。另外,比特流可以被存储在计算机可读数字存储介质中,并且可以使以上提到的解码方法被执行。例如,比特流也可以用图像信息或视频信息表示。
在以上提到的实施方式中,虽然方法是基于作为一系列步骤或框的流程图来描述的,但是本文件不限于步骤的顺序,并且某个步骤可以按不同的顺序发生,或者与不同于上述步骤的步骤同时发生。另外,本领域技术人员将理解,用流程图示出的步骤不是排他性的,并且可以在不影响本文件的范围的情况下,可以包括其它步骤或者可以删除流程图中的一个或更多个步骤。
根据本文件的以上提到的方法可以以软件的形式来实现,并且根据本文件的编码设备和/或解码设备可以被包括在例如TV、计算机、智能电话、机顶盒、显示装置等的用于执行图像处理的设备中。
当本文件中的实施方式用软件实现时,以上提到的方法可以被实现为用于执行上述功能的模块(处理、函数等)。该模块可以被存储在存储器中并且由处理器执行。存储器可以位于处理器的内部或外部,并且可以通过各种公知手段将存储器与处理器联接。处理器可以包括专用集成电路(ASIC)、其它芯片集、逻辑电路和/或数据处理器件。存储器可以包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、存储卡、存储介质和/或其它存储装置。
图17示意性地例示了内容流传输***的结构。
即,本文件中描述的实施方式可以通过在处理器、微处理器、控制器或芯片上实现来执行。例如,每幅图中例示的功能单元可以通过在计算机、处理器、微处理器、控制器或芯片上实现来执行。
另外,应用本文件的解码设备和编码设备可以被包括在多媒体广播收发器、移动通信终端、家庭影院视频装置、数字影院视频装置、监视相机、视频通信装置、诸如视频通信这样的实时通信装置、移动流传输装置、存储介质、摄像机、视频点播(VoD)服务提供商、顶置视频(OTT视频)装置、互联网流传输服务提供商、三维(3D)视频装置、视频电话视频装置和医疗视频装置等中,并且可以用于处理视频信号或数据信号。例如,顶置视频(OTT视频)装置可以包括游戏控制台、蓝光播放器、互联网连接TV、家庭影院***、智能电话、平板PC、数字录像机(DVR)等。
另外,应用本文件的处理方法可以以由计算机执行的程序的形式产生,并且可以被存储在计算机可读记录介质中。根据本文件的具有数据结构的多媒体数据也可以被存储在计算机可读记录介质中。计算机可读记录介质包括其中存储有计算机可读数据的所有种类的存储装置和分布式存储装置。计算机可读记录介质包括例如蓝光盘(BD)、通用串行总线(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储装置。另外,计算机可读记录介质包括以载波(例如,经由互联网进行传输)的形式实现的介质。另外,通过编码方法生成的比特流可以被存储在计算机可读记录介质中,或者可以通过有线/无线通信网络传输。另外,本文件的实施方式可以通过程序代码被实现为计算机程序产品,并且程序代码可以根据本文件的实施方式在计算机上执行。可以通过计算机将程序代码存储在计算机可读载体上。
另外,应用本文件的内容流传输***可以主要包括编码服务器、流传输服务器、网络服务器、媒体存储器、用户装置和多媒体输入装置。
编码服务器用于将从诸如智能电话、相机和摄像机这样的多媒体输入装置输入的内容压缩成数字数据以生成比特流并且将该比特流发送到流传输服务器。作为另一示例,当诸如智能电话、相机和摄像机这样的多媒体输入装置直接生成比特流时,可以省略编码服务器。可以通过应用本文件的编码方法或比特流生成方法来生成比特流,并且流传输服务器可以在发送或接收比特流的处理中临时存储比特流。
流传输服务器起到通过网络服务器基于用户请求将多媒体数据发送到用户装置的作用,并且网络服务器起到将哪些服务可用告知用户的作用。如果用户向网络服务器请求所期望的服务时,网络服务器向流传输服务器发送请求,并且流传输服务器将多媒体数据发送到用户。此时,内容流传输***可以包括单独的控制服务器,并且在这种情况下,控制服务器起到控制内容流传输***内的装置之间的命令/响应的作用。
流传输服务器可以从媒体存储器和/或编码服务器接收内容。例如,如果从编码服务器接收内容时,可以实时地接收内容。在这种情况下,为了提供平稳的流传输服务,流传输服务器可以将比特流存储达预定时间段。
用户装置的示例可以包括移动电话、智能电话、膝上型计算机、数字广播终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、导航终端、触屏PC、平板PC、超级本、可穿戴装置(例如,智能手表或智能眼镜)、数字TV、台式计算机和数字标牌。内容流传输***中的各个个体服务器都可以作为分布式服务器操作,并且在这种情况下,各个服务器接收到的数据可以被以分布式方式处理。