图像编译系统中残差数据编译的图像解码方法及其装置与流程

文档序号:30012169发布日期:2022-05-11 18:11阅读:197来源:国知局
图像编译系统中残差数据编译的图像解码方法及其装置与流程

1.本公开涉及一种图像编译技术,更具体地,涉及一种图像编译方法及其装置,在图像编译系统中根据当前块的tsrc编译残差数据,在用于当前块的所有最大可用上下文编译的bin被使用的情况下,用于根据简化的残差数据编译结构对后续残差数据进行编译。


背景技术:

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


技术实现要素:

4.技术问题
5.本公开的技术目的是提供一种提高图像编译效率的方法和装置。
6.本公开还提供了一种用于提高残差编译效率的方法和装置。
7.技术方案
8.根据此文档的实施例,提供了一种由解码装置执行的图像解码方法。该方法包括:获得用于当前块的第一变换系数到第n变换系数的语法元素,其中,该语法元素是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素,获得用于当前块的第n+1变换系数到最后变换系数的语法元素,其中该语法元素是根据tsrc的第二残差数据编译结构的语法元素,基于根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素导出当前块的变换系数,基于变换系数导出当前块的残差样本,以及基于残差样本生成重构图片,其中用于第一变换系数到第n变换系数的上下文编译的语法元素的数量等于当前块的上下文编译的bin的最大数量,并且其中根据第二残差数据编译结构的语法元素包括用于变换系数的系数级别信息和符号标志。
9.根据此文档的另一个实施例,提供了一种执行图像解码的解码装置。解码装置包括:熵解码器,其被配置成获得用于当前块的第一变换系数到第n变换系数的语法元素,其中,该语法元素是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素,并且获得用于当前块的第n+1变换系数到最后变换系数的语法元素,其中该语法元素是根据tsrc的第二残差数据编译结构的语法元素;残差处理器,该残差处理器被配置成基于根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素导出当前块的变换系数,并且基于变换系数导出当前块的残差样本;以及加法器,其被配置成基于残差样本生成重构图片。
10.根据此文档的又一实施例,提供了一种由编码装置执行的图像编码方法。该方法
包括:导出用于当前块的变换系数;生成用于当前块的第一变换系数到第n变换系数的语法元素,其中该语法元素是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素,生成用于当前块的第n+1变换系数到最后变换系数的语法元素,其中该语法元素是根据tsrc的第二残差数据编译结构的语法元素,以及对包括根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素的图像信息进行编码,其中,用于第一变换系数到第n变换系数的上下文编译的语法元素的数量等于当前块的上下文编译的bin的最大数量,并且其中根据第二残差数据编译结构的语法元素包括用于变换系数的系数级别信息和符号标志。
11.根据此文档的又一实施例,提供了一种图像编码装置。该编码装置包括:残差处理器,其被配置成导出用于当前块的变换系数;和熵编码器,其被配置成生成用于当前块的第一变换系数到第n变换系数的语法元素,其中该语法元素是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素,生成用于当前块的第n+1变换系数到最后变换系数的语法元素,其中该语法元素是根据tsrc的第二残差数据编译结构的语法元素,并且对包括根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素的图像信息进行编码,其中,用于第一变换系数到第n变换系数的上下文编译的语法元素的数量等于当前块的上下文编译的bin的最大数量,并且其中根据第二残差数据编译结构的语法元素包括用于变换系数的系数级别信息和符号标志。
12.根据此文档的又一实施例,提供了一种存储比特流的非暂时性计算机可读存储介质,该比特流包括使图像解码方法被执行的图像信息。在非暂态计算机可读存储介质中,图像解码方法包括:获得用于当前块的第一变换系数到第n变换系数的语法元素,其中,该语法元素是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素,获得用于当前块的第n+1变换系数到最后变换系数的语法元素,其中该语法元素是根据tsrc的第二残差数据编译结构的语法元素,基于根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素导出当前块的变换系数,基于变换系数导出当前块的残差样本,以及基于残差样本生成重构图片,其中第一变换系数到第n变换系数的上下文编译的语法元素的数量等于当前块的上下文编译的bin的最大数量,并且其中根据第二残差数据编译结构的语法元素包括用于变换系数的系数级别信息和符号标志。
13.有益效果
14.根据本公开,可以改进残差编译的效率。
15.根据本公开,当在tsrc中消耗用于当前块的最大数量的上下文编译的bin时,可以用信号发送根据简化的残差数据编译结构的语法元素,并且通过这样,旁路编译的语法元素的编译复杂度被降低,并且整体残差编译效率可以被改进。
16.根据本公开,作为旁路编译的语法元素的编译顺序,可以使用语法元素优先的顺序,并且通过这样,可以改进旁路编译的语法元素的编译效率,并且可以改进整体残差编译效率。
附图说明
17.图1简要图示可应用本公开的实施例的视频/图像编译设备的示例。
18.图2是图示可以应用本公开的实施例的视频/图像编码装置的配置的示意图。
19.图3是图示可以应用本公开的实施例的视频/图像解码装置的配置的示意图。
20.图4示例性地示出用于对语法元素进行编码的上下文自适应二进制算术编译(cabac)。
21.图5是示出4
×
4块内的示例性变换系数的图。
22.图6图示其中在tsrc中对语法元素进行编译的示例。
23.图7图示其中在tsrc中对语法元素进行编译的另一示例。
24.图8图示其中在tsrc中对语法元素进行编译的另一示例。
25.图9图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在tsrc中对旁路编译的语法元素进行编译的示例。
26.图10图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在tsrc中对旁路编译的语法元素进行编译的示例。
27.图11图示其中在简化的残差数据编译结构中对语法元素进行编译的示例。
28.图12图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在简化的残差数据编译结构中对旁路编译的语法元素进行编译的示例。
29.图13a和图13b图示其中在简化的残差数据编译结构中语法元素被编译的实施例。
30.图14a和图14b图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在简化的残差数据编译结构中对旁路编译的语法元素进行编译的示例。
31.图15图示其中在简化的残差数据编译结构中语法元素被编译的实施例。
32.图16图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在简化的残差数据编译结构中对旁路编译的语法元素进行编译的示例。
33.图17简要图示根据本公开的编码装置执行的图像编码方法。
34.图18简要图示根据本公开的用于执行图像编码方法的编码装置。
35.图19简要图示根据本公开的解码装置执行的图像解码方法。
36.图20简要图示根据本公开的用于执行图像解码方法的解码装置。
37.图21图示应用本公开的内容流传输系统的结构图。
具体实施方式
38.本公开可以以各种形式修改,并且将在附图中描述和例示其特定实施例。然而,实施例并非旨在限制本公开。在以下描述中使用的术语仅用于描述特定实施例,并非旨在限制本公开。只要清楚地以不同的方式理解,单数的表达包括复数的表达。诸如“包括”和“具有”之类的术语旨在表示存在以下描述中使用的特征、数量、步骤、操作、元件、组件或其组合,因此应理解的为不排除存在或添加一个或更多个不同的特征、数量、步骤、操作、元件、组件或其组合的可能性。
39.此外,在本公开中描述的附图中的元件是为了方便地解释不同的特定功能而独立地绘制的,并不意味着这些元件由独立的硬件或独立的软件来体现。例如,可以将元件中的两个或更多个元件组合以形成单个元件,或者可以将一个元件分割为多个元件。其中组合元件和/或分割元件的实施例属于本公开,而没有脱离本公开的概念。
40.在下文中,将参照附图详细描述本公开的实施例。另外,在整个附图中,相似的附图标志用于指示相似的元件,并且将省略对相似元件的相同描述。
41.图1简要图示可应用本公开的实施例的视频/图像编译设备的示例。
42.参照图1,视频/图像编译系统可以包括第一设备(源设备)和第二设备(接收设备)。源设备可以经由数字存储介质或网络以文件或流的形式向接收设备发送编码视频/图像信息或数据。
43.源设备可以包括视频源、编码装置和发送器。接收设备可以包括接收器、解码装置和渲染器。编码装置可以称为视频/图像编码装置,并且解码装置可以称为视频/图像解码装置。发送器可以包括在编码装置中。接收器可以包括在解码装置中。渲染器可以包括显示器,并且显示器可以被配置为单独的设备或外部组件。
44.视频源可以通过捕获、合成或生成视频/图像的处理来获取视频/图像。视频源可以包括视频/图像捕获设备和/或视频/图像生成设备。视频/图像捕获设备可以包括例如一个或更多个相机、包括先前捕获的视频/图像的视频/图像档案等。视频/图像生成设备可以包括例如计算机、平板电脑和智能电话,并且可以(电子地)生成视频/图像。例如,可以通过计算机等生成虚拟视频/图像。在这种情况下,视频/图像捕获处理可以由生成相关数据的处理代替。
45.编码装置可以对输入的视频/图像进行编码。编码装置可以执行诸如预测、变换和量化的一系列过程,以实现压缩和编译效率。编码数据(编码视频/图像信息)可以以比特流的形式输出。
46.发送器可以通过数字存储介质或网络以文件或流的形式向接收设备的接收器发送以比特流形式输出的编码后的图像/图像信息或数据。数字存储介质可以包括诸如usb、sd、cd、dvd、蓝光、hdd、ssd等的各种存储介质。发送器可以包括用于通过预定文件格式生成媒体文件的元件,并且可以包括用于通过广播/通信网络进行发送的元件。接收器可以接收/提取比特流,并向解码装置发送接收到的比特流。
47.解码装置可以通过执行与编码装置的操作相对应的诸如解量化、逆变换和预测之类的一系列过程,来对视频/图像进行解码。
48.渲染器可以渲染经解码的视频/图像。经渲染的视频/图像可以通过显示器显示。
49.本公开涉及视频/图像编译。例如,本公开中所公开的方法/实施例可以应用于在多功能视频编译(vvc)、evc(基本视频编译)标准、aomedia video 1(av1)标准、第2代音频视频编译标准(avs2)或下一代视频/图像编译标准(例如,h.267、或h.268等)中公开的方法。
50.本公开呈现了视频/图像编译的各种实施例,并且除非另外提及,否则实施例可以彼此组合地执行。
51.在本公开中,视频可以是指随时间推移的一系列图像。通常,图片是指表示特定时区中的一个图像的单元,并且子图片/切片/图块(tile)是构成编译中的图片的一部分的单元。子图片/切片/图块可以包括一个或多个编译树单元(ctu)。一个图片可以由一个或多个子图片/切片/图块构成。一个图片可以由一个或多个图块组构成。一个图块组可以包括一个或多个图块。拼块(brick)可以表示图片中的图块内的ctu行的矩形区域。图块可以被分区为多个拼块,每个拼块由图块内的一个或多个ctu行组成。没有被分区为多个拼块的图块也可以被称为拼块。拼块扫描可以对图片进行分区的ctu的特定顺序排序,其中,在拼块中按ctu光栅扫描对ctu进行连续排序,按图块的拼块的光栅扫描对图块内的拼块进行连续排
序,并且按图片的图块的光栅扫描对图片中的图块进行连续排序。另外,子图片可以表示图片内的一个或多个切片的矩形区域。即,子图片包含共同覆盖图片的矩形区域的一个或多个切片。图块是图片中的特定图块列和特定图块行内的ctu的矩形区域。图块列是ctu的矩形区域,该矩形区域的高度等于图片的高度并且宽度由图片参数集中的语法元素指定。图块行是ctu的矩形区域,该矩形区域的高度由图片参数集中的语法元素指定并且宽度等于图片的宽度。图块扫描是对图片进行分区的ctu的特定顺序排序,其中,可以在图块中按ctu光栅扫描对ctu进行连续排序,而可以按图片的图块的光栅扫描对图片中的图块进行连续排序。切片包括图片的可以被排他性地包含在单个nal单元中的整数个拼块。切片可以由多个完整图块组成或者仅由一个图块的连续序列的完整拼块组成。在本公开中,可以互换地使用图块组和切片。例如,在本公开中,图块组/图块组头可以被称为切片/切片头。
52.像素或像元(pel)可以表示组成一个图片(或图像)的最小单位。另外,“样本”可以用作与像素相对应的术语。样本通常可以表示像素或像素值,并且可以仅表示亮度分量的像素/像素值或仅表示色度分量的像素/像素值。
53.单元可以表示图像处理的基本单位。单元可以包括图片的特定区域和与该区域有关的信息中的至少一个。一个单元可以包括一个亮度块和两个色度(例如,cb、cr)块。在一些情况下,单元可以与诸如块或区域之类的术语互换使用。在一般情况下,m
×
n块可以包括m列和n行的样本(或样本阵列)或变换系数的集合(或阵列)。
54.在本说明书中,“a或b”可以是指“仅a”、“仅b”或“a和b”。换言之,在本说明书中,“a或b”可以被解释为“a和/或b”。例如,“a、b或c”在本文中是指“仅a”、“仅b”、“仅c”或“a、b和c的任何一个和任何组合”。
55.本说明书中使用的斜线(/)或逗号(comma)可以是指“和/或”。例如,“a/b”可以是指“a和/或b”。因此,“a/b”可以是指“仅a”、“仅b”或“a和b”。例如,“a,b,c”可以是指“a、b或c”。
56.在本说明书中,“a和b中的至少一个”可以是指“仅a”、“仅b”或“a和b两者”。另外,在本说明书中,表述“a或b中的至少一个”或“a和/或b中的至少一个”可以被解释为与“a和b中的至少一个”相同。
57.另外,在本说明书中,“a、b和c中的至少一个”是指“仅a”、“仅b”、“仅c”或“a、b和c的任意组合”。此外,“a、b或c中的至少一个”或“a、b和/或c中的至少一个”可以是指“a、b和c中的至少一个”。
58.此外,本说明书中使用的括号可以是指“例如”。具体地,当指示“预测(帧内预测)”时,可能将“帧内预测”作为“预测”的示例提出。换言之,本说明书中的“预测”不限于“帧内预测”,可以将“帧内预测”作为“预测”的示例提出。此外,即使当指示“预测(即,帧内预测)”时,“帧内预测”也可以作为“预测”的示例提出。
59.在本说明书中,在一个图中单独描述的技术特征可以单独实现或可以同时实现。
60.创建以下附图以解释本说明书的具体示例。由于附图中描述的特定设备的名称或特定信号/消息/字段的名称通过示例呈现,因此本说明书的技术特征不限于在以下附图中使用的特定名称。
61.图2是图示可以应用本公开的实施例的视频/图像编码装置的配置的示意图。在下文中,视频编码装置可以包括图像编码装置。
62.参照图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。
63.图像分割器210可以将输入到编码装置200的输入图像(或图片或帧)分割到一个或更多个处理器中。例如,处理器可以被称为编译单元(cu)。在这种情况下,可以根据四叉树二叉树三叉树(qtbttt)结构从编译树单元(ctu)或最大编译单元(lcu)来递归地分割编译单元。例如,一个编译单元可以基于四叉树结构、二叉树结构和/或三元结构而被分割为深度更深的多个编译单元。在这种情况下,例如,可以首先应用四叉树结构,随后可以应用二叉树结构和/或三元结构。另选地,可以首先应用二叉树结构。可以基于不再分割的最终编译单元来执行根据本公开的编译过程。在这种情况下,可以根据图像特性基于编译效率将最大编译单元用作最终编译单元,或者如果需要,可以将编译单元递归地分割为深度更深的编译单元并且具有最佳大小的编译单元可以用作最终编译单元。这里,编译过程可以包括预测、变换和重构的过程,这将在后面描述。作为另一示例,处理器还可以包括预测单元(pu)或变换单元(tu)。在这种情况下,可以从上述最终编译单元来分离或分割预测单元和变换单元。预测单元可以是样本预测的单元,并且变换单元可以是用于导出变换系数的单元和/或用于从变换系数导出残差信号的单元。
64.在一些情况下,单元可以与诸如块或区域之类的术语互换使用。在一般情况下,m
×
n块可以表示由m列和n行组成的样本或变换系数的集合。样本通常可以表示像素或像素值,可以仅表示亮度分量的像素/像素值,或者仅表示色度分量的像素/像素值。样本可用作与像素或像元的一个图片(或图像)相对应的术语。
65.在编码装置200中,从输入图像信号(原始块、原始样本阵列)中减去从帧间预测器221或帧内预测器222输出的预测信号(预测块、预测样本阵列),以生成残差信号(残差块、残差样本阵列)并且所生成的残差信号被发送到变换器232。在这种情况下,如图所示,在编码器200中用于从输入图像信号(原始块、原始样本阵列)减去预测信号(预测块、预测样本阵列)的单元可以称为减法器231。预测器可以对要处理的块(在下文中称为当前块)执行预测,并生成包括当前块的预测样本的预测块。预测器可以以当前块或cu为基础来确定是应用帧内预测还是应用帧间预测。如稍后在每个预测模式的描述中所述,预测器可以生成与预测有关的、诸如预测模式信息之类的各种信息,并向熵编码器240发送所生成的信息。关于预测的信息可以在熵编码器240中编码并以比特流的形式输出。
66.帧内预测器222可以通过参考当前图片中的样本来预测当前块。根据预测模式,参考的样本可以位于当前块的附近,或者可以远离当前块。在帧内预测中,预测模式可以包括多个非定向模式和多个定向模式。非定向模式可以包括例如dc模式和平面模式。根据预测方向的详细程度,定向模式可以包括例如33个定向预测模式或65个定向预测模式。然而,这仅是示例,依据设置,可以使用更多或更少的定向预测模式。帧内预测器222可以通过使用
应用于相邻块的预测模式来确定应用于当前块的预测模式。
67.帧间预测器221可以基于由参考图片上的运动矢量指定的参考块(参考样本阵列)来导出当前块的预测块。这里,为了减少在帧间预测模式下发送的运动信息的量,可以基于相邻块和当前块之间的运动信息的相关性,以块、子块或样本为单位来预测运动信息。运动信息可以包括运动矢量和参考图片索引。运动信息还可包括帧间预测方向(l0预测、l1预测、bi预测等)信息。在帧间预测的情况下,相邻块可以包括存在于当前图片中的空间相邻块和存在于参考图片中的时间相邻块。包括参考块的参考图片和包括时间相邻块的参考图片可以相同或不同。时间相邻块可以称为并置参考块、共位cu(colcu)等,并且包括时间相邻块的参考图片可以称为并置图片(colpic)。例如,帧间预测器221可以基于相邻块来配置运动信息候选列表,并且生成指示使用哪个候选来导出当前块的运动矢量和/或参考图片索引的信息。可以基于各种预测模式来执行帧间预测。例如,在跳过模式和合并模式的情况下,帧间预测器221可以将相邻块的运动信息用作当前块的运动信息。在跳过模式下,与合并模式不同,可能无法发送残差信号。在运动矢量预测(mvp)模式的情况下,可以将相邻块的运动矢量用作运动矢量预测子,并且可以通过发信号通知运动矢量差来指示当前块的运动矢量。
68.预测器220可以基于以下描述的各种预测方法来生成预测信号。例如,预测器不仅可以应用帧内预测或帧间预测来预测一个块,而且可以同时应用帧内预测和帧间预测二者。这可以称为帧间帧内组合预测(ciip)。另外,预测器可以基于帧内块复制(ibc)预测模式或调色板模式来预测块。ibc预测模式或调色板模式可用于游戏等的内容图像/视频编译,例如,屏幕内容编码(scc)。ibc基本上在当前图片中执行预测,但是可以类似于帧间预测来执行ibc,因为参考块是在当前图片中导出的。即,ibc可以使用本公开中描述的帧间预测技术中的至少一种。调色板模式可以被视为帧内编译或帧内预测的示例。当应用调色板模式时,可以基于关于调色板表和调色板索引的信息来发信号通知图片内的样本值。
69.由预测器(包括帧间预测器221和/或帧内预测器222)生成的预测信号可以用于生成重构信号或生成残差信号。变换器232可以通过向残差信号应用变换技术来生成变换系数。例如,变换技术可以包括离散余弦变换(dct)、离散正弦变换(dst)、karhunen-lo
è
ve变换(klt)、基于图的变换(gbt)或条件非线性变换(cnt)中的至少一种。这里,gbt表示当像素之间的关系信息由图表示时从图获得的变换。cnt是指基于使用所有先前重构的像素生成的预测信号而生成的变换。另外,变换处理可以应用于具有相同大小的正方形像素块,或者可以应用于具有可变大小而非正方形的块。
70.量化器233可以对变换系数进行量化,并且将它们发送给熵编码器240,并且熵编码器240可以对量化信号(关于量化变换系数的信息)进行编码并且输出比特流。关于量化变换系数的信息可以称为残差信息。量化器233可以基于系数扫描顺序将块类型量化变换系数重新布置为一维矢量形式,并且基于一维矢量形式的量化变换系数来生成关于量化变换系数的信息。可以生成关于变换系数的信息。熵编码器240可以执行各种编码方法,诸如,例如指数哥伦布(golomb)、上下文自适应变长编译(cavlc)、上下文自适应二进制算术编译(cabac)等。熵编码器240可以对除了量化变换系数以外的视频/图像重构所需的信息(例如,语法元素的值等)一起或分开地进行编码。可以以比特流的形式以nal(网络抽象层)为单位发送或存储编码信息(例如,编码视频/图像信息)。视频/图像信息还可以包括关于诸
如自适应参数集(aps)、图片参数集(pps)、序列参数集(sps)或视频参数集(vps)之类的各种参数集的信息。另外,视频/图像信息还可包括一般约束信息。在本公开中,从编码装置向解码装置发送/发信号通知的信息和/或语法元素可以包括在视频/图片信息中。视频/图像信息可以通过上述编码过程被编码并且被包括在比特流中。比特流可以通过网络发送,或者可以存储在数字存储介质中。网络可以包括广播网络和/或通信网络,并且数字存储介质可以包括诸如usb、sd、cd、dvd、蓝光、hdd、ssd等的各种存储介质。可以包括发送从熵编码器240输出的信号的发送器(未示出)和/或存储该信号的存储单元(未示出)作为编码装置200的内部/外部元件,另选地,发送器可以包括在熵编码器240中。
71.从量化器233输出的量化变换系数可以用于生成预测信号。例如,可以通过利用解量化器234和逆变换器235对量化变换系数应用解量化和逆变换,来重构残差信号(残差块或残差样本)。加法器250将重构的残差信号与从帧间预测器221或帧内预测器222输出的预测信号相加,以生成重构信号(重构图片、重构块、重构样本阵列)。如果要处理的块没有残差(诸如应用了跳过模式的情况),则可以将预测块用作重构块。加法器250可以称为重构器或重构块生成器。所生成的重构信号可以用于在当前图片中要处理的下一块的帧内预测,并且可以通过如下所述的滤波用于下一图片的帧间预测。
72.此外,在图片编码和/或重构期间,可以应用具有色度缩放的亮度映射(lmcs)。
73.滤波器260可以通过对重构信号应用滤波来改善主观/客观图像质量。例如,滤波器260可以通过对重构图片应用各种滤波方法来生成修改后的重构图片,并将修改后的重构图片存储在存储器270(具体地,存储器270的dpb)中。各种滤波方法可包括例如去块滤波、样本自适应偏移、自适应环路滤波器、双边滤波器等。滤波器260可以生成与滤波有关的各种信息,并且将生成的信息发送给熵编码器240,如稍后在各种滤波方法的描述中所述。与滤波有关的信息可以由熵编码器240编码并且以比特流的形式输出。
74.发送给存储器270的修改后的重构图片可以用作帧间预测器221中的参考图片。当通过编码装置应用帧间预测时,可以避免编码装置200与解码装置之间的预测不匹配,并且可以提高编译效率。
75.存储器270的dpb可以存储用作帧间预测器221中的参考图片的修改后的重构图片。存储器270可以存储从中导出(或编码)当前图片中的运动信息的块的运动信息和/或图片中已重构的块的运动信息。所存储的运动信息可以发送给帧间预测器221,并且用作空间相邻块的运动信息或时间相邻块的运动信息。存储器270可以存储当前图片中的重构块的重构样本,并且可以将重构样本传送给帧内预测器222。
76.图3是图示可以应用本公开的实施例的视频/图像解码装置的配置的示意图。
77.参照图3,解码装置300可以包括熵解码器310、残差处理器320、预测器330、加法器340、滤波器350、存储器360。预测器330可以包括帧间预测器332和帧内预测器331。残差处理器320可以包括解量化器321和逆变换器322。根据实施例,熵解码器310、残差处理器320、预测器330、加法器340和滤波器350可以由硬件组件(例如,解码器芯片组或处理器)构成。另外,存储器360可以包括解码图片缓冲器(dpb),或者可以由数字存储介质构成。硬件组件还可以包括存储器360作为内部/外部组件。
78.当输入包括视频/图像信息的比特流时,解码装置300可以与在图2的编码装置中处理视频/图像信息的处理相对应地重构图像。例如,解码装置300可以基于从比特流获得
的块分割相关信息来导出单元/块。解码装置300可以使用在编码装置中应用的处理器来执行解码。因此,解码的处理器可以是例如编译单元,并且可以根据四叉树结构、二叉树结构和/或三叉树结构,从编译树单元或最大编译单元对编译单元进行分割。可以从编译单元导出一个或更多个变换单元。可以通过再现装置来再现通过解码装置300解码并输出的重构图像信号。
79.解码装置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中的至少一个。
80.解量化器321可以对量化变换系数进行解量化并且输出变换系数。解量化器321可以以二维块的形式重新布置量化变换系数。在这种情况下,可以基于在编码装置中执行的系数扫描顺序来执行重新布置。解量化器321可以通过使用量化参数(例如,量化步长信息)对量化变换系数执行解量化,并且获得变换系数。
81.逆变换器322对变换系数进行逆变换以获得残差信号(残差块、残差样本阵列)。
82.预测器可以对当前块执行预测,并生成包括当前块的预测样本的预测块。预测器可以基于从熵解码器310输出的关于预测的信息来确定向当前块应用帧内预测还是帧间预测,并且可以确定具体的帧内/帧间预测模式。
83.预测器320可以基于以下描述的各种预测方法来生成预测信号。例如,预测器不仅可以应用帧内预测或帧间预测来预测一个块,而且可以同时应用帧内预测和帧间预测。这
可以称为帧间和帧内组合预测(ciip)。另外,预测器可以基于帧内块复制(ibc)预测模式或调色板模式来预测块。ibc预测模式或调色板模式可以用于游戏等的内容图像/视频编译,例如,屏幕内容编译(scc)。ibc基本上在当前图片中执行预测,但是可以类似于帧间预测来执行ibc,因为在当前图片中导出参考块。即,ibc可以使用本公开中描述的帧间预测技术中的至少一种。调色板模式可以被视为帧内编译或帧内预测的示例。当应用调色板模式时,可以基于关于调色板表和调色板索引的信息来发信号通知图片内的样本值。
84.帧内预测器331可以通过参考当前图片中的样本来预测当前块。根据预测模式,参考的样本可以位于当前块的附近,或者可以远离当前块。在帧内预测中,预测模式可以包括多个非定向模式和多个定向模式。帧内预测器331可以通过使用应用于相邻块的预测模式来确定应用于当前块的预测模式。
85.帧间预测器332可以基于由参考图片上的运动矢量指定的参考块(参考样本阵列)来导出当前块的预测块。在这种情况下,为了减少在帧间预测模式中发送的运动信息的量,可以基于相邻块和当前块之间的运动信息的相关性,以块、子块或样本为单位来预测运动信息。运动信息可以包括运动矢量和参考图片索引。运动信息还可包括帧间预测方向(l0预测、l1预测、bi预测等)信息。在帧间预测的情况下,相邻块可以包括存在于当前图片中的空间相邻块和存在于参考图片中的时间相邻块。例如,帧间预测器332可以基于相邻块来配置运动信息候选列表,并基于接收到的候选选择信息来导出当前块的运动矢量和/或参考图片索引。可以基于各种预测模式来执行帧间预测,并且关于预测的信息可以包括指示针对当前块的帧间预测的模式的信息。
86.加法器340可以通过将所获得的残差信号与从预测器(包括帧间预测器332和/或帧内预测器331)输出的预测信号(预测块、预测样本阵列)相加来生成重构信号(重构图片、重构块、重构样本阵列)。如果要处理的块没有残差(例如当应用跳过模式时),则可以将预测块用作重构块。
87.加法器340可以称为重构器或重构块生成器。所生成的重构信号可以用于当前图片中要处理的下一块的帧内预测,可以通过如下所述的滤波输出,或者可以用于下一图片的帧间预测。
88.此外,在图片解码处理中可以应用具有色度缩放的亮度映射(lmcs)。
89.滤波器350可以通过向重构信号应用滤波来改善主观/客观图像质量。例如,滤波器350可以通过对重构图片应用各种滤波方法来生成修改后的重构图片,并将修改后的重构图片存储在存储器360(具体地,存储器360的dpb)中。各种滤波方法可包括例如去块滤波、样本自适应偏移、自适应环路滤波器、双边滤波器等。
90.存储器360的dpb中存储的(修改后的)重构图片可以用作帧间预测器332中的参考图片。存储器360可以存储从中导出(或解码)当前图片中的运动信息的块的运动信息和/或图片中已重构的块的运动信息。所存储的运动信息可以发送给帧间预测器260,以作为空间相邻块的运动信息或时间相邻块的运动信息来利用。存储器360可以存储当前图片中的重构块的重构样本,并且可以将重构样本传送给帧内预测器331。
91.在本公开中,在编码装置200的滤波器260、帧间预测器221和帧内预测器222中描述的实施例可以与解码装置300的滤波器350、帧间预测器332和帧内预测器331相同或者分别被应用以对应于解码装置300的滤波器350、帧间预测器332和帧内预测器331。相同的内
容也可以应用于帧间预测器332和帧内预测器331。
92.在本公开中,可以省略量化/解量化和/或变换/逆变换中的至少一种。当省略量化/解量化时,量化的变换系数可以被称为变换系数。当省略变换/逆变换时,变换系数可以被称为系数或残差系数,或者为了表达的统一性,仍可以被称为变换系数。
93.在本公开中,量化变换系数和变换系数可以分别被称为变换系数和缩放变换系数。在这种情况下,残差信息可以包括关于变换系数的信息,并且可以通过残差编译语法发信号通知关于变换系数的信息。可以基于残差信息(或关于变换系数的信息)导出变换系数,并且可以通过对变换系数逆变换(缩放)来导出缩放变换系数。可以基于对缩放变换系数逆变换(变换)来导出残差样本。这也可以在本公开的其他部分中应用/表达。
94.如上所述,编码装置可以执行各种编码方法,诸如指数哥伦布、上下文自适应可变长度编译(cavlc)和上下文自适应二进制算术编译(cabac)。另外,解码装置可以基于诸如指数哥伦布编译、cavlc或cabac的编译方法,对比特流中的信息进行解码,并且输出图像重构所需的语法元素的值和与残差相关的变换系数的量化值。
95.例如,可以如下所述执行上述编译方法。
96.图4示例性地示出了用于对语法元素进行编码的上下文自适应二进制算术编译(cabac)。例如,在cabac编译过程中,当输入信号是语法元素而不是二进制值时,编码装置可以通过将输入信号的值二值化来将输入信号转换为二进制值。另外,当输入信号已经是二进制值时(即,当输入信号的值是二进制值时),可以不执行二值化并且可以旁路二值化。在此,构成二进制值的每个二进制数0或1可以被称为bin。例如,如果二值化之后的二进制字符串是110,则1、1和0中的每一个被称为一个bin。用于一个语法元素的bin可以指示语法元素的值。
97.此后,可以将语法元素的二值化bin输入到常规编译引擎或旁路编译引擎。编码装置的常规编译引擎可以对相应的bin分配反映概率值的上下文模型,并且可以基于所分配的上下文模型对相应的bin进行编码。在对每个bin进行编码之后,编码装置的常规编译引擎可以更新用于相应bin的上下文模型。如上所述的编码bin可以被称为上下文编译的bin。
98.同时,当语法元素的二值化bin被输入到旁路编译引擎时,它们可以被如下编译。例如,编码装置的旁路编译引擎省略了估计关于输入bin的概率的过程,以及在编码后更新应用于bin的概率模型的过程。当应用旁路编时,编码装置可以通过应用均匀概率分布而不是分配上下文模型来对输入bin进行编码,从而提高编码速度。如上所述的编码bin可以被称为旁路bin。
99.熵解码可以表示以相反的顺序执行与上述熵编码相同的过程的过程。
100.例如,当基于上下文模型对语法元素进行解码时,解码装置可以通过比特流接收与语法元素对应的bin,可以使用语法元素和解码目标块或相邻块的解码信息或者上一步解码的码元/bin的信息来确定上下文模型,可以通过根据所确定的上下文模型预测所接收到的bin的出现概率并且对bin执行算术解码,来导出语法元素的值。此后,可以利用所确定的上下文模型来更新下一个解码bin的上下文模型。
101.此外,例如,当旁路解码语法元素时,解码装置可以通过比特流接收与语法元素对应的bin,并且可以通过应用均匀概率分布来对输入bin进行解码。在这种情况下,解码装置可以省略用于导出语法元素的上下文模型的过程以及用于解码之后更新应用于bin的上下
文模型的过程。
102.如上所述,可以通过变换及量化过程,将残差样本导出为量化变换系数。量化变换系数也可以被称为变换系数。在这种情况下,可以以残差信息的形式发信号通知块中的变换系数。残差信息可以包括残差编译语法。也就是说,编码装置可以利用残差信息来配置残差编译语法,对残差编译语法进行编码,并将其以比特流的形式输出,以及解码装置可以从比特流中解码残差编译语法并导出残差(量化)变换系数。残差编译语法可以包括表示是否变换被应用于相应块、块中的最后有效变换系数的位置、子块中是否存在有效变换系数、有效变换系数的大小/符号等的语法元素,如稍后所述。
103.例如,可以基于语法元素(诸如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_remaind、coeff_sign_flag、dec_abs_level、mts_idx)编码和/或解码(量化)变换系数(即,残差信息)。与残差数据编码/解码相关的语法元素可以如下表所示表示。
104.[表1]
[0105]
[0106]
[0107]
[0108][0109]
transform_skip_flag指示在相关联块中是否跳过变换。transform_skip_flag可以是变换跳过标志的语法元素。相关联块可以是编译块(cb)或变换块(tb)。关于变换(和量化)和残差编译过程,cb和tb可以互换使用。例如,如上所述,可以针对cb导出残差样本,并且可以通过用于残差样本的变换及量化,导出(量化)变换系数,并且通过残差编译程序,可以生成并且发信号通知有效地指示(量化)变换系数的位置、量值、符号(sign)等的信息(例如,语法元素)。量化变换系数可以简单地被称为变换系数。通常,当cb不大于最大tb时,cb的大小可以与tb的大小相同,并且在这种情况下,要变换(和量化)并且残差编译的目标块可以被称为cb或tb。同时,当cb大于最大tb时,要变换(和量化)并且残差编译的目标块可以被称为tb。在下文中,将描述以变换块(tb)为单位发信号通知与残差编译相关的语法元素,但是这是示例,并且tb可以与如上所述的编译块(cb)互换使用。
[0110]
同时,在发信号通知变换跳过标志之后发信号通知的语法元素可以与下表2中所公开的语法元素相同,并且下文描述关于语法元素的详细描述。
[0111]
[表2]
[0112]
[0113]
[0114][0115]
[表3]
[0116]
[0117]
[0118]
[0119]
[0120][0121]
[表4]
[0122]
[0123]
[0124][0125]
根据本实施例,如表2所示,可以根据变换跳过标志的语法元素transform_skip_flag的值来划分残差编译。即,基于变换跳过标志的值(基于是否跳过变换),不同语法元素可用于残差编译。当不应用变换跳过时(即,当应用变换时)使用的残差编译可以被称为常规残差编译(rrc),而当应用变换跳过时(即,当不应用变换时)使用的残差编译可以被称为变换跳过残差编译(tsrc)。此外,常规残差编译可以被称为一般残差编译。此外,常规残差编译可以被称为常规残差编译语法结构,而变换跳过残差编译可以被称为变换跳过残差编译语法结构。上表3可以示出当transform_skip_flag的值为0时(即,当应用变换时)的残差编译的语法元素,而上表4可以示出当transform_skip_flag的值为1时(即,当不应用变换时)的残差编译的语法元素。
[0126]
具体地,例如,可以解析指示是否跳过变换块的变换的变换跳过标志,并且可以确定变换跳过标志是否为1。如果变换跳过标志的值为0,如表3所示,则可以解析用于变换块的残差系数的语法元素last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_
coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gtx_flag、par_level_flag、abs_remainder、coeff_sign_flag和/或dec_abs_level,并且可以基于语法元素导出残差系数。在这种情况下,可以顺序地解析语法元素,并且可以改变解析顺序。另外,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)的示例。
[0127]
参考上表3,可以编码/解码last_sig_coeff_x_prefix、last_sig_coeff_y_prefix、last_sig_coeff_x_suffix、last_sig_coeff_y_suffix、sb_coded_flag、sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_remainder、coeff_sign_flag和/或dec_abs_level。同时,sb_coded_flag可以被表示为coded_sub_block_flag。
[0128]
在实施例中,编码装置可以基于语法元素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)和/或特定帧内/帧间预测模式来确定扫描顺序。
[0129]
此后,编码装置可以将变换块划分为4
×
4子块,然后针对每个4
×
4子块,使用1比特语法元素coded_sub_block_flag来指示当前子块中是否存在非零系数。
[0130]
如果coded_sub_block_flag的值为0,则不再存在要发送的信息,因此,编码装置可以终止对当前子块的编码处理。相反,如果coded_sub_block_flag的值为1,则编码装置可以对sig_coeff_flag连续地执行编码处理。由于包括最后一个非零系数的子块不需要对coded_sub_block_flag进行编码,并且包括变换块的dc信息的子块具有包括非零系数的高概率,因此可以不对coded_sub_block_flag进行编译,并且可以将其值假设为1。
[0131]
如果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可以对应于指示量化变换系数是否是非零有效系数的有效系数标志的语法元素的示例。
[0132]
在编码sig_coeff_flag之后剩余的级别值可以如以下等式所示导出。也就是说,可以从以下等式导出指示待编码的级别值的语法元素remabslevel。
[0133]
[等式1]
[0134]
remabslevel=|coeff|-1
[0135]
在此,coeff表示实际变换系数值。
[0136]
另外,abs_level_gt1_flag可以指示相应扫描位置(n)的remabslevel是否大于1。例如,当abs_level_gt1_flag的值为0时,相应位置的变换系数的绝对值可以为1。另外,当abs_level_gt1_flag的值为1时,指示稍后待被编码的级别值的remabslevel可以如以下等式中所示被更新。
[0137]
[等式2]
[0138]
remabslevel=remabslevel-1
[0139]
另外,上述等式2中描述的remabslevel的最低有效系数(lsb)值可以通过par_level_flag如下面的等式3中那样被编码。
[0140]
[等式3]
[0141]
par_level_flag=|coeff|&1
[0142]
在此,par_level_flag[n]可以指示扫描位置n处的变换系数级别(值)的奇偶性。
[0143]
在执行par_level_flag编码之后要编码的变换系数级别值remabslevel可以如下文在以下等式中所示更新。
[0144]
[等式4]
[0145]
remabslevel=remavslevel>>1
[0146]
abs_level_gt3_flag可以指示相应扫描位置(n)的remabslevel是否大于3。可以仅在rem_abs_gt3_flag等于1的情况下执行对abs_remainder的编码。实际变换系数值coeff与每一语法元素之间的关系可以如下文在以下等式中所示。
[0147]
[等式5]
[0148]
|coeff|=sig_coeff_flag+abs_level_gt1_flag+par_level_flag+2*(abs_level_gt3_flag+aba_remainder)
[0149]
另外,下表指示与上述等式5相关的示例。
[0150]
[表5]
[0151][0152]
在此,|coeff|指示变换系数级别(值),并且还可以被指示为用于变换系数的abslevel。另外,可以通过使用作为1比特码元的coeff_sign_flag来编码每个系数的符号。
[0153]
此外,如果变换跳过标志的值为1,如表4中所示,则可以解析用于变换块的残差系数的语法元素sb_coded_flag、sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag、par_level_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处的变换系数的绝对值或级别(值)是否大于(j《《1)+1的标志。条件(j《《1)+1可以可选地用诸如第一阈值、第二阈值等的特定阈值替换。
[0154]
同时,cabac提供高性能,但不利地具有不良吞吐量性能。这是由cabac的常规编译引擎引起的。常规编码(即,通过cabac的常规编译引擎进行编译)示出高数据相关性,因为其使用通过先前bin的编译而更新的概率状态及范围,并且读取概率区间和确定当前状态会花费大量时间。cabac的吞吐量问题可以通过限制上下文编译的bin的数量来解决。例如,如上述表1或表3所示,用于表示sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag的bin的总和可以限于取决于相应块的大小的bin的数量。此外,例如,如上述表4中所示,可以被用来表示sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag的bin的总和可以限于取决于相应块的大小的bin的数量。例如,如果相应块是4
×
4大小的块,则用于sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag或sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag的bin的总和可以限于32(或示例的28),并且如果相应块是2
×
2大小的块,则用于sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag的bin的总和可以限于8(或示例的7)。可以由rembinspass1或remccbs表示bin的有限数量。或者,例如,对于较高的cabac吞吐量,可以针对包括编译目标cg的块(cb或tb)限制上下文编译的bin的数量。换句话说,可以以块(cb或tb)为单位,限制上下文编译的bin的数量。例如,在当前块的大小为16
×
16时,用于当前块的上下文编译的bin的数量可以限于当前块的像素的数量的1.75倍,即,448,而不管当前cg如何。
[0155]
在这种情况下,如果在对上下文元素进行编译时使用数量有限的所有上下文编译的bin,则编码装置可以通过如下所述的对系数进行二值化的方法来对剩余系数进行二值化,而不是使用上下文编译,并且可以执行旁路编码。换句话说,例如,如果针对4
×
4 cg编译的上下文编译的bin的数量为32(或示例的28),或者如果针对2
×
2 cg编译的上下文编译的bin的数量为8(或示例的7),则可以不再编译用上下文编译的bin编译的sig_coeff_flag、abs_level_gt1_flag、par_level_flag、abs_level_gt3_flag,并且可以将其直接编译成dec_abs_level。或者,例如,当针对4
×
4块编译的上下文编译的bin的数量为整个块的像素的数量的1.75倍时,即,当限于28时,被编译为上下文编译的bin的sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag可以不再被编译,并且可以被直接编译为dec_abs_level,如下表6中所示。
[0156]
[表6]
[0157]
|coeff[n]|dec_abs_level[n]
0011223344556677889910101111......
[0158]
可以基于dec_abs_level导出值|coeff|。在这种情况下,可以如以下等式中所示导出变换系数值(即,|coeff|)。
[0159]
[等式6]
[0160]
|coeff|=dec_abs_level
[0161]
另外,coeff_sign_flag可以指示相应扫描位置n处的变换系数级别的符号。也就是说,coeff_sign_flag可以指示相应扫描位置n处的变换系数的符号。
[0162]
图5示出4
×
4块中的变换系数的示例。
[0163]
图5的4
×
4块表示量化系数的示例。图5的块可以是4
×
4变换块,或8
×
8、16
×
16、32
×
32或64
×
64变换块的4
×
4子块。图5的4
×
4块可以表示亮度块或色度块。
[0164]
同时,如上所述,当输入信号不是二进制值而是语法元素时,编码装置可以通过对输入信号的值进行二值化来将输入信号变换为二进制值。另外,解码装置可以对语法元素进行解码以导出语法元素的二值化值(例如,二值化bin),并且可以对二值化值进行去二值化以导出语法元素的值。二值化过程可以被执行为截断莱斯(tr)二值化过程、k阶指数哥伦布(egk)二值化过程、有限k阶指数哥伦布(有限egk)、固定长度(fl)二值化过程等。另外,去二值化过程可以表示基于tr二值化过程、egk二值化过程或fl二值化过程执行以导出语法元素的值的过程。
[0165]
例如,tr二值化过程可以如下执行。
[0166]
tr二值化过程的输入可以是用于语法元素的cmax和criceparam以及对tr二值化的请求。另外,tr二值化过程的输出可以是用于symbolval的tr二值化,symbolval是对应于bin串的值。
[0167]
具体地,例如,在存在用于语法元素的后缀bin串的情况下,用于语法元素的tr bin串可以是前缀bin串和后缀bin串的级联,并且在不存在后缀bin串的情况下,用于语法元素的tr bin串可以是前缀bin串。例如,可以如下所述导出前缀bin串。
[0168]
可以如以下等式中所示导出用于语法元素的symbolval的前缀值。
[0169]
[等式7]
[0170]
prefixval=symbolval>>criceparam
[0171]
在此,prefixval可以表示symbolval的前缀值。可以如下文所述导出语法元素的tr bin串的前缀(即,前缀bin串)。
[0172]
例如,如果prefixval小于cmax》》criceparam,则前缀bin串可以是长度为由binidx索引的prefixval+1的比特串。也就是说,如果prefixval小于cmax》》criceparam,则前缀bin串可以是由binidx指示的、比特数为prefixval+1的比特串。小于prefixval的binidx的bin可以等于1。另外,用于与prefixval相同的binidx的bin可以等于0。
[0173]
例如,通过prefixval的一元二值化导出的bin串可以如下表中所示。
[0174]
[表7]
[0175][0176]
同时,如果prefixval不小于cmax》》criceparam,则前缀bin串可以是长度为cmax》》criceparam并且所有比特均为1的比特串。
[0177]
另外,如果cmax大于symbolval并且如果criceparam大于0,则可能存在tr bin串的bin后缀bin串。例如,可以如下所述导出后缀bin串。
[0178]
用于语法元素的symbolval的后缀值可以如以下等式中所示导出。
[0179]
[等式8]
[0180]
suffixval=symbolval-((prefixval)<<criceparam)
[0181]
在此,suffixval可以表示symbolval的后缀值。
[0182]
tr bin串(即,后缀bin串)的后缀可以基于用于suffixval的fl二值化过程导出,suffixval的值cmax为(1《《criceparam)-1。
[0183]
同时,如果输入参数的值(即,criceparam)为0,则tr二值化可以是精确截断的一元二值化,并且可以始终使用与待解码的语法元素的可能最大值相同的值cmax。
[0184]
另外,例如,egk二值化过程可以如下执行。用ue(v)编译的语法元素可以是经受指数哥伦布编译的语法元素。
[0185]
例如,可以如下执行0阶指数哥伦布(eg0)二值化过程。
[0186]
用于语法元素的解析过程可以开始于读取包括在比特流的当前位置开始的第一非零比特的比特并且对等于0的前导比特的数量进行计数。该过程可以如下表所示表示。
[0187]
[表8]
[0188][0189]
另外,变量“codenum”可以如以下等式中所示导出。
[0190]
[等式9]
[0191]
codenum=2
leadingzerobits-1+read_bits(leadingzerobits)
[0192]
在此,从read_bits(leadingzerobits)返回的值,即,由read_bits
(leadingzerobits)指示的值可以被解释为用于首先记录的最高有效比特的无符号整数的二进制表示。
[0193]
比特串被划分为“前缀”比特和“后缀”比特的指数-哥伦布码的结构可以如下表所示来表示。
[0194]
[表9]
[0195]
比特串形式codenum的范围100 1 x01..20 0 1 x
1 x03..60 0 0 1 x
2 x
1 x07..140 0 0 0 1 x
3 x
2 x
1 x015..300 0 0 0 0 1 x
1 x
3 x
2 x
1 x031..62......
[0196]“前缀”比特可以是如上所述解析以计算leadingzerobits的比特,并且可以由表9中的比特串的0或1表示。也就是说,由上表9中的0或1公开的比特串可以表示前缀比特串。“后缀”比特可以是在codenum的计算中解析的比特,并且可以由上表9中的xi表示。也就是说,在上表9中公开为xi的比特串可以表示后缀比特串。在此,i可以是leadingzerobits-1的范围内的值。此外,每个xi可以等于0或1。
[0197]
指配给codenum的比特串可以如下表所示。
[0198]
[表10]
[0199]
比特串codenum100 1 010 1 120 0 1 0 030 0 1 0 140 0 1 1 050 0 1 1 160 0 0 1 0 0 070 0 0 1 0 0 180 0 0 1 0 1 09......
[0200]
如果语法元素的描述符为ue(v),即,如果语法元素用ue(v)编译,则语法元素的值可以等于codenum。
[0201]
另外,例如,egk二值化过程可以如下执行。
[0202]
egk二值化过程的输入可以是对egk二值化的请求。另外,egk二值化过程的输出可以是用于symbolval(即,对应于bin串的值)的egk二值化。
[0203]
用于symbolval的egk二值化过程的比特串可以如下导出。
[0204]
[表11]
[0205][0206]
参考上表11,可以通过put(x)的每次调用,将二进制值x添加到bin串的末尾。在此,x可以是0或1。
[0207]
另外,例如,可以如下执行有限egk二值化过程。
[0208]
有限egk二值化过程的输入可以是对有限egk二值化的请求、莱斯(rice)参数riceparam、作为表示最大值的以2为底的对数的变量的log2transformrange,以及作为表示最大前缀扩展长度的变量的maxpreextlen。另外,有限egk二值化过程的输出可以是针对作为对应于空串的值的symbolval的有限egk二值化。
[0209]
用于symbolval的有限egk二值化过程的比特串可以如下导出。
[0210]
[表12]
[0211][0212]
另外,例如,fl二值化过程可以如下执行。
[0213]
fl二值化过程的输入可以是对用于语法元素的fl二值化及cmax的请求。另外,fl二值化过程的输出可以是用于作为对应于bin串的值的symbolval的fl二值化。
[0214]
可以通过使用比特数具有固定长度的symbolval的比特串来配置fl二进制化。在此,固定长度比特可以是无符号整数比特串。也就是说,可以通过fl二值化导出用于作为码元值的symbolval的比特串,并且比特串的比特长度(即,比特数)可以是固定长度。
[0215]
例如,可以如以下等式所示导出固定长度。
[0216]
[等式10]
[0217]
fixedlength=ceil(log2(cmax+1))
[0218]
用于fl二值化的bin的索引可以是使用从最高有效比特到最低有效比特有序增加的值的方法。例如,与最高有效比特相关的bin索引可以是binidx=0。
[0219]
同时,例如,可以如下执行用于残差信息中的语法元素abs_remainder的二值化过程。
[0220]
abs_remainder的二值化过程的输入可以是对语法元素abs_remainder[n]、颜色分量cidx及亮度位置(x0,y0)的二进制化的请求。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。
[0221]
用于abs_remainder的二值化过程的输出可以是abs_remainder的二值化(即,abs_remainder的二值化bin串)。可以通过二值化过程导出用于abs_remainder的可用bin串。
[0222]
可以通过经由输入颜色分量cidx和亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、log2tbwidth(其是变换块的宽度的以2为底的对数)和log2tbheight(其是变换块的高度的以2为底的对数)而执行的莱斯参数导出过程来导出用于abs_remainer[n]的莱斯参数criceparam。稍后将描述rice参数导出过程的详细描述。
[0223]
另外,例如,可以基于莱斯参数criceparam导出用于当前待编译的abs_remainder[n]的cmax。可以如以下等式所示导出cmax。
[0224]
[等式11]
[0225]
cmax=6<<criccparam
[0226]
同时,用于abs_remainder的二值化(即,用于abs_remainder的bin串)可以是在存在后缀bin串的情况下前缀bin串和后缀bin串的级联。另外,在不存在后缀bin串的情况下,用于abs_remainder的bin串可以是前缀bin串。
[0227]
例如,可以如下所述导出前缀bin串。
[0228]
可以如以下等式所示导出abs_remainder[n]的前缀值prefixval。
[0229]
[等式12]
[0230]
prefixval=min(cmax,abs_remainder[n])
[0231]
可以通过用于prefixval的tr二值化过程,导出abs_remainder[n]的bin串的前缀(即,前缀bin串),其中,cmax和criceparam被用作输入。
[0232]
如果前缀bin串与所有比特均为1且比特长度为6的比特串相同,则abs_remainder[n]的bin串的后缀bin串可能存在,并且可如下所述导出。
[0233]
用于dec_abs_level[n]的莱斯参数导出过程可以如下。
[0234]
莱斯参数导出过程的输入可以是颜色分量索引cidx、亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、作为变换块的宽度的以2为底的对数的log2tbwidth及作为变换块的高度的以2为底的对数的log2tbheight。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。此外,莱斯参数导出过程的输出可以是莱斯参数criceparam。
[0235]
例如,可以类似于下表中所公开的伪码,基于具有给定分量索引cidx及左上亮度位置(x0,y0)的变换块的阵列abslevel[x][y],导出变量locsumabs。
[0236]
[表13]
[0237][0238]
然后,基于给定的变量locsumabs,可以如下表所示导出莱斯参数criceparam。
[0239]
[表14]
[0240]
locsumabs0123456789101112131415criccparam0000000111111122locsumabs16171819202122232425262728293031criceparam2222222222223333
[0241]
此外,例如,在用于abs_remainder[n]的莱斯参数导出过程中,可以将baselevel设置为4。
[0242]
可替代地,例如,可以基于变换跳过是否应用于当前块来确定莱斯参数criceparam。也就是说,如果不将变换应用于包括当前cg的当前tb,换句话说,如果将变换跳过应用于包括当前cg的当前tb,那么可以将莱斯参数criceparam导出为1。
[0243]
此外,可以如以下等式所示导出abs_remainder的后缀值suffixval。
[0244]
[等式13]
[0245]
suffixval=abs_remainder[n]-cmax
[0246]
可以通过用于suffixval的有限egk二值化过程导出abs_remainder的bin串的后缀bin串,其中,k被设置为criceparam+1,riceparam被设置为criceparam,log2transformrange被设置为15,以及maxpreextlen被设置为11。
[0247]
同时,例如,可以如下执行用于残差信息中的语法元素dec_abs_level的二值化过程。
[0248]
用于dec_abs_level的二值化过程的输入可以是对语法元素dec_abs_level[n]、颜色分量cidx、亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、作为变换块的宽度的以2为底的对数的log2tbwidth及作为变换块的高度的以2为底的对数的log2tbheight的二值化的请求。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。
[0249]
用于dec_abs_level的二值化过程的输出可以是dec_abs_level的二值化(即,dec_abs_level的二值化bin串)。可以通过二值化过程导出用于dec_abs_level的可用bin串。
[0250]
可以通过利用颜色分量cidx、亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、作为
变换块的宽度的以2为底的对数的log2tbwidth和作为变换块的高度的以2为底的对数的log2tbheight的输入执行的莱斯参数导出过程来导出用于dec_abs_level[n]的莱斯参数criceparam。在下文中,将详细地描述莱斯参数导出过程。
[0251]
另外,例如,可以基于莱斯参数criceparam导出用于dec_abs_level[n]的cmax。可以如下表所示导出cmax。
[0252]
[等式14]
[0253]
cmax=6<<criccparam
[0254]
同时,用于dec_abs_level[n](即,用于dec_abs_level[n]的bin串)的二值化可以是在存在后缀bin串的情况下前缀bin串和后缀bin串的级联。另外,在不存在后缀bin串的情况下,用于dec_abs_level[n]的bin串可以是前缀bin串。
[0255]
例如,可以如下所述导出前缀bin串。
[0256]
可以如以下等式中所示导出dec_abs_level[n]的前缀值prefixval。
[0257]
[等式15]
[0258]
prefixval=min(cmax,dec_abs_level[n])
[0259]
可以通过用于prefixval的tr二值化过程导出dec_abs_level[n]的bin串的前缀(即,前缀bin串),其中,cmax和criceparam被用作输入。
[0260]
如果前缀bin串与所有比特为1且比特长度为6的比特串相同,则dec_abs_level[n]的bin串的后缀bin串可以存在,并且可以如下所述导出。
[0261]
用于dec_abs_level[n]的莱斯参数导出过程可以如下。
[0262]
莱斯参数导出过程的输入可以是颜色分量索引cidx、亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、作为变换块的宽度的以2为底的对数的log2tbwidth及作为变换块的高度的以2为底的对数的log2tbheight。亮度位置(x0,y0)可以指示基于图片的左上亮度样本的当前亮度变换块的左上样本。此外,莱斯参数导出过程的输出可以是莱斯参数criceparam。
[0263]
例如,可以类似于下表中所公开的伪码,基于具有给定分量索引cidx及左上亮度位置(x0,y0)的变换块的阵列abslevel[x][y],导出变量locsumabs。
[0264]
[表15]
[0265][0266]
然后,基于给定的变量locsumabs,可以如下表所示导出莱斯参数criceparam。
[0267]
[表16]
[0268]
locsumabs0123456789101112131415criccparam0000000111111122locsumabs16171819202122232425262728293031criceparam2222222222223333
[0269]
此外,例如,在用于dec_abs_level[n]的莱斯参数导出过程中,可以将baselevel设置为0,并且可以如下导出zeropos[n]。
[0270]
[等式16]
[0271]
zeropos[n]=(qstate<2?1:2)<<criceparam
[0272]
另外,可以如以下等式中所示导出dec_abs_level[n]的后缀值suffixval。
[0273]
[等式17]
[0274][0275]
可以通过用于suffixval的有限egk二值化过程,导出dec_abs_level[n]的bin串的后缀bin串,其中,k被设置为criceparam+1,truncsuffixlen被设置为15,并且maxpreextlen被设置为11。
[0276]
同时,rrc和tsrc可以具有以下差异。
[0277]-例如,在tsrc中,可以将用于语法元素abs_remainder[]的莱斯参数导出为1。可以基于如上所述的lastabsremainder及lastriceparam导出rrc中的语法元素abs_remainder[]的莱斯参数criceparam,但是可以将tsrc中的语法元素abs_remainder[]的莱斯参数criceparam导出为1。也就是说,例如,当将变换跳过应用于当前块(例如,当前tb)时,可以将用于当前块的tsrc的abs_remainder[]的莱斯参数criceparam导出为1。
[0278]-此外,例如,参考表3和表4,在rrc中,可以发信号通知abs_level_gtx_flag[n][0]和/或abs_level_gtx_flag[n][1],但是在tsrc中,可以发信号通知abs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]和abs_level_gtx_flag[n][4]。在此,可以将abs_level_gtx_flag[n][0]表达为abs_level_gt1_flag或第一系数级别标志,可以将abs_level_gtx_flag[n][1]表达为abs_level_gt3_flag或第二系数级别标志,可以将abs_level_gtx_flag[n][2]表达为abs_level_gt5_flag或第三系数级别标志,可以将abs_level_gtx_flag[n][3]表达为abs_level_gt7_flag或第四系数级别标志,以及可以将abs_level_gtx_flag[n][4]表达为abs_level_gt9_flag或第五系数级别标志。具体地,第一系数级别标志可以是系数级别是否大于第一阈值(例如,1)的标志,第二系数级别标志可以是系数级别是否大于第二阈值(例如,3)的标志,第三系数级别标志可以是系数级别是否大于第三阈值(例如,5)的标志,第四系数级别标志可以是系数级别是否大于第四阈值(例如,7)的标志,第五系数级别标志可以是系数级别是否大于第五阈值(例如,9)的标志。如上所述,在tsrc中,与rrc相比,还可以包括abs_level_gtx_flag[n][0]、abs_level_gtx_flag[n][1]和abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]、abs_level_gtx_flag[n][4]。
[0279]-此外,例如,在rrc中,可以旁路编译语法元素coeff_sign_flag,但在tsrc中,可以旁路编译或上下文编译语法元素coeff_sign_flag。
[0280]
同时,在对应用了变换跳过的块(即,变换跳过块)的残差数据编译中,在语法元素
被旁路编译的情况下,本公开提出了一种通过对用于每个语法元素的旁路编译的bin进行分组来对旁路编译的bin进行编译的方法。
[0281]
作为所提出的实施例,可用于一个tu中的变换跳过的残差编译(即,上文描述的变换跳过残差编译(tsrc))的上下文编译的bin的数量可以被限制为特定阈值,并且在对该tu可用的所有上下文编译的bin都被消耗,并且然后,将该tu的语法元素编译为旁路bin的情况下,提出了一种使用语法元素优先的编译顺序而不是系数位置优先的现有编译顺序的方法。
[0282]
特别地,例如,在传统的tsrc中,语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]、par_level_flag、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]、abs_level_gtx_flag[n][4]和/或abs_remainder的编译被包括在内。上述语法元素可以按照如下附图所示的顺序被编译。
[0283]
图6图示在tsrc中对语法元素进行编译的示例。
[0284]
同时,在本公开中,层可以意指其中在单个重复语句中语法元素被连续编译的组/单元,并且可以在下面的其他元素中以相同的含义进行描述。此外,在图6中,“sig”可以表示sig_coeff_flag,“sign”可以表示coeff_sign_flag,gt0可以表示abs_level_gtx_flag[n][0],“par”可以表示par_level_flag,gt1可以表示abs_level_gtx_flag[n][1],gt2可以表示abs_level_gtx_flag[n][2],gt3可以表示abs_level_gtx_flag[n][3],gt4可以表示abs_level_gtx_flag[n][4],并且“rem”可以表示abs_remainder。
[0285]
例如,在根据图6所示的本实施例的tsrc的情况下,可以按照在单个层中系数的位置优先的顺序来编译语法元素。也就是说,例如,参考图6,在第一层中,可以对特定系数(例如,coeff0)的sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]和par_level_flag进行编译,并且可以对下一个系数(例如,coeff1)的sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]和par_level_flag进行编译。稍后,例如,在第二层中,针对特定系数(例如,coeff0)的abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]、以及abs_level_gtx_flag[n][4]进行编译,并且对下一个系数(例如,coeff1)的abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]以及abs_level_gtx_flag[n][4]进行编译。随后,在第三层中,可以对子块中的所有系数(例如,从coeff0到coeff
n-1
)的abs_remainder进行编译。
[0286]
同时,在vvc标准的tsrc中,如上所述,可用上下文编译的bin的最大数量被限制为用于残差数据编译的特定阈值(例如,表4中表示的remccbs或maxccbs),并且特定阈值可以基于包括在变换块中的样本的数量或变换块的宽度和/或高度等来导出。例如,特定阈值可以如以下等式所表示的那样导出。
[0287]
[等式18]
[0288]
maxccbs=c
×
变换块的水平大小
×
变换块的垂直大小
[0289]
在这里,“c”可以表示任意实数值。在本公开中,c值不限于特定值。例如,c可以具有诸如2的整数值或诸如1.5、1.75或1.25的小数值。此外,例如,还可以基于变换块是否为色度块以及变换块中包括的样本的数量和变换块的宽度和/或高度来导出限制可用的上下文编译的bin的最大数量的阈值。另外,阈值(remccbs)可以以变换块为单位初始化,并且阈值可以减少与用于残差数据编译的语法元素的编译的上下文编译的bin的数量一样多。
[0290]
同时,在tsrc中,语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]、par_level_flag、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]、abs_level_gtx_flag[n][4]和/或abs_remainder可以是上下文编译的,但也可以是旁路编译的。
[0291]
例如,用于上述语法元素的ctxinc可以如下表所示进行分配。
[0292]
[表17]
[0293][0294]
如表17中所表示的,在对语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]、par_level_flag、abs_level_gtx_flag[n][1]、abs_level_gtx_flag[n][2]、abs_level_gtx_flag[n][3]或abs_level_gtx_flag[n][4]进行编译时,在阈值(例如,remccbs或maxccbs)大于0的情况下,语法元素可以被编译为上下文编译的bin,并且在阈值小于或等于0的情况下,则可以将语法元素编译为使用均匀概率分布的旁路bin。
[0295]
图7图示在tsrc中对语法元素进行编译的另一示例。例如,图7可以图示在对变换块中的任意子块/系数组进行编译时,在将用于coeff0的coeff_sign_flag编译为上下文编译的bin之后,阈值变为零的情况。在这种情况下,参考图7,包括用于coeff0的abs_level_gtx_flag[n][0]的在用于coeff0的coeff_sign_flag之后编译的语法元素可以被编译为旁路bin,因为剩余阈值为零,也就是说,没有剩余的上下文编译bin可用。上述图6所示的实施例的编译顺序可以在没有任何变化的情况下维持在图7所示的实施例中。
[0296]
图8图示在tsrc中对语法元素进行编译的另一示例。此外,例如,图8可以图示在对变换块中的任意子块/系数组进行编译时,在将用于coeff0的abs_level_gtx_flag[n][2]编译为上下文编译的bin之后,阈值变为零的情况。在这种情况下,参考图8,包括用于coeff0的abs_level_gtx_flag[n][3]的在用于coeff0的abs_level_gtx_flag[n][2]之后编译的语法元素可以被编译为旁路的bin,因为剩余阈值为零,即,不存在剩余的上下文编译bin可用。上述图6中所示的实施例的编译顺序可以在没有任何变化的情况下维持在图8所示的实施例中。
[0297]
如上所述,在tsrc中在对块的tsrc进行编译的过程中,在使用了该块的所有可用剩余上下文编译的bin的情况下,可以对后续语法元素进行旁路编译。然而,在传统的tsrc中,在使用了所有可用的剩余上下文编译的bin并且语法元素被编译为旁路bin的情况下,如上所述,可以按照系数位置优先的编译顺序对语法元素进行编译。因此,本公开提出了以语法元素优先的编译顺序而不是系数位置优先的现有编译顺序的旁路编译的编译语法元素的实施例。通过此,可以最大化具有高吞吐量的旁路编译引擎的优势,并且可以改进图像的残差数据编译效率。
[0298]
具体地,例如,熵编码器/熵解码器可以包括二值化单元、常规编译引擎和旁路编译引擎。例如,可以将语法元素的值输入到二值化单元。二值化单元可以将语法元素的值变换为bin串并输出该bin串。这里,bin串可以意指二进制序列或由一个或多个bin组成的二进制码。bin可以意指,当码元和/或语法元素的值通过二值化表示为二进制序列(或二进制码)时,构成二进制序列(或二进制码)的每个数字数的值(0或1)。
[0299]
稍后,可以将二值化信号(bin串)输入到常规编译引擎或旁路编译引擎。常规编译引擎可以分配反映对应bin的概率值的上下文并且基于分配的上下文编译对应bin。常规编译引擎可以对每个bin执行编译,并且然后更新bin的概率和/或上下文。使用常规编译引擎编译的bin可以称为上下文编译的bin。
[0300]
此外,旁路编译引擎可以旁路估计输入bin的概率的过程和在编译后更新应用于该bin的概率的过程。在旁路模式下,不根据输入bin分配上下文,而是单纯地对输入bin进行编译,从而可以改进吞吐量。例如,在旁路模式中,可以通过应用均匀概率分布(0.5)来执行编译过程。使用旁路编译引擎编译的bin可以称为旁路编译的bin或旁路bin。
[0301]
通常,旁路模式比上下文编译的bin具有更好的吞吐量性能。要对一个上下文编译的bin进行编译,可能需要1个或多于1个处理循环。然而,对于旁路编译引擎,只需要一个循环来对n个旁路编译的bin进行编译。这里,n可以大于1。为了改进熵编译的吞吐量,改变编译顺序(即,分组)使得旁路编译的bin被连续编译可能是有益的。特别地,在对旁路编译的bin进行分组的情况下,从吞吐量和硬件复杂度的角度来看,对于每个语法元素对旁路编译的bin进行分组可能是有益的。
[0302]
图9图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在tsrc中对旁路编译的语法元素进行编译的示例。例如,图9可以图示在变换块中的任意子块/系数组的编译中,在用于coeff0的coeff_sign_flag被编译为上下文编译的bin之后,阈值变为零的情况。在这种情况下,参考图9,包括用于coeff0的abs_level_gtx_flag[n][0]的在用于coeff0的coeff_sign_flag之后编译的语法元素可以被编译为旁路bin,因为剩余阈值为0,也就是说,没有剩余的上下文编译bin可用。例如,参考图9,在第一层中对coeff0上下文编译的剩余上下文元素(abs_level_gtx_flag[n][0]和par_level_flag)可以根据现有的编译顺序被旁路编译,但是稍后,用于系数coeff1到coeff
n-1
的语法元素可以按语法元素顺序编译。换言之,稍后,可以连续地对系数coeff1到coeff
n-1
的sig_coeff_flag进行旁路编译,并且随后,可以连续地对系数coeff1到coeff
n-1
的coeff_sign_flag进行旁路编译。接下来,可以连续地对系数coeff1到coeff
n-1
的abs_level_gtx_flag[n][0]进行旁路编译,并且随后,可以连续地对系数coeff1到coeff
n-1
的par_level_flag进行旁路编译。另外,例如,参考图9,对于在第一层之后的后续层中对语法元素进行编译,可以维持语法元素优先的建议的编译顺序。
[0303]
图10图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序在tsrc中对旁路编译的语法元素进行编译的示例。例如,图10可以图示在变换块中的任意子块/系数组的编译中,在用于coeff0的abs_level_gtx_flag[n][2]被编译为上下文编译的bin之后,阈值变为零的情况。在这种情况下,参考图10,包括用于coeff0的abs_level_gtx_flag[n][3]的在用于coeff0的abs_level_gtx_flag[n][2]之后编译的语法元素可以被编译为旁路bin,因为剩余阈值为0,即,不存在剩余的上下文编译的bin可用。例如,参考图10,作为在第
二层中对coeff0上下文编译的剩余上下文元素(abs_level_gtx_flag[n][3]和abs_level_gtx_flag[n][4])可以根据现有编译顺序进行旁路编译,但是稍后,用于系数coeff1到coeff
n-1
的语法元素可以以语法元素顺序编译。换言之,稍后,用于系数coeff1到coeff
n-1
的abs_level_gtx_flag[n][1]可以被连续旁路编译,并且随后,用于系数coeff1到coeff
n-1
的abs_level_gtx_flag[n][2]可以被连续旁路编译。接下来,可以连续地对用于系数coeff1到coeff
n-1
的abs_level_gtx_flag[n][3]进行旁路编译,并且随后,可以连续地对用于系数coeff1到coeff
n-1
的abs_level_gtx_flag[n][4]进行旁路编译。另外,例如,参考图10,即使对于在第二层之后的后续层中编译语法元素,也可以维持优先于语法元素的建议的编译顺序。
[0304]
此外,本公开提出了,在语法元素在简化的残差数据编译结构中被旁路编译的情况下,一种用于通过对每个语法元素的旁路编译的bin进行分组来对旁路编译的bin进行编译的方法。在特定条件下,在诸如无损编译或近无损编译的编译性能方面存在优势,并且简化的残差编译结构可以被用于单个编译块或变换块。在这种情况下,通过使用本公开中提出的方法,代替系数位置优先的现有的编译顺序,可以使用语法元素优先的编译顺序。
[0305]
此外,因为一个tu中可用于残差编译的上下文编译的bin的数量可能被限制为特定阈值,所以在所有可用于tu的上下文编译的bin都被消耗,并且随后将用于tu的语法元素编译为旁路bin的情况下,本公开中的一个实施例提出了一种使用语法元素优先的编译顺序而不是系数位置优先的现有编译顺序的方法。同时,现有的简化的残差数据编译结构可以与以下附图和用于附图的描述中示出的那些相同。
[0306]
图11图示其中在简化的残差数据编译结构中对语法元素进行编译的示例。参考图11,现有的简化的残差数据编译可以包括语法元素sig_coeff_flag、coeff_sign_flag和abs_remainder的编译。图11可以图示对于一个子块/系数组/变换块/编译块具有系数位置优先的现有编译顺序的简化残差数据编译结构的语法元素编译顺序。
[0307]
例如,参考图11,在第一层中,可以对用于特定系数的sig_coeff_flag和coeff_sign_flag进行编译,可以对特定系数之后的下一个系数的sig_coeff_flag和coeff_sign_flag进行编译,并且可以对用于在扫描顺序上直到最后系数位置的系数的sig_coeff_flag和coeff_sign_flag进行编译。稍后,在第二层中,可以以扫描顺序执行用于子块中的所有系数的abs_remainder的编译。这里,在位置的系数的值为零的情况下,sig_coeff_flag的值可以是零,并且在位置的系数的值是非零的情况下,sig_coeff_flag的值可以是1。另外,coeff_sign_flag可以指示位置的系数的符号。例如,在位置的系数为零的情况下,即,在用于系数的sig_coeff_flag为零的情况下,可以不对用于系数的coeff_sign_flag进行编译。进一步地,在系数为非零且为负数的情况下,用于该系数的coeff_sign_flag值可以为1(或零),并且在系数为非零且为正数的情况下,用于系数的coeff_sign_flag值可以为零(或1)。可替选地,在系数为负数而不考虑系数的sig_coeff_flag的情况下,用于系数的coeff_sign_flag值可以是1(或零),并且在系数是正数或零的情况下,用于系数的coeff_sign_flag值可以为零(或1)。可替选地,在系数为正数而不考虑系数的sig_coeff_flag的情况下,用于系数的coeff_sign_flag值可以是1(或零),并且在系数是负数或零的情况下,用于系数的coeff_sign_flag值可以为零(或1)。
[0308]
同时,本公开提出了一种用于对每个语法元素进行编译和分组以在简化的残差数
据编译结构中生成在cabac吞吐量和硬件复杂度方面的优势的方法。
[0309]
图12图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序来编译在简化的残差数据编译结构中被旁路编译的语法元素的示例。例如,根据本实施例,如图12中所示,在第一层中,可以从coeff0的sig_coeff_flag到扫描顺序中的最后系数coeff
n-1
的sig_coeff_flag连续地执行旁路编译,并且随后,可以从coeff0的coeff_sign_flag到扫描顺序中的最后系数coeff
n-1
的coeff_sign_flag连续地执行旁路编译。稍后,可以从coeff0的abs_remainder到扫描顺序中的最后系数coeff
n-1
的abs_remainder连续执行旁路编译。
[0310]
同时,简化的残差数据编译结构可以具有与上述图11中所示的不同的语法结构。例如,可以对下图所示的简化的残差数据编译结构进行编译。
[0311]
图13a和图13b图示其中在简化的残差数据编译结构中语法元素被编译的实施例。参考图13a和图13b,简化的残差数据编译可以包括语法元素dec_abs_level和coeff_sign_flag的编译。图13a和图13b可以图示对于一个子块/系数组/变换块/编译块具有系数位置优先的现有编译顺序的简化残差数据编译结构的语法元素编译顺序。例如,参考图13a,在层中,可以对用于特定系数的dec_abs_level和coeff_sign_flag进行编译,可以对用于特定系数之后的下一个系数的dec_abs_level和coeff_sign_flag进行编译,并且可以对用于直到扫描顺序上的最后系数位置的系数的dec_abs_level和coeff_sign_flag进行编译。另外,例如,参考图13b,在层中,可以对用于特定系数的coeff_sign_flag和dec_abs_level进行编译,可以对用于特定系数之后的下一个系数的coeff_sign_flag和dec_abs_level进行编译,并且可以对用于直到扫描顺序上的最后系数位置的系数的coeff_sign_flag和dec_abs_level进行编译。
[0312]
这里,在位置的系数的值为零的情况下,dec_abs_level的值可以为零,并且在位置的系数的值不为零的情况下,dec_abs_level的值可以是系数的绝对值。此外,coeff_sign_flag可以指示位置的系数的符号。例如,在位置的系数为零的情况下,即,在用于系数的dec_abs_level为零的情况下,可以不对用于系数的coeff_sign_flag进行编译。进一步地,在系数为非零且为负数的情况下,用于该系数的coeff_sign_flag值可以为1(或零),并且在系数为非零且为正数的情况下,用于系数的coeff_sign_flag值可以为零(或1)。可替选地,在系数为负数而不考虑用于系数的dec_abs_level的情况下,用于系数的coeff_sign_flag值可以是1(或零),并且在系数是正数或零的情况下,用于系数的coeff_sign_flag值可以为零(或1)。可替选地,在系数为正数而不考虑用于系数的dec_abs_level的情况下,用于系数的coeff_sign_flag值可以是1(或零),并且在系数是负数或零的情况下,用于系数的coeff_sign_flag值可以为零(或1)。
[0313]
同时,在满足上述rrc或tsrc中的特定条件的情况下,可以使用简化的残差数据编译结构。例如,在当前块被无损编译或接近无损编译的情况下,或者在为当前块消耗所有可用的上下文编译bin的情况下,可以在简化的残差数据编译结构中对残差数据进行编译。
[0314]
例如,本公开提出在当前块的所有可用的上下文编译的bin都在当前块的tsrc中被消耗的情况下,用于在简化的残差数据编译结构中对当前块的系数的语法元素进行编译的方法。
[0315]
特别地,例如,可以解析根据用于当前块的tsrc的语法元素。在这种情况下,可以导出可用于当前块的上下文编译的bin的最大数量,并且在用于当前块的所有最大数量的
上下文编译的bin被用于对扫描顺序上的当前变换系数的前一个变换系数的语法元素进行编译的情况下,可以在简化的残差数据编译结构中编译当前变换系数和扫描顺序上的当前变换系数的后续变换系数的语法元素。因此,当前变换系数和在扫描顺序上的当前变换系数的后续变换系数的语法元素可以包括用于变换系数的系数级别信息和符号标志。解码装置可以基于用于在简化的残差数据编译结构中编译的变换系数的语法元素来导出变换系数。例如,系数级别信息可以表示变换系数的系数级别的绝对值。此外,符号标志可以表示当前变换系数的符号。解码装置可以基于系数级别信息导出变换系数的系数级别并且基于符号标志导出变换系数的符号。
[0316]
同时,为了在cabac吞吐量和硬件复杂度方面产生优势,本公开提出了一种用于对针对每个语法元素的在图13中所示的简化的残差数据编译结构中旁路编译的语法元素进行编译和分组的方法。
[0317]
图14a和图14b图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序对在简化残差数据编译结构中旁路编译的语法元素进行编译的示例。例如,根据本实施例,如图14a中所示,在层中,可以从coeff0的dec_abs_level到扫描顺序中的最后系数coeff
n-1
的dec_abs_level连续执行旁路编译,并且随后,从coeff0的coeff_sign_flag到扫描顺序中的最后系数coeff
n-1
的coeff_sign_flag连续执行旁路编译。可替选地,例如,根据本实施例,如图14b中所示,在层中,可以从coeff0的coeff_sign_flag到扫描顺序中的最后系数coeff
n-1
的coeff_sign_flag连续执行旁路编译,并且随后,从coeff0的dec_abs_level到扫描顺序中的最后系数coeff
n-1
的dec_abs_level连续执行旁路编译。根据本实施例,可以针对每个语法元素对旁路编译的bin进行分组并连续编译,并且可以产生诸如可以改进熵编译的吞吐量以及可以减少硬件复杂度的效果。
[0318]
同时,简化的残差数据编译结构可以具有与上述图11、图13a以及图13b中所示的语法结构不同的语法结构。例如,可以对下图所示的简化的残差数据编译结构进行编译。
[0319]
图15图示其中在简化的残差数据编译结构中语法元素被编译的实施例。参考图15,简化的残差数据编译可以包括语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]、par_level_flag和abs_remainder的编译。图15可以图示对于一个子块/系数组/变换块/编译块具有系数位置优先的现有编译顺序的简化的残差数据编译结构的语法元素编译顺序。例如,参考图15,在第一层中,可以对特定系数的sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]和par_level_flag进行编译,可以对用于在特定系数之后的下一个系数的sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]和par_level_flag进行编译,并且可以对直到扫描顺序上的最后系数位置的系数的sig_coeff_flag、coeff_sign_flag、abs_level_gtx_flag[n][0]和par_level_flag进行编译。稍后,在第二层中,可以以扫描顺序执行用于子块中的所有系数的abs_remainder的编译。
[0320]
同时,为了在cabac吞吐量和硬件复杂度方面产生优势,本公开提出了一种对在用于每个语法元素的图15中所示的简化的残差数据编译结构中旁路编译的语法元素进行编译和分组的方法。
[0321]
图16图示以语法元素优先的编译顺序而不是系数位置优先的编译顺序对在简化残差数据编译结构中旁路编译的语法元素进行编译的示例。例如,根据本实施例,如图16中
所示,在第一层中,可以从coeff0的sig_coeff_flag到扫描顺序中的最后系数coeff
n-1
的sig_coeff_flag连续执行旁路编译,随后从coeff0的coeff_sign_flag到扫描顺序中的最后系数coeff
n-1
的coeff_sign_flag连续执行,随后从coeff0的abs_level_gtx_flag[n][0]到扫描顺序中的最后系数coeff
n-1
的abs_level_gtx_flag[n][0]连续执行,并且随后从coeff0的par_level_flag到扫描顺序中的最后系数coeff
n-1
的par_level_flag连续执行。稍后,在第二层中,可以从coeff0的abs_remainder到扫描顺序中的最后系数coeff
n-1
的abs_remainder连续执行旁路编译。根据本实施例,可以针对每个语法元素对旁路编译的bin进行分组并连续编译,并且可以产生诸如可以改进熵编译的吞吐量以及可以减少硬件复杂度的效果。
[0322]
图17简要图示由根据本公开的编码装置执行的图像编码方法。图17中提出的方法可以由图2中公开的编码装置来执行。具体而言,例如,步骤s1700可以由编码装置的残差处理器执行,并且步骤s1710至s1730可以由编码装置的熵编码器来执行。另外,虽然未图示,导出预测样本的过程可以由编码装置的预测器执行,基于当前块的原始样本和预测样本导出当前块的残差样本的过程可以由编码装置的减法器执行,并且基于当前块的残差样本和预测样本导出当前块的重构样本的过程可以由编码装置的加法器执行。
[0323]
编码装置导出当前块的变换系数(步骤s1700)。例如,编码装置可以确定是对当前块执行帧间预测还是帧内预测,并基于rd成本确定特定帧间预测模式或特定帧内预测模式。根据所确定的模式,编码装置可以导出当前块的预测样本,并且可以通过当前块的原始样本与预测样本之间的减法来导出残差样本。
[0324]
稍后,编码装置基于残差样本导出当前块的变换系数。例如,编码装置可以确定是否将变换应用于当前块。也就是说,编码装置可以确定是否对当前块的残差样本应用了变换。编码装置可以考虑编译效率来确定是否将变换应用于当前块。例如,编码装置可以确定没有对当前块应用变换。未应用变换的块可称为变换跳过块。也就是说,例如,当前块可以是变换跳过块。
[0325]
当没有对当前块应用变换时,即,当没有对残差样本应用变换时,编码装置可以将导出的残差样本导出作为当前变换系数。此外,当对当前块应用变换时,即,当对残差样本应用变换时,编码装置可以通过对残差样本执行变换来导出变换系数。当前块可以包括多个子块或系数组(cg)。另外,当前块的子块的大小可以是4x4大小或2x2大小。也就是说,当前块的子块可以包括最多16个非零变换系数或最多4个非零变换系数。
[0326]
这里,当前块可以是编译块(cb)或变换块(tb)。另外,变换系数也可以表示为残差系数。
[0327]
编码装置生成用于当前块的第一变换系数到第n变换系数的语法元素(步骤s1710)。编码装置可以生成用于当前块的第一变换系数到第n变换系数的语法元素并且对其进行编码。当前块的残差信息可以包括用于当前块的第一变换系数到第n变换系数的语法元素。
[0328]
例如,残差信息可以包括用于当前块的第一变换系数到第n变换系数的语法元素。这里,例如,语法元素可以是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素。根据第一残差数据编译结构的语法元素可以包括用于变换系数的上下文编译的语法元素和/或旁路编译的语法元素。根据第一残差数据编译结构的语法元素可以包括诸如
sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtx_flag、abs_remainder和/或coeff_sign_flag的语法元素。
[0329]
例如,用于变换系数的上下文编译的语法元素可以包括指示变换系数是否是非零变换系数的有效系数标志、指示变换系数的符号的符号标志、用于变换系数的系数级别是否大于第一阈值的第一系数级别标志、和/或用于变换系数的系数级别的奇偶的奇偶级别标志。另外,例如,上下文编译的语法元素可以包括用于变换系数的系数级别是否大于第二阈值的第二系数级别标志、用于变换系数的系数级别是否大于第三阈值的第三系数级别标志、用于变换系数的系数级别是否大于第四阈值的第四系数级别标志、和/或用于变换系数的系数级别是否大于第五阈值的第五系数级别标志。这里,有效系数标志可以是sig_coeff_flag,符号标志可以是ceff_sign_flag,第一系数级别标志可以是abs_level_gt1_flag,并且奇偶级别标志可以是par_level_flag。此外,第二系数级别标志可以是abs_level_gt3_flag或abs_level_gtx_flag,第三系数级别标志可以是abs_level_gt5_flag或abs_level_gtx_flag,第四系数级别标志可以是abs_level_gt7_flag或abs_level_gtx_flag,并且第五系数级别标志可以是abs_level_gt9_flag或abs_level_gtx_flag。
[0330]
此外,例如,用于变换系数的旁路编译的语法元素可以包括变换系数的值(或系数级别)的系数级别信息和/或指示变换系数的符号的符号标志。系数级别信息可以是abs_remainder和/或dec_abs_level,并且符号标志可以是ceff_sign_flag。
[0331]
此外,用于第一变换系数到第n变换系数的上下文编译的语法元素的数量可以与当前块的上下文编译的bin的最大数量相同。即,例如,当前块的所有上下文编译的bin可以用作用于第一变换系数到第n变换系数的上下文编译的语法元素的bin。例如,可以基于当前块的宽度和高度来导出当前块的上下文编译的bin的最大数量。例如,当前块的上下文编译的bin的最大数量可以被导出为当前块的样本数乘以特定值的值。这里,可以将样本数导出为当前块的宽度和高度相乘的值。此外,特定值可以具有诸如2的整数值或诸如1.5、1.75或1.25的小数值。
[0332]
同时,例如,可以以根据系数位置的编译顺序对根据第一残差数据编译结构的语法元素进行编译。根据系数位置的编译顺序可以是变换系数的扫描顺序。例如,扫描顺序可以是光栅扫描顺序。例如,光栅扫描顺序可以表示从顶行向下依次扫描并且在每一行中从左到右扫描的顺序。例如,可以以从第一变换系数的语法元素到第n变换系数的语法元素的顺序对根据第一残差数据编译结构的语法元素进行编译。此外,例如,当当前块包括多个子块或系数组(cg)时,可以以扫描顺序对多个子块或系数组进行编译,并且每个子块或系数组中的变换系数的语法元素可以以扫描顺序编译。
[0333]
同时,例如,残差信息可以包括当前块的变换跳过标志。变换跳过标志可以指示变换是否应用于当前块。也就是说,变换跳过标志可以指示变换是否应用于当前块的变换系数。指示变换跳过标志的语法元素可以是上述的transform_skip_flag。例如,当变换跳过标志的值为0时,变换跳过标志可表示未对当前块应用变换,而当变换跳过标志的值为1时,变换跳过标志可表示将变换应用于当前块。例如,当当前块是变换跳过块时,当前块的变换跳过标志的值可以是1。
[0334]
编码装置生成用于当前块的第n+1变换系数到最后变换系数的语法元素(步骤s1720)。编码装置可以生成和编码用于当前块的第n+1变换系数到最后变换系数的语法元
素。当前块的残差信息可以包括当前块的第n+1变换系数到最后变换系数的语法元素。
[0335]
例如,残差信息可以包括用于当前块的第n+1变换系数到最后变换系数的语法元素。这里,例如,语法元素可以是根据变换跳过残差编译(tsrc)的第二残差数据编译结构的语法元素。根据第二残差数据编译结构的语法元素可以称为根据简化的残差数据编译结构的语法元素。例如,当当前块的所有上下文编译的bin都被用作用于第一变换系数到第n变换系数的上下文编译的语法元素的bin时,即,例如,当用于第一变换系数到第n变换系数的上下文编译的语法元素的数量等于或大于当前块的上下文编译的bin的最大数量时,编码装置可以生成和编码用于当前块的第n+1变换系数到最后变换系数的语法元素,其是根据tsrc的第二残差数据编译结构的语法元素。
[0336]
例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的旁路编译的语法元素。例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的系数级别信息和符号标志。例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的系数级别的绝对值的系数级别信息和用于变换系数的符号的符号标志。可以基于旁路对变换系数的语法元素进行编译。也就是说,可以基于均匀概率分布对变换系数的残差语法元素进行编译。例如,系数级别信息可以表示变换系数的系数级别的绝对值。另外,符号标志可以表示变换系数的符号。例如,当符号标志的值为0时,符号标志可以指示变换系数的系数级别为正值,并且当符号标志的值为1时,符号标志可以指示变换系数的系数级别为负值。系数级别信息可以是上述的abs_remainder,并且符号标志可以是上述的coeff_sign_flag。
[0337]
同时,例如,可以以根据系数位置的编译顺序对根据第二残差数据编译结构的语法元素进行编译。根据系数位置的编译顺序可以是变换系数的扫描顺序。例如,扫描顺序可以是光栅扫描顺序。例如,光栅扫描顺序可以表示从顶行向下依次扫描并且在每一行中从左到右扫描的顺序。例如,可以以从第n+1变换系数到最后变换系数的语法元素的顺序对根据第二残差数据编译结构的语法元素进行编译。此外,例如,当当前块包括多个子块或系数组(cg)时,可以以扫描顺序对多个子块或系数组进行编译,并且每个子块或系数组中的变换系数的语法元素可以以扫描顺序被编译。
[0338]
此外,例如,根据第二残差数据编译结构的语法元素可以以根据语法元素的编译顺序来编译。即,例如,可以以其中语法元素优先的编译顺序对根据第二残差数据编译结构的语法元素进行编译。例如,可以对第n+1变换系数到最后变换系数的系数级别信息进行编译,并且其后,可以对第n+1变换系数到最后变换系数的符号标志进行编译。具体地,例如,可以以从用于第n+1变换系数的系数级别信息到最后变换系数的系数级别信息的顺序对系数级别信息进行编译,并且稍后,可以以从第n+1变换系数的符号标志到最后变换系数的符号标志的顺序对符号标志进行编译。
[0339]
编码装置对包括根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素的图像信息进行编码(步骤s1730)。编码装置可以对包括根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素的图像信息进行编码。例如,图像信息可以包括当前块的残差信息。残差信息可以包括根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素。例如,编码装置可以对包括残差信息的图像信息进行编码并且以比特流格式输出图像信息。比特流可以通过网络或存储介
质发送到解码装置。
[0340]
此外,例如,编码装置可以生成用于当前块的预测信息。图像信息可以包括当前块的预测信息。预测信息可以包括用于在当前块中执行的帧间预测模式或帧内预测模式的信息。解码装置可以基于通过比特流接收到的预测信息对当前块执行帧间预测或帧内预测,并且导出当前块的预测样本。
[0341]
同时,可以通过网络或(数字)存储介质将比特流发送到解码装置。这里,网络可以包括广播网络和/或通信网络,并且数字存储介质可以包括诸如usb、sd、cd、dvd、蓝光、hdd、ssd等的各种存储介质。
[0342]
图18简要图示用于执行根据本公开的图像编码方法的编码装置。图17中提出的方法可以由图18中公开的编码装置来执行。特别地,例如,编码装置的残差处理器可以执行图17所示的步骤s1700,并且编码装置的熵编码器可以执行步骤s1710至s1730。此外,虽然未在附图中示出,但是可以由编码装置的预测器执行导出预测样本的过程,基于当前块的原始样本和预测样本导出当前块的残差样本的过程可以由编码装置的减法器执行,并且基于当前块的残差样本和预测样本导出当前块的重构样本的过程可以由编码装置的加法器执行。
[0343]
图19简要图示由根据本公开的解码装置执行的图像解码方法。图19中提出的方法可以由图3中公开的解码装置执行。具体地,例如,图19中示出的步骤s1900和s1910可以由解码装置的熵解码器执行,图19中所示的步骤s1920和s1930可以由解码装置的残差处理器执行,并且步骤s1940可以由解码装置的加法器执行。此外,虽然未在附图中示出,但是接收当前块的预测信息的过程可以由解码装置的熵解码器执行,并且导出当前块的预测样本的过程可以通过解码装置的预测器执行。
[0344]
解码装置获得用于当前块的第一变换系数到第n变换系数的语法元素(步骤s1900)。解码装置可以获得包括用于当前块的残差信息的图像信息。残差信息可以包括用于当前块的变换系数的语法元素。这里,当前块可以是编译块(cb)或变换块(tb)。另外,变换系数也可以表示为残差系数。
[0345]
例如,残差信息可以包括用于当前块的第一变换系数到第n变换系数的语法元素。即,例如,解码装置获得用于当前块的第一变换系数到第n变换系数的语法元素。这里,例如,语法元素可以是根据变换跳过残差编译(tsrc)的第一残差数据编译结构的语法元素。根据第一残差数据编译结构的语法元素可以包括用于变换系数的上下文编译的语法元素和/或旁路编译的语法元素。根据第一残差数据编译结构的语法元素可以包括诸如sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtx_flag、abs_remainder和/或coeff_sign_flag的语法元素。
[0346]
例如,用于变换系数的上下文编译的语法元素可以包括指示变换系数是否是非零变换系数的有效系数标志、指示变换系数的符号的符号标志、用于变换系数的系数级别是否大于第一阈值的第一系数级别标志、和/或用于变换系数的系数级别的奇偶的奇偶级别标志。另外,例如,上下文编译的语法元素可以包括用于变换系数的系数级别是否大于第二阈值的第二系数级别标志、用于变换系数的系数级别是否大于第三阈值的第三系数级别标志、用于变换系数的系数级别是否大于第四阈值的第四系数级别标志、和/或用于变换系数的系数级别是否大于第五阈值的第五系数级别标志。这里,有效系数标志可以是sig_
coeff_flag,符号标志可以是ceff_sign_flag,第一系数级别标志可以是abs_level_gt1_flag,并且奇偶级别标志可以是par_level_flag。此外,第二系数级别标志可以是abs_level_gt3_flag或abs_level_gtx_flag,第三系数级别标志可以是abs_level_gt5_flag或abs_level_gtx_flag,第四系数级别标志可以是abs_level_gt7_flag或abs_level_gtx_flag,并且第五系数级别标志可以是abs_level_gt9_flag或abs_level_gtx_flag。
[0347]
此外,例如,用于变换系数的旁路编译的语法元素可以包括变换系数的值(或系数级别)的系数级别信息和/或指示变换系数的符号的符号标志。系数级别信息可以是abs_remainder和/或dec_abs_level,并且符号标志可以是ceff_sign_flag。
[0348]
此外,用于第一变换系数到第n变换系数的上下文编译的语法元素的数量可以与当前块的上下文编译的bin的最大数量相同。即,例如,当前块的所有上下文编译的bin可以用作第一变换系数到第n变换系数的上下文编译的语法元素的bin。例如,可以基于当前块的宽度和高度来导出当前块的上下文编译的bin的最大数量。例如,当前块的上下文编译的bin的最大数量可以被导出为当前块的样本数乘以特定值的值。这里,可以将样本数导出为当前块的宽度和高度相乘的值。此外,特定值可以具有诸如2的整数值或诸如1.5、1.75或1.25的小数值。
[0349]
同时,例如,可以以根据系数位置的编译顺序对根据第一残差数据编译结构的语法元素进行编码。根据系数位置的编译顺序可以是变换系数的扫描顺序。例如,扫描顺序可以是光栅扫描顺序。例如,光栅扫描顺序可以表示从顶行向下依次扫描并且在每一行中从左到右扫描的顺序。例如,可以以从第一变换系数的语法元素到第n变换系数的语法元素的顺序对根据第一残差数据编译结构的语法元素进行编译。此外,例如,当当前块包括多个子块或系数组(cg)时,可以以扫描顺序对多个子块或系数组进行编译,并且每个子块或系数组中的变换系数的语法元素可以以扫描顺序被编译。
[0350]
此外,例如,残差信息可以包括当前块的变换跳过标志。变换跳过标志可以指示变换是否应用于当前块。也就是说,变换跳过标志可以指示变换是否应用于当前块的变换系数。指示变换跳过标志的语法元素可以是上述的transform_skip_flag。例如,当变换跳过标志的值为0时,变换跳过标志可表示未对当前块应用变换,而当变换跳过标志的值为1时,变换跳过标志可表示将变换应用于当前块。例如,当当前块是变换跳过块时,当前块的变换跳过标志的值可以是1。
[0351]
解码装置获得用于当前块的第n+1变换系数到最后变换系数的语法元素(步骤s1910)。
[0352]
例如,残差信息可以包括用于当前块的第n+1变换系数到最后变换系数的语法元素。也就是说,例如,解码装置可以获得用于当前块的第n+1变换系数到最后变换系数的语法元素。这里,例如,语法元素可以是根据变换跳过残差编译(tsrc)的第二残差数据编译结构的语法元素。根据第二残差数据编译结构的语法元素可以被称为根据简化的残差数据编译结构的语法元素。例如,当用于当前块的所有上下文编译的bin被用作用于第一变换系数到第n变换系数的上下文编译的语法元素的bin时,即,例如,当用于第一变换系数到第n变换系数的上下文编译的语法元素的数量等于或大于当前块的上下文编译的bin的最大数量时,解码装置可以获得用于当前块的第n+1变换系数到最后变换系数的语法元素,其是根据tsrc的第二残差数据编译结构的语法元素。
[0353]
例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的旁路编译的语法元素。例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的系数级别信息和符号标志。例如,根据第二残差数据编译结构的语法元素可以包括用于变换系数的系数级别的绝对值的系数级别信息和用于变换系数的符号的符号标志。可以基于旁路对变换系数的语法元素进行编译。也就是说,可以基于均匀概率分布对变换系数的残差语法元素进行编译。例如,系数级别信息可以表示变换系数的系数级别的绝对值。另外,符号标志可以表示变换系数的符号。例如,当符号标志的值为0时,符号标志可以指示变换系数的系数级别为正值,并且当符号标志的值为1时,符号标志可以指示变换系数的系数级别为负值。系数级别信息可以是上述的abs_remainder,并且符号标志可以是上述的coeff_sign_flag。
[0354]
同时,例如,可以以根据系数位置的编译顺序对根据第二残差数据编译结构的语法元素进行编译。根据系数位置的编译顺序可以是变换系数的扫描顺序。例如,扫描顺序可以是光栅扫描顺序。例如,光栅扫描顺序可以表示从顶行向下依次扫描并且在每一行中从左到右扫描的顺序。例如,可以以从第n+1变换系数到最后变换系数的语法元素的顺序对根据第二残差数据编译结构的语法元素进行编译。此外,例如,当当前块包括多个子块或系数组(cg)时,可以以扫描顺序对多个子块或系数组进行编译,并且每个子块或系数组中的变换系数的语法元素可以以扫描顺序被编译。
[0355]
此外,例如,根据第二残差数据编译结构的语法元素可以以根据语法元素的编译顺序来编译。即,例如,可以以语法元素优先的编译顺序对根据第二残差数据编译结构的语法元素进行编译。例如,可以对第n+1变换系数到最后变换系数的系数级别信息进行编译,并且其后,可以对第n+1变换系数到最后变换系数的符号标志进行编译。具体地,例如,可以以从用于第n+1变换系数的系数级别信息到最后变换系数的系数级别信息的顺序对系数级别信息进行编译,并且稍后,可以以从第n+1变换系数的符号标志到最后变换系数的符号标志的顺序对符号标志进行编译。
[0356]
解码装置基于根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素来导出当前块的变换系数(步骤s1920)。解码装置可以基于根据第一残差数据编译结构的语法元素和根据第二残差数据编译结构的语法元素来导出当前块的变换系数。
[0357]
例如,解码装置可以基于根据第一残差数据编译结构的语法元素来导出当前块的第一变换系数到第n变换系数。
[0358]
另外,例如,解码装置可以基于根据第二残差数据编译结构的语法元素来导出第n+1变换系数到最后变换系数。例如,可以将变换系数的系数级别导出为由系数级别信息表示的值,并且可以将变换系数的符号导出为由符号标志表示的符号。在这种情况下,例如,可以在不执行级别映射的情况下导出变换系数。
[0359]
解码装置基于变换系数导出当前块的残差样本(步骤s1930)。解码装置可以基于变换系数导出当前块的残差样本。在一个示例中,当基于变换跳过标志导出未对当前块应用变换时,即,当变换跳过标志的值为1时,解码装置可以将变换系数导出为当前块的残差样本。可替选地,例如,当基于变换跳过标志导出未对当前块应用变换时,即,当变换跳过标志的值为1时,解码装置可以通过解量化变换系数来导出当前块的残差样本。可替选地,例
如,当基于变换跳过标志导出对当前块应用了变换时,即,当变换跳过标志的值为零时,解码装置可以通过对变换系数进行逆变换来导出当前块的残差样本。可替选地,例如,当基于变换跳过标志导出对当前块应用了变换时,即,当变换跳过标志的值为零时,解码装置可以通过对变换系数进行解量化并对解量化的变换系数进行逆变换来导出当前块的残差样本。
[0360]
解码装置基于残差样本生成重构图片(步骤s1940)。例如,解码装置可以基于残差样本生成重构样本和/或重构图片。例如,解码装置可以基于通过比特流接收到的预测信息对当前块执行帧间预测模式或帧内预测模式并且导出预测样本,并且可以通过将预测样本和残差样本相加来生成重构样本。
[0361]
稍后,根据场合需要,为了改进主观/客观图像质量,解码装置可以对如上所述的重构图片应用环路滤波过程,诸如去块滤波、sao和/或alf过程。
[0362]
图20简要图示用于执行根据本公开的图像解码方法的解码装置。图19中提出的方法可以由图20中公开的解码装置执行。特别地,例如,解码装置的熵解码器可以执行图19中所示的步骤s1900和s1910,解码装置的残差处理器可以执行图19中所示的步骤s1920和s1930,并且解码装置的加法器可以执行图19中所示的步骤s1940。此外,虽然未在附图中示出,但是接收当前块的预测信息的过程可以由图20中所示的解码装置的熵解码器来执行,并且导出当前块的预测样本的过程可以由图20中所示的解码装置的预测器来执行。
[0363]
根据上述本公开,可以改进残差编译的效率。
[0364]
此外,根据本公开,当在tsrc中消耗当前块的最大数量的上下文编译bin时,可以用信号发送根据简化的残差数据编译结构的语法元素,并且通过这样,旁路编译的语法元素的编译复杂度被降低,并且可以改进整体残差编译效率。
[0365]
此外,根据本公开,作为旁路编译的语法元素的编译顺序,可以使用其中语法元素优先的顺序,并且通过这样,可以改进旁路编译的语法元素的编译效率,并且可以改进整体残差编译效率。
[0366]
在以上实施例中,基于具有一系列步骤或方框的流程图描述了方法。本公开不限于以上步骤或方框的顺序。一些步骤或方框可以以与上述的其他步骤或方框不同的顺序执行或同时执行。此外,本领域技术人员将理解,流程图中所示的步骤不是排它的,并且可以还包括其他步骤,或者可以在不影响本公开的范围的情况下删除流程图中的一个或更多个步骤。
[0367]
在本说明书中所描述的实施例可以通过被实现在处理器、微处理器、控制器或芯片上来执行。例如,每个图中所示的功能单元可以通过被实现在计算机、处理器、微处理器、控制器或芯片上来执行。在这种情况下,用于实现的信息(例如,关于指令的信息)或算法可以存储在数字存储介质中。
[0368]
另外,应用本公开的解码装置和编码装置可以被包括在如下装置中:多媒体广播发送/接收装置、移动通信终端、家庭影院视频装置、数字影院视频装置、监视相机、视频聊天装置、诸如视频通信的实时通信装置、移动流装置、存储介质、便携式摄像机、vod服务提供装置、过顶(ott)视频装置、互联网流服务提供装置、三维(3d)视频装置、电话会议视频装置、运输用户装置(例如,车辆用户装置、飞机用户装置和轮船用户装置)和医疗视频设备;并且应用本公开的解码装置和编码装置可以用于处理视频信号或数据信号。例如,过顶(ott)视频装置可以包括游戏机、蓝光播放器、互联网接入电视机、家庭影院系统、智能电
话、平板电脑、数字视频记录仪(dvr)等。
[0369]
另外,应用本公开的处理方法可以以计算机执行的程序的形式产生,并且可以存储在计算机可读记录介质中。根据本公开的具有数据结构的多媒体数据也可以存储在计算机可读记录介质中。计算机可读记录介质包括其中存储计算机可读数据的所有类型的存储设备。计算机可读记录介质可以包括例如bd、通用串行总线(usb)、rom、prom、eprom、eeprom、ram、cd-rom、磁带、软盘和光学数据存储设备。另外,计算机可读记录介质包括以载波(例如,经由互联网的传输)形式实现的介质。另外,由编码方法生成的比特流可以存储在计算机可读记录介质中或通过有线/无线通信网络来传输。
[0370]
另外,本公开的实施例可以根据程序代码利用计算机程序产品来实现,并且程序代码可以通过本公开的实施例在计算机中执行。程序代码可以存储在计算机可读载体上。
[0371]
图21图示应用了本公开的内容流系统的结构图。
[0372]
应用本文档的实施例的内容流系统可以主要包括编码服务器、流服务器、网络服务器、媒体储存器、用户设备和多媒体输入设备。
[0373]
编码服务器将从诸如智能手机、相机或便携式摄像机等的多媒体输入设备输入的内容压缩为数字数据,以生成比特流并将比特流发送到流服务器。作为另一示例,当诸如智能手机、相机或摄像机等的多媒体输入设备直接生成比特流时,可以省略编码服务器。
[0374]
可以通过应用了本公开的实施例的编码方法或比特流生成方法来生成比特流,并且流服务器可以在发送或接收比特流的过程中临时存储比特流。
[0375]
流服务器基于用户请求通过网络服务器向用户设备发送多媒体数据,并且网络服务器用作向用户通知服务的媒介。当用户从网络服务器请求所需的服务时,网络服务器向流服务器递送该请求,并且流服务器向用户发送多媒体数据。在这种情况下,内容流系统可以包括单独的控制服务器。在这种情况下,控制服务器用于控制内容流系统内的设备之间的命令/响应。
[0376]
流服务器可以从媒体储存器和/或编码服务器接收内容。例如,当从编码服务器接收内容时,可以实时接收内容。在这种情况下,为了提供平稳的流服务,流服务器可以将比特流存储预定时间段。
[0377]
用户设备的示例可以包括移动电话、智能电话、膝上型计算机、数字广播终端、个人数字助理(pda)、便携式多媒体播放器(pmp)、导航仪、触屏pc、平板pc、超级本、可穿戴设备(例如,智能手表、智能眼镜和头戴式显示器)、数字tv、台式计算机和数字标牌等。内容流系统内的每个服务器可以作为分布式服务器来操作,在这种情况下,从每个服务器接收的数据可以被分布。
[0378]
本公开中描述的权利要求可以以各种方式组合。例如,可以组合本公开的方法权利要求的技术特征以实现为装置,以及可以组合本公开的装置权利要求的技术特征以实现为方法。此外,可以组合本公开的方法权利要求的技术特征和装置权利要求的技术特征以实施为装置,以及可以组合本公开的方法权利要求的技术特征和装置权利要求的技术特征以实现为方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1