CN117356093A - 视频编码中的量化等级二值化 - Google Patents

视频编码中的量化等级二值化 Download PDF

Info

Publication number
CN117356093A
CN117356093A CN202280036583.6A CN202280036583A CN117356093A CN 117356093 A CN117356093 A CN 117356093A CN 202280036583 A CN202280036583 A CN 202280036583A CN 117356093 A CN117356093 A CN 117356093A
Authority
CN
China
Prior art keywords
transform unit
current
rice
value
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280036583.6A
Other languages
English (en)
Inventor
余越
于浩平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Innopeak Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopeak Technology Inc filed Critical Innopeak Technology Inc
Publication of CN117356093A publication Critical patent/CN117356093A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1887Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

在一些方面,公开了一种用于编码包括当前变换单元的视频的图像的方法。处理器量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。处理器基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布‑莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。处理器使用具有莱斯参数值的哥伦布‑莱斯二值化,将当前位置的量化等级转换为二进制表示。处理器将当前位置的二进制表示压缩到码流中。

Description

视频编码中的量化等级二值化
相关申请的交叉引用
本申请要求于2021年6月3日提交的发明名称为“用于视频压缩的旁路残差编码”、申请号为63/196,618的美国临时专利申请的优先权,其全部内容以引入的方式并入本申请。
背景技术
本公开的实施例涉及视频编码。
数字视频已经成为主流,并被广泛应用于包括数字电视、视频电话、和电话会议的应用中。由于计算和通信技术的进步以及高效的视频编码技术,这些数字视频应用具有可行性。可以使用各种视频编码技术来压缩视频数据,从而可以使用一个或多个视频编码标准来执行对视频数据的编码。示例性视频编码标准可以包括但不限于通用视频编码(versatile video coding,H.266/VVC)、高效视频编码(high-efficiency video coding,H.265/HEVC)、高级视频编码(advanced video coding,H.264/AVC)、运动图像专家组(moving picture expert group,MPEG)编码等等。
发明内容
根据本公开的一个方面,公开了一种用于编码包括当前变换单元的视频的图像的方法。处理器量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。处理器基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。处理器使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。处理器将当前位置的二进制表示压缩到码流中。
根据本公开的另一方面,一种用于编码包括当前变换单元的视频的图像的***包括用于存储指令的存储器和耦合到该存储器的处理器。处理器用于在执行指令时,量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。处理器也用于在执行指令时,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。处理器还用于在执行指令时,使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。处理器还用于在执行指令时,将当前位置的二进制表示压缩到码流中。
根据本公开的又一方面,公开了一种存储指令的非暂时性计算机可读介质,该指令由处理器执行时执行用于编码包括当前变换单元的视频的图像的处理。该处理包括,量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。该处理也包括,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。该处理还包括,使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。该处理还包括,将当前位置的二进制表示压缩到码流中。
根据本公开的又一方面,公开了一种用于解码包括当前变换单元的视频的图像的方法。处理器解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。处理器使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。处理器对当前位置的量化等级进行去量化,以生成当前位置的系数。
根据本公开的又一方面,一种用于解码包括当前变换单元的视频的图像的***包括用于存储指令的存储器和耦合到该存储器的处理器。处理器用于在执行指令时,解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。处理器也用于在执行指令时,使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。处理器还用于在执行指令时,对当前位置的量化等级进行去量化,以生成当前位置的系数。
根据本公开的又一方面,公开了一种存储指令的非暂时性计算机可读介质,该指令由处理器执行时执行用于解码包括当前变换单元的视频的图像的处理。该处理包括,解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。该处理也包括,使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。该处理还包括,对当前位置的量化等级进行去量化,以生成当前位置的系数。
提到这些说明性实施例不是为了限制或限定本公开,而是为了提供示例以帮助对其的理解。在具体实施方式中描述了附加的实施例并且提供了进一步的描述。
附图说明
结合在此并形成说明书一部分的附图示出了本公开的实施例,并且附图与说明书一起进一步用于解释本公开的原理,并使本领域技术人员能够制作和使用本公开。
图1示出了根据本公开的一些实施例的示例性编码***的框图。
图2示出了根据本公开的一些实施例的示例性解码***的框图。
图3示出了根据本公开的一些实施例的图1中的编码***中的示例性编码器的详细框图。
图4示出了根据本公开的一些实施例的图2中的解码***中的示例性解码器的详细框图。
图5示出了根据本公开的一些实施例的被划分成编码树单元(coding tree unit,CTU)的示例性图像。
图6示出了根据本公开的一些实施例的被划分成编码单元(coding unit,CU)的示例性CTU。
图7示出了根据本公开的一些实施例的使用常规残差编码(regular residualcoding,RRC)进行编码的示例性变换块。
图8示出了根据本公开的一些实施例的输入等级的哥伦布-莱斯二值化中使用的示例性码字。
图9A和图9B示出了根据本公开的一些实施例的确定变换单元中localSumAbs变量的示例性模板样式。
图10示出了RCC中的编码过程。
图11A示出了根据本公开的一些实施例的RCC中的示例性旁路编码模式。
图11B示出了根据本公开的一些实施例的RCC中的另一示例性旁路编码模式。
图11C示出了根据本公开的一些实施例的变换单元(transform unit,TU)编码中的又一示例性旁路编码模式。
图11D示出了根据本公开的一些实施例的TU编码中的示例性旁路编码模式。
图12示出了根据本公开的一些实施例的视频编码的示例性方法的流程图。
图13示出了根据本公开的一些实施例的确定历史变量值的示例性方法的流程图。
图14示出了根据本公开的一些实施例的视频解码的示例性方法的流程图。
本公开的实施例将参考附图进行描述。
具体实施方式
尽管讨论了一些配置和布置,但应当理解,这样做只是为了示例性说明。本领域技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他配置和布置。显然,对于本领域技术人员来说,本公开也可以应用于各种其他应用中。
需要注意的是,说明书中对“一个实施例”、“一实施例”、“示例性实施例”、“一些实施例”、“某些实施例”等的引用,指示所描述的实施例可以包括特定的特征、结构、或特性,但是每个实施例不一定包括该特定的特征、结构、或特性。另外,此类短语不一定指同一实施例。此外,当结合实施例描述特定特征、结构、或特性时,本领域技术人员应该知悉,无论是否明确描述,这种特征、结构、或特性也可以结合其他实施例来实现。
一般来说,术语可以至少部分地从上下文中的用法来理解。例如,本文使用的术语“一个或多个”,可以用于描述单数意义上的任何特征、结构或特性,也可以用于描述复数意义上的特征、结构、或特性的组合,这至少部分取决于上下文。类似地,术语如“一”、“一个”或“该”,也可以理解为单数用法或复数用法,这至少部分取决于上下文。此外,术语“基于”可以理解为不一定旨在表达一组排他性的因素,而是可以允许存在不一定明确描述的其他因素,这也至少部分取决于上下文。
下面将参考各种装置和方法,描述视频编码***的各个方面。这些装置和方法将在下面的详细描述中进行描述,并在附图中通过各种模块、组件、电路、步骤、操作、处理、算法等等(统称为“元素”)来示出。这些元素可以使用电子硬件、固件、计算机软件、或其任何组合来实现。这些元素是以硬件、固件还是软件的形式实现,取决于特定的应用和施加在整个***上的设计约束。
本文描述的技术可以用于各种视频编码应用。如本文所述,视频编码包括对视频进行编码和解码。视频的编码和解码可以以块为单位来执行。例如,可以对编码块、变换块或预测块执行例如变换、量化、预测、环路滤波、重建等的编码/解码处理。如本文所描述,待编码/解码的块将被称为“当前块”。例如,根据当前编码/解码处理,当前块可以表示编码块、变换块、或预测块。此外,应当理解,在本公开中使用的术语“单元”指示用于执行特定编码/解码处理的基本单元,以及术语“块”指示预定大小的样本阵列。除非另有说明,否则“块”和“单位”可以互换使用。
在视频编码中,量化用于缩小经变换或未经变换的视频信号的动态范围,从而能够使用更少的比特来表示视频信号。在量化之前,特定位置处的经变换或未经变换的视频信号被称为“系数”。在量化之后,系数的量化值被称为“量化等级”或“等级”。在本公开中,位置的量化等级是指该位置的系数的量化等级。在视频编码中,残差编码用于将位置的量化等级编码到码流中。在量化之后,对于N×M的编码块可以存在N×M个量化等级。这些N×M个量化等级可以是零或非零值。如果等级不是二进制的,则可以使用二值化的方法,将非零等级进一步转化(例如,二进制化)为二进制表示(例如,二进制位元)。可以采用编码算法(例如,熵编码算法),将二进制表示(例如,二进制位元)压缩到码流中。二值化的方法可以是但不限于哥伦布-莱斯二值化,例如组合的截断莱斯二值化(truncated Rice,TR)和有限K阶指数哥伦布(k-th order Exp-Golomb,EGk)二值化、以及EGk二值化。熵编码算法可以是但不限于可变长编码(variable-length coding,VLC)方案、上下文自适应可变长度编码(context-adaptive VLC,CAVLC)方案、算术编码方案、二值化、上下文自适应二进制算术编码(context-adaptive binary arithmetic coding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptive binary arithmetic coding,SBAC)、概率区间分割熵(probability interval partitioning entropy,PIPE)编码、或其他熵编码技术。
例如,通用视频编码(versatile video coding,H.266/VVC)的组合的TR和有限EGk二值化用到了许多参数,例如截断参数、莱斯参数、和系数的动态范围长度(length ofdynamic range,LDR)。莱斯参数确定初始后缀码长度。截断参数用于确定可使用初始后缀码长度的输入值范围的数量。LDR用于确定最大后缀码长度。对高位深和高码率的视频编码(例如,位深为16位)来说,其待二值化的量化等级平均比当前H.266/VVC(例如,位深低于16位,如10位)的待二值化的量化等级大得多。因此,对于高位深和高码率的视频编码来说,当前用于二值化量化等级的参数(例如莱斯参数)可能不是最优的,而且当前H.266/VVC的编码性能可能会受到影响。
为了提高视频编码的编码性能,特别是高位深和高码率的视频编码,本公开提供了一种量化等级二值化方案,该方案使用适应于用于编码视频图像的位深和码率的莱斯参数。在一些实施例中,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值,并且历史变量值基于用于编码图像的位深和/或码率而确定。例如,偏移量(例如,一个非零整数)可以用于基于编码图像的位深和/或码率,调整历史变量值。对于高位深和高码率的视频编码来说,其偏移值可以大于低位深和低码率或正常位深和正常码率的视频编码的偏移值,从而更适合平均值较大的量化等级。因此,莱斯参数(如码字长度)可以基于位深和/或码率进行优化,从而提高编码效率。
根据本公开的一些方面,本文公开的量化等级二值化方案可应用于旁路编码模式,尤其是常规残差编码(regular residual coding,RRC)中的旁路编码模式。
例如,H.266/VVC、高效视频编码(high-efficiency video coding,H.265/HEVC)、和高级视频编码(advanced video coding,H.264/AVC)的CABAC使用位元,将位置的量化等级编码为比特。CABAC使用了两种基于上下文建模的编码方法。基于上下文的方法根据相邻编码信息,自适应地更新上下文模型,以这种方式编码的位元被称为上下文编码位元(context-coded bin,CCB)。相比之下,另一种旁路方法假定1或0的概率始终为50%,因此始终使用固定的上下文建模,不进行任何调整,以这种方式编码的位元被称为旁路编码位元(bypass-coded bin,BCB)。
对于高位深和高码率的视频编码来说,吞吐量是一个更重要的问题。但是,与使用BCB的编码相比,使用CCB的编码需要相对复杂的硬件实现,而且总体上降低了视频编码的吞吐量,因此,使用CCB的编码是提高高位深和高码率的视频编码的吞吐量的瓶颈。
为了提高视频编码的吞吐量,尤其是高位深和高码率的视频编码的吞吐量,在旁路编码模式中,通常跳过残差编码的CCB(例如,从量化等级中的剩余等级进行二进制化的CCB),或者将其改变为BCB。换句话说,RRC中的旁路编码模式只能用BCB(例如,从量化等级中的绝对等级进行二进制化的BCB)。然而,当前的H.266/VVC在计算用于确定RRC旁路模式中的莱斯参数的历史变量值时,并不采用基于位深和/或码率的偏移量。
根据本公开的一些方面,量化等级二值化方案使用适应于用于编码视频图像的位深和/或码率的莱斯参数,该方案同样可以用于RRC中的旁路编码模式。在一些实施例中,当前位置的二进制表示包括RRC中的BCB。例如,使用莱斯参数值适应于用于编码视频图像的位深和/或码率的哥伦布-莱斯二值化,也可以转化量化等级中的绝对等级的BCB。因此,可以提高用于高位深和高码率的视频编码的RRC中旁路模式的编码效率和吞吐量。
图1示出了根据本公开的一些实施例的示例性编码***100的框图。图2示出了根据本公开的一些实施例的示例性解码***200的框图。每个***100或200可以应用于或集成到能够进行数据处理的各种***和装置中,例如计算机和无线通信设备。例如,***100或200可以是移动电话、桌上型计算机、膝上型计算机、平板电脑、车载计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(virtual reality,VR)设备、增强现实(argument reality,AR)设备或具有数据处理能力的任何其他合适的电子设备的全部或一部分。如图1和图2所示,***100或200可包括处理器102、存储器104、和接口106。如图所示,这些组件通过总线相互连接,但其他连接类型也是允许的。应当理解,***100或200可以包括用于执行本文所描述的功能的任何其他合适的组件。
处理器102可以包括微处理器,例如图形处理单元(graphic processing unit,GPU)、图像信号处理器(image signal processor,ISP)、中央处理单元(centralprocessing unit,CPU)、数字信号处理器(digital signal processor,DSP)、张量处理单元(tensor processing unit,TPU)、视觉处理单元(vision processing unit,VPU)、神经处理单元(neural processing unit,NPU)、协同处理单元(synergistic processingunit,SPU)或物理处理单元(physics processing unit,PPU)、微控制器单元(microcontroller unit,MCU)、专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、状态机、门控逻辑、分立硬件电路、以及用于执行本公开中描述的各种功能的其他合适硬件。尽管在图1和图2中仅示出了一个处理器,但是应当理解,可以包括多个处理器。处理器102可以是具有一个或多个处理核的硬件设备。处理器102可以执行软件。软件应广义地解释为表示指令、指令集、码、码段、程序码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、进程、功能等,无论被称为软件、固件、中间件、微码、硬件描述语言、或其他。软件可以包括用解释型语言编写的计算机指令、用编译语言编写的计算机指令、或用机器码编写的计算机指令。在广泛的软件类别下,用于指示硬件的其他技术也是允许的。
存储器104可以广泛地包括存储器(又名,主/***存储器)和存储(又名,辅存储器)两者。例如,存储器104可以包括随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、静态RAM(static RAM,SRAM)、动态RAM(dynamic RAM,DRAM)、铁电RAM(ferro-electric RAM,FRAM)、电可擦除可编程ROM(electricallyerasable programmable ROM,EEPROM)、光盘只读存储器(compact disc read-onlymemory,CD-ROM)或其他光盘存储器、硬盘驱动器(hard disk drive,HDD),例如磁盘存储或其他磁存储设备、闪存驱动器、固态驱动器(solid-state drive,SSD),或可以用于以处理器102访问和执行的指令的形式携载或存储期望的程序码的任何其他介质。广义地说,存储器104可以由任何计算机可读介质实施,例如非暂时性计算机可读介质。尽管在图1和图2中仅示出了一个存储器,但是应当理解,可以包括多个存储器。
接口106可以广泛地包括数据接口和通信接口,通信接口用于在与其他外部网络元件接收和发送信息的过程中,接收和发送信号。例如,接口106可以包括输入/输出(input/output,I/O)设备和有线或无线收发器。尽管在图1和图2中仅示出了一个存储器,但是应当理解,可以包括多个接口。
处理器102、存储器104、和接口106可以在***100或200中以各种形式实现,用于执行视频编码功能。在一些实施例中,***100或200的处理器102、存储器104、和接口106在一个或多个片上***(system-on-chip,SOC)上实现(例如,集成)。在一个示例中,处理器102、存储器104、和接口106可以集成在处理操作***(operating system,OS)环境中的应用处理(包括运行视频编码和解码应用)的应用处理器(application processor,AP)SoC上。在另一示例中,处理器102、存储器104、和接口106可以集成在用于视频编码的专用处理器芯片上,例如专用于实时操作***(real-time operating system,RTOS)中的图像和视频处理的GPU或ISP芯片。
如图1所示,在编码***100中,处理器102可以包括一个或多个模块,例如编码器101。尽管图1示出编码器101在一个处理器102内,但是应当理解,编码器101可以包括一个或多个子模块,这些子模块可以在彼此靠近或远离的不同处理器上实现。编码器101(和任何对应的子模块或子单元)可以是处理器102的硬件单元(例如,集成电路的一部分),其被设计用于与其他组件或由处理器102通过执行程序的至少一部分(即,指令)来实现的软件单元一起使用。程序的指令可以存储在计算机可读介质(例如存储器104)上,并且当由处理器102执行时,该指令可以执行具有与视频编码相关的一个或多个功能的处理,例如下文详细描述的图像划分、帧间预测、帧内预测、变换、量化、滤波、熵编码等。
类似地,如图2所示,在解码***200中,处理器102可以包括一个或多个模块,例如解码器201。尽管图1示出解码器201在一个处理器102内,但是应当理解,解码器201可以包括一个或多个子模块,这些子模块可以在彼此靠近或远离的不同处理器上实现。解码器201(和任何对应的子模块或子单元)可以是处理器102的硬件单元(例如,集成电路的一部分),其被设计用于与其他组件或由处理器102通过执行程序的至少一部分(即,指令)来实现的软件单元一起使用。程序的指令可以存储在计算机可读介质(例如存储器104)上,并且当由处理器102执行时,该指令可以执行具有与视频解码相关的一个或多个功能的处理,例如下文详细描述的熵解码、逆量化、逆变换、帧间预测、帧内预测、滤波。
图3示出了根据本公开的一些实施例的图1中的编码***100中的示例性编码器101的详细框图。如图3所示,编码器101可以包括划分模块302、帧间预测模块304、帧内预测模块306、变换模块308、量化模块310、去量化模块312、逆变换模块314、滤波器模块316、缓冲器模块318、和编码模块320。应当理解,图3中所示的每一个元素都被独立示出,以表示视频编码器中彼此不同的特性功能,并且这并不意味着每个组件由单独的硬件或单个软件的配置单元形成。也就是说,为了便于解释,每个元素被列为一个元素,并且元素中的至少两个可以组合成单个元素,或者一个元素可以拆分成多个元素以执行功能。还应理解,有些元素不是执行本公开中描述的功能的必要元素,而可以是用于改善性能的可选元素。还应理解,这些元素可以使用电子硬件、固件、计算机软件、或其任何组合来实现。这些元素是以硬件、固件、还是软件的形式实现,取决于特定的应用和施加在编码器101上的设计约束。
划分模块302可以用于将视频的输入图像划分成至少一个处理单元。图像可以是视频的帧或视频的场。在一些实施例中,图像包括单色格式的亮度样本阵列,或者亮度样本阵列和两个对应的色度样本阵列。此时,处理单元可以是预测单元(prediction unit,PU)、变换单元(transform unit,TU)或编码单元(coding unit,CU)。划分模块302可以将图像划分成多个CU、预测单元和变换单元的组合,并且基于预定标准(例如,代价函数)选择CU、预测单元、和变换单元的组合,对图像进行编码。
与H.265/HEVC类似,H.266/VVC是基于块的混合时空预测编码方案。如图5所示,在编码期间,输入图像500首先由划分模块302划分成正方形块-编码树单元(coding treeunit,CTU)502。例如,CTU 502可以是128×128像素的块。如图6所示,图像500中每个CTU502可以由划分模块302划分为一个或多个CU 602,该一个或多个CU 602可以用于预测和变换。与H.265/HEVC不同,在H.266/VVC中,CU 602可以是矩形或正方形,并且无需进一步划分成预测单元或变换单元就可以进行编码。例如,如图6所示,CTU 502到CU 602的划分可以包括四叉树划分(用实线指示)、二叉树划分(用虚线指示)、和三叉树划分(用点划线指示)。根据一些实施例,每个CU 602最大可以是其根CTU 502,或者最小可以是根CTU 502的4×4块的细分。
参照图3,帧间预测模块304可以用于对预测单元执行帧间预测,帧内预测模块306可以用于对预测单元执行帧内预测。可以确定对于预测单元是使用帧间预测还是执行帧内预测,并且根据每个预测方法确定特定信息(例如,帧内预测模式、运动矢量、参考图像等)。此时,用于执行预测的处理单元可以不同于用于确定预测方法和特定内容的处理单元。例如,可以在预测单元中确定预测方法和预测模式,并且可以在变换单元中执行预测。可以将生成的预测块和原始块之间的残差块中的残差系数输入到变换模块308中。此外,可以由编码模块320将用于预测的预测模式信息、运动矢量信息等与残差系数或量化等级一起编码到码流中。应当理解,在某些编码模式中,可以对原始块本身进行编码,而不通过预测模块304或306生成预测块。还应当理解,在某些编码模式中,也可以跳过预测、变换、和/或量化。
在一些实施例中,帧间预测模块304可以基于当前图像之前或之后的图像中的至少一个图像的信息来预测预测单元,并且在一些情况下,帧间预测模块304可以基于当前图像中已经被编码的部分区域的信息来预测预测单元。帧间预测模块304可以包括子模块,例如参考图像内插模块、运动预测模块、和运动补偿模块(未示出)。例如,参考图像内插模块可以从缓冲器模块318接收参考图像信息,并从参考图像生成整数个或更少像素的像素信息。在亮度像素的情况下,可以使用具有变化滤波器系数的基于离散余弦变换(discretecosine transform,DCT)的8抽头插值滤波器,生成整数个像素或以1/4像素为单位的更少像素的像素信息。在色差信号的情况下,可以使用具有变化滤波器系数的基于DCT的4抽头插值滤波器,生成整数个像素或以1/8像素为单位的更少像素的像素信息。运动预测模块可以基于由参考图像内插部内插出的参考图像,执行运动预测。例如基于全搜索的块匹配算法(full search-based block matching algorithm,FBMA)、三步搜索(three-stepsearch,TSS)、和新三步搜索算法(new three-step search,NTS)的各种方法可以用作计算运动矢量的方法。运动矢量可以具有基于内插像素的1/2、1/4、或1/16像素或整数像素的单位的运动矢量值。运动预测模块可以通过改变运动预测方法来预测当前预测单元。可以使用例如跳过方法、合并方法、高级运动矢量预测(advanced motion vector prediction,AMVP)方法、块内复制方法等各种方法作为运动预测方法。
在一些实施例中,帧内预测模块306可以基于当前块周围的参考像素的信息(其是当前图像中的像素信息),生成预测单元。当当前预测单元的邻域中的块是已经执行了帧间预测的块,并且因此参考像素是已经执行了帧间预测的像素时,可以使用包括在已经执行了帧间预测的块中的参考像素来代替已经执行了帧内预测的邻域中的块的参考像素信息。即,当参考像素不可用时,可用参考像素中的至少一个参考像素可以用来代替不可用的参考像素信息。在帧内预测中,预测模式可以具有根据预测方向使用参考像素信息的角度预测模式,以及在执行预测时不使用方向信息的非角度预测模式。用于预测亮度信息的模式可以不同于用于预测色差信息的模式,并且用于预测亮度信息或预测的亮度信号信息的帧内预测模式信息可以用于预测色差信息。如果在执行帧内预测时预测单元的大小与变换单元的大小相同,则可以基于预测单元的左侧的像素、左上侧的像素、和顶部的像素,对预测单元执行帧内预测。然而,如果在执行帧内预测时预测单元的大小不同于变换单元的大小,则可以基于变换单元使用参考像素,执行帧内预测。
帧内预测方法可以在根据预测模式将自适应帧内平滑(adaptive intrasmoothing,AIS)滤波器应用于参考像素之后生成预测块。应用于参考像素的AIS滤波器的类型可以变化。为了执行帧内预测方法,可以从当前预测单元的邻域中存在的预测单元的帧内预测模式来预测当前预测单元的帧内预测模式。当使用从相邻预测单元预测的模式信息来预测当前预测单元的预测模式时,如果当前预测单元的帧内预测模式与邻域中的预测单元相同,则可以使用预定标志信息来发送指示当前预测单元的预测模式与邻域中的预测单元相同的信息,并且如果当前预测单元和邻域中的预测单元的预测模式彼此不同,则可以通过额外标志信息来编码当前块的预测模式信息。
如图3所示,可以生成残差块,该残差块包括已经基于由预测模块304或306生成的预测单元执行预测的预测单元和残差系数信息,该残差系数信息是预测单元与原始块的差值。可以将所生成的残差块输入到变换模块308中。
变换模块308可以用于使用例如DCT、离散正弦变换(discrete sine transform,DST)、Karhunen-Loève变换(KLT)、或变换跳过的变换方法,变换包括原始块和通过预测模块304和306生成的预测单元的残差系数信息的残差块。可以基于用于生成残差块的预测单元的帧内预测模式信息,确定是否应用DCT、DST、或KLT来变换残差块。变换模块308可以将残差块中的视频信号从像素域变换到变换域(例如,频域,取决于变换方法)。应当理解,在一些示例中,可以跳过变换模块308,并且不将视频信号变换到变换域。
量化模块310可以用于量化编码块中的每个位置的系数,以生成该位置的量化等级。当前块可以是残差块。即,量化模块310可以对每个残差块执行量化处理。残差块可以包括N×M个位置(样本),每个位置与经变换或未经变换的视频信号/数据(例如亮度和/或色度信息)相关联,其中N和M是正整数。在本公开中,在量化之前,在特定位置处的经变换或未经变换的视频信号在此被称为“系数”。在量化之后,系数的量化值在此被称为“量化等级”或“等级”。
量化可以用于缩小经变换或未经变换的视频信号的动态范围,从而将使用更少的比特来表示视频信号。量化通常涉及除以量化步长和随后的舍入,而去量化(又称逆量化)涉及乘以量化步长。量化步长可用量化参数(quantization parameter,QP)表示。这种量化处理被称为标量量化。编码块内所有系数的量化都可以独立完成,这种量化方法在一些现有的视频压缩标准(例如H.264/AVC和H.265/HEVC)中被使用。量化的QP会影响用于编码/解码视频图像的码率。例如,QP越高,码率越低;QP越低,码率越高。
对于N×M编码块,可以使用特定的编码扫描顺序,将块的二维(two-dimensional,2D)系数转换成一维(one-dimensional,1D)顺序,以用于系数量化和编码。典型地,编码扫描从编码块的左上角开始并在右下角或右下方向上的最后非零系数/等级处停止。应当理解,编码扫描顺序可以包括任何合适的顺序,例如之字形扫描顺序、垂直(列)扫描顺序、等级(行)扫描顺序、对角线扫描顺序、或其任何组合。编码块内系数的量化可以利用编码扫描顺序信息。例如,系数的量化可以取决于沿着编码扫描顺序的先前量化等级的状态。为了进一步提高编码效率,量化模块310可以使用多于一个量化器,例如,两个标量量化器。哪个量化器将用于量化当前系数,取决于在编码扫描顺序中在当前系数之前的信息,这种量化处理被称为依赖量化。
参考图3,编码模块320用于将编码块中的每个位置的量化等级编码到码流中。在一些实施例中,编码模块320可以对编码块执行熵编码。熵编码可以使用各种二值化方法(例如包括EGk二值化、组合TR和有限EGk二值化等的哥伦布-莱斯二值化),将每个量化等级转换为相应的二进制表示(如二进制位元)。然后,可以使用VLC、CAVLC、CABAC、SBAC、PIPE编码等熵编码算法,进一步压缩二进制表示。压缩后的数据可添加到码流中。除了量化等级之外,编码模块320可以编码各种其他信息,例如从预测模块304和预测模块306输入的CU的块类型信息、预测模式信息、划分单元信息、预测单元信息、传输单元信息、运动矢量信息、参考帧信息、块内插信息、以及滤波信息。在一些实施例中,编码模块320可以对编码块执行残差编码,将量化等级转换成码流。例如,在量化之后,对于N×M的块可以存在N×M个量化等级。这些N×M个等级可以是零或非零值。如果等级不是二进制的,则可以使用例如组合TR和有限EGk二值化,将非零等级进一步二进制化为二进制位元。
非二进制语法元素可以映射到二进制码字中。符号和码字之间的双射映射通常使用简单的结构化码,这种双射映射被称为二值化。二进制语法元素和非二进制数据码字二者的二进制符号(也称为位元)可以使用二进制算术编码进行编码。CABAC的核心编码引擎可支持两种运行模式:一种是上下文编码模式,在这种模式中,使用自适应概率模型对位元进行编码;另一种是相对不复杂的旁路模式,该模式使用1/2的固定概率。自适应概率模型也被称为上下文,将概率模型分配给单个位元被称为上下文建模。
根据本公开的一些方面,在H.266/VVC中,哥伦布-莱斯二值化过程(例如,组合TR和有限EGk二值化)涉及许多参数,例如截断参数、莱斯参数、以及系数的LDR。莱斯参数为初始后缀码长度。截断参数用于确定可使用初始后缀码长度的输入值范围的数量。LDR用于定义最大后缀码长度。在一些示例中,LDR设置为15。在其他示例中,LDR设置为15与位深加6之间的较大值。如果位深为16,则LDR为22。在一些实施例中,二进制位元的最大长度设置为32。二进制位元的最大长度可以用于确定码字前缀的最大长度。在当前的H.266/VVC规范中,截断参数值为5,系数的LDR为15。在变换跳过残差编码(transform skip residualcoding,TSRC)模式中,莱斯参数定义为固定值1。在RRC模式中,莱斯参数为介于0到3之间的值。
例如,图8示出了根据本公开的一些实施例的在哥伦布-莱斯二值化(例如,组合TR和有限EGk二值化)中用于二进制化输入值(例如,量化等级中的绝对等级或剩余等级)的示例性码字。在本示例中,截断参数值、莱斯参数值、和LDR值分别设置为3、2、和22。因此,初始后缀码长度为2,并且该初始后缀码长度用于第一个截断+1(即,4)个输入值范围[0,3]、[4,7]、[8,11]、和[12,15]。在第一个截断+1个输入值范围之后,每个输入值范围的后缀码长度依次加1。例如,值范围[16,23]的码字后缀使用3位,输入值范围[24,39]使用4位,以此类推。最后一个输入值范围的码字后缀使用LDR位(即在本例中为22位)。每个值范围的前缀码长度依次增加,直到有LDR位(如图8中的22-LDR位)的最后一个输入范围的前缀码长度达到10位。
对高位深和高码率的视频编码(例如,位深为16位)来说,其量化等级平均比当前的H.266/VVC的量化等级大得多,这例如是量化步长较小的原因所导致。从图8所示的示例可以看出,大量化等级的前缀和后缀所使用的比特数高于小量化等级的前缀和后缀所使用的比特数。因此,对于高位深和高码率的视频编码来说,当前用于二值化量化等级的参数(如莱斯参数)可能不是最优的,并且可能会影响当前VVC的编码性能。
在莱斯参数方面,为了提高基于计算模板估算莱斯参数的准确性,可以使用基于历史的莱斯参数推导方法。如图9A和9B所示,可以使用变量(即localSumAbs)来计算当前位置的莱斯参数,该变量是变换单元中最多五个相邻位置的绝对等级之和。在图9A和9B中,黑色实心方框代表当前变换单元中的当前位置,图案方框代表当前变换单元中的当前位置的相邻位置。如图9A所示,五个相邻位置的量化等级(如剩余等级或绝对等级)之和可用于计算当前位置的变量localSumAbs,进而确定当前位置的莱斯参数。然而,如图9B所示,有些位置位于靠近当前变换单元的边界,当前变换单元中可用于计算这些“边界”当前位置的变量localSumAbs的相邻位置可能少于5个的。换句话说,“边界”当前位置的五个相邻位置中的至少一个可以位于当前变换单元之外。
为了提高基于计算模板估算莱斯参数的准确性,可以使用历史导出值(例如,历史变量值)而不是0来更新当前变换单元之外的当前位置的变量localSumAbs,例如,如下面的伪代码所示:
上述伪代码过程的输入是基准等级baseLevel、颜色分量索引cIdx、指定相对于当前图片左上样本的当前变换块左上样本的亮度位置(x0,y0)、当前系数扫描位置(xC,yC)、变换块宽度的二进制对数log2TbWidth、以及变换块高度的二进制对数log2TbHeight。这个过程的输出是变量localSumAbs。如果转换块的数组AbsLevel[x][y]具有分量索引cIdx和左上亮度位置(x0,y0),那么变量locSumAbs可以根据上述伪代码过程生成。具体来说,在上述伪代码过程的斜体部分中,当当前位置的至少一个相邻位置位于当前变换单元之外时,历史变量histValue用于计算变量locSumAbs。
变量localSumAbs的更新方式如下所示:
也就是说,如果RRC的莱斯参数扩展标志sps_rrc_rice_extension_flag关闭,那么变量shiftVal的值可以为0。如果RRC的莱斯参数扩展标志sps_rrc_rice_extension_flag打开,那么变量shiftVal的值可以基于变量localSumAbs的值和上述伪代码过程中列出的Tx[]和Rx[]的值进行计算。例如,上述列出的Tx[]和Rx[]可以指定为Tx[]={32,128,512,2048},Rx[]={0,2,4,6,8}。
给定变量locSumAbs,可以先推导出莱斯参数cRiceParam,例如,如下表1所示,然后更新如下:
表I基于locSumAbs的cRiceParam的规范
为了保持历史记录,历史变量histValue的值最多可以每个变换单元更新一次,并且历史变量histValue的更新值可以用于确定当前变换单元之后的下一个变换单元中的位置的变量locSumAbs(以及对应的莱斯参数)。换句话说,基于当前变换单元之前的先前变换单元的历史变量值,可以确定当前变换单元中的当前位置(例如,“边界”当前位置)的莱斯参数值。
在一些实施例中,RRC中的每个变换单元在解码之前,可以使用根据先前变换单元确定的历史计数器StatCoeff[cIdx]的值,初始化历史变量histValue,具体如下:
histValue=1<<StatCoeff[cIdx]
updateHist=1
StatCoeff[cIdx]是每个颜色分量索引cIdx的单个历史计数器。例如,历史计数器StatCoeff[cIdx]可以通过指数移动平均过程,基于第一个非零哥伦布-莱斯编码位置(例如,用abs_remainder或dec_abs_level语法元素进行编码的编码位置)的量化等级(例如,绝对等级或剩余等级)(即第一个非零的哥伦布-莱斯编码量化等级),每个变换单元更新一次。updateHist=1表示,如果至少有一个位置是用abs_remainder或dec_abs_level语法元素进行编码的(即哥伦布-莱斯编码位置),则变量histValue的初始值可以在当前变换单元中更新。
总而言之,先前变换单元的历史计数器StatCoeff[cIdx]的值(以及对应的历史变量histValue的值)会影响当前变换单元中的当前位置的莱斯参数值,进而影响二值化后的码字长度(例如,二进制表示的二进制位元的数量)。另一方面,因为用于编码图像的位深和/或码率会影响平均量化等级,所以基于位深和/或码率调整历史计数器StatCoeff[cIdx]的值(以及对应的历史变量histValue的值),可以提高使用优化后的莱斯参数进行二值化的效率。
请再次参考图3,在一些实施例中,编码模块320可以用于基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深和/或码率而确定,具体细节请参考下文。
根据本公开的一些方面,在H.266/VVC中,编码块是使用RRC进行编码的变换块。大于4×4的变换块可以划分为不相连的4×4子块,这些子块使用反向对角线扫描模式进行处理。可以理解的是,H.266/VVC支持非正方形的矩形变换块,所以也支持非4×4子块。为了便于描述且保持一般性,图7A描述了一个16x16变换块的示例,该变换块被进一步划分为4×4子块。反向对角线扫描模式用于处理变换块的子块以及处理每个子块内的频率位置。
在RRC中,最后非零等级位置(又称最后有效扫描位置)可以被定义为沿着编码扫描顺序的最后非零等级位置。该最后非零等级的2D坐标(last_sig_coeff_x和last_sig_coeff_y)可以先用最多四个语法元素进行编码,即,两个上下文编码的语法元素——两个最后有效系数前缀(last_sig_coeff_x_prefix和last_sig_coeff_y_prefix),以及两个旁路编码的语法元素——两个最后有效系数后缀(last_sig_coeff_x_suffix和last_sig_coeff_x_suffix)。在子块中,RRC可以先编码CCB,即编码的子块标志(sb_coded_flag),以指示当前子块的所有等级是否都为零。例如,如果sb_coded_flag等于1,则当前子块中可以至少有一个非零系数。如果sb_coded_flag等于0,则当前子块中的所有系数都为零。可以理解的是,可以基于编码扫描顺序从last_sig_coeff_x和last_sig_coeff_y导出具有最后非零等级的最后非零子块的sb_coded_flag,而无需编码到码流中。同样,可以基于编码扫描顺序导出整个块的直流(direct current,DC)所在的第一个子块的sb_coded_flag,而无需编码到码流中。其他sb_coded_flag可以被编码为CCB。RRC可以按照反向编码扫描顺序,从最后非零子块开始,逐个编码子块。
为了保证最坏情况下的吞吐量,可以使用剩余的CCB(remBinsPass1)的值来限制CCB的最大数量。remBinsPass1的初始值可以至少部分地基于编码块的长度和宽度来计算。在子块内,RRC可以按照反向编码扫描顺序对每个位置的等级进行编码。可以将预定义的阈值与remBinsPass1进行比较,以确定是否已达到CCB的最大数量。例如,H.266/VVC中的remBinsPass1的阈值可以预定义为4。
如图10所示,如果remBinsPass1不小于4(即图10中的“剩余的CCB≥4”),则在编码子块(即图10中的“SB”)中的每个位置的量化等级时,可以先将有效标志(即sig_coeff_flag,图10中的“sig”)编码到码流中,以指示该等级是零还是非零。如果等级非零,则可以将大于1的标志(即abs_level_gtx_flag[n][0],图10中的“gt1”,其中n是子块中沿当前位置的扫描顺序的索引)编码到码流中,用来指示该绝对等级是1还是大于1。如果该绝对等级大于1,则可以将奇偶校验标志(即par_level_flag,图10中的“par”)编码到码流中,用来指示该等级是奇数还是偶数,接着可以存在一个大于标志(即abs_level_gtx_flag[n][1],图10中的“gt”)。也可以使用par_level_flag标志和abs_level_gtx_flag[n][1]标志来指示等级是2、3、或大于3。在使用上下文编码方法对上述每个语法元素进行编码(即CCB)后,remBinsPass1的值可以减少1。换句话说,在第一个编码通道(图10中的“通道1”)中,可以将有效标志、大于1的标志、奇偶校验标志和大于标志编码为每个子块的每个位置的CCB。
如果绝对等级大于5或rembinspass1的值小于4,对于编码上述CCB后的剩余等级,则可以分别在第二编码通道(即图10中的“通道2”)和第三编码通道(即图10中的“通道3”)中,将另外两个语法元素——余数(abs_remainder,图10中的“rem”,在本公开中也称为“剩余等级”)和绝对等级(dec_abs_level,图10中的“decAbsLevel”)编码为BCB。此外,也可以在第四个编码通道(即图10中的“pass 4”)中将每个非零等级的系数符号标志(coeff_sign_flag,图10中的“sign”)编码为BCB,以充分表示量化等级。
在一些实施例中,一种更通用的残差编码方法使用等级大于标志(abs_level_gtxX_flag)和剩余等级位元,从而能够有条件地解析变换块的等级编码的语法元素,并且其等级的绝对值的对应二值化在下面的表II中示出。这里abs_level_gtxX_flag描述等级的绝对值是否大于X,其中X是整数,例如0、1、2、....或N。如果abs_level_gtxX_flag为0(其中X为0和N-1之间的整数),则abs_level_gtx(X+1)_flag不存在。如果abs_level_gtxX_flag为1,则abs_level_gtx(X+1)_flag存在。此外,如果abs_level_gtxN_flag为0,则不存在余数。当abs_level_gtxN_flag为1时,存在余数,该余数表示从该等级中移除(N+1)后的值。通常,abs_level_gtxX_flag可以编码为CCB,而剩余等级位元可以编码为BCB。
abs(lvl) 0 1 2 3 4 5 6 7 8 9 ...
abs_level_gtx0_flag 0 1 1 1 1 1 1 1 1 1 ...
abs_level_gtx1_flag 0 1 1 1 1 1 1 1 1 ...
abs_level_gtx2_flag 0 1 1 1 1 1 1 1 ...
abs_level_gtx3_flag 0 1 1 1 1 1 1 ...
abs_remainder 0 1 2 3 4 5 ...
表II基于abs_level_gtxX_flag位元和余数位元的残差编码
如图3所示,去量化模块312可以用于通过去量化模块312对量化等级进行去量化,并且逆变换模块314可以用于对由变换模块308变换的系数进行逆变换。由去量化模块312和逆变换模块314生成的重建残差块可以与通过预测模块304或306预测的预测单元组合,以生成重建块。
滤波器模块316可以包括去块滤波器、取样自适应偏移(sample adaptiveoffset,SAO)、和自适应环路滤波器(adaptive loop filter,ALF)中的至少一个。去块滤波器可以去除重建图像中由块之间的边界生成的块失真。SAO可以针对已对其执行去块的视频,以像素为单位校正对原始视频的偏移。可以基于通过比较重建和滤波的视频与原始视频而获得的值来执行ALF。缓冲器模块318可以用于存储通过滤波器模块316计算的重建块或图像,并且当执行帧间预测时,重建和存储的块或图像可以被提供给帧间预测模块304。
图4示出了根据本公开的一些实施例的图2中的解码***200中的示例性解码器201的详细框图。如图4所示,解码器201可以包括解码模块402、去量化模块404、逆变换模块406、帧间预测模块408、帧内预测模块410、滤波器模块412、和缓冲器模块414。应当理解,图4中所示的每一个元素都被独立示出,以表示视频解码器中彼此不同的特性功能,并且这并不意味着每个组件由单独的硬件或单个软件的配置单元形成。也就是说,为了便于解释,每个元素被列为一个元素,并且元素中的至少两个可以组合成单个元素,或者一个元素可以拆分成多个元素以执行功能。还应理解,有些元素不是执行本公开中描述的功能的必要元素,而可以是用于改善性能的可选元素。还应理解,这些元素可以使用电子硬件、固件、计算机软件、或其任何组合来实现。这些元素是以硬件、固件、或软件的形式实现,取决于特定的应用和施加在解码器201上的设计约束。
当从视频编码器(例如,编码器101)输入视频码流时,输入的码流可以由解码器201以与视频编码器的程序相反的程序进行解码。因此,为了便于描述,此处不再赘述与上述描述编码相同的解码细节。解码模块402可以用于解码码流,以获得编码到码流中的各种信息,例如编码块中的每个位置的量化等级。在一些实施例中,解码模块402可以执行与由编码器执行的熵编码(压缩)(例如VLC、CAVLC、CABAC、SBAC、PIPE编码等)相对应的熵解码(解压缩),以获得二进制表示(如二进制位元)。解码模块402可以使用EGk二值化、组合TR和有限EGk二值化等哥伦布-莱斯二值化方法,将二进制表示进一步转化为量化等级。除了当前变换单元中的位置的量化等级之外,解码模块402可以解码各种其他信息,例如用于哥伦布-莱斯二值化的参数(例如莱斯参数)、解码单元块类型信息、预测模式信息、划分单元信息、预测单元信息、传输单元信息、运动矢量信息、参考帧信息、块内插信息、和滤波信息。在解码处理期间,解码模块402可以对码流执行重排,以通过基于由编码器使用的编码扫描顺序的逆扫描的方法,将数据从1D顺序重建和重排为2D重排块。
去量化模块404可以用于去量化编码块(例如,2D重建块)的每个位置的量化等级,以获得每个位置的系数。在一些实施例中,去量化模块404也可以基于由编码器提供的量化参数,执行依赖去量化。该量化参数包括依赖量化中使用的量化器的相关信息,例如,每个量化器使用的量化步长。
逆变换模块406可以用于对由编码器执行的DCT、DST和KLT分别执行逆变换,例如逆DCT、逆DST和逆KLT,以将数据从变换域(例如,系数)变换回像素域(例如,亮度和/或色度信息)。在一些实施例中,逆变换模块406可以基于例如预测方法、当前块的大小、预测方向等多条信息,选择性地执行变换操作(例如,DCT、DST、KLT)。
帧间预测模块408和帧内预测模块410可以用于基于与由解码模块402提供的与预测块的生成有关的信息和由缓冲器模块414提供的先前解码的块或图像的信息,生成预测块。如上所述,当以与编码器的操作相同的方式执行帧内预测时,如果预测单元的大小和变换单元的大小相同,则可以基于预测单元的左侧像素、左上侧像素和顶部像素对预测单元执行帧内预测。然而,在执行帧内预测时,如果预测单元的大小和变换单元的大小不同,则可以基于变换单元使用参考像素来执行帧内预测。
可以为滤波器模块412提供由逆变换模块406和预测模块408或410的输出组合而成的重建块或重建图像。滤波器模块412可以包括去块滤波器、偏移校正模块、和ALF。缓冲器模块414可以存储重建图像或块,并将其用作帧间预测模块408的参考图像或参考块,并且可以输出重建的图像。
与本公开的范围一致,编码模块320和解码模块402可以用于应用量化等级二值化方案,该方案使用适应于用于编码视频图像的位深和/或码率的莱斯参数,从而提高编码效率。
图12示出了根据本公开的一些实施例的视频编码的示例性方法1200的流程图。方法1200可以由编码***100的编码器101或任何其他合适的视频编码***在变换单元级别执行。方法1200可以包括如下所描述的操作1202、操作1204、操作1206、和操作1208。应当理解,其中有些操作是可选的,有些操作可以同时执行或者以不同于图12所示的顺序执行。
在操作1202,量化当前变换单元中的每个位置的系数,以生成该当前变换单元的量化等级。例如,如图3所示,量化模块310可用于量化当前变换单元中的每个位置的系数,以生成相应的量化等级。在一些实施例中,变换单元对应RRC中的多个变换(例如,三个)块。
在操作1204,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深和/或码率而确定。在一些实施例中,当前位置的相邻位置中的至少一个位于当前变换单元之外。换句话说,可以将历史变量应用于“边界”位置,例如如图9B所示。
例如,如图3所示,编码模块320可以基于先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。编码模块320还可以基于用于编码图像的位深和/或码率,确定历史变量值。
在一些实施例中,如图13所示,为了确定历史变量值,在操作1302,基于用于编码图像的位深和/或码率获得偏移值,并且在操作1304,基于偏移值和第一非零哥伦布-莱斯编码量化等级确定历史变量值,例如:使用先前变换单元的量化等级中的剩余等级(即abs_remainder语法元素)或绝对等级(即dec_abs_level语法元素)进行编码。偏移值可以为非零整数。例如,高位深和高码率的视频编码的位深为16位,偏移值为2。在一些实施例中,偏移值可以随着位深的增大而增大,反之亦然。换句话说,偏移值与位深呈正相关。在一个示例中,当位深小于16位时,偏移值可以小于2,如1。在另一个示例中,当位深大于16位时,偏移值可以大于2,如3、4、5等。另外或可选地,偏移值可以基于码率而确定,码率又可以基于量化步长(即QP)而确定。例如,QP越高,码率越低,偏移值越低;QP越低,码率越高,偏移值越高。换句话说,偏移值与码率呈正相关,而与QP呈负相关。在一些实施例中,视频的不同图像的偏移值可以是相同的,也可以是不同的。换句话说,偏移值不仅可以基于编码的位深来调整,还可以基于编码的具体图像来调整。
在一些实施例中,当前位置的二进制表示包括RRC中的BCB,例如dec_abs_level位元或abs_remainder位元。在一些实施例中,为了转换当前位置的量化等级,将当前位置的量化等级中的绝对等级转换为二进制表示,例如RRC中的旁路编码dec_abs_level位元。例如,可以使用具有适应用于编码图像的位深和/或码率的莱斯参数的哥伦布-莱斯二值化,二进制化量化等级中的绝对等级,得到RRC中的旁路编码dec_abs_level位元,如下面的伪代码过程示例所示:
在上述伪代码过程中,updateHist&&dec_abs_level[n]>0指示历史变量histValue仍然可以在该变换单元中更新,因为该历史变量histValue在此变换单元中更新的次数不超过一次,并且指示量化等级中的绝对等级dec_abs_level[n]是针对用dec_abs_level编码的第一个非零位置。因此,历史计数器StatCoeff[cIdx]的值可以从其值(例如,先前变换单元的历史计数器的值)通过两个部分更新:(1)Floor(Log2(dec_abs_level[n]))和(2)offset。第一部分可以基于第一个非零哥伦布-莱斯编码量化等级中的绝对等级(例如,在该变换单元中使用dec_abs_level进行编码)而确定。如上所述,可以基于用于编码图像的位深和/或码率获得偏移值,例如位深为16位则偏移值为2。updateHist=0表示历史变量histValue的更新值(从更新的历史计数器StatCoeff[cIdx]中获取)不能在此变换单元中再次更新,因为每个变换单元最多只能更新一次。
在一些实施例中,为了转换当前位置的量化等级,将当前位置的量化等级中的剩余等级转换为二进制表示,例如RRC中的旁路编码abs_remainder位元。例如,可以使用具有适应于用于编码图像的位深和/或码率的莱斯参数的哥伦布-莱斯二值化,二进制化量化等级中的剩余等级,得到RRC中的旁路编码abs_remainder位元,如下面的伪代码过程示例所示:
/>
在上述伪代码过程中,updateHist&&abs_remainder[n]>0表示历史变量histValue仍然可以在该变换单元中更新,因为该历史变量histValue在此变换单元中更新的次数不超过一次,并且指示量化等级中的剩余等级abs_remainder[n]是针对用该语法元素编码的第一个非零位置。因此,历史计数器StatCoeff[cIdx]的值可以从其值(例如,先前变换单元的历史计数器的值)通过两个部分更新:(1)Floor(Log2(abs_remainder[n]))和(2)offset。第一部分可以基于该变换单元中使用abs_remainder进行编码的第一个非零量化等级中的剩余等级而确定。如上所述,可以基于用于编码图像的位深和/或码率获得偏移值,例如位深为16位则偏移值为2。updateHist=0表示历史变量histValue的更新值(从更新的历史计数器StatCoeff[cIdx]中获取)不能在此变换单元中再次更新,因为每个变换单元最多只能更新一次。
一旦先前变换单元的历史变量histValue的值确定为初始值或更新值,就能够相应地(如基于上述伪代码过程)确定当前变换单元中的当前位置的变量localSumAbs的值,从而能够(如基于上述表I和变量shiftVal的值)确定当前位置的莱斯参数值。
请再次参考图12,在操作1206,使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。如图3所示,编码模块320可以用于使用具有莱斯参数值的组合TR和有限EGk二值化,将当前位置的量化等级(绝对等级或剩余等级)转换为二进制表示(如二进制位元)。因为莱斯参数是基于用于编码图像的位深和/或码率而调整,所以可以优化所得到的二进制表示的长度(如二进制位元的数量),从而提高编码效率。
在操作1208,将当前位置的二进制表示压缩到码流中。在一些实施例中,还将莱斯参数值压缩到码流中。如图3所示,编码模块320可以用于使用熵编码算法(例如CABAC),将当前变换单元中的每个位置的二进制表示和莱斯参数值压缩到码流中。
图14示出了根据本公开的一些实施例的视频解码的示例性方法1400的流程图。方法1400可以在变换单元级别中,由解码***200的解码器201或任何其他合适的视频解码***来执行。方法1400可以包括如下所描述的操作1402、操作1404、和操作1406。应当理解,其中有些操作是可选的,有些操作可以同时执行或者以不同于图14所示的顺序执行。
在操作1402,解压缩码流,以获得当前变换单元中的当前位置的二进制表示和该当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。如图4所示,解码模块402可以用于使用如上所述的熵编码算法(例如CABAC),解压缩码流,以获得当前变换单元中的位置的二进制表示(例如二进制位元)以及该位置的莱斯参数值。
在操作1404,使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。如图4所示,解码模块402可以用于使用具有莱斯参数值的组合TR和有限EGk二值化,将二进制表示(例如,二进制位元)转换为当前变换单元中的位置的量化等级(例如,绝对等级或剩余等级)。
在操作1406,对当前位置的量化等级进行去量化,以生成当前位置的系数。如图4所示,去量化模块404可以用于对每个位置的量化等级进行去量化,以生成变换单元中各个位置的系数。
根据本公开的一些方面,量化等级二值化方案使用适应于用于编码视频图像的位深和/或码率的莱斯参数,该方案应用于RRC中的旁路编码模式。
图11A示出了根据本公开的一些实施例的RRC中的示例性旁路编码模式。如图11A所示,码流可以起始于变换单元的变换单元位元。在CABAC中,许多变换单元位元可以保留为CCB,用于进行上下文编码。变换单元位元可以包括编码Cb变换块标志(tu_cb_coded_flag)、编码Cr变换块标志(tu_cr_coded_flag)、编码亮度变换块标志(tu_y_coded_flag)、量化参数增量值(cu_qp_delta_abs)、色度量化参数偏移标志(cu_chroma_qp_offset_flag)、色度量化参数偏移索引(cu_chroma_qp_offset_idx)、联合色度标志(tu_joint_cbcr_residual_flag)、和变换跳过标志(transform_skip_flag)。可以理解的是,变换单元位元也可以包括BCB,例如一些示例中的量化参数增量符号标志(cu_qp_delta_sign_flag)。
如图11A所示,变换单元可以对应亮度样本(即图11A中的“Y”)的一个编码块(例如RRC中的变换块)和色度样本的两个对应编码块(即图11A中的“Cb”和“Cr”)。因此,变换单元位元可以包括分别对应Y编码块、Cb编码块和Cr编码块的三个transform_skip_flag,并且每个transform_skip_flag都是CCB。对于每个编码块来说,在transform_skip_flag后编码/解码到码流中的编码块的第一个残差编码位元可以是最后有效系数前缀(last_sig_coeff_x_prefix和last_sig_coeff_y_prefix),这些前缀仍然保留为CCB。如图11A所示,每个编码块中的所有其他残差编码位元均可为BCB。例如,旁路编码的残差编码位元可以包括最后有效系数后缀(last_sig_coeff_x_suffix和last_sig_coeff_y_suffix)、编码子块标志(sb_coded_flag)、绝对等级(dec_abs_level)、和系数符号标志(coeff_sign_flag)。
也就是说,可以在last_sig_coeff_x_prefix和last_sig_coeff_y_prefix之后与sb_coded_flag之前对每个编码块启用旁路编码模式。在也需要对last_sig_coeff_x_sufix和last_sig_coeff_y_sufix进行编码的一些实施例中,可以在last_sig_coeff_x_prefix和last_sig_coeff_y_prefix之后与last_sig_coeff_x_sufix和last_sig_coeff_y_sufix之前对每个编码块启用旁路编码模式。换句话说,可以在紧跟在last_sig_coeff_x_prefix和last_sig_coeff_y_prefix之后对每个编码块启用旁路编码模式。在旁路编码模式中,每个子块的每个位置的残差编码位元sb_coded_flag可以从CCB转变为BCB。例如可以通过将剩余的CCB(remBinsPass1)的值设置为小于阈值4(例如,0),跳过所有其他CCB的编码,例如有效标志(sig_coeff_flag)、大于1标志(abs_level_gtx_flag[n][0])、奇偶校验标志(par_level_flag)、和大于标志(abs_level_gtx_flag[n][1])。因此,也可以跳过剩余等级/余数(abs_remainder[n])的编码。换句话说,在旁路编码模式中,可以跳过编码块的每一个子块中的每一位置的第一编码通道和第二编码通道,从而CCB不会出现在第一编码通道中。因此,在高吞吐量模式中,除了last_sig_coeff_x_prefix和last_sig_coeff_y_prefix之外,每个编码块可以只使用BCB进行编码。每个量化等级的编码可以由旁路编码的绝对等级(dec_abs_level)来完成,而不是剩余等级/余数(abs_remainder)。
图11B示出了根据本公开的一些实施例的RRC中的另一示例性旁路编码模式。与图11A所示的旁路编码不同,图11B的旁路编码模式进一步将last_sig_coeff_x_prefix和last_sig_coeff_y_prefix从CCB转变为BCB,从而在图11B的旁路编码模式中,每个编码块可以只使用BCB进行编码。如图11B所示,可以在编码块级别启用旁路编码模式。与图11A所示的方案相比,图11B所示的方案通过将最后有效系数前缀从CCB转变为BCB,进一步提高了视频编码的吞吐量。对于非常高的码率和高位深的操作范围,最后有效系数的位置的比特数可能也非常高,因为大多数块都是以较小的块大小进行编码的。因为针对last_sig_coeff_x_prefix和last_sig_coeff_y_prefix的每个位元导出上下文变量的索引,导出last_sig_coeff_x_prefix和last_sig_coeff_y_prefix的上下文索引可能会影响吞吐量。
图11C示出了根据本公开的一些实施例的变换单元编码中的又一示例性旁路编码模式。与图11B所示的旁路编码方式不同,图11C的旁路编码模式进一步将transform_skip_flag从CCB转变为BCB。
图11D示出了根据本公开的一些实施例的变换单元编码中的又一示例性旁路编码模式。与图11C所示的旁路对齐方案不同,图11D所示的旁路编码模式进一步将变换单元中的变换单元位元从CCB转变为BCB,从而在旁路编码模式中,变换单元中的所有变换单元位元也都被编码为BCB。例如,在旁路编码模式中,transform_skip_flags,tu_cb_coded_flag、tu_cr_coded_flag、tu_y_coded_flag、cu_qp_delta_abs、cu_chroma_qp_offset_flag、cu_chroma_qp_offset_idx、以及tu_joint_cbcr_residual_flag也可以从CCB转变为BCB。因此,在图11D所示的旁路编码模式中,可以只使用BCB对变换单元和三个相应的编码块进行编码。与图11C所示的方案相比,图11D所示的旁路编码模式通过将变换单元位元只编码成BCB,避免了CABAC编码引擎在编码变换单元时切换上下文编码和旁路编码,进一步提高了视频编码的吞吐量。可以在变换单元级别中启用旁路编码模式。
可以理解的是,在一些示例中,对于量化等级的剩余等级/余数位元(abs_remainder)和绝对等级位元(dec_abs_level),可以按照不同的方式调整历史计数器StatCoeff[cIdx]。例如,如果将变换单元中的第一个非零哥伦布-莱斯编码变换系数编码为abs_remainder,则其历史计数器StatCoeff[cIdx]被设计为大于将变换单元中的第一个非零哥伦布-莱斯编码变换系数编码为dec_abs_level的历史计数器StatCoeff[cIdx]。当abs_remainder和dec_abs_level都被允许对系数等级进行编码时,这种设计是合理的。如果abs_remainder用于更新历史计数器StatCoeff[cIdx],则意味着当前变换单元中的绝对等级最有可能是相对较大的值。如果dec_abs_level用于更新历史计数器StatCoeff[cIdx],则意味着当前变换单元中的绝对等级可能是相对较小的值。
然而,在本文公开的RRC的旁路编码模式中,因为跳过了abs_remainder位元编码,且只允许使用dec_abs_level位元编码,所以如果没有使用偏移量来调整历史计数器的值,则只能使用相对较小的历史计数器StatCoeff[cIdx]的值。如上所述,偏移量可以用来确定用于编码dec_abs_level位元的历史计数器StatCoeff[cIdx]的值。在一些实施例中,指示旁路编码模式的旁路标志(bypassFlag)被应用于在不同模式下使用/不使用偏移量,如下所示:
StatCoeff[cIdx]=(StatCoeff[cIdx]+Floor(Log2(dec_abs_level[]))+(bypassFlag?Offset:0))>>1.
如果bypassFlag等于1,旁路编码模式被启用,并且在RRC的旁路编码模式下,所有量化等级中的绝对等级都使用dec_abs_level位元而不使用abs_remainder位元进行编码,并且用偏移量(“Offset”,例如为2)来确定历史计数器StatCoeff[cIdx]的值。如果bypassFlag等于0,旁路模式不启用,量化等级可以使用abs_remainder位元和dec_abs_level位元进行编码,并且不会用偏移量(“0”)来确定用于编码dec_abs_level位元的历史计数器StatCoeff[cIdx]的值。
在本公开的各方面中,本文描述的功能可以在硬件、软件、固件、或其任何组合中实现。如果在软件中实现,则功能可以作为指令存储在非暂时性计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是例如图1和图2中的处理器102的处理器可以访问的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、例如磁盘存储或其它磁性存储设备的HDD、闪存驱动器、SSD、或可以用于以指令或数据结构形式携载或存储所需的程序代码并且可以由例如移动设备或计算机的处理***访问的任何其它介质。本文使用的磁盘(disk)与光盘(disc),包含CD、激光光盘、光学光盘、数字视频光盘(digital versatiledisc,DVD)、以及软盘,其中磁盘通常以磁方式复制数据,而光盘则使用激光以光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。
根据本公开的一个方面,公开了一种用于编码包括当前变换单元的视频的图像的方法。处理器量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。处理器基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。处理器使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。处理器将当前位置的二进制表示压缩到码流中。
在一些实施例中,基于用于编码图像的位深或码率中的至少一个,获得偏移值。基于偏移值和先前变换单元的量化等级中的第一非零哥伦布-莱斯编码量化等级,确定历史变量值。
在一些实施例中,偏移值是非零整数。
在一些实施例中,位深为16位,偏移值为2。
在一些实施例中,当前位置的相邻位置中的至少一个位于当前变换单元之外。
在一些实施例中,编码块是使用RRC进行编码的变换块。
在一些实施例中,当前位置的二进制表示包括RRC中的BCB。
在一些实施例中,为了转换当前位置的量化等级,将当前位置的量化等级中的绝对等级转换为二进制表示。
根据本公开的另一方面,一种用于编码包括当前变换单元的视频的图像的***包括用于存储指令的存储器和耦合到该存储器的处理器。处理器用于在执行指令时,量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。处理器也用于在执行指令时,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。处理器还用于在执行指令时,使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。处理器还用于在执行指令时,将当前位置的二进制表示压缩到码流中。
在一些实施例中,处理器还用于基于用于编码图像的位深或码率中的至少一个,获得偏移值,并且基于偏移值和先前变换单元的量化等级中的第一非零哥伦布-莱斯编码量化等级,确定历史变量值。
在一些实施例中,偏移值是非零整数。
在一些实施例中,位深为16位,偏移值为2。
在一些实施例中,当前位置的相邻位置中的至少一个位于当前变换单元之外。
在一些实施例中,编码块是使用RRC进行编码的变换块。
在一些实施例中,当前位置的二进制表示包括RRC中的BCB。
在一些实施例中,为了转换当前位置的量化等级,处理器还用于将当前位置的量化等级中的绝对等级转换为二进制表示。
根据本公开的又一方面,公开了一种存储指令的非暂时性计算机可读介质,当由处理器执行时,该指令执行用于编码包括当前变换单元的视频的图像的处理。该处理包括,量化当前变换单元中的每个位置的系数,以生成当前变换单元的量化等级。该处理也包括,基于当前变换单元之前的先前变换单元的历史变量值,确定当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该历史变量值基于用于编码图像的位深或码率中的至少一个而确定。该处理还包括,使用具有莱斯参数值的哥伦布-莱斯二值化,将当前位置的量化等级转换为二进制表示。该处理还包括,将当前位置的二进制表示压缩到码流中。
根据本公开的又一方面,公开了一种用于解码包括当前变换单元的视频的图像的方法。处理器解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。处理器使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。处理器对当前位置的量化等级进行去量化,以生成当前位置的系数。
在一些实施例中,如下确定历史变量值:基于用于解码图像的位深或码率中的至少一个获得偏移值,并且基于偏移值和先前变换单元中的第一非零哥伦布-莱斯编码量化等级确定历史变量值。
在一些实施例中,偏移值是非零整数。
在一些实施例中,位深为16位,偏移值为2
在一些实施例中,当前位置的相邻位置中的至少一个位于当前变换单元之外。
在一些实施例中,编码块是使用RRC进行编码的变换块。
在一些实施例中,当前位置的二进制表示包括RRC中的旁路编码位元。
在一些实施例中,为了转换当前位置的量化等级,将当前位置的量化等级中的绝对等级转换为二进制表示。
根据本公开的又一方面,一种用于解码包括当前变换单元的视频的图像的***包括用于存储指令的存储器和耦合到该存储器的处理器。处理器用于在执行指令时,解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。处理器也用于在执行指令时,使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。处理器还用于在执行指令时,对当前位置的量化等级进行去量化,以生成当前位置的系数。
在一些实施例中,如下确定历史变量值:基于用于解码图像的位深或码率中的至少一个获得偏移值,并且基于偏移值和先前变换单元中的第一非零哥伦布-莱斯编码量化等级确定历史变量值。
在一些实施例中,偏移值是非零整数。
在一些实施例中,位深为16位,偏移值为2。
在一些实施例中,当前位置的相邻位置中的至少一个位于当前变换单元之外。
在一些实施例中,编码块是使用RRC进行编码的变换块。
在一些实施例中,当前位置的二进制表示包括RRC中的BCB。
在一些实施例中,为了转换当前位置的量化等级,处理器还用于将当前位置的量化等级中的绝对等级转换为二进制表示。
根据本公开的又一方面,公开了一种存储指令的非暂时性计算机可读介质,当由处理器执行时,该指令执行用于解码包括当前变换单元的视频的图像的处理。该处理包括,解压缩码流,以获得当前变换单元中的当前位置的二进制表示和当前位置的用于哥伦布-莱斯二值化的莱斯参数值。该莱斯参数值基于当前变换单元之前的先前变换单元的历史变量值而确定。该历史变量值基于用于解码图像的位深或码率中的至少一个而确定。该处理也包括,使用具有莱斯参数值的哥伦布-莱斯二值化,将二进制表示转换为当前位置的量化等级。该处理还包括,对当前位置的量化等级进行去量化,以生成当前位置的系数。
实施例的前述描述将如此揭示本公开的一般性质,以致于其他人可以通过应用本领域技术内的知识,在不进行过度实验的情况下,在不脱离本公开的一般概念的情况下,容易地修改和/或适应这些实施例的各种应用。因此,基于在此呈现的教导和指导,这种适应和修改旨在处于所公开的实施例的等同物的含义和范围内。应当理解,这里的措辞或术语是为了描述而不是限制的目的,使得本说明书的术语或措辞将由本领域技术人员根据教导和指导来解释。
上面借助于示出指定功能及其关系的实现方式的功能构建块已经描述了本公开的实施例。为了便于描述,这些功能构建块的边界在本文已经被任意定义。只要适当地执行指定的功能及其关系,就可以定义替换性边界。
发明内容和摘要部分可以阐述如(多个)发明人所设想的本公开的一个或多个但不是所有示例性实施例,因此,不旨在以任何方式限制本公开和所附权利要求。
上文公开了各种功能块、模块和步骤。所提供的布置是说明性的而不是限制性的。因此,功能块、模块和步骤可以以与上文提供的示例中不同的方式重排序或组合。类似地,一些实施例仅包括功能块、模块和步骤的子集,并且任何这样的子集都是允许的。
本公开的广度和范围不应受到任何上文描述的示例性实施例的限制,而应仅根据所附权利要求及其等同物来定义。

Claims (30)

1.一种用于编码视频的图像的方法,所述图像包括当前变换单元,所述方法包括:
处理器量化所述当前变换单元中的每个位置的系数,以生成所述当前变换单元的量化等级;
所述处理器基于所述当前变换单元之前的先前变换单元的历史变量值,确定所述当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述历史变量值基于用于编码所述图像的位深或码率中的至少一个而确定;
所述处理器使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述当前位置的所述量化等级转换为二进制表示;以及
所述处理器将所述当前位置的所述二进制表示压缩到码流中。
2.根据权利要求1所述的方法,还包括:
基于用于编码所述图像的所述位深或所述码率中的至少一个,获得偏移值;以及
基于所述偏移值和所述先前变换单元的所述量化等级中的第一非零哥伦布-莱斯编码量化等级,确定所述历史变量值。
3.根据权利要求2所述的方法,其中,所述偏移值是非零整数。
4.根据权利要求3所述的方法,其中,所述位深为16位,所述偏移值为2。
5.根据权利要求1所述的方法,其中,所述当前位置的相邻位置中的至少一个位置位于所述当前变换单元之外。
6.根据权利要求1所述的方法,其中,所述当前位置的所述二进制表示包括常规残差编码(RRC)中的旁路编码位元。
7.根据权利要求1所述的方法,其中,转换所述当前位置的所述量化等级包括将所述当前位置的所述量化等级中的绝对等级转换为所述二进制表示。
8.一种用于编码视频的图像的***,所述图像包括当前变换单元,所述***包括:
存储器,用于存储指令;以及
处理器,耦合到所述存储器并用于在执行所述指令时:
量化所述当前变换单元中的每个位置的系数,以生成所述当前变换单元的量化等级;
基于所述当前变换单元之前的先前变换单元的历史变量值,确定所述当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述历史变量值基于用于编码所述图像的位深或码率中的至少一个而确定;
使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述当前位置的所述量化等级转换为二进制表示;以及
将所述当前位置的所述二进制表示压缩到码流中。
9.根据权利要求8所述的***,其中,所述处理器还用于:
基于用于编码所述图像的所述位深或所述码率中的至少一个,获得偏移值;以及
基于所述偏移值和所述先前变换单元的所述量化等级中的第一非零哥伦布-莱斯编码量化等级,确定所述历史变量值。
10.根据权利要求9所述的***,其中,所述偏移值是非零整数。
11.根据权利要求10所述的***,其中,所述位深为16位,所述偏移值为2。
12.根据权利要求8所述的***,其中,所述当前位置的相邻位置中的至少一个位置位于所述当前变换单元之外。
13.根据权利要求8所述的***,其中,所述当前位置的所述二进制表示包括常规残差编码(RRC)中的旁路编码位元。
14.根据权利要求8所述的***,其中,为了转换所述当前位置的所述量化等级,所述处理器还用于将所述当前位置的所述量化等级中的绝对等级转换为所述二进制表示。
15.一种存储指令的非暂时性计算机可读介质,所述指令在由处理器执行时执行用于编码视频的图像的处理,所述图像包括当前变换单元,所述处理包括:
量化所述当前变换单元中的每个位置的系数,以生成所述当前变换单元的量化等级;
基于所述当前变换单元之前的先前变换单元的历史变量值,确定所述当前变换单元中的当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述历史变量值基于用于编码所述图像的位深或码率中的至少一个而确定;
使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述当前位置的所述量化等级转换为二进制表示;以及
将所述当前位置的所述二进制表示压缩到码流中。
16.一种用于解码视频的图像的方法,所述图像包括当前变换单元,所述方法包括:
处理器解压缩码流,以获得所述当前变换单元中的当前位置的二进制表示和所述当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述莱斯参数值基于所述当前变换单元之前的先前变换单元的历史变量值而确定,所述历史变量值基于用于解码所述图像的位深或码率中的至少一个而确定;
所述处理器使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述二进制表示转换为所述当前位置的量化等级;以及
所述处理器对所述当前位置的所述量化等级进行去量化,以生成所述当前位置的系数。
17.根据权利要求16所述的方法,其中,所述历史变量值如下确定:
基于用于解码所述图像的所述位深或所述码率中的至少一个,获得偏移值;以及
基于所述偏移值和所述先前变换单元中的第一非零哥伦布-莱斯编码量化等级,确定所述历史变量值。
18.根据权利要求17所述的方法,其中,所述偏移值是非零整数。
19.根据权利要求18所述的方法,其中,所述位深为16位,所述偏移值为2。
20.根据权利要求16所述的方法,其中,所述当前位置的相邻位置中的至少一个位置位于所述当前变换单元之外。
21.根据权利要求16所述的方法,其中,所述当前位置的所述二进制表示包括常规残差编码(RRC)中的旁路编码位元。
22.根据权利要求16所述的方法,其中,转换所述二进制表示包括将所述二进制表示转换为所述当前位置的所述量化等级中的绝对等级。
23.一种用于解码视频的图像的***,所述图像包括当前变换单元,所述***包括:
存储器,用于存储指令;以及
处理器,耦合到所述存储器并用于在执行所述指令时:
解压缩码流,以获得所述当前变换单元中的当前位置的二进制表示和所述当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述莱斯参数值基于所述当前变换单元之前的先前变换单元的历史变量值而确定,所述历史变量值基于用于解码所述图像的位深或码率中的至少一个而确定;
使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述二进制表示转换为所述当前位置的量化等级;以及
对所述当前位置的所述量化等级进行去量化,以生成所述当前位置的系数。
24.根据权利要求23所述的***,其中,所述历史变量值如下确定:
基于用于解码所述图像的所述位深或所述码率中的至少一个,获得偏移值;以及
基于所述偏移值和所述先前变换单元中的第一非零哥伦布-莱斯编码量化等级,确定所述历史变量值。
25.根据权利要求24所述的***,其中,所述偏移值是非零整数。
26.根据权利要求25所述的***,其中,所述位深为16位,所述偏移值为2。
27.根据权利要求23所述的***,其中,所述当前位置的相邻位置中的至少一个位置位于所述当前变换单元之外。
28.根据权利要求23所述的***,其中,所述当前位置的所述二进制表示包括常规残差编码(RRC)中的旁路编码位元。
29.根据权利要求23所述的***,其中,为了转换所述二进制表示,所述处理器还用于将所述二进制表示转换为所述当前位置的所述量化等级中的绝对等级。
30.一种存储指令的非暂时性计算机可读介质,所述指令在由处理器执行时执行用于解码视频的图像的处理,所述图像包括当前变换单元,所述处理包括:
解压缩码流,以获得所述当前变换单元中的当前位置的二进制表示和所述当前位置的用于哥伦布-莱斯二值化的莱斯参数值,其中,所述莱斯参数值基于所述当前变换单元之前的先前变换单元的历史变量值而确定,所述历史变量值基于用于解码所述图像的位深或码率中的至少一个而确定;
使用具有所述莱斯参数值的哥伦布-莱斯二值化,将所述二进制表示转换为所述当前位置的量化等级;以及
对所述当前位置的所述量化等级进行去量化,以生成所述当前位置的系数。
CN202280036583.6A 2021-06-03 2022-06-01 视频编码中的量化等级二值化 Pending CN117356093A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163196618P 2021-06-03 2021-06-03
US63/196,618 2021-06-03
PCT/US2022/031838 WO2022256451A1 (en) 2021-06-03 2022-06-01 Quantization level binarization in video coding

Publications (1)

Publication Number Publication Date
CN117356093A true CN117356093A (zh) 2024-01-05

Family

ID=84324569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280036583.6A Pending CN117356093A (zh) 2021-06-03 2022-06-01 视频编码中的量化等级二值化

Country Status (3)

Country Link
EP (1) EP4349016A1 (zh)
CN (1) CN117356093A (zh)
WO (1) WO2022256451A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
JP5973434B2 (ja) * 2011-06-23 2016-08-23 華為技術有限公司Huawei Technologies Co.,Ltd. 画像フィルタ装置、フィルタ方法および動画像復号装置
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
BR112021004516B1 (pt) * 2018-09-11 2021-12-14 Lg Electronics Inc Método de decodificação de imagem executado por um aparelho de decodificação, método de codificação de imagem executado por um aparelho de codificação e mídia de armazenamento legível por computador

Also Published As

Publication number Publication date
WO2022256451A1 (en) 2022-12-08
EP4349016A1 (en) 2024-04-10

Similar Documents

Publication Publication Date Title
EP3020187B1 (en) Rice parameter initialization for coefficient level coding in video coding process
EP3087739B1 (en) Data encoding and decoding
JP2017522839A (ja) 整合パレット符号化
KR20200020986A (ko) 인트라 예측 방법과 이를 이용한 부호화기 및 복호화기
US20130083856A1 (en) Contexts for coefficient level coding in video compression
WO2013056097A1 (en) Coding non-symmetric distributions of data
WO2012138032A1 (ko) 영상 정보 부호화 방법 및 복호화 방법
US20120082230A1 (en) Variable length coding of video block coefficients
CN112673639B (zh) 用于对变换系数位阶值进行编码的***和方法
CN116420353A (zh) 用于视频编解码的残差和系数编解码
JP2024502109A (ja) ビデオコーディング用の残差および係数のコーディング
CN117356093A (zh) 视频编码中的量化等级二值化
US20240137567A1 (en) Method and system for decoding/encoding video including sequence pictures
US20240064303A1 (en) Bypass alignment in video coding
US20240214585A1 (en) Bypass alignment in video coding
CN117223285A (zh) 视频编码中的旁路对齐
US11924455B2 (en) Coefficient coding method, encoder, and decoder
CN116918327A (zh) 视频编码中基于状态的依赖量化和残差编码
EP4325848A1 (en) Encoding method, decoding method, encoder, decoder and storage medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20240416

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Country or region after: China

Address before: California, USA

Applicant before: Chuangfeng Technology

Country or region before: U.S.A.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination