图像解码设备、图像编码设备和比特流发送设备
文献发布时间:2024-04-18 19:58:30
本申请是原案申请号为201980006040.8的发明专利申请(国际申请号:PCT/KR2019/011195,申请日:2019年8月30日,发明名称:残差编码方法及其装置)的分案申请。
技术领域
本公开涉及图像编码技术,尤其涉及一种图像编码系统中的残差编码方法及其装置。
背景技术
近来,在各个领域中对诸如4K或8K超高清(UHD)图像/视频之类的高分辨率、高质量图像/视频的需求正在增长。随着图像/视频分辨率或质量变得更高,比传统图像/视频数据传输相对更多量的信息或比特。因此,如果图像/视频数据经由诸如现有的有线/无线宽带线路之类的介质传输或存储在传统存储介质中,则传输和存储的成本容易增加。
此外,对于虚拟现实(VR)和人工现实(AR)内容以及诸如全息图之类的沉浸式媒体的兴趣和需求正在增长;并且展现出与实际图像/视频不同的图像/视频特性的图像/视频(诸如游戏图像/视频)的广播也在增长。
因此,需要高效的图像/视频压缩技术来有效地压缩和传输、存储或播放如上所述的表现出各种特性的高分辨率、高质量的图像/视频。
发明内容
技术问题
本公开的一个目的是提供一种用于增强图像编码效率的方法及装置。
本公开的另一目的是提供一种用于增强残差编码的效率的方法及装置。
本公开的又一目的是提供一种用于通过基于莱斯参数对残差信息执行二值化处理来增强残差编码效率的方法及装置。
本公开的再一目的是提供一种通过将莱斯参数的最大值设置为3来执行残差编码的方法及装置。
本公开的还一目的是提供一种用于执行初始化处理以推导用于当前块中包括的子块的至少一个莱斯参数的方法及装置。
技术方案
本公开的一个实施方式提供了一种由解码设备执行的用于对图像进行解码的方法。该方法包括:接收包括残差信息的比特流;基于比特流中包括的残差信息来推导当前块的量化变换系数;基于反量化处理从量化变换系数推导变换系数;通过对推导出的变换系数应用逆变换来推导当前块的残差样本;以及基于当前块的残差样本来生成重构图片,并且残差信息包括变换系数级别信息,量化变换系数的推导包括:基于莱斯参数执行对变换系数级别信息的二值化处理,基于二值化处理的结果推导变换系数级别信息的值,以及基于变换系数级别信息的值推导量化变换系数,并且莱斯参数的最大值为3。
本公开的另一个实施方式提供了一种用于执行图像解码的解码设备。该解码设备包括:熵解码器,其接收包括残差信息的比特流并且基于比特流中包括的残差信息来推导当前块的量化变换系数;反量化器,其基于反量化处理从量化变换系数推导变换系数;逆变换器,其通过对推导出的变换系数应用逆变换来推导当前块的残差样本;以及加法器,其基于当前块的残差样本生成重构图片,并且残差信息包括变换系数级别信息,熵解码器基于莱斯参数执行对变换系数级别信息的二值化处理,基于二值化处理的结果推导变换系数级别信息的值,并且基于变换系数级别信息的值来推导量化变换系数,并且莱斯参数的最大值为3。
本公开的又一实施方式提供了一种由编码设备执行的用于对图像进行编码的方法。该方法包括:推导当前块的残差样本;通过对当前块的残差样本进行变换来推导变换系数;基于量化处理从变换系数推导量化变换系数;以及对包括关于量化变换系数的信息的残差信息进行编码,并且残差信息包括变换系数级别信息,残差信息的编码包括:通过基于莱斯参数执行对变换系数级别信息的二值化处理来推导变换系数级别信息的二值化值;以及对变换系数级别信息的二值化值进行编码,并且莱斯参数的最大值为3。
然而,本公开的另一实施方式提供了一种用于执行图像编码的编码设备。该编码设备包括:减法器,其推导当前块的残差样本;变换器,其通过对当前块的残差样本进行变换来推导变换系数;量化器,其基于量化处理从变换系数推导量化变换系数;以及熵编码器,其对包括关于量化变换系数的信息的残差信息进行编码,并且残差信息包括变换系数级别信息,该熵编码器通过基于莱斯参数对变换系数级别信息执行二值化处理来推导变换系数级别信息的二值化值,并对变换系数级别信息的二值化值进行编码,并且莱斯参数的最大值为3。
技术效果
根据本公开,可以增强整体图像/视频压缩效率。
根据本公开,可以增强残差编码的效率。
根据本公开,可以通过基于莱斯参数对残差信息执行二值化处理来增强残差编码效率。
根据本公开,可以通过将莱斯参数的最大值设置为3,来有效地执行残差编码。
根据本公开,可以执行初始化处理以推导用于当前块中包括的子块的至少一个莱斯参数。
附图说明
图1是示意性地例示了可以应用本公开的视频/图像编码系统的示例的图。
图2是示意性地说明可以应用本公开的视频/图像编码设备的配置的图。
图3是示意性地说明可以应用本公开的视频/图像解码设备的配置的图。
图4是用于说明根据实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯(Rice)参数的示例的图。
图5a至图5c是用于说明根据一些实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯参数的另一示例的图。
图6a至图6c是用于说明根据另一些实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯参数的又一示例的图。
图7是例示了根据实施方式的推导2×2块的量化系数的处理的图。
图8a和图8b是例示了根据实施方式的熵编码器的配置和操作方法的图。
图9a和图9b是例示了根据实施方式的熵解码器的配置和操作方法的图。
图10是例示了根据实施方式的编码设备的熵编码方法的流程图。
图11是例示了根据实施方式的解码设备的熵解码方法的流程图。
图12是例示了根据实施方式的编码设备的操作的流程图。
图13是例示了根据实施方式的编码设备的配置的框图。
图14是例示了根据实施方式的解码设备的操作的流程图。
图15是例示了根据实施方式的解码设备的配置的框图。
图16是例示了可以应用本文件中公开的公开内容的内容流系统的示例的图。
具体实施方式
本公开的实施方式提供了一种由解码设备执行的用于对图像进行解码的方法。该方法包括:接收包括残差信息的比特流;基于比特流中包含的残差信息,推导当前块的量化变换系数;基于反量化处理从量化变换系数推导变换系数;通过向推导出的变换系数应用逆变换来推导当前块的残差样本,并基于当前块的残差样本来生成重构图片,并且残差信息包括变换系数级别信息,量化变换系数的推导包括基于莱斯参数对变换系数级别信息执行二值化处理,基于二值化处理的结果推导变换系数级别信息的值,并且基于变换系数级别信息的值推导量化变换系数,并且莱斯参数的最大值为3。
实施本发明的方式
本公开可以以各种方式改变并且可以具有各种实施方式,并且将详细描述并在附图中例示出其特定实施方式。然而,这并非将本公开限制于特定实施方式。本说明书中使用的术语仅用于描述特定实施方式,并非旨在限制本公开的技术精神。单数表述包括复数表述,只要清楚地在上下文中不同地理解它即可。本说明书中的诸如“包括”和“具有”之类的术语旨在表示说明书中使用的特征、数量、步骤、操作、组件、部件或其组合的存在,并且应当理解,并没有预先排除存在或增加一个或更多个不同特征、数量、步骤、操作、组件、部件或其组合的可能性。
此外,为了便于描述不同特征功能而独立地例示了本公开中描述的附图中的每个组件,并且并不意味着以单独的硬件或单独的软件来实现每个组件。例如,两个或更多个组件可以组合以形成一个组件,或者一个组件可以划分为多个组件。在不脱离本公开的精神的情况下,每个组件被集成和/或分离的实施方式也包括在本公开的范围内。
在下文中,将参照附图更详细地描述本公开的优选实施方式。在下文中,在附图中,相同的附图标记用于相同的组件,并且可以省略相同组件的冗余描述。
图1例示了可以应用本公开的视频/图像编码系统的示例。
参照图1,视频/图像编码系统可以包括第一设备(源装置)和第二设备(接收装置)。源设备可以通过数字存储介质或网络以文件或流的形式向接收装置发送编码视频/图像信息或数据。
源装置可以包括视频源、编码设备和发送器。接收装置可以包括接收器、解码设备和渲染器。编码设备可以称为视频/图像编码设备,并且解码设备可以称为视频/图像解码设备。发送器可以包括在编码设备中。接收器可以包括在解码设备中。渲染器可以包括显示器,并且显示器可以被配置为单独的装置或外部组件。
视频源可以通过捕获、合成或生成视频/图像的处理来获取视频/图像。视频源可以包括视频/图像捕获装置和/或视频/图像生成装置。视频/图像捕获装置可以包括例如一个或更多个相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成装置可以包括例如计算机、平板电脑和智能手机,并且可以(电子地)生成视频/图像。例如,可以通过计算机等生成虚拟视频/图像。在这种情况下,视频/图像捕获处理可以由生成相关数据的处理代替。
编码设备可以对输入的视频/图像进行编码。编码设备可以执行一系列过程,诸如预测、变换和量化以实现压缩和编码效率。编码数据(编码视频/图像信息)可以以比特流的形式输出。
发送器可以通过数字存储介质或网络以文件或流的形式向接收装置的接收器发送以比特流形式输出的编码后的图像/图像信息或数据。数字存储介质可以包括诸如USB、SD、CD、DVD、蓝光、HDD、SSD等的各种存储介质。发送器可以包括用于通过预定文件格式生成媒体文件的元件,并且可以包括用于通过广播/通信网络进行发送的元件。接收器可以接收/提取比特流,并向解码设备发送接收到的比特流。
解码设备可以通过执行与编码设备的操作相对应的诸如反量化、逆变换和预测之类的一系列过程,来对视频/图像进行解码。
渲染器可以渲染经解码的视频/图像。经渲染的视频/图像可以通过显示器显示。
本文件涉及视频/图像编码。例如,本文件中公开的方法/实施方式可以应用于在多功能视频编码(VVC)标准、基本视频编码(EVC)标准、AOMedia Video 1(AV1)标准、第2代音频视频编码标准(AVS2)或下一代视频/图像编码标准(例如,H.267、H.268等)中公开的方法。
本文件提出了视频/图像编码的各种实施方式,并且除非另外指明,否则以上实施方式也可以彼此组合地执行。
在本文件中,视频可以是指一段时间上的一系列图像。图片通常是指在特定时间帧表示一幅图像的单位,而切片/瓦片是指就编码而言组成图片的单位。切片/瓦片可以包括一个或更多个编码树单元(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可以执行各种编码方法,诸如,例如Exp-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基于诸如Exp-Golomb编码、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输出的关于预测的信息来确定向当前块应用帧内预测还是帧间预测,并且可以确定具体的帧内/帧间预测模式。
预测器330可以基于以下描述的各种预测方法来生成预测信号。例如,预测器不仅可以应用帧内预测或帧间预测来预测一个块,而且可以同时应用帧内预测和帧间预测。这可以称为帧间和帧内组合预测(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可以存储从中推导(或解码)当前图片中的运动信息的块的运动信息和/或图片中已重构的块的运动信息。所存储的运动信息可以发送给帧间预测器332,以作为空间相邻块的运动信息或时间相邻块的运动信息来利用。存储器360可以存储当前图片中的重构块的重构样本,并且可以将重构样本传送给帧内预测器331。
在本公开中,在编码设备200的滤波器260、帧间预测器221和帧内预测器222中描述的实施方式可以与解码设备300的滤波器350、帧间预测器332和帧内预测器331相同或分别被应用以对应于解码设备300的滤波器350、帧间预测器332和帧内预测器331。相同的内容也可以应用于帧间预测器332和帧内预测器331。
如上所述,在执行视频编码时,执行预测以增强压缩效率。因此,可以生成包括作为编码目标块的当前块的预测样本的预测块。在此,预测块包括空间域(或像素域)中的预测样本。从编码设备和解码设备同样地推导预测块,并且编码设备可以向解码设备发信号通知关于原始块和预测块之间的残差的信息(残差信息),而不是原始块的原始样本值本身,从而增强图像编码效率。解码设备可以基于残差信息来推导包括残差样本的残差块,通过将残差块和预测块相加来生成包括重构样本的重构块,并且生成包括重构块的重构图片。
可以通过变换和量化过程来生成残差信息。例如,编码设备可以通过推导原始块和预测块之间的残差块、通过对残差块中包括的残差样本(残差样本阵列)执行变换过程推导变换系数以及通过对变换系数执行量化过程推导量化变换系数,来(通过比特流)向解码设备发信号通知相关的残差信息。这里,残差信息可以包括诸如值信息、位置信息、变换技术、变换核以及量化变换系数的量化参数之类的信息。解码设备可以基于残差信息执行反量化/逆变换过程,并推导残差样本(或残差块)。解码设备可以基于预测块和残差块来生成重构图片。编码设备还可以对量化变换系数进行反量化/逆变换以供后面图片的帧间预测参考,从而推导残差块,并基于此生成重构图片。
在实施方式中,基于诸如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、rem_abs_gt1_flag、rem_abs_gt2_flag、abs_remainder、coeff_sign_flag和mts_idx之类的语法元素来对(量化)变换系数进行编码和/或解码。下表1表示与残差数据的编码有关的语法元素。
表1
/>
/>
/>
transform_skip_flag表示在相关联块中是否省略了变换。相关联块可以是编码块(CB)或变换块(TB)。关于变换(和量化)和残差编码过程,CB和TB可以互换使用。例如,如上所述,可以针对CB推导残差样本,可以通过残差样本的变换和量化来推导(量化)变换系数,并且可以通过残差编码过程生成并发信号通知有效地表示(量化)变换系数的位置、尺寸、符号等的信息(例如,语法元素)。量化变换系数可以简单地称为变换系数。通常,如果CB不大于最大TB,则CB的尺寸可以等于TB的尺寸,并且在这种情况下,要变换(和量化)和残差编码的目标块可以称为CB或TB。此外,如果CB大于最大TB,则要变换(和量化)和残差编码的目标块可以称为TB。在下文中,尽管将描述以变换块(TB)为单位发信号通知与残差编码有关的语法元素,但是这是示例,并且如上所述,TB可以与编码块(CB)互换使用。
在实施方式中,可以基于语法元素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来表示当前子块内是否存在非零系数。
如果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进行编码。如果当前扫描位置处的变换系数的值是非零,则sig_coeff_flag的值可以为1。这里,在包括最后一个非零系数的子块的情况下,由于不需要对最后一个非零系数的sig_coeff_flag进行编码,因此可以省略对该子块的编码处理。可以仅当sig_coeff_flag为1时,才对级别信息进行编码,并且在级别信息编码处理中可以使用四个语法元素。更具体地,每个sig_coeff_flag[xC][yC]可以表示在当前TB内的每个变换系数位置(xC,yC)处的相应变换系数的级别(值)是否为非零。
对sig_coeff_flag进行编码之后的其余级别值可以由下式1表示。即,表示要编码的级别值的语法元素remAbsLevel可以由下式1所示。在此,coeff表示实际的变换系数值。
式1
remAbsLevel=|coeff|-1
如下式2所表示的,可以通过par_level_flag对由式1表示的remAbsLevel的最低有效系数(LSB)的值进行编码。在此,par_level_flag[n]可以表示扫描位置(n)处的变换系数级别(值)的奇偶校验。在对par_level_flag进行编码之后,可以更新要编码的变换系数级别值remAbsLevel,如下式3所表达的。
式2
par_level_flag=remAbsLevel&1
式3
remAbsLevel’=remAbsLevel>>1
rem_abs_gt1_flag可以表示相应扫描位置(n)处的remAbsLevel'是否大于1,并且rem_abs_gt2_flag可以表示相应扫描位置(n)处的remAbsLevel'是否大于2。可以仅当rem_abs_gt2_flag为1时才执行对abs_remainder的编码。例如,如下式4所表示的,将实际变换系数值(coeff)与各个语法元素之间的关系进行总结,并且下表2表示与式4有关的示例。每个系数的符号可以通过使用1比特符号coeff_sign_flag来编码。|coeff|表示变换系数级别(值),并且也可以被表示为变换系数的AbsLevel。
式4
|coeff|=sig_coeff_flag+par_level_flag+2*(rem_abs_gt1_flag+rem_abs_gt2_flag+abs_remainder)
表2
此外,在另一实施方式中,rem_abs_gt2_flag也可以称为rem_abs_gt3_flag,并且在又一实施方式中,也可以基于abs_level_gtx_flag[n][j]来表示rem_abs_gt1_flag和rem_abs_gt2_flag。abs_level_gtx_flag[n][j]可以是表示在扫描位置(n)处的变换系数级别的绝对值(或者通过将变换系数级别右移1位而获得的值)是否大于(j<<1)+1的标志。rem_abs_gt1_flag可以执行与abs_level_gtx_flag[n][0]相同和/或相似的功能,并且rem_abs_gt2_flag可以执行与abs_level_gtx_flag[n][1]相同和/或相似的功能。在一些情况下,也可以用诸如第一参考值和第二参考值之类的预定参考值来代替(j<<1)+1。
每个语法元素的二值化方法可以表示在下表3中。在表3中,TR表示截断莱斯二值化方法,FL表示固定长度二值化方法,并且稍后将描述各二值化方法的详细描述。
表3
在实施方式中,截断莱斯二值化处理、第0次Exp-Golomb二值化处理的解析处理、第k次Exp-Golomb二值化处理、固定长度二值化处理、abs_remainder的二值化处理、推导莱斯参数的处理等可以例如根据以下英语说明来实现。
1.截断莱斯二值化处理
该处理的输入是对截断莱斯(TR)二值化的请求、cMax和cRiceParam。
该处理的输出是将每个值symbolVal与相应bin(位)串相关联的TR二值化。
TR bin串是前缀bin串和后缀bin串(当存在时)的串联。
对于前缀bin串的推导,应用以下内容:
–如下推导symbolVal的前缀值prefixVal:
prefixVal = symbolVal >> cRiceParam (1)
-如下指定TR bin串的前缀:
-如果prefixVal小于cMax>>cRiceParam,则前缀bin串是由binIdx索引的长度为prefixVal+1的比特串。binIdx小于prefixVal的bin等于1。binIdx等于prefixVal的bin等于0。表4例示了prefixVal的这种一元二值化的bin串。
–否则,bin串是所有bin全部等于1的长度为cMax>>cRiceParam的比特串。
表4
当cMax大于symbolVal并且cRiceParam大于0时,TR bin串的后缀存在,并且如下推导TR
bin串的后缀:
–如下推导后缀值suffixVal:
suffixVal = symbolVal - ( ( prefixVal ) << cRiceParam ) (2)
–通过用等于(1< 注–对于输入参数cRiceParam=0,TR二值化恰好是截断一元二值化,并且始终用等于要解码的语法元素的最大可能值的cMax值来调用它。 2.0阶Exp-Golomb二值化处理的解析处理 被编码为ue(v)的语法元素被Exp-Golomb编码。这些语法元素的解析处理开始于读取从比特流中的当前位置开始直到并且包括第一个非零比特的比特,并对等于0的前导比特的数量进行计数。此处理被如下指定: leadingZeroBits=-1 for( b = 0; !b; leadingZeroBits++ ) (3) b=read_bits(1) 然后如下指派变量codeNum: codeNum = 2leadingZeroBits - 1 + read_bits( leadingZeroBits ) (4) 其中,从read_bits(leadZeroBits)返回的值被解释为首先写入最高有效位的无符号整数的二进制表示。 表5通过将比特串分成“前缀”和“后缀”比特例示了Exp-Golomb码的结构。“前缀”比特是那些如上面针对leadingZeroBits的计算而指定地解析的那些比特,并在表5的比特串列中被示为0或1。“后缀”比特是在codeNum的计算中解析并且在表5中被示为xi的那些比特,i的范围为0到LeadingZeroBits-1(包含端点)。每个xi等于0或1。 表5 表6显式地例示了将比特串指派到codeNum值。也就是说,Exp-Golomb比特串和codeNum以显式形式表示,并用作ue(v)。 表6 依据描述符,如下推导语法元素的值: –如果语法元素被编码为ue(v),则语法元素的值等于codeNum。 3.k阶Exp-Golomb二值化处理 该处理的输入是对k阶Exp-Golomb(EGk)二值化的请求。 该处理的输出是将每个值symbolVal与相应bin串相关联的EGk二值化。 如下指定用于每个值symbolVal的EGk二值化处理的bin串,其中每次以等于0或1的X对put(X)函数进行调用将二进制值X添加到bin串末尾: /> 注–k阶Exp-Golomb(EGk)码的规范以第2节中指定的0阶Exp-Golomb码的一元部分的相反含义来使用1和0。 4.固定长度二值化处理 该处理的输入是对固定长度(FL)二值化的请求和cMax。 该处理的输出是将每个值symbolVal与相应bin串相关联的FL二值化。 通过使用符号值symbolVal的固定长度(fixedLength)比特无符号整数bin串来构造FL二值化,其中fixedLength=Ceil(Log2(cMax+1))。用于FL二值化的bin的索引是这样的:binIdx=0与最高有效位相关,其中binIdx的值朝着最低有效位而增加。 5.abs_remainder的二值化处理 该处理的输入是对语法元素abs_remainder[n]进行二值化的请求、颜色分量cIdx、指定相对于图片的左上角亮度样本的当前亮度变换块的左上角样本的亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、变换块宽度的二进制对数log2TbWidth和变换块高度的二进制对数log2TbHeight。 该处理的输出是语法元素的二值化。 莱斯参数cRiceParam是通过以颜色分量索引cIdx、亮度位置(x0,y0)、变换块高度log2TbHeight的当前系数扫描位置hm为输入调用第6节中指定的莱斯参数推导处理而推导的。 从cRiceParam将变量cMax推导为: cMax = ( cRiceParam = = 1 ? 6 : 7 ) << cRiceParam (6) 语法元素abs_remainder[n]的二值化是前缀bin串和(当存在时)后缀bin串的串联。 对于前缀bin串的推导,应用以下: -如下推导abs_remainder[n]的前缀值prefixVal: prefixVal = Min( cMax, abs_remainder[ n ] ) (7) -通过以变量cMax和cRiceParam为输入针对prefixVal调用第1节中指定的TR二值化处理来指定前缀bin串。 当前缀bin串等于所有比特都等于1的长度为4的比特串时,存在后缀bin串,并且如下推导后缀bin串: –如下推导abs_remainder[n]的后缀值suffixVal: suffixVal = abs_remainder[ n ] - cMax (8) –通过用被设置为等于cRiceParam+1的Exp-Golomb阶数k针对suffixVal的二值化调用第3节中指定的k阶EGk二值化处理,来指定后缀bin串。 6.莱斯参数推导处理 该处理的输入是颜色分量索引cIdx、指定相对于当前图片的左上角样本的当前变换块的左上角样本的亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、变换块宽度的二进制对数log2TbWidth和变换块高度的二进制对数log2TbHeight。 该处理的输出是莱斯参数cRiceParam。 在给定具有分量索引cIdx和左上角亮度位置(x0,y0)的变换块的语法元素sig_coeff_flag[x][y]和阵列AbsLevel[x][C]的情况下,如同以下伪代码所指定地那样推导变量locSumAbs: 如下推导莱斯参数cRiceParam: –如果locSumAbs小于12,则cRiceParam被设置为等于0; –否则,如果locSumAbs小于25,则cRiceParam被设置为等于1; –否则(locSumAbs大于或等于25),cRiceParam被设置为等于2。 图4是用于说明根据实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯参数的示例的图。 如以上在图3所示的英文说明的第6节中所描述的,可以基于(图4中的暗阴影所示的)当前变换系数的已经编码的(图4中的浅阴影所示的)五个相邻变换系数的级别之和以及sig_coeff_flag的值,来确定用于当前扫描位置的变换系数的莱斯参数。在这种情况下,可能需要每次确认参考变换系数的位置是否超过变换块边界。即,每次对一个变换系数级别进行编码,可以伴随五个边界检查处理。更具体地,由于对于需要对abs_remainder语法元素进行编码的变换系数需要5次边界检查处理,因此,如果生成级别值大的大量变换系数,则可能增加计算复杂度。 由于计算复杂度与在推导莱斯参数的处理中所使用的参考变换系数的尺寸成比例地增加,因此以下实施方式提出了使用少于5个参考变换系数的方法。图5a至图5c例示出了使用四个参考变换系数、三个参考变换系数和两个参考变换系数的情况,并且例示了与每种情况相对应的各种参考变换系数使用模式。图6a至图6c例示了在使用一个参考变换系数的情况下的各种参考变换系数使用模式。根据图5a至图6c的实施方式的目的在于,通过减少参考变换系数的数量来减少计算复杂度,从而本公开包括使用少于5个参考变换系数的所有情况,并且不限于上述实施方式。 图5a至图5c是用于说明根据一些实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯参数的另一示例的图。 图5a是用于说明基于当前变换系数的(图5a中的浅阴影所示的)四个相邻参考变换系数来推导莱斯参数的处理的图。可以在中间推导临时和系数以推导莱斯参数。临时和系数可以被表示为例如locSumAb。临时和系数(例如,locSumAbs)的值可以最初为零,并且可以在检测每个相邻参考变换系数的同时更新临时和系数(例如,locSumAbs)的值。 基于图5a所示的四个相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如示出在下表7中。 表7 图5b是用于说明基于当前变换系数的(图5b中浅阴影所示的)三个相邻参考变换系数来推导莱斯参数的处理的图。基于图5b中所示的三个相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如在下表8中表示。 表8 图5c是用于说明基于当前变换系数的(图5c中浅阴影所示的)两个相邻参考变换系数来推导莱斯参数的处理的图。基于图5c中所示的两个相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如在下表9中表示。 表9 图6a至图6c是用于说明根据另一些实施方式的基于相邻参考变换系数来推导用于当前变换系数的莱斯参数的又一示例的图。 图6a至图6c是用于说明基于当前变换系数的(图6a至图6c中浅阴影所示的)一个相邻参考变换系数来推导莱斯参数的处理的图。图6a是用于说明使用位于当前变换系数右侧的相邻参考变换系数的处理的图,图6b是用于说明使用位于当前变换系数的右下对角线处的相邻参考变换系数的处理的图,并且图6c是用于说明使用位于当前变换系数下方的相邻参考变换系数的处理的图。 基于图6a所示的右侧的相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如在下表10中表示。 表10 基于图6b所示的右下对角线的相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如在下表11中表示。 表11 基于图6c所示的下侧的相邻参考变换系数来更新临时和系数(例如,locSumAbs)的值的处理可以例如在下表12中表示。 表12 在实施方式中,如图3所示的英语说明的第3节中所公开的,可以基于locSumAbs值来确定用于下一扫描位置的变换系数的莱斯参数。例如,可以基于下式5来确定莱斯参数。 式5 另选地,例如,可以基于下式6来确定莱斯参数。 式6 在实施方式中,式6中的th 在实施方式中,如果所参考的相邻参考变换系数的位置超过变换块的边界,则可以使用通过使用可参考位置的变换系数值来预测莱斯参数的方法、用于如果存在上个莱斯参数则不进行更新而保持上个莱斯参数的值的方法或用于如果存在特定初始值则用特定初始值代替莱斯参数的值的方法等。 此外,用于确定扫描顺序的方法不限于对角线扫描方法,并且当修改了系数扫描方法时可以修改模式。 图7是例示了根据实施方式的推导2×2块的量化系数的处理的图。 在实施方式中,图7例示了在对色度块进行编码的处理中2×2子块中的量化系数的示例。图7中所示的反向对角线扫描的系数的编码结果可以表示在下表13中。在表13中,scan_pos表示根据反向对角线扫描的系数的位置。首先被扫描的系数(即,2×2块中的右下角系数)可以具有为3的scan_pos值,并且最后被扫描的系数(即,左上角系数)可以表示为scan_pos值0。 表13 在实施方式中,在对色度块的2×2子块的编码处理中可以限制语法元素rem_abs_gt2_flags的数量。如以上在表1中所表达的,以2×2子块为单位的主要语法元素可以包括sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag、abs_remainder、coeff_sign_flag等。其中,sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag可以包括关于通过使用常规编码引擎而编码的上下文编码的bin的信息,而abs_remainder和coeff_sign_flag可以包括关于通过使用旁路编码引擎而编码的旁路bin的信息。上下文编码的bin可以展现出高数据依赖性,因为它在处理前一个bin时使用更新的概率状态和范围。即,由于上下文编码的bin可以在当前bin的完全编码/解码之后执行下一个bin的编码/解码,因此可能难以并行处理。此外,读取概率部分并确定当前状态可能花费时间长。因此,在实施方式中,可以提出一种通过减少上下文编码的bin的数量并增加旁路bin的数量来提高CABAC吞吐量的方法。 在实施方式中,可以以反向扫描顺序对系数级别信息进行编码。即,可以在从单位块的右下端的系数朝着其左上端的系数进行扫描之后,对系数级别信息进行编码。通常,以反向扫描顺序首先扫描的系数级别倾向于具有较小的值。这些系数的sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag可以用于在表示系数级别时减少二值化bin的长度,并且可以基于预定上下文根据先前编码的上下文通过算术编码来对各个语法元素进行有效编码。 但是,在具有较大值的一些系数级别(即,位于单位块的左上端的系数级别)的情况下,使用sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag可能无助于提高压缩性能。使用sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag反而可能降低编码效率。 在实施方式中,可以通过将已编码成上下文编码的bin的语法元素(sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag)快速切换成已经基于旁路编码引擎而编码(即,编码成旁路bin)的abs_remainder语法元素,来减少上下文编码的bin的数量。 在实施方式中,可以限制用rem_abs_gt2_flag编码的系数的数量。可以用于2×2块中的编码的rem_abs_gt2_flags的最大数量可以是4。即,可以用rem_abs_gt2_flag对绝对值大于2的全部系数进行编码。在示例中,可以根据扫描顺序用rem_abs_gt2_flag仅对前N个绝对值大于2的系数(即,rem_abs_gt1_flag为1的系数)进行编码。N可以由编码器选择,并且也可以被设置为0到4的任何值。假设以类似于本实施方式的方法对编码器限制用于亮度或色度4×4子块的上下文编码的bin,则也可以基于此时使用的限制值来计算N。作为计算N的方法,亮度或色度4×4子块的上下文编码的bin的限制值(N 式7 N=N 式8 N={N 类似地,也可以通过使用子块的水平和/或垂直尺寸值来计算N。由于子块具有正方形形状,因此水平尺寸值和垂直尺寸值相同。由于2×2子块的水平或垂直尺寸值为2,因此可以通过下式9来计算N。 式9 N={N 下表14示出了当N为1时的应用示例。在2×2块中rem_abs_gt2_flag的编码可以减少多达X所指示的数量,从而减少上下文编码的bin的数量。与表13中的相比,针对不执行rem_abs_gt2_flag的编码的扫描位置,系数的abs_remainder值可以改变。 表14 在实施方式中,可以限制在色度块的2×2子块的编码中sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和。假设sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和被限制为K,则K可以具有0到12的值。在示例中,当sig_coeff_flag的数量、par_level_flag的数量以及rem_abs_gt1_flag的数量之和超过K并且sig_coeff_flag、par_level_flag和rem_abs_gt1_flag不被编码时,rem_abs_gt2_flag也可以不被编码。 K可以由编码器选择,也可以设置为0到12的任意值。如果在编码器中限制用于亮度或色度4×4子块的上下文编码的bin,则也可以基于此时所使用的限制值来计算K。作为计算K的方法,用于亮度或色度4×4子块的上下文编码的bin的限制值(K 式10 K=K 式11 K={K 类似地,还可以通过使用子块的水平/垂直尺寸值来计算K。由于子块具有正方形形状,因此水平尺寸值和垂直尺寸值相同。由于2×2子块的水平或垂直尺寸值为2,因此可以通过式12计算K。 式12 K={K 下表15示出了K被限制为6的情况。 表15 在实施方式中,在色度块的2×2子块的编码中可以分别限制sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和以及rem_abs_gt2_flag的数量。也就是说,也可以组合用于限制sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和的方法和用于限制rem_abs_gt2_flag的数量的方法。假设sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和被限制为K并且rem_abs_gt2_flag的数量被限制为N,则K可以具有0到12的值,N可以具有为0到4的值。 K和N也可以由编码器确定,或者也可以基于关于式7至式12描述的内容来计算。 表16示出了K被限制为6并且N被限制为1的示例。 表16 在实施方式中,可以使用用于改变par_level_flag和rem_abs_gt1_flag的编码顺序的方法。例如,可以提出按照rem_abs_gt1_flag和par_level_flag的顺序进行编码,而不是按照par_level_flag和rem_abs_gt1_flag的顺序进行编码的方法。在示例中,当对色度块的具有2×2尺寸的子块进行编码时,可以应用上述编码顺序的更改。如果更改par_level_flag和rem_abs_gt1_flag的顺序,则在sig_coeff_flag之后对rem_abs_gt1_flag进行编码,并且可以仅在rem_abs_gt1_flag为1时才对par_level_flag进行编码。因此,实际变换系数值(coeff)与各个语法元素之间的关系可以改变,如下式13所表示。 式13 |coeff|=sig_coeff_flag+rem_abs_gt1_flag+par_level_flag+2*(rem_abs_gt2_flag+abs_remainder) 当下表17与表2比较时,如果|coeff|为1,则不对par_level_flag进行编码,从而根据表16的实施方式就吞吐量和编码而言可以是有利的。当然,如果|coeff|为2,则需要对rem_abs_gt2_flag进行编码,这与表2不同,并且如果|coeff|为4,则需要对abs_remainder进行编码,这与表2不同,但是通常|coeff|为1的情况比|coeff|为2或4的情况发生得更频繁,从而根据表17的方法可以展现出比根据表2的方法更高的吞吐量和编码性能。在示例中,如图7所示的对4×4子块进行编码的结果可以表示在下表18中。 表17 表18 在实施方式中,可以提供一种用于改变par_level_flag和rem_abs_gt1_flag的编码顺序并限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和的方法。也就是说,当以sig_coeff_flag、rem_abs_gt1_flag、par_level_flag、rem_abs_gt2_flag、abs_remainder和coeff_sign_flag的顺序执行编码时,可以提供用于限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和的方法。假设sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和被限制为K,则K可以具有0至12的值。K也可以由编码器选择,并且也可以设置为0到12的任意值。此外,可以基于上述关于式10至式12的方法来计算K。 在实施方式中,当不再对sig_coeff_flag、rem_abs_gt1_flag和par_level_flag进行编码时,也可以不对rem_abs_gt2_flag进行编码。下表19示出了K被限制为6的示例。 表19 在实施方式中,可以在语法中的一个for循环中对语法元素sig_coeff_flag、rem_abs_gt1_flag和par_level_flag进行编码。尽管三个语法元素(sig_coeff_flag、rem_abs_gt1_flag和par_level_flag)的数量之和不超过K并且该和与K不完全匹配,但是可以在相同的扫描位置停止编码。下表19示出了K为8的示例。当执行编码直到扫描位置2时,sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和为6。该和是不超过K的值,但是此时,由于编码设备(或编码器)不知道下一扫描位置1(scan_pos=1)的系数级别的值,因此编码设备(或编码器)可能无法识别在scan_pos 1中生成的上下文编码的bin的数量具有1到3中的任意值。此时,编码设备可以仅编码到scan_pos=2并终止编码。因此,尽管K值不同,但是编码结果在表19和下表20中可以相同。 表20 在实施方式中,可以提供一种用于改变par_level_flag和rem_abs_gt1_flag的编码顺序并限制rem_abs_gt2_flag的数量的方法。即,当以sig_coeff_flag、rem_abs_gt1_flag、par_level_flag、rem_abs_gt2_flag、abs_remainder和coeff_sign_flag的顺序执行编码时,可以提供用于限制用rem_abs_gt2_flag编码的系数的数量之和的方法。在示例中,在2×2块内被编码的rem_abs_gt2_flag的数量可以是4。即,可以用rem_abs_gt2_flag对绝对值大于2的所有系数进行编码。在另一示例中,也可以根据扫描顺序用rem_abs_gt2_flag仅对前N个绝对值大于2的系数(即,rem_abs_gt1_flag为1的系数)进行编码。N也可以由编码器来选择,并且也可以被设置为0至4中的任意值。此外,还可以基于上述关于式7至式9的方法来计算N。 表21示出了当N为1时的示例。在4×4块中,rem_abs_gt2_flag的编码可以减少多达由X所指示的次数,从而减少上下文编码的bin的数量。当与表18比较时,针对rem_abs_gt2_flag不被编码的扫描位置,系数的abs_remainder值可以改变,如下表21所表示的。 表21 在实施方式中,可以提供一种用于改变par_level_flag和rem_abs_gt1_flag的编码顺序并限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和以及rem_abs_gt2_flag的数量的方法。即,当以sig_coeff_flag、rem_abs_gt1_flag、par_level_flag、rem_abs_gt2_flag、abs_remainder和coeff_sign_flag的顺序执行编码时,可以组合用于限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和的方法以及用于限制rem_abs_gt2_flag的数量的方法。假设sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和被限制为K并且rem_abs_gt2_flag的数量被限制为N,则K可以具有0到12的任意值,并且N可以具有0到4的任意值。K和N也可以由编码器选择,并且K也可以被设置为0到12的任意值,并且N也可以被设置为0到4的任意值。另选地,也可以基于关于式7至式12描述的内容来计算K和N。 表22示出了其中K为6并且N为1的示例。 表22 根据实施方式,在色度块的2×2或4×4子块的编码中限制sig_coeff_flag的数量、par_level_flag的数量和rem_abs_gt1_flag的数量之和的情况下,可以提供一种用于简化确定用于定义abs_remainder的golomb码的莱斯参数的方法。在实施方式中,返回参照图4,可以基于(图4中的暗阴影所示的)当前变换系数的(图4中的浅阴影所示的)已经编码的五个相邻变换系数的级别之和以及关于sig_coeff_flag的信息,来确定用于当前扫描位置的变换系数的莱斯参数。下表22示出了与图4有关的伪代码。参照下表23,可以确认需要每次检查在伪代码中引用的变换系数的位置是否超过变换块边界。即,每次对一个变换系数级别进行编码,需要执行五次边界检查处理。即使在对abs_remainder语法元素的编码中,也由于针对需要编码的目标的变换系数需要进行5次边界检查处理,因此如果生成级别值较大的大量变换系数,则可能增加计算复杂度。 表23 /> 根据实施方式,在一种用于推导表示莱斯参数的cRiceParam的方法中,如果locSumAbs小于12,则cRiceParam的值可以为0;如果locSumAbs小于25,则cRiceParam的值可以为1,并且如果locSumAbs的值为25或以上,则cRiceParam的值可以为2。 在实施方式中,如果限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和,则可以根据以下三种情况分别不同地确定abs_remainder的值。在用于限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和的方法中,可以根据以下(i)、(ii)和(iii)将各种编码处理应用于子块。(i)表示sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag全部存在的情况,(ii)表示仅sig_coeff_flag、par_level_flag和rem_abs_gt1_flag存在的情况,并且(iii)表示sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag全不存在的情况。 在(i)的情况下,实际变换系数值(coeff)与abs_remainder之间的关系由式4表示,在(ii)的情况下,它们之间的关系由式14表示,并且在(iii)的情况下,它们之间的关系由式15表示。 式14 |coeff|=sig_coeff_flag+par_level_flag+2*(rem_abs_gt1_flag+abs_remainder) 式15 |coeff|=abs_remainder 由于计算复杂度与在推导莱斯参数的处理中所使用的参考变换系数的尺寸成比例地增加,因此实施方式可以仅针对色度块的编码基于在4×4或2×2子块的扫描顺序下的刚好之前的级别值来推导莱斯参数。此时,可以仅在子块的开始步骤中将莱斯参数初始化为零,并且在子块内对abs_remainder进行编码的(i)、(ii)和(iii)的每个步骤可以不初始化莱斯参数。在子块的编码中,当刚好之前的级别值大于th 根据实施方式,在色度块的2×2或4×4子块的编码中更改par_level_flag和rem_abs_gt1_flag的编码顺序并且限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量以及par_level_flag的数量之和的情况下,可以提供用于简化对用于定义abs_remainder的golomb码的莱斯参数的确定的方法。 在更改par_level_flag和rem_abs_gt1_flag的编码顺序的情况下,如果限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和,则可以分别根据以下三种情况不同地确定abs_remainder。根据用于限制sig_coeff_flag的数量、rem_abs_gt1_flag的数量和par_level_flag的数量之和的方法,针对一个子块可以检查以下(i)、(ii)和(iii)。(i)是sig_coeff_flag、rem_abs_gt1_flag、par_level_flag和rem_abs_gt2_flag全部存在的情况,(ii)是仅sig_coeff_flag、rem_abs_gt1_flag和par_level_flag存在的情况,并且(iii)是sig_coeff_flag、rem_abs_gt1_flag、par_level_flag和rem_abs_gt2_flag全不存在的情况。 在(i)的情况下,实际变换系数值(coeff)与abs_remainder之间的关系由式13表示;在(ii)的情况下,它们之间的关系由式16表示,并且在(iii)的情况下,它们之间的关系由式15表示。 式16 |coeff|=sig_coeff_flag+rem_abs_gt1_flag+par_level_flag+(2*abs_remainder) 由于计算复杂度与在推导莱斯参数的处理中所使用的参考变换系数的尺寸成比例地增加,因此实施方式可以提供一种用于通过仅针对色度块的编码使用在4×4或2×2子块的扫描顺序下的刚好之前的级别值来推导莱斯参数的方法。可以仅在子块的开始步骤中将莱斯参数初始化为零,并且在子块内对abs_remainder进行编码的(i)、(ii)和(iii)的每个阶段中可以不初始化莱斯参数。在子块的编码中,当刚好之前的级别值大于th 图8a和图8b是例示了根据实施方式的熵编码器的配置和操作方法的图。 根据实施方式,可以使用从第0莱斯码到最大第2莱斯码,并且莱斯码的阶数可以被表示为莱斯参数。如果莱斯码的阶数(即,最大莱斯参数的值)增大,则可以具有以下优点:可以在输入较大的输入值的情况下指派更少的比特。下表24示出了从第0莱斯码到第3莱斯码的码字长度作为示例,并且可以确认如果输入值大于11则用第3莱斯码进行的二值化比用第2莱斯码进行的二值化所得到的码字长度短。因此,在实施方式中,可以提供一种用于增加变换系数级别编码中的最大支持莱斯码的阶数(即,最大莱斯参数的值)的方法。 表24 随着最大莱斯参数的增加,基于locSumAbs对莱斯参数进行分类的式6可以被修正为由下式17表示。式17示出了使用最多第三莱斯码的情况的示例。 式17 参照图8a和8b,编码设备(熵编码器240)可以对(量化)变换系数执行残差编码处理。如上所述,编码设备可以根据扫描顺序对当前块(当前CB或当前TB)内的(量化)变换系数进行残差编码。编码设备可以生成并且编码与残差信息有关的各种语法元素,例如,如表1所示。 具体地,编码设备可以在对sig_coeff_flag、par_level_flag、rem_abs_gt1_flag和rem_abs_gt2_flag进行编码的同时推导abs_remainder的值,并且推导用于abs_remainder的莱斯参数(S800)。如上所述,可以基于相邻参考变换系数来推导莱斯参数。更具体地,可以基于上述locSumAbs来推导用于当前扫描位置(的变换系数)的莱斯参数,并且可以基于相邻参考变换系数的AbsLevel和/或sig_coeff_flag来推导locSumAbs。相邻参考变换系数的位置和数量可以包括在图4至图6c中描述的内容。可以通过熵编码器240内的莱斯参数推导器242来执行推导莱斯参数的过程。 编码设备可以基于推导出的莱斯参数对abs_remainder的值执行二值化(S810)。在二值化过程中,上述描述可以应用于图3的描述中包括的英语说明的第5节(abs_remainder的二值化处理)。编码设备可以通过二值化过程来推导abs_remainder的bin串。二值化过程可以由熵编码器240内的二值化器244执行。根据本公开,如上所述,可以基于莱斯参数来自适应地确定用于abs_remainder的值的bin串的长度。例如,如表23所表示,可以基于莱斯参数来自适应地确定要编码的值的长度。根据本公开,可以基于相邻参考变换系数来推导用于当前变换系数的abs_remainder的值的莱斯参数,并且因此,针对当前变换系数的abs_remainder的值,可以自适应地指派比使用固定莱斯参数时相对更短的bin串。 对于本领域技术人员来说显而易见的是,对于不使用莱斯参数而基于FL进行二值化的sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag等,可以省略推导莱斯参数的过程。sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag等可以不基于莱斯参数来二值化,而是根据图3的描述中所包括的英语说明的第4节(固定长度二值化处理)来二值化。 编码设备可以基于abs_remainder的bin串来执行熵编码(S820)。编码设备可以基于诸如上下文自适应算术编码(CABAC)或上下文自适应可变长度编码(CAVLC)之类的熵编码技术,基于上下文来对bin串进行熵编码,并且其输出可以被包括在比特流中。熵编码过程可以由熵编码器240内的熵编码处理器246执行。如上所述,比特流可以包括诸如预测信息之类的用于图像/视频解码的各种信息以及包括关于abs_remainder的信息的残差信息。比特流可以通过(数字)存储介质或网络向解码设备传送。 图9a和图9b是例示了根据实施方式的熵解码器的配置和操作方法的图。 参照图9a和图9b,解码设备(熵解码器)可以对经编码的残差信息进行解码以推导(量化)变换系数。如上所述,解码设备可以对当前块(当前CB或当前TB)的经编码的编码残差信息进行解码,以推导(量化)变换系数。例如,解码设备可以对与如表1中表示的残差信息有关的各种语法元素进行解码,并且基于相关语法元素的值来推导(量化)变换系数。 具体地,解码设备可以推导用于abs_remainder的莱斯参数(S900)。如上所述,可以基于相邻参考变换系数来推导莱斯参数。具体地,可以基于上述locSumAbs来推导用于当前扫描位置(的变换系数)的莱斯参数,并且可以基于相邻参考变换系数的AbsLevel和/或sig_coeff_flag来推导locSumAbs。相邻参考变换系数的位置和数量可以包括图4至图6c中的上述描述。可以通过熵解码器310内的莱斯参数推导器312来执行推导莱斯参数的过程。 解码设备可以基于推导出的莱斯参数对abs_remainder执行二值化(S910)。在二值化过程中,上述描述可以应用于图3的描述中包括的英语说明的第5节(abs_remainder的二值化处理)。解码设备可以通过二值化过程推导用于abs_remainder的可用值的可用bin串。二值化过程可以由熵解码器310中的二值化器314执行。根据本公开,如上所述,可以基于莱斯参数来自适应地确定用于abs_remainder的值的bin串的长度。例如,如表23所表示,可以基于莱斯参数来自适应地确定要编码的值的长度。根据本公开,可以基于相邻参考变换系数来推导用于当前变换系数的abs_remainder的值的莱斯参数,并且因此,针对当前变换系数的abs_remainder的值,可以自适应地指派比使用固定莱斯参数时相对更短的bin串。 解码设备可以对abs_remainder执行熵解码(S920)。解码设备可以依次解析和解码用于abs_remainder的每个bin,并将推导出的bin串与可用bin串进行比较。如果推导出的bin串等于可用bin串之一,则与相应bin串相对应的值可以被推导为abs_remainder的值。否则,可以在进一步解析和解码比特流中的下一个比特之后执行比较过程。通过这样的处理,即使不使用针对比特流内的特定信息(特定语法元素)的开始比特或结束比特,也可以通过使用可变长度比特来发信号通知相应信息。因此,解码设备可以为低值指派相对较少的比特,并且提高整体编码效率。 解码设备可以基于诸如CABAC或CAVLC的熵编码技术对来自比特流的bin串内的各个bin执行基于上下文的熵解码。熵解码过程可以由熵解码器310内的熵解码处理器316执行。如上所述,比特流可以包括诸如预测信息之类的用于图像/视频解码的各种信息以及包括关于abs_remainder的信息的残差信息。 对于本领域技术人员来说显而易见的是,对于不使用莱斯参数而基于FL进行二值化的sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag等,可以省略推导莱斯参数的过程。sig_coeff_flag、par_level_flag、rem_abs_gt1_flag、rem_abs_gt2_flag等可以不基于莱斯参数来二值化,而是根据图3的描述中所包括的英语说明的第4节(固定长度二值化处理)来二值化。 如上所述,比特流可以包括诸如预测信息之类的用于图像/视频解码的各种信息以及包括关于abs_remainder的信息的残差信息。如上所述,可以通过(数字)存储介质或网络向解码设备传送比特流。 解码设备可以通过基于(量化)变换系数执行反量化和/或逆变换过程来推导当前块的残差样本。如上所述,可以基于通过帧间/帧内预测推导的预测样本和残差样本来生成重构样本,并且可以生成包括重构样本的重构图片。 图10是例示了根据实施方式的编码设备的熵编码方法的流程图。 以上参照图8a描述的S810和S820可以被包括在图10所示的S1040中。 S1000可以由编码设备的帧间预测器221或帧内预测器222执行,并且S1010、S1020、S1030和S1040可以分别由编码设备的减法器231、变换器232、量化器233和熵编码器240执行。 根据实施方式的编码设备可以通过对当前块的预测来推导预测样本(S1000)。编码设备可以确定对当前块是执行帧间预测还是帧内预测,并且基于RD代价来确定特定帧间预测模式或特定帧内预测模式。根据所确定的模式,编码设备可以推导当前块的预测样本。 根据实施方式的编码设备可以通过将当前块的原始样本与预测样本进行比较来推导残差样本(S1010)。 根据实施方式的编码设备可以通过残差样本的变换过程来推导变换系数(S1020),并且通过对推导出的变换系数进行量化来推导量化变换系数(S1030)。 根据实施方式的编码设备可以对包括预测信息和残差信息的图像信息进行编码,并且以比特流的形式输出编码的图像信息(S1040)。预测信息是与预测过程有关的信息,并且可以包括预测模式信息、关于运动信息(例如,应用帧间预测的情况)的信息等。残差信息是关于量化变换系数的信息,并且可以包括例如上表1中公开的信息。 可以通过存储介质或网络向解码设备传送输出比特流。 图11是例示了根据实施方式的解码设备的熵解码方法的流程图。 以上在图9a中描述的S910至S920可以被包括在图11所示的S1110中。 S1100可以由解码设备的帧间预测器332或帧内预测器331执行。在S1100中,可以由解码设备的熵解码器310来执行对比特流中包括的预测信息进行解码以及推导相关语法元素的值的过程。S1110、S1120、S1130和S1140可以分别由解码设备的熵解码器310、反量化器321、逆变换器322和加法器340执行。 根据实施方式的解码设备可以执行与在编码设备中执行的操作相对应的操作。解码设备可以基于接收到的预测信息对当前块执行帧间预测或帧内预测,并推导预测样本(S1100)。 根据实施方式的解码设备可以基于接收到的残差信息来推导当前块的量化变换系数(S1110)。 根据实施方式的解码设备可以对量化变换系数进行反量化以推导变换系数(S1120)。 根据实施方式的解码设备可以通过对变换系数的逆变换过程来推导残差样本(S1130)。 根据实施方式的解码设备可以基于预测样本和残差样本生成当前块的重构样本,并且基于重构样本来生成重构图片(S1340)。如上所述,此后,可以将环路滤波过程进一步应用于重构图片。 图12是例示了根据实施方式的编码设备的操作的流程图,而图13是例示了根据实施方式的编码设备的配置的框图。 根据图12和图13的编码设备可以与根据图14和图15的解码设备相对应地执行操作。因此,稍后将在图14和图15中描述的解码设备的操作也可以应用于根据图12和图13的编码设备。 图12所示的各步骤可以由图2所示的编码设备200执行。更具体地说,S1200可以由图2所示的减法器231执行,S1210可以由图2所示的变换器232执行,S1220可以由图2所示的量化器233执行,并且S1230可以由图2所示的熵编码器240执行。此外,根据S1200至S1230的操作是基于参照图4至图11的上述描述中的一些的。因此,将省略或简化与参照图2和图4至图11的上述描述交叠的详细描述。 如图13所示,根据实施方式的编码设备可以包括减法器231、变换器232、量化器233和熵编码器240。然而,在一些情况下,图13所示的组件可以并非全部是编码设备的必要组件,并且可以通过比图13所示的组件更多或更少的组件来实现编码设备。 在根据实施方式的编码设备中,减法器231、变换器232、量化器233和熵编码器240也可以分别实现为单独芯片,或者至少两个组件也可以通过单个芯片来实现。 根据实施方式的编码设备可以推导当前块的残差样本(S1200)。更具体地,编码设备的减法器231可以推导当前块的残差样本。 根据实施方式的编码设备可以通过对当前块的残差样本进行变换来推导变换系数(S1210)。更具体地,编码设备的变换器232可以通过对当前块的残差样本进行变换来推导变换系数。 根据实施方式的编码设备可以基于量化处理从变换系数推导量化变换系数(S1220)。更具体地,编码设备的量化器233可以基于量化处理从变换系数推导量化变换系数。 根据实施方式的编码设备可以对包括关于量化变换系数的信息的残差信息进行编码(S1230)。更具体地,编码设备的熵编码器240可以对包括关于量化变换系数的信息的残差信息进行编码。 在实施方式中,残差信息包括变换系数级别信息,并且对残差信息的编码可以包括:通过基于莱斯参数执行对变换系数级别信息的二值化处理来推导变换系数级别信息的二值化值;以及对变换系数级别信息的二值化值进行编码。在示例中,莱斯参数可以被表示为cRiceParam。 在实施方式中,莱斯参数的最大值可以为3。在示例中,cRiceParam的最大值可以为3。 在实施方式中,可以执行初始化处理以推导用于当前块中包括的当前子块的至少一个莱斯参数。 在实施方式中,基于当前变换系数的前一阶的变换系数的上个莱斯参数,推导用于当前子块内的当前变换系数的莱斯参数,并且如果当前变换系数为当前子块的第一变换系数,则用于前一阶的变换系数的上个莱斯参数的值可以为零。在示例中,上个莱斯参数可以被表示为lastRiceParam。在示例中,当前子块的尺寸可以为2×2或4×4。 在实施方式中,可以基于当前变换系数的相邻参考变换系数来推导用于当前变换系数的莱斯参数,并且相邻参考变换系数的数量可以为4或更小。 在实施方式中,可以基于相邻参考变换系数来推导临时和系数,当临时和系数的值小于第一阈值时莱斯参数的值可以被确定为零,在临时和系数的值是第一阈值或更大且小于第二阈值的情况下莱斯参数的值可以被确定为1,在临时和系数的值是第二阈值或更大且小于第三阈值的情况下莱斯参数的值可以被确定为2,并且在临时和系数的值为第三阈值或更大的情况下莱斯参数的值可以被确定为3。在示例中,临时和系数可以表示为locSumAb。 在实施方式中,第一阈值可以为1、2或3,第二阈值可以为4、5或6,并且第三阈值可以为10、11或12。在示例中,第一阈值可以表示为th 根据图12和图13所示的编码设备及编码设备的操作方法,其特征在于,编码设备推导当前块的残差样本(S1200),通过对当前块的残差样本进行变换来推导变换系数(S1210),基于量化处理从变换系数推导量化变换系数(S1220),并且对包括关于量化变换系数的信息的残差信息进行编码(S1230),该残差信息包括变换系数级别信息,并且对残差信息的编码包括通过基于莱斯参数执行对变换系数级别信息的二值化处理来推导变换系数级别信息的二值化值并对变换系数级别信息的二值化值进行编码,并且莱斯参数的最大值为3。即,通过将莱斯参数的最大值设置为3,可以有效地执行残差编码。 图14是例示了根据实施方式的解码设备的操作的流程图,并且图15是例示了根据实施方式的解码设备的配置的框图。 图14所示的各步骤可以由图3所示的解码设备300执行。更具体地,S1400和S1410可以由图3所示的熵解码器310执行,S1420可以由图3所示的反量化器321执行,S1430可以由逆变换器322执行,并且S1440可以由加法器340执行。此外,根据S1400至S1440的操作是基于参照图4至图11的上述描述中的一些的。因此,将省略或简化与图3至图11中的上述描述交叠的详细描述。 如图15所示,根据实施方式的解码设备可以包括熵解码器310、反量化器321、逆变换器322和加法器340。然而,在一些情况下,图15所示的组件可以不全是解码设备的必要组件,并且解码设备可以由比图15所示的组件更多或更少的组件来实现。 在根据实施方式的解码设备中,熵解码器310、反量化器321、逆变换器322和加法器340可以各实现为单独芯片,或者也可以通过单个芯片来实现至少两个组件。 根据实施方式的解码设备可以接收包括残差信息的比特流(S1400)。更具体地,解码设备的熵解码器310可以接收包括残差信息的比特流。 根据实施方式的解码设备可以基于比特流中包括的残差信息来推导当前块的量化变换系数(S1410)。更具体地,解码设备的熵解码器310可以基于比特流中包括的残差信息来推导当前块的量化变换系数。 根据实施方式的解码设备可以基于反量化处理从量化变换系数推导变换系数(S1420)。更具体地,解码设备的反量化器321可以基于反量化处理从量化变换系数推导变换系数。 根据实施方式的解码设备可以通过对推导出的变换系数应用逆变换来推导当前块的残差样本(S1430)。更具体地,解码设备的逆变换器322可以通过对推导出的变换系数应用逆变换来推导当前块的残差样本。 根据实施方式的解码设备可以基于当前块的残差样本来生成重构图片(S1440)。更具体地,解码设备的加法器340可以基于当前块的残差样本来生成重构图片。 在实施方式中,残差信息包括变换系数级别信息,并且量化变换系数的推导可以包括:基于莱斯参数对变换系数级别信息执行二值化处理,基于二值化处理的结果推导变换系数级别信息的值,以及基于变换系数级别信息的值来推导量化变换系数。在示例中,莱斯参数可以表示为cRiceParam。 在实施方式中,莱斯参数的最大值可以是3。在示例中,cRiceParam的最大值可以为3。 在实施方式中,可以执行初始化处理以推导用于当前块中包括的当前子块的至少一个莱斯参数。 在实施方式中,可以基于用于当前变换系数的前一阶的变换系数的上个莱斯参数来推导用于当前子块内的当前变换系数的莱斯参数,并且如果当前变换系数为当前子块的第一变换系数,则用于前一阶的变换系数的上个莱斯参数的值可以为零。在示例中,上个莱斯参数可以被表示为lastRiceParam。在示例中,当前子块的尺寸可以为2×2或4×4。 在实施方式中,可以基于当前变换系数的相邻参考变换系数来推导用于当前变换系数的莱斯参数,并且相邻参考变换系数的数量可以为4或更小。 在实施方式中,可以基于相邻参考变换系数来推导临时和系数,在临时和系数的值小于第一阈值(例如,th 在实施方式中,第一阈值可以为1、2或3,第二阈值可以为4、5或6,并且第三阈值可以为10、11或12。在示例中,第一阈值可以表示为th 根据图14和图15所示的解码设备及解码设备的操作方法,其特征在于,解码设备接收包括残差信息的比特流(S1400),基于比特流中包括的残差信息来推导当前块的量化变换系数(S1410),基于反量化处理从量化变换系数推导变换系数(S1420),并且通过对推导出的变换系数应用逆变换来推导当前块的残差样本(S1430),并且基于当前块的残差样本来生成重构图片(S1440),并且残差信息包括变换系数级别信息,量化变换系数的推导包括:基于莱斯参数执行对变换系数级别信息的二值化处理,基于二值化处理的结果推导变换系数级别信息的值,并基于变换系数级别信息的值推导量化变换系数,并且莱斯参数的最大值为3。即,通过将莱斯参数的最大值设置为3,可以有效地执行残差编码。 在前述实施方式中,尽管基于作为一系列步骤或方框的流程图描述了方法,但是本公开不限于该步骤顺序,并且某一步骤可以以与以上描述的顺序不同的顺序发生或与不同于以上描述的步骤的步骤同时发生。此外,本领域技术人员将理解,流程图中所示的步骤不是排他的,并且可以包括其他步骤,或者可以在不影响本公开范围的情况下删除流程图中的一个或更多个步骤。 根据本公开的前述方法可以以软件的形式实现,并且根据本公开的编码设备和/或解码设备可以被包括在例如TV、计算机、智能手机、机顶盒、显示装置等中的用于执行图像处理的设备中。 当本公开中的实施方式以软件实现时,上述方法可以被实现为用于执行上述功能的模块(处理、功能等)。该模块可以存储在存储器中,并由处理器执行。存储器可以位于处理器内部或外部,并且可以通过各种已知方式与处理器联接。处理器可以包括专用集成电路(ASIC)、其他芯片组、逻辑电路和/或数据处理装置。存储器可以包括只读存储器(ROM)、随机存取存储器(RAM)、闪存、存储卡、存储介质和/或其他存储装置。即,本公开中描述的实施方式可以通过在处理器、微处理器、控制器或芯片上实现来执行。例如,每个附图中所示出的功能单元可以通过在计算机、处理器、微处理器、控制器或芯片上实现来执行。在这种情况下,用于实现的信息(例如,关于指令的信息)或算法可以存储在数字存储介质中。 此外,应用了本公开的解码设备和编码设备可以被包括在多媒体广播收发器、移动通信终端、家庭影院视频装置、数字影院视频装置、监视相机、视频通信装置、诸如视频通信之类的实时通信装置、移动流传输装置、存储介质、便携式摄像机、视频点播(VoD)服务提供器、顶置视频(OTT video)装置、互联网流服务提供器、三维(3D)视频装置、虚拟现实(VR)装置、增强现实(AR)装置、视频电话视频装置、运输终端(例如,车辆(包括自主驾驶车辆)、飞机终端、轮船终端等)以及医疗视频装置等中,并且可以用于处理视频信号或数据信号。例如,顶置视频(OTT视频)装置可以包括游戏机、蓝光播放器、连接互联网的电视、家庭影院系统、智能电话、平板PC、数字视频记录仪(DVR)等。 此外,应用本公开的处理方法可以以计算机执行的程序的形式产生,并且可以存储在计算机可读记录介质中。根据本公开的具有数据结构的多媒体数据也可以存储在计算机可读记录介质中。计算机可读记录介质包括其中存储计算机可读数据的所有类型的存储装置和分布式存储装置。计算机可读记录介质可以包括例如蓝光盘(BD)、通用串行总线(USB)、ROM、PROM、EPROM、EEPROM、RAM、CD-ROM、磁带、软盘和光学数据存储装置。此外,计算机可读记录介质包括以载波(例如,经由互联网的传输)形式实现的介质。此外,通过编码方法生成的比特流可以存储在计算机可读记录介质中或通过有线/无线通信网络来传输。 此外,本公开的实施方式可以通过程序代码实现为计算机程序产品,并且可以根据本公开的实施方式在计算机上执行程序代码。程序代码可以存储在计算机可读载体上。 图16例示了可以应用本文件中公开的公开内容的上下文流系统的示例。 参照图16,应用了本公开的内容流系统可以主要包括编码服务器、流服务器、网络服务器、媒体存储器、用户装置和多媒体输入装置。 编码服务器用于将从诸如智能手机、相机和便携式摄像机之类的多媒体输入装置输入的内容压缩为数字数据,以生成比特流并向流服务器发送比特流。作为另一示例,当诸如智能电话、相机和便携式摄像机之类的多媒体输入装置直接生成比特流时,可以省略编码服务器。 可以通过应用本公开的编码方法或比特流生成方法来生成比特流,并且流服务器可以在发送或接收比特流的处理中临时存储比特流。 流服务器用作通过网络服务器基于用户请求向用户装置发送多媒体数据的媒介,并且网络服务器用作向用户通知哪些服务可用的媒介。如果用户向网络服务器请求所需的服务,则网络服务器向流服务器传递请求,并且流服务器向用户发送多媒体数据。此时,内容流系统可以包括单独的控制服务器,并且在这种情况下,控制服务器起到控制内容流系统内的装置之间的命令/响应的作用。 流服务器可以从媒体存储器和/或编码服务器接收内容。例如,如果从编码服务器接收内容,则可以实时接收内容。在这种情况下,为了提供平稳的流服务,流服务器可以将比特流存储一定时间。 用户装置的示例可以包括移动电话、智能手机、膝上型计算机、数字广播终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、导航终端、触屏PC、平板PC、超级本、可穿戴装置(例如,智能手表、智能眼镜或头戴式显示器(HMD))、数字TV、台式计算机、数字标牌等。 内容流系统中的每个服务器可以作为分布式服务器来操作,并且在这种情况下,可以以分布式方式处理每个服务器接收的数据。
- 视频图像编码和解码的方法、装置及设备
- 波分复用发送设备、接收设备、中继设备以及传输系统
- 基于多核处理器的图像编码方法及设备
- 图像编码方法及其设备
- 基于输出层集合确定是否参考参数集的图像编码/解码方法和设备及发送比特流的方法
- 具有基于层间预测确定的运动信息的图像编码/解码方法和设备及发送比特流的方法