在视频编译系统中使用残差信息的视频解码方法及其设备

文档序号:108592 发布日期:2021-10-15 浏览:24次 >En<

阅读说明:本技术 在视频编译系统中使用残差信息的视频解码方法及其设备 (Video decoding method using residual information in video coding system and apparatus therefor ) 是由 柳先美 崔情娥 金昇焕 于 2020-02-19 设计创作,主要内容包括:根据本文档,一种由解码设备执行的视频解码方法包括以下步骤:接收当前块的残差信息;推导当前块的当前子块中的当前残差系数的符号标志的上下文模型;基于上下文模型对符号标志进行解码;基于符号标志来推导当前残差系数;基于当前残差系数来推导残差样本;以及基于残差样本来生成重构图片,其中,符号标志的上下文模型是基于在当前子块中的当前残差系数之前解码的残差系数的符号标志而推导的。(According to this document, a video decoding method performed by a decoding apparatus includes the steps of: receiving residual error information of a current block; deriving a context model of a sign indication of a current residual coefficient in a current sub-block of a current block; decoding the symbol flags based on the context model; deriving current residual coefficients based on the sign flags; deriving residual samples based on the current residual coefficients; and generating a reconstructed picture based on the residual samples, wherein the context model of the sign flag is derived based on a sign flag of a residual coefficient decoded before a current residual coefficient in the current sub-block.)

在视频编译系统中使用残差信息的视频解码方法及其设备

技术领域

本公开涉及图像编译技术,并且更具体地,涉及一种图像解码方法及其设备,在该图像解码方法中,在图像编译系统中推导指示残差系数的符号(sign)的符号标志的上下文模型并且基于所推导的上下文模型来对符号标志进行编译。

背景技术

近来,在各种领域中,对诸如HD(高清)图像和UHD(超高清)图像这样的高分辨率、高质量图像的需求正在增长。因为图像数据具有高分辨率和高质量,所以相对于传统图像数据,待传输的信息或比特的量增加。因此,当使用诸如传统有线/无线宽带线路这样的介质发送图像数据或者使用现有存储介质存储图像数据时,其传输成本和存储成本增加。

因此,需要用于有效地发送、存储和再现高分辨率高质量图像的信息的高效图像压缩技术。

发明内容

本公开提供了一种用于提高图像编译效率的方法及设备。

本公开还提供了一种用于提高残差编译的效率的方法和设备。

本公开也提供了一种用于在残差信息被编译时通过基于在残差系数之前编译的先前残差系数的符号标志来推导指示残差系数的符号的符号标志的上下文模型来执行编译的方法和设备。

根据本公开的一个实施方式,提供了一种由解码设备执行的图像解码方法。该方法包括:接收当前块的残差信息;推导用于当前块的当前子块中的当前残差系数的符号标志的上下文模型;基于上下文模型来对符号标志进行解码;基于符号标志来推导当前残差系数;基于当前残差系数来推导残差样本;以及基于残差样本来生成重构图片,其中用于符号标志的上下文模型是基于在当前子块中的当前残差系数之前解码的残差系数的符号标志而推导的。

根据本公开的另一实施方式,提供了一种用于执行图像解码的解码设备。该解码设备包括:熵解码器,该熵解码器用于接收当前块的残差信息,推导用于当前块的当前子块中的当前残差系数的符号标志的上下文模型,基于上下文模型来对符号标志进行解码,并且基于符号标志来推导当前残差系数;变换器,该变换器用于基于当前残差系数来推导残差样本;以及加法器,该加法器用于基于残差样本来生成重构图片,其中用于符号标志的上下文模型是基于在当前子块中的当前残差系数之前解码的残差系数的符号标志而推导的。

根据本公开的另一实施方式,提供了一种由编码设备执行的图像编码方法。该方法包括:推导当前块的当前子块中的当前残差系数;推导用于当前残差系数的符号标志的上下文模型;基于上下文模型来对符号标志进行编码;以及生成包括符号标志的比特流,其中用于符号标志的上下文模型是基于在当前子块中的当前残差系数之前编码的残差系数的符号标志而推导的。

根据本公开的另一实施方式,提供了一种视频编码设备。该编码设备包括:变换器,该变换器用于推导当前块的当前子块中的当前残差系数;以及编码器,该编码器用于推导用于当前残差系数的符号标志的上下文模型、基于上下文模型来对符号标志进行编码以及生成包括符号标志的比特流,其中用于符号标志的上下文模型是基于在当前子块中的当前残差系数之前编码的残差系数的符号标志而推导的。

有益效果

根据该文档,可以提高整体图像/视频压缩效率。

根据该文档,可以提高残差编译的效率。

根据本公开,能够基于上下文模型来对指示残差系数的符号的符号标志进行编译,从而节省指配给残差系数的符号标志的比特量并且改善整体残差编译效率。

根据本公开,用于指示残差系数的符号的符号标志的上下文模型是基于在残差系数之前编译的残差系数的符号标志而推导的,并且因此通过考虑相邻残差系数之间的相关性来对符号标志进行编译,从而节省指配给符号标志的比特量并且改善整体残差编译效率。

附图说明

图1简要例示了可应用本文档的实施例的视频/图像编译装置的示例。

图2是例示了可以应用本文档的实施例的视频/图像编码设备的配置的示意图。

图3是例示了可以应用本文档的实施例的视频/图像解码设备的配置的示意图。

图4示例性地示出了用于对语法元素进行编码的上下文自适应二进制算术编译(CABAC)。

图5是示出了4x4块内的示例性变换系数的图。

图6示出了通过基于是否对当前块应用变换来确定对符号标志进行编译的方法来执行编码的示例。

图7示出了通过基于是否对当前块应用变换来确定对符号标志进行编译的方法来执行解码的示例。

图8简要地例示了由根据本公开的编码设备执行的图像编码方法。

图9简要地例示了用于执行根据本公开的图像编码方法的编码设备。

图10简要地例示了由根据本公开的解码设备执行的图像解码方法。

图11简要地例示了用于执行根据本公开的图像解码方法的解码设备。

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

具体实施方式

本公开可以以各种形式修改,并且将在附图中描述和例示其特定实施方式。然而,实施方式并非旨在限制本公开。在以下描述中使用的术语仅用于描述特定实施方式,并非旨在限制本公开。只要清楚地以不同的方式理解,单数的表达包括复数的表达。诸如“包括”和“具有”之类的术语旨在表示存在以下描述中使用的特征、数目、步骤、操作、元件、组件或其组合,因此应理解的为不排除存在或添加一个或更多个不同的特征、数目、步骤、操作、元件、组件或其组合的可能性。

此外,在本公开中描述的附图中的元件是为了方便地解释不同的特定功能而独立地绘制的,并不意味着这些元件由独立的硬件或独立的软件来体现。例如,可以将元件中的两个或更多个元件组合以形成单个元件,或者可以将一个元件划分为多个元件。其中组合元件和/或划分元件的实施方式属于本公开,而没有脱离本公开的概念。

在下文中,将参照附图详细描述本公开的实施方式。另外,在整个附图中,相似的附图标记用于指示相似的元件,并且将省略对相似元件的相同描述。

图1简要例示了可应用本公开的实施方式的视频/图像编译装置的示例。

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

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

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

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

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

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

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

本文档涉及视频/图像编译。例如,本文档中公开的方法/实施方式可以应用于在多功能视频编码(VVC)、EVC(基本视频编码)标准、AOMedia Video 1(AV1)标准、第2代音频视频编码标准(AVS2)或下一代视频/图像编码标准(例如,H.267、或H.268等)中公开的方法。

本文档呈现了视频/图像编译的各种实施方式,并且除非另外提及,否则实施方式可以彼此组合地执行。

在本文档中,视频可以是指一段时间上的一系列图像。图片通常是指在特定时间区域表示一幅图像的单位,而切片(slice)/图块(tile)是在编译中组成图片的一部分的单位。切片/图块可以包括一个或更多个编译树单元(CTU)。一幅图片可以包括一个或更多个切片/图块。一幅图片可以包括一个或更多个图块组。一个图块组可以包括一个或更多个图块。拼块(brick)可以表示图片中图块内CTU行的矩形区域。一个图块可以分区为多个拼块,每个拼块包括图块内的一个或更多个CTU行。没有分区为多个拼块的图块也可以称为拼块。拼块扫描是对其中CTU在拼块的CTU光栅扫描中连续排序的图片进行分区的CTU的特定顺序排序,图块内的拼块在图块的拼块的光栅扫描中是连续排列的,并且图片中的图块在图片的图块的光栅扫描中是连续排序的。图块是图片中特定图块列和特定图块行内的CTU的矩形区域。图块列是高度等于图片的高度并且宽度由图片参数集中的语法元素指定的CTU的矩形区域。图块行是高度由图片参数集中的语法元素指定并且宽度等于图片宽度的CTU的矩形区域。图块扫描是指对其中CTU在图块的CTU光栅扫描中是连续排序的图片进行分区的CTU的特定顺序排序,而图片中的图块在图片的图块的光栅扫描中是连续排序的。切片包括可以唯一地包含在单个NAL单元中的图片的整数个拼块。切片可以包括多个完整的图块,或者仅一个图块的完整拼块的连续序列。图块组和切片在该文档中可以互换使用。例如,在本文档中,图块组/图块组头可以被称为切片/切片头。

像素或像元可以表示组成一幅图片(或图像)的最小单位。另外,“样本”可以用作与像素相对应的术语。样本通常可以表示像素或像素值,并且可以仅表示亮度分量的像素/像素值或仅表示色度分量的像素/像素值。

单元可以表示图像处理的基本单位。单元可以包括图片的特定区域和与该区域有关的信息中的至少一个。一个单元可以包括一个亮度块和两个色度(例如,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两者。换句话说,本文档中的术语“或”应解释为指示“附加地或另选地。”

图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)。在这种情况下,可以根据四叉树二叉树三叉树(QTBTTT)结构从编译树单元(CTU)或最大编译单元(LCU)来递归地分割编译单元。例如,一个编译单元可以基于四叉树结构、二叉树结构和/或三元结构而被分区为深度更深的多个编译单元。在这种情况下,例如,可以首先应用四叉树结构,随后可以应用二叉树结构和/或三元结构。另选地,可以首先应用二叉树结构。可以基于不再分区的最终编译单元来执行根据本文档的编译过程。在这种情况下,可以根据图像特性基于编译效率将最大编译单元用作最终编译单元,或者如果需要,可以将编译单元递归地分区为深度更深的编译单元并且具有最佳尺寸的编译单元可以用作最终编译单元。这里,编译过程可以包括预测、变换和重构的过程,这将在后面描述。作为另一示例,处理器还可以包括预测单元(PU)或变换单元(TU)。在这种情况下,可以从上述最终编译单元来分离或分区预测单元和变换单元。预测单元可以是样本预测的单元,并且变换单元可以是用于导出变换系数的单元和/或用于从变换系数导出残差信号的单元。

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

在编码设备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,因为参考块是在当前图片中导出出的。即,IBC可以使用本文档中描述的帧间预测技术中的至少一种。调色板模式可以被视为帧内编译或帧内预测的示例。当应用调色板模式时,可以基于关于调色板表和调色板索引的信息来发信号通知图片内的样本值。

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

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

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

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

滤波器260可以通过对重构信号应用滤波来改善主观/客观图像质量。例如,滤波器260可以通过对重构图片应用各种滤波方法来生成修改后的重构图片,并将修改后的重构图片存储在存储器270(具体地,存储器270的DPB)中。各种滤波方法可包括例如去块滤波、样本自适应偏移、自适应环路滤波器、双边滤波器等。滤波器260可以生成与滤波有关的各种信息,并且将生成的信息发送给熵编码器240,如稍后在各种滤波方法的描述中所述。与滤波有关的信息可以由熵编码器240编码并且以比特流的形式输出。

发送给存储器270的修改后的重构图片可以用作帧间预测器221中的参考图片。当通过编码设备应用帧间预测时,可以避免编码设备200与解码设备之间的预测不匹配,并且可以提高编译效率。

存储器270的DPB可以存储用作帧间预测器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,使用解码目标语法元素信息、解码目标块的解码信息或在先前级中解码的码元(symbol)/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,因为在当前图片中导出参考块。即,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相同或者分别被应用以对应于解码设备300的滤波器350、帧间预测器332和帧内预测器331。相同的内容也可以应用于帧间预测器332和帧内预测器331。

如上所述,编码设备可以执行各种编码方法,诸如指数哥伦布、上下文自适应变长编码(CAVLC)和上下文自适应二进制算术编码(CABAC)。另外,解码设备可以基于诸如指数哥伦布编码、CAVLC或CABAC的编码方法来对比特流中的信息进行解码,并且输出图像重构所需要的语法元素的值和与残差有关的变换系数的量化值。

例如,可以如下所述执行上述编译方法。

图4示例性地示出了用于对语法元素进行编码的上下文自适应二进制算术编码(CABAC)。例如,在CABAC编码过程中,当输入信号是语法元素而不是二进制值时,编码设备可以通过对输入信号的值进行二值化来将输入信号转换成二进制值。另外,当输入信号已经是二进制值时(即,当输入信号的值是二进制值时),可能不执行二值化并且可以旁路二值化。这里,可以将构成二进制值的每个二进制数字0或1称为bin。例如,如果在二值化之后的二进制串是110,则1、1和0中的每一个被称为一个bin。一个语法元素的bin可以指示语法元素的值。

此后,可以将语法元素的二值化bin输入到常规编译引擎或旁路编译引擎。编码设备的常规编译引擎可以向所对应的bin分配反映概率值的上下文模型,并且可以基于所分配的上下文模型来对所对应的bin进行编码。编码设备的常规编译引擎可以在对每个bin执行编码之后更新每个bin的上下文模型。可以将如上所述编码的bin称为上下文编译bin。

同时,当语法元素的二值化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、par_level_flag、abs_level_gt1_flag、abs_level_gt3_flag、abs_remainder、coeff_sign_flag、dec_abs_level、mts_idx。可以如下表所示的那样表示与残差数据编码/解码有关的语法元素。

[表1]

transform_skip_flag指示在相关块中是否跳过变换。transform_skip_flag可以是变换跳过标志的语法元素。相关块可以是编译块(CB)或变换块(TB)。关于变换(及量化)和残差编译过程,可以互换地使用CB和TB。例如,如上所述,对于CB可以导出残差样本,而且可以通过针对残差样本的变换和量化并且通过残差编译过程来导出(量化)变换系数,可以生成并用信号通知有效地指示(量化)变换系数的位置、幅度、符号等的信息(例如,语法元素)。可以将量化变换系数简称为变换系数。通常,当CB不大于最大TB时,CB的大小可以与TB的大小相同,并且在这种情况下,可以将要变换(和量化)并残差编译的目标块称为CB或TB。同时,当CB大于最大TB时,可以将要变换(和量化)并残差编译的目标块称为TB。在下文中,将描述以变换块(TB)为单位用信号通知与残差编译有关的语法元素,但这是示例并且TB可以与编译块(如上所述的CB)互换地使用。

同时,在用信号通知变换跳过标志之后用信号通知的语法元素可以与下表6中公开的语法元素相同,并且在下面描述关于该语法元素的详细描述。

同时,与在其中发送语法元素的前述实施方式中不同,可以提出用信号通知tu_mts_idx的方法。

具体地,可以将在常规VVC草案3中用信号通知tu_mts_idx的方法与所提出的用信号通知tu_mts_idx的方法进行比较如下。

[表2]

如表2所示,根据常规方法,可以在解析当前块的MTS标志之后解析变换跳过标志,然后可以对MTS索引进行编译。在本文中,可以通过固定长度二值化来执行对MTS索引的编译,并且MTS索引的固定比特长度可以为2。

另一方面,根据所提出的方法,可以在不必附加地解析变换跳过标志和MTS标志的情况下对MTS索引进行编译,并且可以在对MTS索引的编译中使用截断一元二值化。在本文中,MTS索引可以指示是否对当前块的残差信息应用变换,并且可以指示是否应用MTS。也就是说,所提出的方法可以是将变换跳过标志、MTS标志和MTS索引作为一个语法元素用信号通知的方法。在所提出的方法中,MTS索引的第一bin可以指示是否将变换应用于当前块的残差信息,并且MTS索引的第二bin可以指示是否应用MTS或者可以指示要应用的变换核。

在所提出的方法中,通过MTS索引的值及其二值化值所指示的含义可以如下表所示。

[表3]

例如,如果MTS索引的值为0,则MTS索引可以指示应用针对当前块的变换,不应用MTS,并且水平变换核类型和垂直变换核类型是DCT-2。另外,如果MTS索引的值为1,则MTS索引可以指示不应用针对当前块的变换(即,不应用MTS,并且不指示变换核类型)。另外,如果MTS索引的值为2,则MTS索引可以指示应用针对当前块的变换和MTS,并且水平变换核类型和垂直变换核类型是DST-7。另外,如果MTS索引的值为3,则MTS索引可以指示应用针对当前块的变换和MTS,水平变换核类型是DCT-8,而垂直变换核类型是DST-7。另外,如果MTS索引的值为4,则MTS索引可以指示应用针对当前块的变换和MTS,水平变换核类型是DST-7,而垂直变换核类型是DCT-8。另外,如果MTS索引的值为5,则MTS索引可以指示应用当前块的变换和MTS,并且水平变换核类型和垂直变换核类型是DCT-8。

另选地,通过MTS索引的值及其二值化值所指示的含义的另一示例可以如下表所示。

[表4]

例如,如果MTS索引的值为0,则MTS索引可以指示不应用针对当前块的变换(即,不应用MTS,并且不指示变换核类型)。另外,如果MTS索引的值为1,则MTS索引可以指示应用针对当前块的变换,不应用MTS,并且水平变换核类型和垂直变换核类型是DCT-2。另外,如果MTS索引的值为2,则MTS索引可以指示应用针对当前块的变换和MTS,并且水平变换核类型和垂直变换核类型是DST-7。另外,如果MTS索引的值为3,则MTS索引可以指示应用针对当前块的变换和MTS,水平变换核类型是DCT-8,而垂直变换核类型是DST-7。另外,如果MTS索引的值为4,则MTS索引可以指示应用针对当前块的变换和MTS,水平变换核类型是DST-7,而垂直变换核类型是DCT-8。另外,如果MTS索引的值为5,则MTS索引可以指示应用针对当前块的变换和MTS,并且水平变换核类型和垂直变换核类型是DCT-8。

同时,上下文模型的数目可能不改变,并且为tu_mts_idx的每个bin指定上下文索引增量ctxInc的方法可以如下表所示。

[表5]

所提出的MTS索引也可以由统一MTS索引表示。

与包括统一MTS索引的残差数据编码/解码有关的语法元素可以如下表所示。

[表6]

参照上表6,可以对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进行编码/解码。

在实施例中,编码设备可以基于语法元素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)和/或特定帧内/帧间预测模式来确定扫描顺序。

此后,编码设备可以将变换块划分成4x4子块,然后对于每个4x4子块使用1比特语法元素coded_sub_block_flag来指示在当前子块中是否存在非零系数。

如果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进行编码之后剩下的级别值。也就是说,指示要编码的级别值的语法元素remAbsLevel可以从以下等式导出。

[等式1]

remAbsLevel=|coeff|-1

在本文中,coeff意指实际的变换系数值。

附加地,abs_level_gt1_flag可以指示所对应的扫描位置(n)的remAbsLeve1’是否大于1。例如,当abs_level_gt1_flag的值为0时,所对应的位置的变换系数的绝对值可以是1。另外,当abs_level_gt1_flag的值为1时,可以如以下等式中所示的那样导出指示要稍后编码的级别值的remAbsLeve1。

[等式2]

remAbsLevel=remAbsLevel-1

另外,可以通过par_level_flag如在以下等式3中一样对上述等式2中描述的remAbsLevel的最低有效系数(LSB)值进行编码。

[等式3]

par_level_flag=|coeff|&1

在本文中,par_level_flag[n]可以指示扫描位置n处的变换系数级别(值)的奇偶性。

可以如以下等式中所示的那样更新要在执行par_level_flag编码之后编码的变换系数级别值remAbsLevel。

[等式4]

remAbsLevel=remAbsLevel>>1

abs_level_gt3_flag可以指示所对应的扫描位置(n)的remAbsLevel’是否大于3。可以仅在rem_abs_gt3_flag等于1的情况下对abs_remainder执行编码。实际的变换系数值coeff与每个语法元素之间的关系可以如在下面以下等式中所示。

[等式5]

coeff|=sig_coeff_flag+abs_level_gt1_flag+par_level_flag+2*(abs_level_gt3_flag+abs_remainder)

附加地,下表指示与上述等式5有关的示例。

[表7]

在本文中,|coeff|指示变换系数级别(值)并且也可以被指示为变换系数的AbsLevel。附加地,可以通过使用作为1比特码元(symbol)的coeff_sign_flag来对每个系数的符号进行编码。

同时,作为与发送语法元素的前述实施方式中的示例不同的示例,可以提出根据是否对于残差编译应用变换跳过来对不同的残差进行编译的方案,即,根据是否应用变换跳过来发送不同的残差语法元素的实施方式。

根据前述示例的用于残差编译的语法元素可以如下表所示。

[表8]

[表9]

[表10]

根据本实施方式,如表8所示,可以根据变换跳过标志的语法元素transform_skip_flag的值来划分残差编译。也就是说,基于变换跳过标志的值(基于变换是否被跳过),不同的语法元素可以被用于残差编译。当未应用变换跳过时(也就是说,当应用变换时)使用的残差编译可以被称为常规残差编译(RRC),而当未应用变换跳过时(也就是说,当未应用变换时)使用的残差编译可以被称为变换跳过残差编译(TSRC)。上表9可以示出当transform_skip_flag的值为0时(即,当应用变换时)的残差编译的语法元素,而上表10可以示出当transform_skip_flag的值为1时(即,当未应用变换时)的残差编译的语法元素。

具体地,例如,可以解析指示是否跳过变换块的变换的变换跳过标志,并且可以确定变换跳过标志是否为1。如果变换跳过标志的值为1,如表10所示,则可以解析变换块的残差系数的语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag和/或abs_remainder,并且可以基于这些语法元素来推导残差系数。在这种情况下,可以顺序地解析语法元素,并且可以改变解析顺序。另外,abs_level_gtx_flag可以表示abs_level_gt1_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag和/或abs_level_gt9_flag。例如,abs_level_gtx_flag[n][j]可以是指示扫描位置n处的变换系数级别(或通过将变换系数级别向右移位1获得的值)的绝对值是否大于(j<<1)+1。条件(j<<1)+1可以可选地用诸如第一阈值、第二阈值等的特定阈值替换。

另外,如果变换跳过标志的值为0,如表9所示,则可以解析变换块的残差系数的语法元素,即sig_coeff_flag、abs_level_gtx_flag、par_level_flag、abs_remainder、dec_abs_level和coeff_sign_flag,并且可以基于这些语法元素来推导残差系数。在这种情况下,可以顺序地解析语法元素,并且可以改变解析顺序。另外,abs_level_gtx_flag可以表示abs_level_gt1_flag和/或abs_level_gt3_flag。例如,abs_level_gtx_flag[n][0]可以是第一变换系数级别标志abs_level_gt1_flag的示例,而abs_level_gtx_flag[n][1]可以是第二变换系数级别标志abs_level_gt3_flag的示例。

如上所述,将当未应用变换时的残差系数的语法元素与当应用变换时的残差系数的语法元素进行比较,语法元素par_level_flag可能没有被编码和解码。当残差系数具有大级别值时,与残差系数的级别值直接经受二值化的传输相比,当所有残差系数的诸如sig_coeff_flag、par_level_flag、abs_level_gtx_flag等的语法元素被编译时,以重复方式发送信息的可能性高。因此,在本实施方式中,能够通过在应用具有残差系数的级别值高的可能性的变换跳过时省略语法元素par_level_flag来提高编译效率。

同时,CABAC提供高性能,但是不利地具有差吞吐量性能。这是由CABAC的常规编译引擎引起的。常规编码(即,通过CABAC的常规编译引擎来编译)呈现高数据依赖性,因为它使用通过对先前bin的编译更新的概率状态和范围,并且它可能花费许多时间来读取概率区间并确定当前状态。可以通过限制上下文编译的bin的数目来解决CABAC的吞吐量问题。例如,如上述表1、表6、表9或表10所示,用于表达sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag的bin之和可以被限制为取决于对应块的大小的bin的数目。例如,如果对应块是4x4大小的块,则用于sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag的bin之和可以被限制为32,而如果对应块是2x2大小的块,则用于sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag的bin之和可以被限制为8。bin的有限数目可以由remBinsPass1表示。

在这种情况下,如果当上下文元素被编译时使用数目有限的所有上下文编译的bin,则编码设备可以通过如下所述对系数进行二值化的方法而不是使用CABAC来对剩余系数进行二值化,并且可以执行旁路编码。换句话说,例如,如果为4x4CG编译的上下文编译的bin的数目为32,或者如果为2x2CG编译的上下文编译的bin的数目为8,则用上下文编译的bin编译的sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag可能不再被编码,并且可以被直接编码为如下述表8所示的dec_abs_level。

[表11]

|coeff| dec_abs_level
0 0
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
... ...

可以基于dec_abs_level来推导值|coeff|。在这种情况下,可以如以下等式所示的那样推导变换系数值,即|coeff|。

[等式6]

|coeff|=dec_abs_level

另外,coeff_sign_flag可以指示对应扫描位置n处的变换系数级别的符号。也就是说,coeff_sign_flag可以指示对应扫描位置n处的变换系数的符号。另外,mts_idx可以指示在水平方向和垂直方向上应用于当前变换块中的残差样本的变换核。

图5示出了4x4块中的变换系数的示例。

图5的4×4块表示量化系数的示例。图5的块可以是4x4变换块,或8x8、16x16、32x32或64x64变换块的4x4子块。图5的4x4块可以表示亮度块或色度块。

例如,针对图5的逆对角线扫描系数的编码结果可以如下表所示。

[表12]

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

在上表12中,scan_pos指示基于逆对角线扫描的系数的位置。scan_pos15可以是要在4x4块中首先扫描(即在右下角处)的变换系数,而scan_pos0可以是要最后扫描(即在左上角处)的变换系数。同时,在一个实施方式中,scan_pos可以被称为扫描位置。例如,scan_pos0将被称为扫描位置0。

同时,如上所述,当输入信号不是二进制值而是语法元素时,编码设备可以通过对输入信号的值进行二值化来将输入信号变换成二进制值。另外,解码设备可以对语法元素进行解码以推导语法元素的二值化值(例如,二值化bin),并且可以对二值化值进行去二值化以推导语法元素的值。二值化过程可以作为截断莱斯(TR)二值化过程、k阶指数哥伦布(EGk)二值化过程、有限k阶指数哥伦布(有限EGk)、固定长度(FL)二值化过程等被执行。另外,去二值化过程可以表示基于TR二值化过程、EGk二值化过程或FL二值化过程来执行以推导语法元素的值的过程。

例如,可以执行TR二值化过程如下。

TR二值化过程的输入可以是用于语法元素的cMax和cRiceParam以及对TR二值化的请求。另外,TR二值化过程的输出可以是针对作为与bin串对应的值的symbolVal的TR二值化。

具体地,例如,在存在语法元素的后缀bin串的情况下,语法元素的TR bin串可以是前缀bin串和后缀bin串的级联,而在不存在后缀bin串的情况下,语法元素的TR bin串可以是前缀bin串。例如,可以如下所述推导前缀bin串。

可以如以下等式所示的那样推导语法元素的symbolVal的前缀值。

[等式7]

prefixVal=symbolVal>>cRiceParam

在本文中,prefixVal可以表示symbolVal的前缀值。可以如下所述推导语法元素的TR bin串的前缀(即,前缀bin串)。

例如,如果prefixVal小于cMax>>cRiceParam,则前缀bin串可以是由binIdx索引的长度prefixVal+1的比特串。也就是说,如果prefixVal小于cMax>>cRiceParam,则前缀bin串可以是由binIdx指示的比特数为prefixVal+1的比特串。binIdx小于prefixVal的bin可以等于1。另外,与prefixVal相同的binIdx的bin可以等于0。

例如,通过针对prefixVal的一元二值化推导的bin串可以如下表所示。

[表13]

同时,如果prefixVal不小于cMax>>cRiceParam,则前缀bin串可以是长度为cMax>>cRiceParam并且所有比特为1的比特串。

另外,如果cMax大于symbolVal并且如果cRiceParam大于0,则可能存在TR bin串的bin后缀bin串。例如,可以如下所述推导后缀bin串。

可以如以下等式所示的那样推导语法元素的symbolVal的后缀值。

[等式8]

suffixVal=symbolVal-((prefixVal)<<cRiceParam)

在本文中,suffixVal可以表示symbolVal的后缀值。

可以基于对于值cMax为(1<<cRiceParam)-1的suffixVal的FL二值化过程来推导TR bin串的后缀(即,后缀bin串)。

同时,如果输入参数即cRiceParam的值为0,则TR二值化可以是精确地截断的一元二值化,并且可以总是使用与要解码的语法元素的可能最大值相同的值cMax。

另外,例如,可以执行EGk二值化过程如下。用ue(v)编译的语法元素可以是经受指数哥伦布编译的语法元素。

例如,可以执行0阶指数哥伦布(EG0)二值化过程如下。

语法元素的解析过程可以从读取包括在比特流的当前位置处开始的第一非零比特的比特并且对等于0的前导比特的数目进行计数开始。可以如下表所示的那样表示该过程。

[表14]

另外,可以如以下等式所示的那样推导变量‘codeNum’。

[等式9]

codeNum=2leadingZeroBits-1+read_bits(leadingZeroBits)

在本文中,从read_bits(leadingZeroBits)返回的值,即通过read_bits(leadingZeroBits)指示的值,可以被解释为首先记录的最高有效比特的无符号整数的二进制表示。

可以如下表所示的那样表示比特串被划分成“前缀”比特和“后缀”比特的指数哥伦布码的结构。

[表15]

比特串形式 codeNum的范围
1 0
0 1 x<sub>0</sub> 1..2
0 0 1 x<sub>1</sub> x<sub>0</sub> 3..6
0 0 0 1 x<sub>2</sub> x<sub>1</sub> x<sub>0</sub> 7..14
0 0 0 0 1 x<sub>3</sub> x2 x<sub>1</sub> x<sub>0</sub> 15..30
0 0 0 0 0 1 x<sub>4</sub> x<sub>3</sub> x<sub>2</sub> x<sub>1</sub> x<sub>0</sub> 31..62
... ...

“前缀”比特可以是如上所述解析以计算leadingZeroBit的比特,并且可以由表15中的比特串的0或1表示。也就是说,通过上表15中的0或1公开的比特串可以表示前缀比特串。“后缀”比特可以是在codeNum的计算中解析的比特,并且可以通过上表15中的xi来表示。也就是说,作为上表15中的xi公开的比特串可以表示后缀比特串。在本文中,i可以是LeadingZeroBits-1范围内的值。另外,每个xi可以等于0或1。

指配给codeNum的比特串可以如下表所示。

[表16]

比特串 codeNum
1 0
0 1 0 1
0 1 1 2
0 0 1 0 0 3
0 0 1 0 1 4
0 0 1 1 0 5
0 0 1 1 1 6
0 0 0 1 0 0 0 7
0 0 0 1 0 0 1 8
0 0 0 1 0 1 0 9
... ...

如果语法元素的描述符为ue(v),也就是说,如果语法元素用ue(v)编译,则语法元素的值可以等于codeNum。

另外,例如,可以执行EGk二值化过程如下。

EGk二值化过程的输入可以是对EGk二值化的请求。另外,EGk二值化过程的输出可以是针对symbolVal即与bin串对应的值的EGk二值化。

可以推导针对symbolVal的EGk二值化过程的比特串如下。

[表17]

参照上表17,可以通过put(X)的每次调用来将二进制值X添加到bin串的末尾。在此,X可以为0或1。

另外,例如,可以执行受限EGk二值化过程如下。

受限EGk二值化过程的输入可以是对受限EGk二值化的请求、莱斯参数riceParam、作为表示最大值的以2为底的对数的变量的log2TransformRange以及作为表示最大前缀扩展长度的变量的maxPreExtLen。另外,受限EGk二值化过程的输出可以是针对作为与空串对应的值的symbolVal的受限EGk二值化。

可以推导针对symbolVal的受限EGk二值化过程的比特串如下。

[表18]

另外,例如,可以执行FL二值化过程如下。

FL二值化过程的输入可以是对FL二值化的请求和语法元素的cMax。另外,FL二值化过程的输出可以是针对作为与bin串对应的值的symbolVal的FL二值化。

FL二值化可以通过使用比特数具有symbolVal的固定长度的比特串来配置。在本文中,固定长度比特可以是无符号整数比特串。也就是说,可以通过FL二值化来推导作为码元值的symbolVal的比特串,并且比特串的比特长度(即,比特数)可以是固定长度。

例如,可以如以下等式所示的那样推导固定长度。

[等式10]

fixedLength=Ceil(Log2(cMax+1))

对用于FL二值化的bin的索引可以是使用从最高有效比特到最低有效比特有序增加的值的方法。例如,与最高有效比特有关的bin索引可以是binIdx=0。

同时,例如,可以执行针对残差信息中的语法元素abs_remainder的二值化过程如下。

针对abs_remainder的二值化过程的输入可以是对语法元素abs_remainder[n]、颜色分量cIdx和亮度位置(x0,y0)的二值化的请求。亮度位置(x0,y0)可以基于图片的左上亮度样本指示当前亮度变换块的左上样本。

针对abs_remainder的二值化过程的输出可以是abs_remainder的二值化(即,abs_remainder的二值化bin串)。可以通过二值化过程来推导abs_remainder的可用bin串。

首先,可以推导abs_remainder[n]的lastAbsRemainder和lastRiceParam如下。在本文中,lastAbsRemainder可以表示在abs_remainder[n]之前推导的abs_remainder的值,并且lastRiceParam可以表示在abs_remainder[n]之前推导的abs_remainder的莱斯参数cRiceParam。

例如,如果对于当前子块首先调用推导abs_remainder[n]的lastAbsRemainder和lastRiceParam的过程,也就是说,如果在当前子块的变换系数当中执行扫描顺序上一阶的变换系数的abs_remainder[n]的过程,则lastAbsRemainder和lastRiceParam都可以被设置为0。

另外,如果不是上述情况,也就是说,如果对于当前子块不首先调用该过程,则lastAbsRemainder和lastRiceParam可以被设置为分别与在最后调用中推导的abs_remainder[n]和cRiceParam相同。也就是说,可以将lastAbsRemainder推导为与在当前要编译的abs_remainder[n]之前编译的abs_remainder[n]相同的值,并且可以将lastRiceParam推导为与在abs_remainder[n]之前编译的abs_remainder[n]的cRiceParam相同的值。

此后,可以基于lastAbsRemainder和lastRiceParam来推导当前要编译的abs_remainder[n]的莱斯参数cRiceParam。例如,可以如以下等式所示的那样推导当前要编译的abs_remainder[n]的莱斯参数cRiceParam。

[等式11]

cRiceParam=Min(lastRiceParam+((lastAbsRemainder>(3*(1<<lastRiceParam)))?1:0),3)

另外,例如,可以基于莱斯参数cRiceParam来推导当前要编译的abs_remainder[n]的cMax。可以如以下等式所示的那样推导cMax。

[等式12]

cMax=6<<cRiceParam

另选地,例如,可以基于是否对当前块应用变换跳过来确定莱斯参数cRiceParam。也就是说,如果对包括当前CG的当前TB未应用变换,换句话说,如果对包括当前CG的当前TB应用变换跳过,则可以将莱斯参数cRiceParam推导为1。另选地,如果对包括当前CG的当前TB应用变换,换句话说,如果对包括当前CG的当前TB未应用变换跳过,则可以将如上所述当前要编译的abs_remainder[n]的莱斯参数cRiceParam推导为与先前编译的abs_remainder[n]的cRiceParam相同的值。

同时,用于abs_remainder的二值化,即用于abs_remainder的bin串,在存在后缀bin串的情况下可以是前缀bin串和后缀bin串的级联。另外,在不存在后缀bin串的情况下,用于abs_remainder的bin串可以是前缀bin串。

例如,可以如下所述推导前缀bin串。

可以如以下等式所示的那样推导abs_remainder[n]的前缀值prefixVal。

[等式13]

prefixVal=Min(cMax,abs_remainder[n])

可以通过针对prefixVal的TR二值化过程来推导abs_remainder[n]的bin串(即,前缀bin串)的前缀,其中cMax和cRiceParam用作输入。

如果前缀bin串与所有比特都为1并且比特长度为6的比特串相同,则abs_remainder[n]的bin串的后缀bin串可能存在,并且可以如下所述被推导。

可以如以下等式所示的那样推导abs_remainder的后缀值suffixVal。

[等式14]

suffixVal=abs_remainder[n]-cMax

可以通过针对suffixVal的受限EGk二值化过程来推导abs_remainder的bin串的后缀bin串,其中k被设置为cRiceParam+1,riceParam被设置为cRiceParam,并且log2TransformRange被设置为15,以及maxPreExtLen被设置为11。

同时,例如,可以执行针对残差信息中的语法元素dec_abs_level的二值化过程如下。

针对dec_abs_level的二值化过程的输入可以是对语法元素dec_abs_level[n]、颜色分量cIdx、亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、作为变换块的宽度的以2为底的对数的log2TbWidth以及作为变换块的高度的以2为底的对数的log2TbHeight的二值化的请求。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。

针对dec_abs_level的二值化过程的输出可以是dec_abs_level的二值化(即,dec_abs_level的二值化bin串)。可以通过二值化过程来推导dec_abs_level的可用bin串。

可以通过按颜色分量cIdx、亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、作为变换块的宽度的以2为底的对数的log2TbWidth以及作为变换块的高度的以2为底的对数的log2TbHeight的输入而执行的莱斯参数推导过程来推导dec_abs_level[n]的莱斯参数cRiceParam。将在下面详细地描述莱斯参数的推导过程。

另外,例如,可以基于莱斯参数cRiceParam来推导dec_abs_level[n]的cMax。可以如下等式所示的那样推导cMax。

[等式15]

cMax=6<<cRiccParam

同时,用于dec_abs_level[n]的二值化,即dec_abs_level[n]的bin串,在存在后缀bin串的情况下可以是前缀bin串和后缀bin串的级联。另外,在不存在后缀bin串的情况下,dec_abs_level[n]的bin串可以是前缀bin串。

例如,可以如下所述推导前缀bin串。

可以如以下等式所示的那样推导dec_abs_level[n]的前缀值prefixVal。

[等式16]

prcfixVal=Min(cMax,dec_abs_level[n])

可以通过针对prefixVal的TR二值化过程来推导dec_abs_level[n]的bin串(即,前缀bin串)的前缀,其中cMax和cRiceParam被用作输入。

如果前缀bin串与所有比特都为1并且比特长度为6的比特串相同,则dec_abs_level[n]的bin串的后缀bin串可能存在,并且可以如下所述被推导。

针对dec_abs_level[n]的莱斯参数推导过程可以如下。

莱斯参数推导过程的输入可以是颜色分量索引cIdx、亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、作为变换块的宽度的以2为底的对数的log2TbWidth以及作为变换块的高度的以2为底的对数的log2TbHeight。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。另外,莱斯参数推导过程的输出可以是莱斯参数cRiceParam。

例如,可以基于给定语法元素sig_coeff_flag[x][y]以及具有分量索引cIdx和左上亮度位置(x0,y0)的变换块的数组AbsLevel[x][y]来类似于下表中公开的伪代码推导变量locSumAbs。

[表19]

可以推导莱斯参数cRiceParam如下。

例如,可以基于所推导的变量locSumAbs和变量s来推导莱斯参数cRiceParam。可以将变量s设置为Max(0,QState-1)。也就是说,可以将变量s设置为0与QState-1之间的最大值。

ZeroPos[n]以及基于变量locSumAbs和变量s推导的莱斯参数cRiceParam可以如下表所示。

[表20]

S locSumAbs 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
cRiceParam 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2
0 ZeroPos[n] 0 0 0 0 0 1 2 2 2 2 2 2 4 4 4 4
1 ZeroPos[n] 1 1 1 1 2 3 4 4 4 6 6 6 8 8 8 8
2 ZeroPos[n] 1 1 2 2 2 3 4 4 4 6 6 6 8 8 8 8
locSumAbs 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cRiceParam 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3
0 ZeroPos[n] 4 4 4 4 4 4 4 8 8 8 8 8 16 16 16 16
1 ZeroPos[n] 4 4 12 12 12 12 12 12 12 12 16 16 16 16 16 16
2 ZeroPos[n] 8 8 12 12 12 12 12 12 12 16 16 16 16 16 16 16

例如,参照上表20,如果locSumAbs小于或等于6,则可以将cRiceParam设置为0。如果locSumAbs大于或等于7且小于或等于13,则可以将cRiceParam设置为1。如果locSumAbs大于或等于14且小于或等于27,则可以将cRiceParam设置为2。如果locSumAbs大于或等于28,则可以将cRiceParam设置为3。

另外,参照上表20,如果s为0并且locSumAbs小于或等于4,则可以将ZeroPos[n]设置为0。如果s为0并且locSumAbs为5,则可以将ZeroPos[n]设置为1。如果s为0并且locSumAbs大于或等于6且小于或等于11,则可以将ZeroPos[n]设置为2。如果s为0并且locSumAbs大于或等于12且小于或等于22,则可以将ZeroPos[n]设置为4。如果s为0并且locSumAbs大于或等于23且小于或等于27,则可以将ZeroPos[n]设置为8。如果s为0并且locSumAbs大于或等于28,则可以将ZeroPos[n]设置为16。另外,参照上表20,如果locSumAbs小于或等于3,则可以将ZeroPos[n]设置为1。如果s为1并且locSumAbs为4,则可以将ZeroPos[n]设置为2。如果s为1并且locSumAbs为5,则可以将ZeroPos[n]设置为3。如果s为1并且locSumAbs大于或等于6且小于或等于8,则可以将ZeroPos[n]设置为4。如果s为1并且locSumAbs大于或等于9且小于或等于11,则可以将ZeroPos[n]设置为6。如果s为1并且locSumAbs大于或等于12且小于或等于15,则可以将ZeroPos[n]设置为8。如果s为1并且locSumAbs大于或等于16且小于或等于17,则可以将ZeroPos[n]设置为4。如果s为1并且locSumAbs大于或等于18且小于或等于25,则可以将ZeroPos[n]设置为12。如果locSumAbs大于或等于26且小于或等于31,则可以将ZeroPos[n]设置为16。另外,参照上表20,如果s为2并且locSumAbs小于或等于1,则可以将ZeroPos[n]设置为1。如果s为2并且locSumAbs大于或等于2且小于或等于4,则可以将ZeroPos[n]设置为2。如果s为2并且locSumAbs为5,则可以将ZeroPos[n]设置为3。如果s为2并且locSumAbs大于或等于6且小于或等于8,则可以将ZeroPos[n]设置为4。如果s为2并且locSumAbs大于或等于9且小于或等于11,则可以将ZeroPos[n]设置为6。如果s为2并且locSumAbs大于或等于12且小于或等于17,则可以将ZeroPos[n]设置为8。如果s为2并且locSumAbs大于或等于18且小于或等于24,则可以将ZeroPos[n]设置为12。如果s为2并且locSumAbs大于或等于25,则可以将ZeroPos[n]设置为16。

可以如以下等式所示的那样推导dec_abs_level[n]的后缀值suffixVal。

[等式17]

suffixVal=dec_abs_level[n]-cMax

可以通过针对suffixVal的受限EGk二值化过程来推导dec_abs_level[n]的bin串的后缀bin串,其中k被设置为cRiceParam+1,riceParam被设置为cRiceParam,log2TransformRange被设置为15,并且maxPreExtLen被设置为11。

另外,本公开提出了一种在现有残差编译方法中修改下述内容使得指示量化预测残差的变换跳过级别(即,空间域中的残差)的统计和信号特性适于残差编译的方法。

扫描顺序:例如,TB块中的子块和子块中的残差系数的扫描顺序可以是从右下向左上移动的对角线扫描顺序。也就是说,TB块中的子块和子块中的残差系数的扫描顺序可以是从右下向左上扫描的对角线扫描顺序。另选地,例如,TB块中的子块和子块中的残差系数的扫描顺序可以是从左上到右下的对角线扫描顺序。也就是说,TB块中的子块和子块中的残差系数的扫描顺序可以是从左上向右下扫描的对角线扫描顺序。

不存在最后非零变换系数的位置:在预测之后,由于应用空间残差并且未按变换跳过而执行基于变换的能量压缩,所以残差信号(即,残差样本)对于在变换块的右下的后续零或非有效级别可能不再具有高概率。因此,在这种情况下,可以跳过关于最后非零变换系数的扫描位置的信息的信令。替代地,要首先编译的第一子块可以是变换块中的左上子块。同时,非零残差系数也可以被称为有效系数。

子块CBF:关于最后非零变换系数的扫描位置的信息的信令的成员应如下所述修改被应用变换跳过并且具有coded_sub_block_flag的子块的CBF信令。

由于量化,可以仍在变换块内局部地生成非有效级别的前述序列。因此,可以如上所述去除关于最后非零变换系数的扫描位置的信息,并且可以对于所有子块对coded_sub_block_flag进行编译。

另外,用于DC频率位置的子块(左上子块)的coded_sub_block_flag可以表示特殊情况。例如,在VVC草案3中,左上子块的coded_sub_block_flag可能不被发信号通知并且可以被推导为总是等于1。当最后非零变换系数的扫描位置位于除左上子块以外的子块处时,这可以表示在DC子块(即,左上子块)外部存在至少有一个有效级别。结果,DC子块的coded_sub_block_flag可以被推导为1,但是可以包括仅0/非有效级别。如果如上所述对当前块应用变换跳过并且没有关于最后非零变换系数的扫描位置的信息,则可以用信号通知每个子块的coded_sub_block_flag。在本文中,除了用于除DC子块以外的所有子块的coded_sub_block_flag已经为0的情况之外,也可以包括DC子块的coded_sub_block_flag。同时,例如,当从右下向左上移动的对角线扫描顺序被应用为变换块的扫描顺序并且未用信号通知DC子块的coded_sub_block_flag时,可以将DC子块的coded_sub_block_flag推导为等于1(inferDcSbCbf=1)。因此,由于DC子块应具有至少一个有效级别,所以如果除DC子块中的第一位置(0,0)的sig_coeff_flag以外的所有sig_coeff_flags都为0,则第一位置(0,0)的sig_coeff_flag可能不被用信号通知,并且可以被推导为等于1(inferSbDcSigCoeffFlag=1)。

另外,在coded_sub_block_flag的上下文建模中可能有变化。例如,可以将上下文模型索引计算为当前子块的左子块的coded_sub_block_flag和当前子块的上子块的coded_sub_block_flag之和以及这些coded_sub_block_flags的逻辑分离。

sig_coeff_flag上下文建模:可以修改sig_coeff_flag上下文建模的局部模板以仅包括当前扫描位置的左位置NB0和上位置NB1。上下文模型偏移可以被推导为有效邻近位置的值,即,sig_coeff_flag[NB0]+sig_coeff_flag[NB1]。因此,可以去除取决于当前变换块的对角线d对不同的上下文集的选择。因此,可以设置三个上下文模型和单个上下文模型来对sig_coeff_flag进行编译。

abs_level_gt1_flag和par_level_flag上下文建模:单个上下文模型可以被用于abs_level_gt1_flag和par_level_flag。

abs_remainder编译:尽管变换跳过残差绝对级别的经验分布仍然拟合拉普拉斯或几何分布,但是可能存在比变换系数绝对级别大的不稳定性。特别地,对于残差绝对级别,连续实现的窗口内的方差可能更高。因此,可以修改abs_remainder的上下文建模和二值化如下。

例如,可以在abs_remainder的二值化中使用更高的截止(cutoff)值。因此,可以为对于从利用sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag进行编译到用于abs_remainder的莱斯码的转变点以及每个bin位置的专用上下文模型提供更高的压缩效率。增加截止可能产生更多的“大于X”标志(例如,abs_level_gt5_flag、abs_level_gt7_flag等),直到达到截止为止。可以将截止固定为5(numGtFlags=5)。

另外,可以修改用于推导莱斯参数的模板。也就是说,可以将仅当前扫描位置的右邻近位置和下邻仅位置认为是sig_coeff_flag上下文建模的局部模板。

coeff_sign_flag上下文建模:即使由于符号序列内部的不稳定性和预测残差常常有偏的事实导致全局经验分布几乎均匀地分布,也可以使用上下文模型来对与符号有关的信息进行编译。可以在与符号有关的信息的编译中使用单个专用上下文模型,并且可以在sig_coeff_flag之后解析与符号有关的信息以将所有上下文编译的bin保持在一起。

上下文编译的bin的减少:可能不修改第一扫描经过(pass)的语法元素即sig_coeff_flag、abs_level_gt1_flag和par_level_flag的传输。然而,每样本的上下文编译的bin(CCB)的最大值的约束可以被去除,并且可以被不同地调整。当CCB>k时,可以通过指定非有效模式来推导CCB的减少。在本文中,k可以是正整数。例如,在常规级别编译模式的情况下,k可以是2。前述约束可以对应于量化空间的减少。

可以如下表所示的那样表示与通过应用前述修改编译的残差数据有关的语法元素。

[表21]

同时,可以如下所述推导指示基于前述残差信息中包括的上下文编译的语法元素的上下文模型的上下文索引ctxIdx。

例如,推导语法元素的上下文索引的过程的输入可以是指示当前bin在语法元素的bin串中的位置的binIdx,并且可以将ctxTable、ctxIdx和bypassFlag推导为输出。

首先,可以推导语法元素的当前bin的ctxInc。也就是说,可以基于指示语法元素的当前bin的位置的binIdx来推导ctxIdx。ctxInc可以由上下文增量参数表示。

基于语法元素的binIdx推导的ctxInc可以如下表所示。

[表22]

在表22中,可以推导具有不是“旁路”、“终止”或“na(不适用)”的值的bin的上下文索引如下。

可以将语法元素的当前bin的ctxInc推导为表22中指定为当前bin的项的值。另外,如果多个值被指定为当前bin的项,则可以通过项中的括号中给出的条款的过程来推导ctxInc。上述条款可以暗指VVC标准中公开的条款。此后,可以根据initType的当前值将变量ctxIdxOffset指定为ctxIdx的最低值。另外,可以将语法元素的当前bin的上下文索引ctxIdx设置为等于ctxInc和ctxIdxOffset的和。也就是说,可以将上下文索引设置为ctxInc和ctxIdxOffset的和。另外,可以将bypassFlag设置为0。

同时,如果当前bin的项是表22中的“旁路”,则可以推导bin的上下文索引如下。例如,可以将当前bin的ctxTable设置为0。另外,可以将当前bin的上下文索引ctxIdx设置为0。另外,可以将bypassFlag设置为1。

同时,如果当前bin的项是表22中的“终止”,则可以推导bin的上下文索引如下。例如,可以将当前bin的ctxTable设置为0。另外,可以将当前bin的上下文索引ctxIdx设置为0。另外,可以将bypassFlag设置为0。

同时,如果当前bin的项目是表22中的“na(不适用)”,则可以推导bin的语法元素即bin的上下文索引如下。例如,对于当前bin可能不发生ctxIdx、ctxTable和/或bypassFlag。

用于为具有除“旁路”、“终止”或“na(不适用)”以外的值的bin推导ctxInc的条款的过程可以如下所述。

例如,基于条款9.5.4.2.2来推导ctxInc的过程可以如下表所示。

[表23]

另外,例如,基于条款9.5.4.2.3来推导ctxInc的过程可以如下表所示。

[表24]

另外,例如,基于条款9.5.4.2.4来推导ctxInc的过程可以如下表所示。

[表25]

另外,例如,基于条款9.5.4.2.5来推导ctxInc的过程可以如下表所示。

[表26]

另外,例如,基于条款9.5.4.2.6来推导ctxInc的过程可以如下表所示。

[表27]

另外,例如,基于条款9.5.4.2.7来推导ctxInc的过程可以如下表所示。

[表28]

另外,例如,基于条款9.5.4.2.8来推导ctxInc的过程可以如下表所示。

[表29]

同时,如上所述,由于未经受变换编码的块,即包括未被应用变换的残差系数的变换块,具有与经受典型变换编码的块的特性不同的特性,所以对于未经受变换编码的块需要有效的残差数据编码方法。同时,如上所述,可以以变换块为基础发送指示是否应用变换的变换跳过标志,并且在本公开中不限制变换块的大小。例如,如果变换跳过标志的值为1,则可以执行本公开中提出的残差信息编码/解码方法,而如果变换跳过标志的值为0,则可以执行上表1、表6或表9中描述的传统的残差信息编码/解码方法。另选地,如果变换跳过标志指示对当前块未应用变换(变换被跳过),则可以执行上表10或表21中公开的变换跳过模式下的残差信息编码/解码方法。

同时,如果对当前块未应用变换,则可以用残差样本推导变换系数。因此,如果变换被跳过,则残差样本也可以被称为系数或残差系数。

如上表1、表6或表9所述,对于残差编码/解码,可以对有效系数标志、第一变换系数级别标志、奇偶级别标志和第二变换级别标志进行编码/解码后,可以对剩余级别值的语法元素即abs_remainder或dec_abs_level进行编码/解码,此后可以对每个残差系数的符号标志进行编码/解码。在本文中,有效系数标志可以是sig_coeff_flag,并且奇偶级别标志可以是par_level_flag,第一变换系数级别标志可以是abs_level_gt1_flag,而第二变换系数级别标志可以是abs_level_gt3_flag或abs_level_gtx_flag。另外,符号标志可以是前述coeff_sign_flag。

同时,可以如上表21所示的方法中所描述的那样对符号标志进行编码/解码。在这种情况下,可以基于上下文模型来对符号标志进行编码/解码,与在其中符号标志经受旁路编译的上表1、表6或表9中不同。

在本文中,在变换跳过块(即,未被应用变换的块)的情况下,由于未应用变换,所以存在变换跳过块中的残差系数具有与邻近于其的残差系数类似的符号类似的符号。

因此,本公开的本实施方式提出一种方法,其中变换跳过的残差信号即变换跳过的块的残差系数的符号标志的上下文表(ctxTable)是基于紧接在残差系数之前编码/解码的残差系数的符号标志而确定的,并且基于所确定的上下文表来对残差系数的符号标志进行上下文编译。也就是说,本实施方式提出一种方法,其中当前块的当前子块中的残差系数的符号标志的上下文模型是基于在当前子块中的残差系数之前编译的残差系数的符号标志而确定的,并基于所确定的上下文模型来对符号标志进行编译。

与在变换块的系数组(CG)中的上表1、表6或表21中公开的符号标志编码/解码中不同,在本实施方式中可以对符号标志进行上下文编码/解码以提高压缩性能。CG也可以由子块表达。另外,上表21中公开的符号标志编码/解码使用仅一个上下文模型,这与在多个上下文模型当中通过使用基于在残差系数之前编译的残差系数的符号标志而确定的上下文模型来执行编译的本实施方式不同。

根据本实施方式,可以通过考虑与相邻残差系数的高相关性来对符号标志进行编译。由于如上所述变换跳过块中的相邻残差系数的符号标志往往具有类似值,所以通过考虑前述方面,本实施方式提出一种方法,其中在当前子块中的残差系数的符号标志被编码/解码时,基于根据系数扫描顺序紧接在前的残差系数的符号标志的值(0或1)来选择两个上下文模型(或上下文表)。同时,当在当前子块中的残差系数当中当前子块中的残差系数第一次被编译时,可以将残差系数的符号标志的上下文模型推导为预定义上下文模型(例如,上下文模型0)。能够通过前述实施方式来提高残差信息的压缩性能。同时,可以基于ctxidx或ctxinc来指示上下文模型,并且可以基于ctxinc来推导ctxidx。

另外,作为另一实施方式,本公开可以提出一种通过使用紧接在当前子块中的残差系数之前编码/解码的任何N(N>=1)个符号标志来选择M个上下文模型中的一个的方法。例如,基于在当前子块中的当前残差系数之前编码/解码的两个残差系数的符号标志,可以将当前残差的符号标志的上下文模型推导为三个上下文模型中的一个。另选地,例如,基于在当前子块中的当前残差系数之前编码/解码的两个残差系数的符号标志,可以将当前残差的符号标志的上下文模型推导为六个上下文模型中的一个。同时,当在当前子块的残差系数当中当前子块中的残差系数第一次被编译时,可以将残差系数的符号标志的上下文模型推导为预定义上下文模型(例如,上下文模型0)。

例如,在当前子块包括五个非零残差系数时,如果非零残差系数的符号标志的值为(0,0,0,1,0),则可以将非零残差系数的符号标志的上下文模型值定义为(0,0,0,0,1)。在本文中,上下文模型值可以指示上下文模型。也就是说,如果上下文模型值为0,则上下文模型值可以指示上下文模型0,而如果上下文模型值为1,则上下文模型值可以指示上下文模型1。在本实施方式中,伪代码可能如下表所示。

[表30]

同时,可以如下表所示的那样定义将本公开中提出的推导符号标志的上下文模型的实施方式。

[表31]

上表31中公开的ctxInc推导过程可以如下。

1.输入最后符号标志(紧接在要编译的符号标志之前编码/解码的符号标志)。

2.将最后符号标志作为ctxInc输出。也就是说,将最后符号标志的值作为ctxInc输出。

另选地,可以如下表所示的那样定义本公开中提出的推导符号标志的上下文模型的实施方式。

[表32]

参照上表32,可以基于lastcoeffsignflag来确定当前残差系数的语法元素coeff_sign_flag(即,符号标志)的bin的上下文模型。具体地,例如,可以基于ctxinc来确定当前残差系数的语法元素coeff_sign_flag的bin的上下文模型,并且ctxinc在lastcoeffsignflag的值为0的情况下可以被推导为0,而在lastcoeffsignflag的值为1的情况下可以被推导为1。在本文中,lastcoeffsignflag可以与当前CG(即,当前子块)中根据系数扫描顺序紧接在当前残差系数之前的残差系数的coeff_sign_flag的值相同。同时,如果当前残差系数是当前CG中的第一残差系数,则可以将lastcoeffsignflag设置为0。也就是说,可以将lastcoeffsignflag的初始值设置为0。

也就是说,根据该实施方式,可以基于在当前CG中的残差系数当中按系数扫描的顺序的当前残差系数的先前残差系数的coeff_sign_flag的值来自适应地确定当前残差系数的coeff_sign_flag的bin的上下文模型。因此,可以对当前残差系数的coeff_sign_flag的bin进行解码,并且可以推导当前残差系数的coeff_sign_flag的值。因此,可以考虑相邻残差系数的相关性,并且可以增加编译增益。通过使用当前残差系数的coeff_sign_flag的值,可以如上所述推导当前残差样本的符号。

同时,在如上所述推导当前残差系数的coeff_sign_flag的ctxinc之后,可以如上所述执行基于coeff_sign_flag来推导上下文模型的过程。

具体地,可以将符号标志的ctxIdxOffset推导为符号标志的ctxIdx的可能值当中的最小值。例如,在以上描述中,由于可以将ctxIdx(指示上下文模型的上下文模型索引)推导为0(即,上下文模型0)或1(即,上下文模型1),所以可以将ctxIdxOffset推导为0。此后,可以将符号标志的ctxIdx推导为ctxIdxOffset和ctxinc的和。由于ctxIdxOffset被推导为0,所以符号标志的ctxIdx可以与ctxinc相同。

同时,可以将前述实施方式应用于所有变换跳过块。另选地,由于仅针对非零残差系数对符号标志进行编码/解码,所以可能更优选的是只有当要经受符号标志编码/解码的非零残差系数的数目大于或等于特定值时才应用前述实施方式。因此,当使用表1至表6中描述的残差编译方法时,可以推导先前编译的非零残差系数的数目,并且可以根据非零残差系数的数目来确定符号标志将经受上下文编译还是旁路编译。也就是说,例如,如果当前子块的非零残差系数的数目大于或等于特定值,则可以基于上下文模型来对符号标志进行编译,而如果当前子块的非零残差系数的数目小于特定值,则符号标志可以经受旁路编译。例如,特定值可以为5。具体地,例如,如果当前子块的非零残差系数的数目大于或等于5,则可以基于上下文模型来对符号标志进行编译,而如果当前子块的非零残差系数的数目可能小于5,则符号标志可以经受旁路编译。同时,如果当前子块是4x4大小的块,则非零残差系数的数目可以是0至16的范围内的值之一,而如果当前子块是2x2大小的块,则非零残差系数的数目可以是0至4的范围内的值之一。本公开不限制对符号标志进行编译的顺序,并且可以适用于在确定当前子块的非零残差系数的存在/不存在之后的任何步骤。

另选地,可以基于非零残差系数的数目和取决于当前块的大小而推导的特定值来提出确定是否对符号标志执行上下文编译/旁路编译的实施方式。在本文中,用作阈值的非零残差系数的数目,即特定值,可以是0至当前块(包括当前子块的块)的样本数的范围内的值之一,或者可以以子块为基础被控制并且因此在4x4子块的情况下可以是0至16的范围内的值之一,而在2x2子块的情况下为0至4的范围内的值之一。也就是说,可以基于当前块或当前块的大小来推导特定值,并且如果当前子块的非零残差系数的数目大于或等于特定值,则可以基于上下文模式来对符号标志进行编译,而如果当前子块的非零残差系数的数目小于特定值,则符号标志可以经受旁路编译。

例如,在当前块的大小为8x8大小时,可以将特定值推导为5,而如果当前子块的非零残差系数的数目大于或等于5,则可以基于上下文模型来对符号标志进行编译,以及如果当前子块的非零残差系数的数目小于5,则符号标志可以经受旁路编译。另外,在当前块的大小为4x4大小时,可以将特定值推导为4,而如果当前子块的非零残差系数的数目大于或等于4,则可以基于上下文模型来对符号标志进行编译,以及如果当前子块的非零残差系数的数目小于4,符号标志可以经受旁路编译。

另选地,可以基于当前块的大小、取决于当前子块的位置而推导的特定值以及非零残差系数的数目来提出确定符号标志是否将经受上下文编译/旁路编译的实施方式。在本文中,用作阈值的非零残差系数的数目即特定值可以是0至当前块(包括当前子块的块)的样本数的范围内的值之一,或者可以以子块为基础被控制并且因此在4x4子块的情况下可以为0至16的范围内的值之一,而在2x2子块的情况下为0至4的范围内的值之一。也就是说,可以基于当前块或当前块的大小及当前子块的位置来推导特定值,并且如果当前子块的非零残差系数的数目大于或者等于特定值,则可以基于上下文模式来对符号标志进行编译,而如果当前子块的非零残差系数的数目小于特定值,符号标志可以经受旁路编译。

例如,在当前块的大小为8x8大小并且当前子块是按通过对角线扫描顺序确定的顺序当中的第一顺序编码的CG#3时,可以将特定值推导为5,而如果当前子块的非零残差系数的数目大于或等于5,则可以基于上下文模型来对符号标志进行编译,以及如果当前子块的非零残差系数的数目小于5,则符号标志可以经受旁路编译。在本文中,CG#3可以是右下子块。另外,在当前块的大小为8x8大小并且当前子块是通过对角线扫描顺序确定的顺序当中的CG#0时,可以基于上下文模型来对符号标志进行编译,而不管当前子块的非零残差系数的数目如何。也就是说,可以将特定值推导为0。在本文中,CG#0可以是左上子块。

另选地,可以基于当前块的大小、取决于当前子块的位置而推导的特定值以及当前块的预测模式和非零残差系数的数目来提出确定符号标志是否将经受上下文编译/旁路编译的实施方式。在本文中,用作阈值的非零残差系数的数目,即特定值,可以是0至当前块(包括当前子块的块)的样本数的范围内的值之一,或者可以以子块为基础被控制并且因此在4x4子块的情况下可以为0至16的范围内的值之一,而在2x2子块的情况下为0至4的范围内的值之一。也就是说,可以基于当前块或当前块的大小、当前子块的位置和当前块的预测模式来推导特定值,并且如果当前子块的非零残差系数的数目大于或等于特定值,则可以基于上下文模式来对符号标志进行编译,而如果当前子块的非零残差系数的数目小于特定值,则符号标志可以经受旁路编译。

例如,在当前块的大小为8x8大小并且当前子块是按通过对角线扫描顺序确定的顺序当中的第一顺序编码的CG#3时并且如果当前块的预测模式为帧内预测模式,则可以将特定值推导为5,而如果当前子块的非零残差系数的数目大于或等于5,则可以基于上下文模型来对符号标志进行编译,以及如果当前子块的非零残差系数个数小于5,则符号标志可以经受旁路编译。在本文中,CG#3可以是右下子块。另外,如果当前子块是通过对角线扫描顺序确定的顺序当中的CG#0,则可以基于上下文模型来对符号标志进行编译,而不管当前子块的非零残差系数的数目如何。也就是说,可以将特定值推导为0。在本文中,CG#0可以是左上子块。

另选地,可以基于是否对当前块应用变换来确定符号标志是将基于上下文模型被编译还是将被旁路编译。

图6示出了通过基于是否对当前块应用变换来确定对符号标志进行编译的方法来执行编码的示例。

参照图6,编码设备可以确定是否对当前块应用变换(S600)。

如果对当前块应用变换,则编码设备可以基于两个上下文模型来对当前子块的当前残差系数的符号标志进行编码(S610)。如上所述,编码设备可以基于在当前子块中的当前残差系数之前编码的残差系数的符号标志来将上下文模型中的一个确定为当前残差系数的符号标志的上下文模型。例如,当在当前残差系数之前编码的残差系数的符号标志值为0时,可以选择上下文模型0作为符号标志的上下文模型,而如果在当前残差系数之前编码的残差系数的符号标志的值为1,则可以选择上下文模型1作为符号标志的上下文模型。编码设备可基于所确定的上下文模型来对当前残差系数的符号标志进行编码。

如果对当前块未应用变换,则编码设备可以对当前子块的当前残差系数的符号标志进行旁路编码(S620)。

图7示出了通过基于是否对当前块应用变换来确定对符号标志进行编译的方法来执行解码的示例。

参照图7,解码设备可以确定是否对当前块应用变换(S700)。解码设备可以基于当前块的变换跳过标志来确定是否对当前块应用变换。

如果对当前块应用变换,则解码设备可以基于两个上下文模型来对当前子块的当前残差系数的符号标志进行解码(S710)。如上所述,解码设备可以基于在当前子块中的当前残差系数之前解码的残差系数的符号标志来将上下文模型中的一个确定为当前残差系数的符号标志的上下文模型。例如,当在当前残差系数之前解码的残差系数的符号标志的值为0时,可以选择上下文模型0作为符号标志的上下文模型,而如果在当前残差系数之前解码的残差系数的符号标志的值为1,则可以选择上下文模型1作为符号标志的上下文模型。解码设备可以基于所确定的上下文模型来对当前残差系数的符号标志进行解码。

如果对当前块未应用变换,则解码设备可以对当前子块的当前残差系数的符号标志进行旁路解码(S720)。

图8简要地例示了由根据本公开的编码设备执行的图像编码方法。图8中公开的方法可以由图2中公开的编码设备执行。具体地,例如,图8的S800可以由编码设备的残差处理器执行,并且S810至S830可以由编码设备的熵编码器执行。另外,尽管未示出,但是推导预测样本的过程可以由编码设备的预测器执行,基于当前块的原始样本和预测样本来推导当前块的残差样本的过程可以由编码设备的减法器执行,并且基于当前块的残差样本和预测样本来生成当前块的重构样本和重构图片的过程可以由编码设备的熵编码器执行。

编码设备推导当前块的当前子块中的当前残差系数(S800)。编码设备可以确定在当前块中执行帧间预测还是帧内预测,并且可以基于RD成本来确定特定帧间预测模式或特定帧内预测模式。编码设备可以基于所确定的模式来推导当前块的预测样本,并且可以通过将当前块的预测样本和原始样本相减来推导残差样本。

此后,编码设备可以确定是否对当前块应用变换。也就是说,编码设备可以确定是否对当前块的残差样本应用变换。编码设备可以通过考虑编译效率来确定是否将变换应用于当前块。例如,编码设备可以确定对当前块未应用变换。

如果对当前块未应用变换,也就是说,如果对残差样本未应用变换,则编码设备可以将所推导的残差样本推导为当前残差系数。另外,如果对当前块应用变换,也就是说,如果对残差样本应用变换,则编码设备可以通过对所推导的残差样本执行变换来推导当前残差系数。可以将当前残差系数包括在当前块的当前子块中。当前子块可以被称为当前系数组(CG)。另外,当前块的当前子块的大小可以为4x4大小或2x2大小。也就是说,当前块的当前子块可以包括最多16个非零残差系数或最多4个非零残差系数。

同时,编码设备可以生成指示是否对当前块的残差系数应用变换的变换跳过标志并且对其进行编码。残差信息可以包括当前块的变换跳过标志。变换跳过标志可以指示是否对当前块的残差系数应用变换。也就是说,变换跳过标志可以指示是否对残差系数应用变换。指示变换跳过标志的语法元素可以是前述transform_skip_flag。

编码设备推导当前残差系数的符号标志的上下文模型(S810)。

例如,编码设备可以在多个上下文模型当中推导用于当前残差系数的符号标志的上下文模型。

例如,可以基于在当前子块中的当前残差系数之前编码的残差系数的符号标志来推导符号标志的上下文模型。也就是说,可以基于在当前子块中的残差系数当中按系数扫描顺序在当前残差系数之前编码(或扫描)的残差系数的符号标志来推导符号标志的上下文模型。例如,当在当前残差系数之前编码的残差系数的符号标志的值为0时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为0,而当在当前残差系数之前编码的残差系数的符号标志的值为1时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为1。也就是说,当在当前残差系数之前编码的残差系数的符号标志的值为0时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型0,而当在当前残差系数之前编码的残差系数的符号标志的值为1时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型1。同时,在当前残差系数为在当前子块中第一个被编码的残差系数时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为0。也就是说,在当前残差系数是在当前子块中第一个被编码的残差系数时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型0。

另选地,在另一示例中,可以基于在当前子块中的当前残差系数之前编码的多个残差系数的符号标志来推导符号标志的上下文模型。可以基于在当前子块中的当前残差系数之前编码的多个残差系数的符号标志来将符号标志的上下文模型推导为多个上下文模型中的一个。例如,可以基于在当前子块中的当前残差系数之前编码的两个残差系数的符号标志来将符号标志的上下文模型推导为三个上下文模型中的一个。另选地,例如,可以基于在当前子块中的当前残差系数之前编码的两个残差系数的符号标志来将符号标志的上下文模型推导为六个上下文模型中的一个。

同时,编码设备可以确定是否基于上下文模型来对符号标志进行编码,并且可以在确定了基于上下文模型来对符号标志进行编码时推导符号标志的上下文模型。

例如,基于当前块的变换跳过标志,编码设备可以确定是否基于上下文模型来对符号标志进行编码。也就是说,基于是否对当前块应用变换,编码设备可以确定是否基于上下文模型来对符号标志进行编码。变换跳过标志可以指示是否对当前块应用变换。也就是说,变换跳过标志可以指示是否对当前块的残差系数应用变换。当前块的残差信息可以包括变换跳过标志。如果变换跳过标志的值为0,则可以不基于上下文模型对符号标志进行编码(也就是说,可以对符号标志进行旁路解码),而如果变换跳过标志的值为1,则可以基于上下文模型来对符号标志进行编码。也就是说,如果变换跳过标志的值为1,则可以确定基于上下文模型来符号标志对进行编码,并且编码设备可以推导符号标志的上下文模型,而且可以基于上下文模型来对符号标志进行编码。

另选地,例如,编码设备可以通过比较特定值和当前子块中的非零残差系数的数目来确定是否基于上下文模型来对符号标志进行编码。当非零残差系数的数目小于特定值时,可以不基于上下文模型对符号标志进行编码(也就是说,可以对符号标志进行旁路解码),而当非零残差系数的数目大于或等于特定值时,可以基于上下文模型来对符号标志进行编码。换句话说,当非零残差系数的数目大于或等于特定值时,编码设备可以确定基于上下文模型来对符号标志进行编码,并且编码设备可以推导符号标志的上下文模型,而且可以基于上下文模型来对符号标志进行编码。特定值也可以由阈值表示。

在本文中,例如,特定值可以为0至当前块的样本数的范围内的值之一。例如,特定值可以为0至64的范围内的值之一。另选地,例如,特定值可以为0至当前子块数的范围内的值之一。也就是说,例如,如果当前子块的大小为4x4大小,则特定值可以为0至16的范围内的值之一,而如果当前子块的大小为2x2大小,则特定值可以为0至4的范围内的值之一。例如,特定值可以为5。

另选地,例如,可以基于当前块的大小来推导特定值。例如,在当前块的大小为8x8大小时,可以将特定值推导为5,并且在当前块的大小为4x4大小时,可以将特定值推导为4。

另选地,例如,可以基于当前块的大小和当前子块在当前块中的位置来推导特定值。

例如,在当前块的大小为8x8大小并且当前子块是当前块的右下子块时,可以将特定值推导为5。在本文中,右下子块可以是通过对角线扫描顺序确定的顺序中的子块#3(即,CG#3)。

另外,例如,在当前块的大小为8x8大小并且当前子块是当前块的左上块时,可以将特定值推导为4。在本文中,左上子块可以是通过对角线扫描顺序确定的顺序中的子块#0(或CG#0)。

另选地,例如,可以基于当前块的大小、子块在当前块中的位置和当前块的预测模式来推导特定值。

例如,在当前块的大小为8x8大小、当前子块为当前块的右下子块并且当前块的预测模式为帧内预测模式时,可以将特定值推导为5。也就是说,在当前块的大小为8x8大小、当前子块为当前块的右下子块并且应用于当前块的预测模式为帧内预测模式时,可以将特定值推导为5。

另外,例如,在当前块的大小为8x8大小、当前子块为当前块的左上子块并且当前块的预测模式为帧内预测模式时,可以将特定值推导为0。也就是说,在当前块的大小为8x8大小、当前子块为当前块的左上子块并且应用于当前块的预测模式为帧内预测模式时,可以将特定值推导为0。因此,不管非零残差系数的数目如何,都可以确定基于上下文模型来对符号标志进行编码。

编码设备基于上下文模型来对符号标志进行编码(S820)。编码设备可以基于上下文模型来对符号标志进行编码。也就是说,基于上下文模型,编码设备可以以基于上下文的方式对符号标志进行编码。符号标志可以指示当前残差系数的符号。当符号标志的值为0时,符号标志可以指示当前残差系数为正值,而如果符号标志的值为1,则符号标志可以指示当前残差系数为负值。也就是说,如果符号标志的值为0,则当前残差系数可以为正值,而如果符号标志的值为1,则当前残差系数可以为负值。

另外,编码设备可以对当前块的残差信息进行编码。

残差信息可以包括当前块的当前子块中的残差系数的语法元素。残差信息可以包括当前块的当前子块中的当前残差系数的语法元素。在本文中,语法元素可以包括基于上下文编译的语法元素和被旁路编译的语法元素(即,基于均匀概率分布编译的语法元素)。

例如,残差信息可以包括诸如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,par_level_flag、abs_level_gt1_flag、abs_level_gtx_flag、abs_remainder、coeff_sign_flag、dec_abs_level和/或mts_idx的语法元素。

具体地,例如,残差信息可以包括当前块的变换跳过标志。变换跳过标志可以指示是否应用当前块的变换。也就是说,变换跳过标志可以指示是否对当前块的残差系数应用变换。指示变换跳过标志的语法元素可以是前述transform_skip_flag。

另外,例如,残差信息可以包括指示最后非零残差系数在当前块的残差系数阵列中的位置的位置信息。也就是说,残差信息可以包括指示最后非零残差系数在当前块的扫描顺序中的位置的位置信息。位置信息可以包括指示最后非零残差系数的列位置的前缀的信息、指示最后非零残差系数的行位置的前缀的信息、指示最后非零残差系数的列位置的后缀的信息、以及指示最后非零残差系数的行位置的后缀的信息。位置信息的语法元素可以是last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix和last_sig_coeff_y_suffix。同时,非零残差系数也可以被称为有效系数。

另外,例如,残差信息可以包括基于当前块的当前子块中的当前残差系数的上下文编译的语法元素。这些语法元素可以包括指示当前残差系数是否为非零残差系数的有效系数标志、当前残差系数的系数级别的奇偶性的奇偶级别标志、系数级别是否大于第一阈值的第一系数级别标志、以及当前残差系数的系数级别是否大于第二阈值的第二系数级别标志。在本文中,有效系数标志可以是sig_coeff_flag,奇偶级别标志可以是par_level_flag,第一系数级别标志可以是abs_level_gt1_flag,而第二系数级别标志可以是abs_level_gt3_flag或abs_level_gtx_flag。

另外,例如,基于当前残差系数的上下文编译的语法元素可以包括指示当前残差系数的符号的符号标志。例如,如果对当前块未应用变换(也就是说,如果变换跳过标志的值为1),则基于上下文编译的语法元素可以包括符号标志。也就是说,如果对当前块未应用变换(也就是说,如果变换跳过标志的值为1),则可以基于上下文模型来对符号标志进行编码。

另外,例如,残差信息可以包括基于针对当前块的当前子块中的当前残差系数的旁路编译的语法元素。经旁路编译的语法元素可以包括与当前残差系数的值的系数值有关的信息。与系数值有关的信息可以是abs_remainder和/或dec_abs_level。另外,例如,如果对当前块应用变换(也就是说,如果变换跳过标志的值为0),则经旁路编译的语法元素可以包括符号标志。也就是说,如果对当前块应用变换(也就是说,如果变换跳过标志的值为0),则可以对符号标志进行旁路编码(也就是说,可以基于均匀概率分布来对符号标志进行编码)。

编码设备生成包括符号标志的比特流(S830)。例如,编码设备可以将图像信息作为比特流输出,图像信息包括残差信息,残差信息包括符号标志。比特流可以包括残差信息。

同时,比特流可以包括当前块的预测信息。预测信息可以包括关于在当前块中执行的帧间预测模式或帧内预测模式的信息。编码设备可以生成当前块的预测信息并且对其进行编码。

同时,可以通过网络或(数字)存储介质将比特流发送到解码设备。在本文中,网络可以包括广播网络和/或通信网络,并且数字存储介质可以包括各种存储介质,诸如通用串行总线(USB)、SD、紧致盘(CD)、数字通用盘(DVD)、蓝光盘、硬盘驱动器(HDD)、固态驱动器(SSD)等。

图9简要地例示了用于执行根据本公开的图像编码方法的编码设备。图8中公开的方法可以由图9中公开的编码设备执行。具体地,例如,图9编码设备的残差处理器可以执行图8的S800,并且图9的编码设备的熵编码器可以执行图8的S810至S830。另外,虽然未示出,但是推导预测样本的过程可以由编码设备的预测器执行,基于当前块的预测样本和残差样本来推导当前块的重构样本的过程可以由编码设备的加法器执行,并且对当前块的预测信息进行编码的过程可以由编码设备的熵编码器执行。

图10简要地图示了由根据本公开的解码设备执行的图像解码方法。图10中公开的方法可以由图3中公开的解码设备执行。具体地,例如,图10的S1000至S1030可以由解码设备的熵解码器执行,S1040可以由解码设备的残差处理器执行,并且S1050可以由解码设备的加法器执行。另外,虽然未示出,但是推导预测样本的过程可以由解码设备的预测器执行。

解码设备接收当前块的残差信息(S1000)。解码设备可以通过比特流来接收包括当前块的残差信息的图像信息。在本文中,当前块可以是编译块(CB)或变换块(TB)。残差信息可以包括当前块的当前子块中的残差系数的语法元素。残差信息可以包括当前块的当前子块中的当前残差系数的语法元素。在本文中,语法元素可以包括基于上下文编译的语法元素和被旁路编译的语法元素(即,基于均匀概率分布编译的语法元素)。

例如,残差信息可以包括诸如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,par_level_flag、abs_level_gt1_flag、abs_level_gtx_flag、abs_remainder、coeff_sign_flag、dec_abs_level和/或mts_idx的语法元素。

具体地,例如,残差信息可以包括当前块的变换跳过标志。变换跳过标志可以指示是否应用当前块的变换。也就是说,变换跳过标志可以指示是否对当前块的残差系数应用变换。指示变换跳过标志的语法元素可以是前述transform_skip_flag。

另外,例如,残差信息可以包括指示最后非零残差系数在当前块的残差系数阵列中的位置的位置信息。也就是说,残差信息可以包括指示最后非零残差系数在当前块的扫描顺序中的位置的位置信息。位置信息可以包括指示最后非零残差系数的列位置的前缀的信息、指示最后非零残差系数的行位置的前缀的信息、指示最后非零残差系数的列位置的后缀的信息、以及指示最后非零残差系数的行位置的后缀的信息。位置信息的语法元素可以是last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix和last_sig_coeff_y_suffix。同时,非零残差系数也可以被称为有效系数。

另外,例如,残差信息可以包括基于当前块的当前子块中的当前残差系数的上下文编译的语法元素。这些语法元素可以包括指示当前残差系数是否为非零残差系数的有效系数标志、当前残差系数的系数级别的奇偶性的奇偶级别标志、系数级别是否大于第一阈值的第一系数级别标志、以及当前残差系数的系数级别是否大于第二阈值的第二系数级别标志。在本文中,有效系数标志可以是sig_coeff_flag,奇偶级别标志可以是par_level_flag,第一系数级别标志可以是abs_level_gt1_flag,而第二系数级别标志可以是abs_level_gt3_flag或abs_level_gtx_flag。

另外,例如,基于当前残差系数的上下文编译的语法元素可以包括指示当前残差系数的符号的符号标志。例如,如果对当前块未应用变换(也就是说,如果变换跳过标志的值为1),则基于上下文编译的语法元素可以包括符号标志。也就是说,如果对当前块未应用变换(也就是说,如果变换跳过标志的值为1),则可以基于上下文模型来对符号标志进行解码。

另外,例如,残差信息可以包括基于针对当前块的当前子块中的当前残差系数的旁路编译的语法元素。经旁路编译的语法元素可以包括与当前残差系数的值的系数值有关的信息。与系数值有关的信息可以是abs_remainder和/或dec_abs_level。另外,例如,如果对当前块应用变换(也就是说,如果变换跳过标志的值为0),则经旁路编译的语法元素可以包括符号标志。也就是说,如果对当前块应用变换(即,如果变换跳过标志的值为0),则可以对符号标志进行旁路解码(也就是说,可以基于均匀概率分布来对符号标志进行解码))。

同时,比特流可以包括当前块的预测信息。预测信息可以包括关于在当前块中执行的帧间预测模式或帧内预测模式的信息。解码设备可以基于通过比特流接收到的预测信息来对当前块执行帧间预测或帧内预测,并且可以推导当前块的预测样本。

解码设备推导当前块的当前子块中的当前残差系数的符号标志的上下文模型(S1010)。

例如,解码设备可以在多个上下文模型当中推导用于当前残差系数的符号标志的上下文模型。

例如,可以基于在当前子块中的当前残差系数之前解码的残差系数的符号标志来推导符号标志的上下文模型。也就是说,可以基于在当前子块中的残差系数当中按系数扫描顺序在当前残差系数之前解码(或扫描)的残差系数的符号标志来推导符号标志的上下文模型。例如,当在当前残差系数之前解码的残差系数的符号标志的值为0时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为0,而当在当前残差系数之前解码的残差系数的符号标志的值为1时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为1。也就是说,当在当前残差系数之前解码的残差系数的符号标志的值为0时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型0,而当在当前残差系数之前解码的残差系数的符号标志的值为1时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型1。同时,在当前残差系数为在当前子块中第一个被解码的残差系数时,可以将指示当前残差系数的符号标志的上下文模型的上下文索引的值推导为0。也就是说,在当前残差系数为在当前子块中第一个被解码的残差系数时,可以将当前残差系数的符号标志的上下文模型推导为上下文模型0。

另选地,在另一示例中,可以基于在当前子块中的当前残差系数之前解码的多个残差系数的符号标志来推导符号标志的上下文模型。可以基于在当前子块中的当前残差系数之前解码的多个残差系数的符号标志来将符号标志的上下文模型推导为多个上下文模型中的一个。例如,可以基于在当前子块中的当前残差系数之前解码的两个残差系数的符号标志来将符号标志的上下文模型推导为三个上下文模型中的一个。另选地,例如,可以基于在当前子块中的当前残差系数之前解码的两个残差系数的符号标志来将符号标志的上下文模型推导为六个上下文模型中的一个。

同时,解码设备可以确定是否基于上下文模型来对符号标志进行解码,并且可以在确定了基于上下文模型来对符号标志进行解码时推导符号标志的上下文模型。

例如,基于当前块的变换跳过标记,解码设备可以确定是否基于上下文模型来对符号标志进行解码。也就是说,基于是否对当前块应用变换,解码设备可以确定是否基于上下文模型来对符号标志进行解码。变换跳过标志可以指示是否对当前块应用变换。也就是说,变换跳过标志可以指示是否对当前块的残差系数应用变换。当前块的残差信息可以包括变换跳过标志。如果变换跳过标志的值为0,则可以不基于上下文模型来对符号标志进行解码(也就是说,可以对符号标志进行旁路解码),如果变换跳过标志的值为1,则可以基于上下文模型来对符号标志进行解码。也就是说,如果变换跳过标志的值为1,则可以确定基于上下文模式来对符号标志进行解码,并且解码设备可以推导符号标志的上下文模型,并且可以基于上下文模型来对符号标志进行解码。

另选地,例如,解码设备可以通过比较特定值和当前子块中的非零残差系数的数目来确定是否基于上下文模型对符号标志进行解码。当非零残差系数个数小于特定值时,可以不基于上下文模型对符号标志进行解码(也就是说,可以对符号标志进行旁路解码),而当非零残差系数的数目大于或等于特定值时,可以基于上下文模型来对符号标志进行解码。换句话说,当非零残差系数的数目大于或等于特定值时,解码设备可以确定基于上下文模型来对符号标志进行解码,并且解码设备可以推导符号标志的上下文模型,而且可以基于上下文模型来对符号标志进行解码。特定值也可以由阈值表示。

在本文中,例如,特定值可以为0至当前块的样本数的范围内的值之一。例如,特定值可以为0至64的范围内的值之一。另选地,例如,特定值可以为0至当前子块数的范围内的值之一。也就是说,例如,如果当前子块的大小为4x4大小,则特定值可以为0至16的范围内的值之一,而如果当前子块的大小为2x2大小,则特定值可以为0至4的范围内的值之一。例如,特定值可以为5。

另选地,例如,可以基于当前块的大小来推导特定值。例如,在当前块的大小为8x8大小时,可以将特定值推导为5,并且在当前块的大小为4x4大小时,可以将特定值推导为4。

另选地,例如,可以基于当前块的大小和当前子块在当前块中的位置来推导特定值。

例如,在当前块的大小为8x8大小并且当前子块是当前块的右下子块时,可以将特定值推导为5。在本文中,右下子块可以是通过对角线扫描顺序确定的顺序中的子块#3(即,CG#3)。

另外,例如,在当前块的大小为8x8大小并且当前子块是当前块的左上块时,可以将特定值推导为4。在本文中,左上子块可以是通过对角线扫描顺序确定的顺序的子块#0(或CG#0)。

另选地,例如,可以基于当前块的大小、子块在当前块中的位置和当前块的预测模式来推导特定值。

例如,在当前块的大小为8x8大小、当前子块为当前块的右下子块并且当前块的预测模式为帧内预测模式时,可以将特定值推导为5。也就是说,在当前块的大小为8x8大小、当前子块为当前块的右下子块并且应用于当前块的预测模式为帧内预测模式时,可以将特定值推导为5。

另外,例如,在当前块的大小为8x8大小、当前子块为当前块的左上子块并且当前块的预测模式为帧内预测模式时,可以将特定值推导为0。也就是说,在当前块的大小为8x8大小、当前子块为当前块的左上子块并且应用于当前块的预测模式为帧内预测模式时,可以将特定值推导为0。因此,不管非零残差系数的数目如何,都可以确定基于上下文模型来对符号标志进行解码。

解码设备基于上下文模型来对符号标志进行解码(S1020)。解码设备可以基于上下文模型来对符号标志进行解码。符号标志可以指示当前残差系数的符号。当符号标志的值为0时,符号标志可以指示当前残差系数为正值,而如果符号标志的值为1,则符号标志可以指示当前残差系数为负值。也就是说,如果符号标志的值为0,则当前残差系数可以为正值,而如果符号标志的值为1,则当前残差系数可以为负值。

解码设备基于符号标志来推导当前残差系数(S1030)。解码设备可以基于残差信息(例如,关于当前残差系数的大小相关信息)来推导当前残差系数的大小(即,级别值),并且可以通过使用当前残差系数的大小和基于符号标志推导的当前残差系数的符号来推导当前子块中的当前残差系数。符号标志,解码设备可以基于残差信息(例如,当前残差系数的语法元素)和当前残差系数的符号标志来推导当前子块中的当前残差系数。

解码设备基于当前残差系数来推导残差样本(S1040)。

解码设备可以基于当前残差系数来推导当前块的残差样本。也就是说,解码设备可以基于当前残差系数来推导当前块的当前子块中的残差样本。例如,如果基于变换跳过标志推导了对当前块未应用变换,也就是说,如果变换跳过标志的值为1,则解码设备可以将当前残差系数推导为当前块的残差样本。另选地,例如,如果基于变换跳过标志推导了对当前块未应用变换,也就是说,如果变换跳过标志的值为1,则解码设备可以通过对当前残差系数进行解量化来推导当前块的残差样本。另选地,如果基于变换跳过标志推导了对当前块应用变换,也就是说,如果变换跳过标志的值为0,则解码设备可以通过逆变换当前残差系数来推导当前块的残差样本。另选地,例如,如果基于变换跳过标志推导了对当前块应用变换,也就是说,如果变换跳过标志的值为0,则解码设备可以通过对当前残差系数进行解量化并且通过逆变换解量化系数来推导残差样本。

解码设备基于残差样本来生成重构图片(S1050)。

例如,解码设备可以通过基于通过比特流接收到的预测信息对当前块执行帧间预测模式或帧内预测模式来推导预测样本,并且可以通过将预测样本和残差样本相加来生成重构图片。另外,例如,预测信息可以包括指示当前块的帧内预测模式的信息。解码设备可以基于指示帧内预测模式的信息来推导当前块的帧内预测模式,并且可以基于当前块的帧内预测模式和参考样本来推导当前块的预测样本。参考样本可以包括当前块的上参考样本和左参考样本。例如,如果当前块的大小为NxN并且当前块的左上样本位置的x分量和y分量为0,则左参考样本可以为p[-1][0]至p[-1][2N-1],而上参考样本可以为p[0][-1]至p[2N-1][-1]。

此后,可选地,可以对如上所述的重构图片应用诸如去块滤波、SAO和/或ALF过程的环路滤波过程以便提高主观/客观图片质量。

图11简要地例示了用于执行根据本公开的图像解码方法的解码设备。图10中公开的方法可以由图11中公开的解码设备执行。具体地,例如,图11的解码设备的熵解码器可以执行图10的S1000至S1030,图11的解码设备的残差处理器可以执行图10的S1040,并且图11的解码设备的加法器可以执行图10的S1050。另外,尽管未示出,但是推导预测样本的过程可以由图11的解码设备的预测器执行。

根据前述本公开,能够提高残差编译的效率。

另外,根据本公开,能够基于上下文模型来对指示残差系数的符号的符号标志进行编译,从而节省指配给残差系数的符号标志的比特量并且提高整体残差编译效率。

另外,根据本公开,基于在残差系数之前编译的残差系数的符号标志来推导指示残差系数的符号的符号标志的上下文模型,并且因此通过考虑相邻残差系数之间的相关性来对符号标志进行编译,从而节省指配给符号标志的比特量并且提高整体残差编译效率。

在以上实施方式中,基于具有一系列步骤或方框的流程图描述了方法。本公开不限于以上步骤或方框的顺序。一些步骤或方框可以以与上述的其它步骤或方框不同的顺序执行或同时执行。此外,本领域技术人员将理解,流程图中所示的步骤不是排它的,并且可以还包括其它步骤,或者可以在不影响本公开的范围的情况下删除流程图中的一个或更多个步骤。

在本说明书中所描述的实施方式可以通过被实现在处理器、微处理器、控制器或芯片上来执行。例如,每个图中所示的功能单元可以通过被实现在计算机、处理器、微处理器、控制器或芯片上来执行。在这种情况下,用于实现的信息(例如,关于指令的信息)或算法可以存储在数字存储介质中。

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

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

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

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

应用本文档的实施方式的内容流传输系统可以主要包括编码服务器、流服务器、网络服务器、媒体储存器、用户装置和多媒体输入装置。

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

可以通过应用了本文档的实施方式的编码方法或比特流生成方法来生成比特流,并且流服务器可以在发送或接收比特流的过程中临时存储比特流。

流服务器基于用户请求通过网络服务器向用户装置发送多媒体数据,并且网络服务器用作向用户通知服务的媒介。当用户从网络服务器请求所需的服务时,网络服务器向流服务器递送该请求,并且流服务器向用户发送多媒体数据。在这种情况下,内容流传输系统可以包括单独的控制服务器。在这种情况下,控制服务器用于控制内容流传输系统内的装置之间的命令/响应。

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

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

78页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:编码和解码图像

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类