CN109889835B - 根据重要系数的参数的重要系数编码和解码 - Google Patents

根据重要系数的参数的重要系数编码和解码 Download PDF

Info

Publication number
CN109889835B
CN109889835B CN201910122503.9A CN201910122503A CN109889835B CN 109889835 B CN109889835 B CN 109889835B CN 201910122503 A CN201910122503 A CN 201910122503A CN 109889835 B CN109889835 B CN 109889835B
Authority
CN
China
Prior art keywords
data
value
values
bit
range
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.)
Active
Application number
CN201910122503.9A
Other languages
English (en)
Other versions
CN109889835A (zh
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN109889835A publication Critical patent/CN109889835A/zh
Application granted granted Critical
Publication of CN109889835B publication Critical patent/CN109889835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4081Static prefix coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4087Encoding of a tuple of symbols
    • 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/124Quantisation
    • 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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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
    • 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
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • 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
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了根据重要系数的参数的重要系数编码和解码。一种用于对尚未以其他编码值描述的由变换系数表示的视频的余数值进行编码的方法,包括:通过使用当与前缀组合时定义后缀的位长度的参数值来生成余数值,余数值包括后面接续有后缀的前缀,并且其中,参数值基于在先系数组中包括的系数的先前编码状态而变化。

Description

根据重要系数的参数的重要系数编码和解码
本申请是分案申请,其母案申请的申请号为2014800203042,申请日为2014年4月4日,发明名称为“根据重要系数的参数的重要系数编码和解码”。
技术领域
本公开涉及数据编码和解码。
背景技术
文中所提出的“背景技术”描述为了一般性地呈现本发明的背景的目的。目前具名的发明人的工作(达其在此先前技术段落中所描述的程度、以及其无法另合格为申请时的先有技术的描述的形态)不被明确地或暗示性地承认为对抗本发明的先有技术。
有数种视频数据压缩以及解压缩系统,其涉及将视频数据变换为频域表示、将频域系数目化及接着将某形式的熵编码应用至已量化的系数。
在本上下文中,熵可以被视为表示数据符号或符号系列的信息内容。熵编码的目标在于,使用(理想地)表示一系列数据符号的信息内容所需要的最小数目的编码数据位,通过无损的方式编码这系列数据符号。实际上,熵编码用于编码量化系数,以便编码数据比原始的量化系数的数据尺寸更小(在其位数方面)。更有效的熵编码流程给相同的输入数据尺寸提供更小的输出数据尺寸。
一种用于熵编码视频数据的技术是所谓的CABAC(上下文适应二进制算术编码)技术。
发明内容
本公开提供了一种数据编码方法。
进一步相应的方面及特征限定于所附权利要求中。
应理解之前的一般性描述及之后的详细描述为本公开的实例性的,而非限制性的。
附图说明
本公开的更完整的理解以及许多其伴随的优点将随着其藉由参考实施方式的以下详细描述(当配合附图而考虑时)变得更为了解而被轻易地获得,其中:
图1示意性地示出了一种使用视频数据压缩及解压缩之音频/视频(A/V)数据传输及接收系统;
图2示意性地示出了一种使用视频资料解压缩之视频显示系统;
图3示意性地示出了一种使用视频数据压缩及解压缩之音频/视频存储系统;
图4示意性地示出了一种使用视频数据解压缩之视频相机;
图5提供视频数据压缩及解压缩设备的示意性概览图;
图6示意性地示出了预测图像的产生;
图7示意性地示出了最大编码单元(LCU);
图8示意性地示出了一组四个编码单元(CU);
图9和10示意性地示出了将图8的编码单元子分离为较小的编码单元;
图11示意性地示出了预测单元(PU)的数组;
图12示意性地示出了变换单元(TU)的数组;
图13示意性地示出了部分编码图像;
图14示意性地示出了一组可能的预测方向;
图15示意性地示出了一组预测模式;
图16示意性地示出了锯齿扫描;
图17示意性地示出了CABAC熵编码器;
图18A到18D示意性地示出了CABAC编码和解码操作的方面;
图19示意性地示出了CABAC编码器;
图20示意性地示出了CABAC解码器;
图21是示出编码系统的概览的示意图;
图22是位速率对量化参数(QP)的示图;
图23是用于6个测试位深的位速率对绿色通道PSNR的示图,启用变换跳过模式;
图24是用于6个测试位深的位速率对绿色通道PSNR的示图,禁用变换跳过模式;
图25是用于6个测试位深的位速率对绿色通道PSNR的示图,具有14个位变换矩阵;
图26是比较各种精度DCT矩阵的用于一个测试序列的PSNR对位速率的示图;
图27是示出使用旁路固定位编码的用于一个测试序列的PSNR对位速率的示图;
图28是提供编码配置文件的实例的表格;
图29到31是分别阐明CABAC流程的部分的版本的示意性流程图;
图32A至图32F是阐明不同的CABAC对准方案的示意图;
图33到35是分别阐明CABAC流程的终止阶段的版本的示意性流程图;
图36是示意性地示出了编码技术的流程图;
图37是示意性地示出了自适应技术的流程图;以及
图38和39是阐明用于选择变换动态范围和数据精度参数的流程的示意性流程图。
具体实施方式
现在参考图,图1-4被提供以给出利用压缩及/或解压缩设备之设备或系统的示意性图标,以供配合实施方式而描述于下。
所有将描述于下之数据压缩及/或解压缩可被实施以硬件、以运作在诸如通用计算机等通用数据处理设备上之软件,当成诸如特定应用集成电路(ASIC)或场可编程门阵列(FPGA)等可编程硬件或当成这些的组合。于其中实施方式藉由软件及/或固体来实施的情况下,应理解此类软件及/或固体、及藉以存储或提供此类软件及/或固体之非易失性机器可读数据存储媒体被视为实施方式。
图1示意性地示出了一种使用视频数据压缩及解压缩之音频/视频数据传输及接收系统。
输入音频/视频信号10被供应至视频数据压缩设备20,其压缩音频/视频信号10之至少视频成分以供传输沿着传输路由30,诸如缆线、光纤、无线链路等等。已压缩信号由解压缩设备40所处理以提供输出音频/视频信号50。针对返回路径,压缩设备60压缩音频/视频以供传输沿着传输路由30而至解压缩设备70。
压缩设备20及解压缩设备70可因此形成传输链路之一节点。解压缩设备40及压缩设备60可形成传输链路之另一节点。当然,于其中传输链路为单向之例子中,仅有节点之一需要压缩设备而另一节点仅需要解压缩设备。
图2示意性地示出了一种使用视频资料解压缩之视频显示系统。特别地,已压缩音频/视频信号100由解压缩设备110所处理以提供其可被显示于显示120上之解压缩信号。解压缩设备110可被实施为显示120的部分,例如被提供于与显示设备相同的外壳内。另一方面,解压缩设备110可能被提供为(例如)所谓的机顶盒(STB),注意:用词“机上”并非暗示机盒需设置相对于显示120之任何特定方位或位置;其仅为用以指示可连接至显示以当作周边装置之装置的本技术中所使用的术语。
图3示意性地示出了一种使用视频数据压缩及解压缩之音频/视频存储系统。输入音频/视频信号130被供应至压缩设备140,其产生已压缩信号以供由存储装置150所存储,诸如磁盘装置、光盘装置、磁带装置、固态存储装置(如半导体内存或其他存储装置)。为了播放,已压缩数据被读取自存储装置150并传递至解压缩设备160以供解压缩,以提供输出音频/视频信号170。
应理解:已压缩或已编码信号、及存储该信号之存储媒体或数据载体被视为实施方式。
图4示意性地示出了一种使用视频数据解压缩之视频相机。于图4中,图像捕获设备180,诸如电荷耦合装置(CCD)图像电感器及相关的控制和读出电子电路,产生视频信号,其被传递至压缩设备190。一麦克风(或复数麦克风)200产生一音频信号以供被传递至压缩设备190。压缩设备190产生已压缩音频/视频信号210以便被存储及/或传输(通常显示为示意性级220)。
将描述于下之技术主要有关于视频数据压缩。应理解:许多现有的技术可配合将被描述的视频数据压缩技术而被用于音频数据压缩,以产生已压缩音频/视频信号。因此,将不提供音频数据压缩之各个讨论。亦应理解:与视频数据(特别是广播质量视频数据)相关的数据率一般是极高于与音频数据相关的数据率(无论已压缩或未压缩)。因此应理解:未压缩音频数据可伴随已压缩视频数据以形成已压缩音频/视频信号。应进一步理解:虽然目前的实例(图1-4中所显示者)有关音频/视频数据,但以下将描述的技术可发现其应用于仅处理(亦即,压缩、解压缩、存储、显示及/或传输)视频数据之系统。换言之,实施方式可应用于视频数据压缩而不一定具有任何相关的音频资料处置。
图5提供视频数据压缩及解压缩设备的示意性概览图。
输入视频信号300之连续图像被供应至相加器310及图像预测器320。图像预测器320将参考图6而被更详细地描述于下。相加器310事实上执行相减(负相加)操作,其中其输入视频信号300于“+”输入上及图像预测器320之输出于“-”输入上,以致从输入图像减去预测图像。结果为产生代表介于实际与投影图像间的差异的所谓残差图像信号330。
残差图像信号为何被产生的一原因说明如下。将描述的数据编码方案(亦即将应用于残差图像信号之技术)倾向于更有效率地作用在当待编码之图像中有较少“能量”时。于此,术语“有效率地”指的是少量已编码数据之产生;针对特定图像质量等级,希望产生实际上尽可能少的数据。残差图像中所谓“能量”是有关残差图像中所含有的信息量。假如预测图像将全同于实际图像,则两者之间的差异(亦即,残差图像)将含有零信息(零能量)且将极易于编码成少量的已编码数据。通常,假如可使预测程序合理地作用良好,则预期残差图像数据将含有较输入图像更少的信息(较少能量)而因此将较易于编码成少量的已编码数据。
残差图像信号330被耦合至变换单元340,其产生残差图像数据之离散余弦变换(DCT)表示。DCT技术本身是众所周知的且将不会详细地描述于此。然而,仍有将被更详细地描述于下之本设备中所使用的技术的形态,特别是有关于可应用DCT操作的不同区块的数据的选择。这些将参考图7-12而被描述于下。
要注意的是,在一些实施方式中,使用离散余弦变换(DCT)。在其他实施方式中,可能不使用变换。这可以选择性进行,以便例如,在“变换跳过”命令或模式的控制下,实际上旁路变换阶段。
变换单元340之输出(亦即,针对图像数据之各变换区块的一组变换系数)被供应至量化器350。各种量化技术为视频数据压缩之领域中所已知的,范围涵盖从藉由量化标度因子之简单相乘直至复杂查找表之应用,于量化参数之控制下。一般目标是两倍。首先,量化程序减少已变换数据之可能值的数目。其次,量化程序可增加其已变换数据为零之值的可能性。这两者可使得熵编码程序(将描述于下)更有效率地作用于产生少量的已压缩视频数据。
由扫描单元360施加一数据扫描程序。扫描程序之目的为重新排列量化的已变换数据以将尽可能多的非零已量化已变换系数收集在一起,而当然因而将尽可能多的零值系数收集在一起收集。这些特征可容许有效率地施加所谓的运行长度编码或类似技术。因此,扫描程序涉及从已量化已变换数据选择系数,且特别是从相应于一已依据“扫描顺序”而被变换并量化的图像数据之区块的系数之区块,以致:(a)所有系数当作扫描的部分而被选择一次;及(b)扫描常提供所欲的重新排列。下面描述用于选择扫描顺序的技术。一种可常提供有用结果之实例扫描顺序是一种所谓的据此扫描顺序。
已扫描系数被接着传递至熵编码器(EE)370。再次地,可使用各种类型的熵编码。下面描述的两个实例是所谓的CABAC(上下文适应二进制算术编码)系统之变异及所谓的CAVLC(上下文适应可变长度编码)系统之变异。一般而言,CABAC被视为提供较佳的效率,且于某些研究中已显示出针对相当图像质量(相较于CAVLC)之已编码输出数据的量提供10-20%的减少。然而,CAVLC被视为代表相较于CABAC之复杂度更低甚多的等级(依照其实施方式)。下面参照图17讨论CABAC技术,并且下面参照图8和19讨论CAVLC技术。
注意:扫描程序及熵编码程序被显示为分离的程序,但事实上可被结合或一起处理。亦即,数据之读入熵编码器可发生以扫描顺序。相应的考虑适于以下将描述的各个的反向程序。
熵编码器370之输出,连同额外数据(以上所提及/或以下所讨论),例如定义其中预测器320产生预测图像之方式,提供已压缩的输出视频信号380。
然而,亦提供返回路径,因为预测器320本身之操作取决于已压缩输出数据之解压缩版本。
此特征之原因如下。于适当阶段,在解压缩程序(以下将描述)中,产生残差数据之解压缩版本。此已解压缩的残差数据需被加至预测图像以产生输出图像(因为原始残差数据为介于输入图像与预测图像之间的差异)。为了使此程序是相当的,如介于压缩侧与解压缩侧之间,则由预测器320所产生的预测图像应是相同的于压缩程序期间及于解压缩程序期间。当然,在解压缩时,设备对于原始输入图像不具有存取权,而仅对于解压缩图像有。因此,于压缩时,预测器320以压缩图像之解压缩版本为其预测(至少,针对图像间编码)之基础。
由熵编码器370所执行之熵编码程序被视为“无损”,也就是说其可被反转以达成与其被首先供应至熵编码器370之完全相同的数据。因此,返回路径可被实施在熵编码阶段之前。确实,由扫描单元360所执行之扫描程序亦被视为无损的,但于本实施方式中,返回路径390是从量化器350之输出至一互补反向量化器420之输入。
一般而言,熵译码器410、反转扫描单元400、反向量化器420及反向变换单元430提供熵编码器370、扫描单元360、量化器350及变换单元340之各个反向功能。现在,将继续遍及压缩程序之讨论;用以解压缩输入已压缩视频信号之程序将被分离地讨论于下。
于压缩程序中,扫描系数由返回路径390从量化器350传递至反向量化器420,其执行扫描单元360之反向操作。反向量化及反向变换程序由单元420、430所执行以产生压缩解压缩的残差图像信号440。
图像信号440被加(于相加器450)至预测器320之输出以产生重建的输出图像460。此形成图像预测器320之输入,如以下将描述者。
现在回到用以解压缩一接收的已压缩视频信号470之程序,信号被供应至熵译码器410并从该处至反转扫描单元400、反向量化器420及反向变换单元430之链,在藉由相加器450而被加至图像预测器320之输出以前。明确地,相加器450之输出460形成输出的解压缩视频信号480。实际上,可在信号被输出之前施加进一步过滤。
图6示意性地示出了预测图像的产生,及更明确地为图像预测器320的操作。
有两种预测之基本模式:所谓的图像内预测及所谓的图像间(或动作补偿(MC))预测。
图像内预测基于来自相同图像内之数据以执行图像之一区块的内容的预测。这相应于其他视频压缩技术中之所谓的I框编码。相对于I框编码(其中整个图像均被内编码),于本实施方式中,可以逐区块之方式来进行介于内-与间-编码之间的选择,虽然于其他实施方式中仍以逐图像之方式进行选择。
动作补偿预测利用其尝试定义将被编码于当前图像中之图像细节的来源(于另一邻接或附近图像中)之动作信息。因此,于一理想实例中,于预测图像中之图像的一区块之内容可极简单被编码为一参考(动作向量),其指向一相邻图像中位于相同或稍微不同位置上的相应区块。
回到图6,显示两个图像预测配置(相应于图像内及图像间预测),其结果为于模式信号510之控制下由多工器500所选择以提供预测图像之区块,以便供应至相加器310及450。其选择之进行根据哪个选择提供最低“能量”(其,如上所讨论,可被视为需要编码的信息内容),且该选择被发送给编码器于已编码输出数据流之内。图像能量(于本文中)可被检测,例如,藉由从输入图像执行预测图像之两版本的区域的试验相减、将差异图像之各像素值平方、加总平方值、及识别两版本之哪个为导致相关于该图像区域的差异图像的较低均方根值。
于内编码系统中,实际预测基于其被接收为信号460的部分的图像区块来进行,换言之,预测基于已编码-已译码图像区块,以致可于解压缩设备上进行完全相同的预测。然而,数据可由帧内模式选择器520获取自输入视频信号300,以控制图像内预测器530之操作。
针对图像间预测,动作补偿(MC)预测器540使用动作信息,诸如由运动估计器550从输入视频信号300所取得的动作向量。这些动作向量。那些动作向量藉由动作补偿预测器540而被施加至重建图像460之已处理版本,以产生图像间预测之区块。
现在将描述施加至信号460之处理。首先,信号由过滤器单元560所过滤。此涉及应用“除区块”过滤器以移除或至少尝试减少由变换单元340所执行之区块为基的处理及后续操作。而且,应用一种使用藉由处理重建信号460及输入视频信号300所取得的系数的样本回路过滤器。调适回路过滤器是一种过滤器类型,其(使用已知的技术)将调适过滤器系数应用于待过滤之数据。亦即,过滤器系数可根据各种因子而改变。定义应使用哪些过滤器系数之数据被包括为已编码输出数据流的部分。
来自过滤器单元560之已过滤输出实际上形成输出视频信号480。其亦被缓冲于一或更多图像存储570中;连续图像之存储为动作补偿预测处理之必要条件,且特别是动作向量之产生。为了节省存储需求,图像存储570中之存储图像可被保持以压缩形式并接着解压缩以用于产生动作向量。为了此特定目的,可使用任何已知的压缩/解压缩系统。存储图像被传递至内插过滤器580,其产生已存储图像之较高分辨率版本;于此实例中,中间样本(次样本)被产生以致:由内插过滤器580所输出之内插图像的分辨率为存储于图像存储570中的图像之分辨率的8倍(于各维度)。内插图像被传递为送至运动估计器550及亦送至动作补偿预测器540之输入。
在实施方式中,提供进一步的可选择阶段,其使用乘法器600而将输入视频信号之数据值乘以四之因子(效果上仅将数据值向左移两位);及使用除法器或右移器610而施加一相应的除法操作(右移两位)于设备之输出处。因此,左移及右移纯粹针对设备之内部操作而改变数据。此处置可提供较高的计算准确度于设备内,当作减少任何数据舍入误差之效果。
现在将描述其中图像针对压缩处理而被分离的方式。于基本等级上,一待压缩图像被视为样本之区块的数组。针对本讨论之目的,考虑下之最大此类区块是所谓的最大编码单元(LCU)700(图7),其代表64×64样本之方形数组。于此,讨论有关亮度样本。根据色彩模式,诸如4:4:4、4:2:2、4:2:0或4:4:4:4(GBR+密钥资料),将有相应于亮度区块的不同数目的相应色彩样本。
将描述三种基本的区块类型:编码单元、预测单元及变换单元。一般而言,LCU之递归次划分容许输入图像被分离成使得区块尺寸及区块编码参数(诸如预测或残差编码模式)可依据待编码图像之特定特性而被设定。
LCU可被次划分为所谓的编码单元(CU)。编码单元总是方形的且具有介于8×8样本与LCU 700之完整尺寸间的尺寸。编码单元可被配置为一种树状结构,以致第一次划分可发生如图8中所示者,给定32×32样本之编码单元710;后续次划分可接着依选择性方式而发生,以给定16×16样本之某些编码单元720(图9)及8×8样本之潜在的某些编码单元730(图10)。总之,此程序可提供CU区块之内容调适的编码树状结构,其每一者可如LCU一般大或者如8×8样本一般小。输出视频数据之编码基于编码单元结构而发生。
图11示意性地示出了预测单元(PU)的数组。预测单元为一基础单元,用以携载关于图像预测程序的信息、或者(换言之)被加至熵编码残差图像数据以形成来自图5之设备的输出视频信号之额外数据。一般地,预测单元不限于形状为方形。只要编码单元大于最小的(8×8)尺寸,其可具有其他形状,特别是形成方形编码单元之一的一半之矩形形状。其目标将是容许相邻预测单元之边界吻合(尽可能密切地)图像中之实际物体的边界,以致不同的预测参数可被应用于不同的实际物体。各编码单元可含有一或更多预测单元。
图12示意性地示出了变换单元(TU)的数组。变换单元为变换和量化程序之基础单元。变换始终为方形并得以具有4×4至32×32样本之尺寸。各编码单元可含有一或更多变换单元。图12中之缩写SDIP-P表示一种所谓的短距离内预测分离。于此配置中,仅使用一维变换,所以4×N区块被传递通过N变换,其中这些变换之输入数据基于当前SDIP-P内之先前解码的相邻区块及先前解码的相邻线。
现在将讨论内预测程序。一般而言,内预测涉及从相同图像中之先前编码及译码的样本产生样本之当前区块的预测(预测单元)。图13示意性地示出了部分编码图像800。于此,图像基于LCU而从左上至右下被编码。部分透过完整图像之处置而编码的实例LCU被显示为区块810。区块810之左上半的阴影区820已被编码。区块810之内容的图像内预测可利用阴影区820之任一者但无法利用其下方之无阴影区域。
区块810代表LCU;如以上所讨论,针对图像内预测处理之目的,此可被次划分为一组较小的预测单元。预测单元830之一实例被显示于LCU 810内。
图像内预测考虑当前LCU 810的上方及/或左方的样本。来源样本(从这些样本预测所需样本)可被置于相对于在LCU 810内的当前预测单元的不同位置或者方向。为了决定哪个方向适于当前预测单元,比较基于每个候选方向的试验预测的结果,以便看到哪个候选方向提供最接近输入图像的相应区块的结果。选择提供最接近的结果的候选方向,作为该预测单元的预测方向。
图片还可以基于“片”被编码。在一个实例中,一片为一水平相邻族群的LCU。但更一般而言,完整残差图像可形成一片,或者一片可为单一LCU,或者一片可为一列LCU,依此类推。片可提供对误差之韧性,因为其被编码为独立单元。编码器及译码器被完全地重设于切边界。例如,内预测不被执行跨越切边界;切边界被视为针对此目的之图像边界。
图14示意性地示出了一组可能的(候选)预测方向。整组34个候选方向可用于8×8、16×16、32×32样本的预测单元。4×4及64×64样本的预测单元尺寸的特殊情况具有其可用的一减少组的候选方向(各个为17个候选方向及5个候选方向)。这些方向由相对于当前区块位置之水平及垂直位移所决定,但被编码为预测“模式”,其一组被显示于图15中。注意:所谓的DC模式代表周围的上及左边样本之简单算术平均值。
图16示意性地示出了锯齿扫描,其为可由扫描单元360所应用的扫描型态。于图16中,该型态被显示针对一实例区块的8×8变换系数,以其DC系数被置于该区块之左上位置840上,且增加水平和垂直空间频率由在朝下及朝向左上位置840增加距离时的系数所表示。
要注意的是,在一些实施方式中,可以按照倒序扫描系数(使用图16的排序符号,从右下角到左上角)。而且,还应注意的是,在一些实施方式中,在执行剩余系数的之字形之前,扫描可以在几个(例如,在1个与3个之间)最上面的水平行上从左到右进行。
图17示意性地示出了CABAC熵编码器。
在这个性质的上下文适应编码中,并且根据实施方式,可以相对于概率模型或上下文,编码数据的位,表示预期或预测数据位怎么可能是1或0。要做到这一点,给输入数据位分配在一系列码值的两个(或者更一般而言,多个)互补子范围的所选择的一个内的码值,子范围的相应尺寸(在实施方式中,相对于该码值集合的子范围的相应比例)由上下文定义(这反过来由与该输入值相关联的或者另外相关的上下文变量定义)。下一个步骤是响应于分配的码值和所选择的子范围的当前尺寸,修改总体范围,即,该码值集合(在下一个输入数据位或值方面使用)。如果修改的范围然后小于表示预定的最小尺寸的阈值(例如,原始范围尺寸的一半),那么尺寸增大,例如,通过使修改的范围翻倍(向左移位),如果需要的话,可以连续(不止一次)执行翻倍流程,直到该范围之上具有预定的最小尺寸。此时,生成输出的编码数据位,以表示发生一次(或者每次(如果不止一次))翻倍或者尺寸增大操作。进一步步骤是修改上下文(即,在实施方式中,修改上下文变量),以供下一个输入数据位或值使用或者在该方面使用(或者,在实施方式中,在要编码的一个组数据位或值方面)。通过将当前上下文和当前“最可能符号”的身份(1或0,无论哪个都由上下文表示,以目前具有大于0.5的概率)作为指数用于新上下文值的查找表内,或者作为输入用于可以获得新上下文变量的合适数学公式中,可以执行这个。在实施方式中,上下文变量的修改在给当前数据值选择的子范围内增大了该码值集合的比例。
CABAC编码器操作于二元数据,亦即,仅由两个符号0与1所代表的资料。编码器利用一种所谓的背景仿真程序,其根据先前编码的数据以选择后续数据之“背景”或机率模型。背景的选择被执行以一种确定性方式,以致相同的决定(根据先前译码的数据)可被履行于该译码器上而无需进一步资料(指明该背景)被加至其传递至该译码器的已编码数据流。
参考图17,待编码输入数据可被传递至二元转换器900(假如其尚未于二元形式);假如该数据已于二元形式,则转换器900被旁通(由示意开关910)。于目前实施方式中,转换至二元形式藉由将量化的变换系数数据表达为一连串二元“图”而被实际执行,其将被进一步描述于下。
二元数据接着可由两处理路径之一所处理:“一般”及“旁通”路径(其被示意性地显示为分离的路径,但于以下所讨论之实施方式中,其可实际上由相同的处理阶段来实施,仅使用稍微不同的参数)。旁通路径利用一种所谓的旁通编码器920,其不一定利用以如一般路径之相同形式的背景模拟。于CABAC编码之某些范例中,假如有需要特别快速地处理一批次数据时则可选择此旁通路径,但于目前实施方式中,注意到所谓的“旁通”数据之两个特征:第一,旁通数据由CABAC编码器(950、960)所处理,仅使用一代表50%机率之固定背景模型;及第二,旁通数据有关数据之某些类别,一特别的范例为系数符号数据。否则,一般路径由示意开关930、940所选择。此涉及由上下文建模器950(接续以编码引擎960)所处理之数据。
图17中所示之熵编码器将数据(亦即,例如,相应于有关残差图像之区块的系数之区块的数据)之区块编码为单一值,假如该区块完全由零值资料所形成时。针对非落入此类别之各区块,亦即,含有至少某些非零资料区块,准备“有效性图”。有效性图系指示(针对待编码之数据的区块中之各位置)该区块中之相应系数是否为非零的。有效性图数据(其为二元形式)为本身CABAC编码的。有效性图之使用以压缩来协助,因为无任何数据需针对一具有其有效性图指示为零之大小的系数来被编码。同时,有效性图可包括一用以指示区块中之最终非零系数的特殊码,以致所有最终高频/落后零系数可被省略自编码。有效性图被接续(于已编码位流中)以其定义由有效性图所指明之非零系数的值之资料。
图数据之进一步等级亦被准备且被CABAC编码。一范例为一图,其由二元值(1=是,0=否)定义于其有效性图已指示为“非零”之图位置上的系数数据是否实际上具有“一”之值。另一图指明于其有效性图已指示为“非零”之图位置上的系数数据是否实际上具有“二”之值。进一步图(针对那些其中有效性图已指示其系数数据为“非零”之图位置)指示该数据是否具有“大于二”之值。另一图(再次针对识别为“非零”之数据)指示数据值之符号(使用预定的二元标号,诸如针对+为1、针对-为0,或当然反之亦可)。
在实施方式中,有效性图及其他图被产生自量化的变换系数,例如由扫描单元360,并在接受CABAC编码之前,接受锯齿扫描程序(或根据帧内预测模式选自锯齿、水平光栅和垂直光栅扫描的扫描程序)。
在一些实施方式中,HEVC CABAC熵编码器使用以下流程编码语法元素:
将最后有效系数(按照扫描顺序)在TU内的位置编码。
对于每个4x4系数组(按照颠倒的扫描顺序处理组),将重要的系数组标志编码,表示该组是否包含非零系数。这对于包含最后有效系数的组不需要,并且对于左上角的组(包含DC系数),假设是1。如果标志是1,那么随后立即编码属于该组的下面的语法元素:
有效性图:
对于在组中的每个系数,将标志编码,表示该系数是否重要(具有非零值)。由最低有效位置表示的系数不需要标志。
大于1的图:
对于具有重要图值1(从组的端部往回数)的高达8个系数,这表示幅度是否大于1。
大于2的标志:
对于具有大于1的图值1(最接近组的端部的值)的1个系数,这表示幅度是否大于2。
符号位:
对于所有非零系数,符号位编码,作为等概率的CABAC二进制,在使用符号位隐藏时,可能从奇偶性中推断出最后的符号位(按照颠倒的扫描顺序)。
转义码:
对于幅度不完全由更早的语义元素描述的任何系数,剩余部分编码,作为转义码。
一般而言,CABAC编码涉及针对待编码之下一位预测背景、或机率模型,根据其他先前编码的数据。假如下一位相同于由机率模型所识别为“最可能”的位,则其“下一位符合机率模型”的信息的编码可被编码以极佳的效率。较无效率的是编码其“下一位不符合机率模型”,因此背景数据之取得对于编码器之良好操作是重要的。术语“调适性”指的是背景或机率模型被调适、或改变于编码期间,以尝试提供与(如仍未编码者)下一数据之良好匹配。
使用简单的模拟,于所书写之英文语言中,字母“U”是相对不常见的。但于紧接在字母“Q”之后的字母位置中,则确实为极常见的。因此,机率模型可将“U”之机率设为极低的值,但假如当前字母为“Q”,则针对“U”为下一字母的机率模型可被设为极高的机率值。
在本配置中,CABAC编码被使用于至少重要性映图及其指示非零值为一或二之映图。旁通处理-其于这些配置中相同于CABAC编码,但针对其机率模型被固定于1与0之相等(0.5:0.5)机率分布上的事实,被用于至少符号数据及指示值是否>2之映图。针对那些识别为>2之数据位置,一分离的所谓逃脱数据编码可被使用以编码数据之实际值。此可包括Golomb-Rice编码方案。
CABAC背景仿真及编码程序被更详细地描述于WD4:Working Draft 4of High-Efficiency Video Coding,JCTVC-F803_d5,Draft ISO/IEC 23008-HEVC;201x(E)2011-10-28。
现在,略微更详细地描述CABAC流程。
至少在用于所提出的HEVC系统内的程度上,CABAC涉及在要编码的下一位方面获得“上下文”或概率模型。然后,由上下文变量或CV定义的上下文影响编码位的方式。一般而言,如果下一位与CV定义为预期的更可能值的值相同,那么在减少定义该数据位所需要的的数目方面具有优点。
编码流程涉及映射位,以在一系列码值内的位置上编码。这系列码值在图18A中示意性地显示为从下限m_Low延伸到上限m_high的一系列相邻整数。在这两个极限之间的差值是m_range,其中,m_range=m_high–m_Low。通过下面描述的各种技术,在基本的CABAC系统中,m_range约束为介于128与254之间;在使用用于表示m_range的更大数目的位的另一个实施方式中,m_range可以介于256与510之间。m_Low可以是任何值。可以通过(即)0开始,但是可以作为要描述的编码流程的一部分改变。
码值的范围m_range由边界1100分成两个子范围,该边界相对于上下文变量定义为:
边界=m_Low+(CV*m_range)。
因此,上下文变量将总范围分成该码值集合的两个互补的子范围或子部分,分配给每个子范围的组的比例由变量CV确定,一个子范围与(下一个数据位的)值0相关联,并且另一个子范围与(下一个数据位的)值1相关联。范围的分离表示由要编码的下一位的两个位值的CV的生成采用的概率。因此,如果与值0相关联的子范围小于总范围的一半,那么这表示0被视为比1的概率更小,作为下一个符号。
具有各种不同的可能性,用于定义子范围适用于可能的数据位值的方式。在一个实例中,该范围的更低区域(即,从m_Low到边界)按照惯例定义为与数据位值0相关联。
如果在单个操作中编码不止一个位,那么可以提供不止两个子范围,以便提供与要编码的输入数据的每个可能值对应的子范围。
编码器和解码器保持其数据位值具有更小概率(通常称为“最小可能符号”或LPS)的记录。CV表示LPS,因此,CV始终表示在0与0.5之间的值。
现在,下一位映射到范围m_range中,由边界分离。这使用下面更详细描述的技术在编码器和解码器上决定性进行。如果下一位是0,那么将表示在从m_Low到边界的子范围内的位置的特定码值分配给该位。如果下一位是1,那么将在从边界到m_high的子范围内的特定码值分配给该位。这表示实施方式可以根据当前输入数据位的值选择该码值集合的多个子范围中的一个的技术的一个实例,还表示实时防护四可以在所选择的子范围内将当前输入数据值分配给码值的技术的一个实例。
然后,下限m_Low和范围m_range重新定义为根据分配的码值(例如,分配的码值落在哪个子范围内)和所选择的子范围的尺寸修改该码值集合。如果刚刚编码的位是0,那么m_Low未改变,但是m_range重新定义为相等的m_range*CV。如果刚刚编码的位是1,那么m_Low移位到边界位置(m_Low+(CV*m_range))并且m_range重新定义为在边界与m_high(即,(1-CV)*m_range)之间的差值。
在这种修改之后,对该码值集合是否小于预定的最小值(例如,m_range最小128)进行检测。
在图18B和18C中示意性地示出了这些替换物。
在图18B中,数据位是1,因此,m_Low向上移位到先前的边界位置。这提供了修订或修改过的一码值集合,用于下一位编码序列中。要注意的是,在一些实施方式中,CV值改变,用于下一位编码,至少部分在刚刚编码的位的值上。这就是该技术表示“自适应”上下文的原因。CV的修订值用于生成新边界1100’。
在图18C中,编码值0,因此,m_Low依然未改变,但是m_high移位到先前的边界位置。值m_range重新定义或修改为新值m_high–m_Low。
在这个实例中,这造成m_range降低为低于其最低允许值(例如,128)。在检测这个结果时,值m_range重整或者增大尺寸,在本实施方式中,由翻倍的m_range表示,即,向左移位1位,高达将m_range恢复为要求的范围128到256所需要的倍数。在图18D中阐明了其一个实例,表示图18C的范围,该范围翻倍,以便符合要求的约束条件。从下一个值CV和修订的m_range中获得新边界1100’。要注意的是,每当m_range重整时,m_Low同样重整或者增大尺寸。这样做,以便在m_Low与m_range至今年保持相同的比率。
每当范围必须通过这种方式乘以2时,生成输出编码数据,每个重整阶段具有一个。
通过这种方式,根据CV值(可以在解码器上再现)和编码位流的调整,连续修改和重整间距m_range和下限m_Low。在一系列位编码之后,重整阶段所产生的间距和数目独特地定义编码的位流。了解这种最终间距的解码器原则上能够重构编码数据。然而,基础数学显示了实际上不需要定义到解码器的间距,而是仅仅在该间距内定义一个位置。这就是分配的码值的目的,这个码值保持在编码器上并且在编码数据结束时传递给解码器。
为了提供一个简化实例,考虑将概率空间分成100个间距。在这种情况下,m_Low表示概率空间的底部,并且0和m_Range表示其尺寸(100)。假设这个实例的目的在于将上下文变量设置为0.5(与涉及旁路路径一样),因此,概率空间要用于将二进制位编码,具有固定的概率50%。然而,如果使用上下文变量的自适应值,俺么相同的原理适用,以便在编码器和解码器上发生相同的自适应流程。
对于第一比特,每个符号(0或1)具有符号范围50,给输入符号0分配(即)值0到49(包括0和49),并且给输入符号1分配(即)值50到99(包括50和99)。如果1是要编码的第一比特,那么流的最终值必须在50到99范围内,因此,m_Low变成50,并且m_Range变成50。
为了编码第二比特,该范围进一步细分成符号范围25,输入符号0采用值50到74,并且输入符号1采用值75到99。可以看出,无论哪个符号编码为第二比特,最终值都依然在50与99之间,保留第一比特,但是现在,第二比特编码到相同的数字内。同样,如果第二比特使用与第一比特不同的概率模型,那么依然不影响第一比特的编码,这是因为细分的范围依然是50到99。
这个流程在每个输入位的编码器侧上继续,在必要的地方重整(例如,翻倍)m_Range和m_Low,例如,响应于m_Range下降为低于50。在编码流程结束时(在流结束时),最终值吸入流内。
在解码器侧上,从流中读取最终值(因此,名称m_Value),即,例如,值是68。解码器应用分成初始概率空间的相同符号范围并且比较其值,以看到其位于哪个符号范围内。看到68在50到99范围内,将1解码,作为其第一比特的符号。应用通过与编码器相同的方式分离的第二范围,看到68在50到74范围内,并且将0解码,作为其第二比特,以此类推。
在实际的实现方式中,通过从m_Value中减去每个解码符号的范围的底部值(在这种情况下,从m_Value中减去50,以留下18),解码器可以避免保持m_Low,与编码器一样。然后,符号范围始终是0到(m_range–1)范围的细分(因此,50到74范围变成0到24)。
重要的是,注意,如果通过这种方式编码仅仅两个位,那么编码器可以挑选在50到74范围内的任何最终值,并且这些值均解码成相同的两个位“10”(在0之后具有一个)。如果编码进一步位,并且实际上,HEVC编码器始终挑选50(值的底部),那么仅仅需要更加精确。通过找出某些比特,在本申请中讨论的实施方式试图利用该未使用的范围,在适当地设置时,这些比特保证最终值正确地解码,与剩余比特具有哪些值无关,使那些剩余比特不传送其他信息。例如,最上面提供的样本编码器中,如果第一数字设置为6(或5),那么最终值始终在50到74范围内,与第二数字的值无关;因此,第二数字可以用于传送其他信息。
可以看出,通过反复细分,位的连续流可以使用相同的概率范围(考虑到无限精度部分)编码。然而,实际上,无限精度不可能,并且要避免非整数。为了这个目的,使用重整。如果将50到74范围用于编码第三比特,那么符号范围通常必须均具有12.5的间距,但是相反,m_Range和m_Low可以分别翻倍(或者另外乘以公共因子)为50和100,现在,符号范围是范围100到149的细分,即,均具有25个间距。这个操作等同于将初始概率空间的尺寸从100逆动地翻倍为200。由于解码器保持相同的m_Range,所以可以与编码器应用相同次数的重整。
上下文变量CV定义为具有(在一个实例实施方式中)64个可能的状态,这些状态连续表示不同的概率,从在CV=63时的下限(例如,1%)到在CV=0时的50%。
在自适应系统中,根据各种已知的因素,CV从1位变成或者修改成下一位,根据要编码的数据的块尺寸,这些因素可以不同。在一些情况下,可以考虑相邻的和先前的图像区块的状态。因此,在此处描述的技术是修改上下文变量的实例,在下一个输入数据值方面使用,以便在给当前数据值选择的子范围内增大该码值集合的比例。
选择子范围、将当前位分配给码值、修改该码值集合、检测该集合是否小于最小尺寸、以及修改上下文变量的功能均可以由共同作用的上下文建模器950和编码引擎960执行。因此,虽然为了解释的清晰度,在图17中绘制为单独条目,但是共同作用,以提供上下文建模和编码功能。然而,为了进一步清晰,参照图19,该图更详细地阐明了这些操作和功能。
从表格中生成分配的码值,对于CV的每个可能值和m_range的位6和7的每个可能值(要注意的是,m_range的位8始终是1,这是因为对m_range的尺寸具有约束),该表格定义应给最近编码的位分配在相关子范围内的码值的一个位置或一组位置。
图19示意性地示出了使用上述技术的CABAC编码器。
CV由CV推导单元1120初始化(在第一CV的情况下)或修改(在后续CV的情况下)。码发生器1130根据CV分离当前m_range,选择子范围,并且在合适的m_range内生成分配的数据码,例如,使用上述表格。范围重置单元1140将m_range重置为所选择的子范围的m_range,以便修改该码值集合,如上所述。归一化器1150检测m_range产生的值是否低于最小可允许值,并且必要时,将m_range重整1次或多次,为每个这种重整操作输出所输出的编码数据位。如上所述,在流程结束时,还输出分配的码值。
在解码器中,如在图20中示意性地所示,CV由通过与在编码器中的单元1120相同的方式操作的CV推导单元1220初始化(在第一CV的情况下)或修改(在后续CV的情况下)。码应用单元1230根据CV分离当前m_range,并且检测数据码位于哪个子范围内。范围重置单元1240将m_range重置为所选择的子范围的m_range,以便根据分配的码值和所选择的子范围的尺寸,修改该码值集合。必要时,归一化器1250响应于所接收的数据位重整m_range。
实施方式提供了一种终止CABAC流的技术。在实例系统的上下文中,描述实施方式,其中,码值范围具有最大值512(代替128,如上所述),因此,约束为在这个范围的上半部分内,即,从256到510。
该技术可以产生平均1.5位的损失(即,远远小于所造成的先前流终止技术的损失)。还显示了第二种替换方法,该方可以产生平均1比特的损失。建议这些技术的应用包括在发送IPCM(非频率分离)数据之前终止CABAC流,并且为每片的行终止该流。该技术基于CABAC变量可以在终止时设置为在正确范围内的任何值这一认识。因此,CABAC变量设置为具有多个尾(最低有效位)零的值,以便在该值清除到数据流中时,可以有效地忽略0。
在当前技术中,终止CABAC流,促使8位清除到数据流中(即,丢失或浪费)。阐明该技术,具有一个实例,其中,在每个LCU或图像片之后(即,在编码表示与特定的相应图像子区域相关的数据值的一组数据值之后),帧内终止,允许通过原始格式将系数旁路数据(符号位/转义码)放入位流内。
在每个片结束时并且在IPCM数据之前,终止CABAC流的流程。在实施方式中,这个流程假设(为了本讨论的目的)流终止的概率固定为平均0.54%。(在数据集(1或0)编码时,当前m_range细分成两个符号范围,分别表示1或0的概率。对于特殊“流结束标志”值,1的符号范围始终是2。因此,数据值的概率1取决于当前m_range的值。在一些实施方式中,如上所述,m_range可以在256与510之间变化,因此,终止概率在2/510=0.3922%与2/256=0.7813%之间变化)。
对于编码器,该流程是:
·如果流不终止,那么CABAC范围m_range减小2,并且如果需要的话,CABAC引擎重整1个地方(即,重整m_Low和m_range);在当前CABAC流上的处理继续;
·如果流终止,那么CABAC‘m_Low’增大‘小于2的范围’,该范围设置为2,并且CABAC引擎重整7个地方,然后,输出进一步的二进制‘1’。该流程等同于重整8个地方,其中,迫使重整的值成为奇数。
可以具有场合:以上流程不理想,即,在流的概率可变或者固定为更高的百分比或者甚至具有某个确定性(概率1)的情况下。
实施方式可以提供一种方法,据此,CABAC流可以立即终止,具有仅仅2个重整,损失(平均)是1.5位,并且对解码器和编码器的复杂度具有微不足道的影响。还指示一种替换的方法,该方法可以将开销减小为仅仅1位,但是以CABAC解码器复杂度增大为代价。然后,如果具有可变的终止概率,那么这两种方法都可以与标准的自适应上下文变量相结合使用,或者与固定百分比的机构(类似于非自适应的上下文变量)相结合使用。
要注意的是,如上所述,m_Low和m_Range共同重整。
1、算法
1.1、方法
编码器的步骤如下:
m_Low=(m_Low+128)&~127
{or m_Low=(m_Low+127)&~127}
Force 2 stages of renormalization of m_Low and call test_write_out()
[write the value to the stream]
Prior to encoding next CABAC stream,set m_Range=510,m_Low=0.
注释:&是与运算,并且~表示逆二进制(因此,~127是与小数127对应的二进制值的逆二进制,以便具有小数127等数目的逆二进制的与运算(具有多个最低有效位或LSB等于1)等同于将所产生的值的LSB的该数目设置为0)。函数test_write_out()检查在m-Low顶部(MSB端部)的任何位是否有资格发送给输出流,如果有资格的话,那么写入这些位。在上面显示为伪码的背景中,由“被迫重整”产生的新位由这个运算写入。
解码器的步骤如下:
Rewind input stream by 7 bits(i.e.move read position back by 7bits).
Prior to decoding next CABAC stream,set m_Range=0,and read m_valuefrom bit-stream.
这种方法对解码器和编码器具有低处理影响。
关于m_Low,要注意的是,编码器通过反复加入m_Low中来生成流。通过以编码器的最终结果开始并且从中反复减去,解码器读取该流。解码器调用从流“m_uiValue”(或在该描述的注释中,m_value)(而非m_Low)中读取的位,并且应从位流中读取。这在一些实施方式要求解码器保持m_Low以及m_uiValue的情况下相关,因此,知道编码器在做什么。在这种情况下,通过与编码器的m_Low相同的正好相同的方式,在解码器上生成m_Low。
交替的方法
由于要求解码器保持m_Low,所以该方法增大了当前解码器的复杂度。如果其他建议需要保持m_Low,那么这个额外复杂度再次最小。
编码器的步骤如下:
Figure BDA0001972422260000281
解码器的步骤如下:
Figure BDA0001972422260000282
理论
对于CABAC编码器,写入流中的(或缓冲的)数据与m_Low串联,是n位置,表示最终输出可以成为的最低值。最高值high是低和m_Range的总和,由编码器保持的变量在范围256(包括)到511(不包括)的范围内。在流结束时,可以选择在低(包括)与高(不包括)之间的任何值,作为最终输出值,不影响解码。如果可以发生解码,而不取决于该值的n个LSB,那么n个LSB可以使用位流的下一个部分的数据代替。
假设v是在高与低之间的值,其中,n个LSB是0,并且其中,如果最后n个LSB是1,那么所产生的值V依然小于高值。由于“高-低”至少是256,所以然后,始终具有在低与高之间的值v,该值具有等于0的的至少7个LSB。即,值v是在低与高之间的第一值,可被128整除,没有余数。
实现这个的最简单方式是标准的2的幂数调整程序,即:
v=(low+127)&~127。
然而,由于范围至少是256,所以然后:
v=(low+128)&~127
也充分(并且产生略微更小的编码器)。
对于位流的当前部分,编码器输出值‘v’,除了底部的7位以外,这通过将m_Low重整2个地方来实现。在位流结束时,解码器从位流的下一个部分中读取7位,因此,需要将位流‘重绕’7位。
具有底部8位不需要完全解码流的情况,最简单的说明是“m_Low=0”的情况,并且这些由替换的算法探索。在这个替换的算法中,计算在低与高之间的值v,8个LSB是0,然后,应用测试,以检查是否具有相应的值V。这个决定流程需要对低和高进行测试,并且由于解码器必须还做出相同的决定,所以解码器需要跟踪m_Low。
在编码器算法的这两个版本中,选择7位路径,这会造成不同的位流,但是由相同的解码器可解码。
参照上述图19,单元1120和1130表示选择器选择一码值集合的多个互补子范围中的一个并且数据分配单元将当前输入值分配给码值的实施方式。单元1140表示数据修改单元的一个实施方式。单元1150表示检测器检测该码值集合是否小于最小尺寸并且相应地执行该检测器的其他功能的实施方式。单元1150还表示数据终止器执行上述和下述数据终止功能并且尤其对终止流的时间做出决定的一个实施方式。
参照上述图20,单元1220、1230、1240以及1250共同表示指针控制器和设置单元的实施方式,这是因为指针控制器和设置单元可以操作,以执行这些单元的上述功能。
应用
其可能应用包括:
1、用于片的最后解码的LCU的终止,尤其在‘每片的行’型配置中,其中,概率明显高于0.54%;在这个设置中,实施方式可以提供一种数据编码方法,用于将表示视频数据的连续输入数据值编码,该方法包括以下步骤:根据当前输入数据值的值,选择多个互补子范围的一码值集合中的一个,子范围相对于该码值集合的比例由与该输入数据值相关联的上下文变量定义;将所述当前输入数据值分配给在所选择的子范围内的码值;根据所选择的子范围的所述分配的码值和尺寸,修改该码值集合;检测该码值集合是否小于预定的最小尺寸,并且如果小于的话,那么连续增大该码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;修改所述上下文变量,在下一个输入数据位或值方面使用,以便在给所述当前数据值选择的子范围内增大该码值集合的比例;并且在编码与在无需参照其他视频数据进行编码的视频数据的片内的视频数据的一组区块对应的一组输入数据值之后,通过:将定义该码值集合的端部的值设置为等于0的具有多个最低有效位的值;增大该码值集合的尺寸;并且将定义该码值集合的端部的值写入输出数据中,来终止输出数据。
2、用于片的最后可能的LCU的终止,与在片的最后可能的LCU具有确定性的终止一样;在这个设置中,实施方式可以提供一种数据编码方法,用于将表示视频数据的连续输入数据值编码,该方法包括以下步骤:根据当前输入数据值的值,选择多个互补子范围的一码值集合中的一个,子范围相对于该码值集合的比例由与该输入数据值相关联的上下文变量定义;将所述当前输入数据值分配给在所选择的子范围内的码值;根据所选择的子范围的所述分配的码值和尺寸,修改该码值集合;检测该码值集合是否小于预定的最小尺寸,并且如果小于的话,那么连续增大该码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;修改所述上下文变量,在下一个输入数据位或值方面使用,以便在给所述当前数据值选择的子范围内增大该码值集合的比例;并且在编码表示无需参照其他视频数据进行编码的视频数据的整个片的一组输入数据值之后,通过:将定义该码值集合的端部的值设置为等于0的具有多个最低有效位的值;增大该码值集合的尺寸;并且将定义该码值集合的端部的值写入输出数据中,来终止输出数据。
3、在IPCM数据之前的终止,可能与上下文变量相结合;在这个设置中,实施方式可以提供一种数据编码方法,用于将表示频率分离的视频数据的连续输入数据值编码,该方法包括以下步骤:根据当前输入数据值的值,选择多个互补子范围的一码值集合中的一个,子范围相对于该码值集合的比例由与该输入数据值相关联的上下文变量定义;将所述当前输入数据值分配给在所选择的子范围内的码值;根据所选择的子范围的所述分配的码值和尺寸,修改该码值集合;检测该码值集合是否小于预定的最小尺寸,并且如果小于的话,那么连续增大该码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;修改所述上下文变量,在下一个输入数据位或值方面使用,以便在给所述当前数据值选择的子范围内增大该码值集合的比例;并且在编码一组输入数据值,以便要编码的下一组数据值表示非频率分离的视频数据之后,通过:将定义该码值集合的端部的值设置为等于0的具有多个最低有效位的值;增大该码值集合的尺寸;并且将定义该码值集合的端部的值写入输出数据中,来终止输出数据。
4、用于防止“位显著”机构变得天长的流的终止;在这个设置中,实施方式可以提供一种数据编码方法,用于将连续输入数据值编码,该方法包括以下步骤:根据当前输入数据值的值,选择多个互补子范围的一组码值中的一个,子范围相对于该码值集合的比例由与该输入数据值相关联的上下文变量定义;将所述当前输入数据值分配给在所选择的子范围内的码值;根据所选择的子范围的所述分配的码值和尺寸,修改该码值集合;检测该码值集合是否小于预定的最小尺寸,并且如果小于的话,那么连续增大该码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;修改所述上下文变量,在下一个输入数据位或值方面使用,以便在给所述当前数据值选择的子范围内增大该码值集合的比例;检测由不同的编码技术编码的一组数据值是否超过预定的尺寸,并且如果超过的话,那么通过:将定义该码值集合的端部的值设置为等于0的具有多个最低有效位的值;增大该码值集合的尺寸;并且将定义该码值集合的端部的值写入输出数据中,来终止输出数据。
该描述的以下部分涉及将编码器和解码器(例如,上述编码器和解码器)的操作扩展为具有更高的视频分辨率和相应较低(包括负数)QP的操作。如果编解码器确实支持高位深,那么需要低操作QP。讨论由存在于编码器和解码器内(例如,由HEVC定义的编码器和解码器)的内部精度限制造成的误差的潜在来源。这些精度的一些变化可以减少误差,从而扩展HEVC的操作范围。此外,显示熵编码的变化。
在提交本申请时,HEVC版本1描述了8和10位编解码器;版本2包括12和14位操作。虽然写入了测试或演示软件,以允许数据数据位深高达14,但是编解码器编码14位的能力不必与编解码器处理8或10位分辨率数据的方式对应。在一些情况下,内部处理可以引入噪声,这可以造成分辨率的有效损失。例如,如果14位输入数据的峰值信噪比(PSNR)很低,以至于最低有效的2位有效地减小为噪声,那么编解码器仅仅有效地通过12位分辨率操作。因此,适合于以具有内部操作功能的系统为目标,这些功能允许使用更高的分辨率输入数据(例如,12或14位分辨率输入数据),而不引入这么多的噪声、误差或其他伪影,以便大量降低输出数据的有效(有用)分辨率降。
术语“位深”和变量bitDepth在此处用于表示输入数据的和/或在编解码器内执行的数据处理(后者也称为使用HEVC软件演示模型术语的“内部位深”)的分辨率。例如,对于14位数据处理,bitDepth=14。
在8和10位编解码器的背景中,讨论在正范围(QP>0)内的量化参数(QP)。然而,对于在输入数据的分辨率内的每个额外位(超过8位),最小可允许的QP(minQP)可以是-6,或者换言之:
minQP=-6*(bitDepth-8)
变量“PSNR”或峰值SNR定义为均方差(MSE)和位深的函数:
PSNR=10*log10(((2bitDepth)-1)2/MSE)
在下面要讨论的图23中可以看出,无论实例编解码器实现方式的内部处理位深具有什么值,总体趋势都是PSNR在大约90dB时使峰值弯曲;对于更多的负QP(与和PSNR曲线的峰值对应的QP相比),PSNR性能实际上退化。
将等式用于PSNR,可以获得用于规定的位深PSNR和MSE的以下表格:
Figure BDA0001972422260000341
如果14位编解码器仅仅能够实现72.2dB的PSNR,那么每个输出值仅仅精确到在对应的原始值的±4的范围内。因此,这两个最低有效位是有效的噪声,因此,编解码器实际上等于12位编解码器,在输出上添加两个额外的随机位。(重要的是,注意,这个分析基于平均值,并且实际上,在一部分图片中,可以实现比这个平均值更好或更差的质量)。
扩展这个论点,在通过这种单纯的数字方式比较PSNR时,可以认为,因此,最佳系统实际上是具有无损编码的8位系统,实现无限PSNR(MSE=0)。然而,这不考虑最初将视频从n位(其中,n最初高于8)向下凑整或截断为8位时的损失。这种方法可以根据以下实例推广:
·如果无损(n-1)位系统可用于编码n位数据,那么在输出上,观察到的n位MSE是(0+12)/2=0.5;
·如果无损(n-2)位系统可用于编码n位数据,那么在输出上,观察到的n位MSE是(0+12+22+12)/4=1.5;
·如果无损(n-3)位系统可用于编码n位数据,那么在输出上,观察到的n位MSE是(0+12+22+32+42+32+22+12)/8=5.5;
·如果无损(n-4)位系统可用于编码n位数据,那么在输出上,观察到的n位MSE是(0+12+22+32+42+52+62+72+82+72+62+52+42+32+22+12)/16=21.5。
因此,返回特定实例,如果14位系统不实现21.5或更小(等于71.0dB)的MSE,并且如果无损10位系统的位速率相似,那么从数字上说,仅仅有效地编码10位。
考虑有损耗的低位深(n-r)位系统具有‘m’的MSE。如果这个系统用于编码更高的位深n位数据,那么因此,其MSE由(2r)2m表示。
例如,对于有损耗的(n-1)位系统,在n位系统内的MSE是4m;对于有损耗的(n-2)位系统,在n位系统内的MSE是16m;对于有损耗的(n-3)位系统,在n位系统内的MSE是64m;并且对于有损耗的(n-4)位系统,在n位系统内的MSE是256m。
因此,对于有损耗的更低位深系统编码更高(n位)位深数据的情况,其损耗通常是在n位域中观察到的MSE的主要贡献者,因此,简单的PSNR图可以用作质量的直接比较。
HEVC编码器的实现方式(在提交申请时)的峰值是90dB(如图23中所示);这可以被视为适合于编码11位数据,但是在这个操作点上,下面讨论是否可以获得任何进一步改进的问题。
首先,讨论误差的潜在来源。
核心HEVC系统(版本1)被设计为用于8和10位运算。随着位数的增大,系统的部件的内部精度与造成总体分辨率的有效损耗的误差、噪声或伪影的潜在来源相关。
在图21中显示了阐明通过上面讨论的类型的编码器(例如,HEVC编码器)的数据的流动的简化示意图。通过在图21中显示的形式概述流程的目标在于,指示对在系统内的操作分辨率的潜在限制。要注意的是,由于这个原因,所以在图21中并未显示所有编码器功能。还要注意的是,图21提供了用于编码数据集的输入数据值(可以是视频数据值)的设备的一个实例。进一步,要注意的是,(如上所述)在前向编码路径内使用的技术(例如,在图21中显示的)还可以用于编码器的互补逆解码路径内,并且还可以用于解码器的前向解码路径内。
将某个位深的输入数据1300提供给预测阶段1310,该预测阶段还行帧内或帧间预测,并且从实际的输入图像中减去预测的版本,生成某个位深的残差数据1320。因此,阶段1310通常与图5的条目320和310对应。
残差数据1320由变换阶段1330频率变换,该阶段涉及与在2D变换等式中的左边和右边矩阵乘法对应的变换处理(标记为阶段1和阶段2)的多个阶段,并且根据具有某个分辨率的一组或多组变换矩阵1340(变换可以由矩阵乘法处理实现)操作。称为MAX_TR_DYNAMIC_RANGE的变换流程的最大动态范围1350应用于在该流程中使用的计算中。根据MAX_TR_DYNAMIC_RANGE,变换阶段的输出是一组变换系数1360。变换阶段1330通常与图5的变换单元340对应。
然后,将系数1360传递给通常与图5的量化器350对应的量化阶段1370。量化阶段可以在量化系数和缩放列表1380的控制下使用乘法移位机构,包括截取为最大动态范围ENTROPY_CODING_DYNAMIC_RANGE(在实施方式中,与MAX_TR_DYNAMIC_RANGE对应)。根据然后(在此处未显示的全编码器中)传递给熵编码阶段(例如,由图5的扫描单元360和熵编码器370表示的阶段)的ENTROPY_CODING_DYNAMIC_RANGE,量化阶段的输出是一组1390量化系数。
使用在图21中介绍的注释,下面在HEVC中讨论计算噪声、省略(为了该讨论的目的)由各种预测造成的噪声整形以及RQT(剩余的四叉树)和RDOQ(速率失真优化量化)决定流程的主要来源:
变换矩阵系数值
理想地,应用于变换系数中的逆变换再现原始输入值。然而,这由计算的整数性质限制。在HEVC中,变换矩阵系数具有6个分数位(即,内在其向左移位6)。
在每个变换阶段之后将结果移位到MAX_TR_DYNAMIC_RANGE
正变换造成尺寸为bitDepth+log2(尺寸)位的值。在第一变换阶段之后,系数的位宽度应至少是bitDepth+log2(尺寸)(虽然额外位帮助保持更精确)。然而,在HEVC中,这些中间体在正(仅仅编码器)变换中移位,以便决不超过MAX_TR_DYNAMIC_RANGE;同样,用于第二阶段。在逆变换中,在每个阶段的输出上的值截取为MAX_TR_DYNAMIC RANGE。
如果MAX_TR_DYNAMIC RANGE小于bitDepth+log2(尺寸),那么在正变换中的值实际上在量化阶段中向左移位(而非向右),然后,截取为15位(ENTROPY_CODING_DYNAMIC_RANGE)。实际上,如果ENTROPY_CODING_DYNAMIC_RANGE小于bitDepth+log2(尺寸)+1,那么在QP小于(4-(6*(bitDepth-8)))时,发生截取。
在HEVC中,虽然在32x32区块内的系数可以截取,用于QP<-8,但是MAX_TR_DYNAMICRANGE(以及15的ENTROPY_CODING_DYNAMIC_RANGE)用于高达10位运算。此外,内部精度缺乏净空高度还可以给低QP造成误差。
在量化期间增加的噪声
虽然编码器和解码器的量化器和逆量化器在量化时会增加噪声,但是在应用缩放列表时,并且由于在阵列‘quantScales’和‘invQuantScales’’内定义的量化系数不必是完美的倒数,所以可以无意中增加额外噪声。
下面讨论变换矩阵精度和MAX_TR_DYNAMIC_RANGE的效应。
通过分析所谓的SVT测试组(在16位中的1920x1080 50p,从4K视频开始缩小)的5个视频序列的编码,获得经验数据(在所谓的帧内编码配置文件下)。在这些序列中,仅仅前150个帧用于测试中。在提交本申请时,称为Traffic_RGB(在12位中的2560x1600 30p)的第六个序列由适用于HEVC的标准范围扩展测试条件定义。
在经验测试中,如果文件(输入数据)位深小于正在测试的内部位深(编解码器的输入位深),那么填补样本(LSB设置为0);如果文件位深大于内部位深,那么样本缩放和凑整。
在以下讨论中,bitDepth用于描述内部位深,而非输入数据的位深。考虑系统的内部位深(bitDepth)高达16。
图22是位速率对量化参数(QP)的示图,其示意性地示出了具有多个内部位深的图21的编码器系统的经验性能。图23是用于绿色通道的PSNR(基于一个通道更容易获得经验数据,并且绿色是最有助于观看者的对输出视频的感知的通道)对QP的示图。图22的示图由16位(QP-48到-26)、14位(QP-24到-14)、12位(QP-12到-2)、10位(QP 0到10)、以及8位(QP12到22)处理的复合数据构成。垂直线1400示意性地表示位深改变的点。在图22中的多个曲线与使用不同的相应测试序列获得的结果对应。
图22示出了位速率通常随着QP单调改变。
参照图23,在QP是4以及以下时(在每个曲线上的最右边的3个数据点),用于bitDepth=8和bitDepth=10的PSNR急剧增大。在QP是4时,8位的量化除数是1(用于10位的QP-8),在DCT与IDCT之间被抢走量化与去量化系数之间具有失配,作为误差仅仅可能的来源。由于系统倾向于无损处理,所以MSE接近0,并且SNR向上飙升。图24是用于具有一系列不同的内部位深(8、10、12、14、16)的一个测试序列的PSNR对位速率的示图。5个曲线几乎完全彼此层叠其最大范围,因此,不能容易区分。
在相同操作点上的10位系统主要在两个最低有效位中具有误差,这表示在仅仅考虑8位精度时,也接近无损耗处理,但是如在本说明书中的其他地方所示,也必须考虑将10位视频转换成8位视频的行为。这增加了在考虑更低的精度时隐藏的(即,在这些经验测试中没有明确显示,但是依然造成更高的总体SNR)1.5的MSE。
在不由内容精度限制为峰值SNR的系统中,在QP下降为低于(4-(6*(bitDepth-8)))时,每个bitDepth可以看出朝着无损处理的这种增大。这种图25中显示,该图是用于一系列位深(8、10、12、14、16)的绿色通道PSNR对位速率的示图,具有MAX_TR_DYNAMIC_RANGE=21、ENTROIPY_CODING_DYNAMIC_RANGE=21和14个位变换矩阵,禁用RDOQ并且禁用变换跳过。5个曲线彼此层叠,除了部分1420(8位曲线的)、部分1430(10位曲线的)、部分1440(12位曲线的)、部分1450(14位曲线的)以及部分1460(16位曲线的)以外。可以看出,对于相同数目的位,可以实现比在图24中显示的那些明显更高的SNR。
经验结果表明,在本公开的实施方式中,变换矩阵精度应至少是bitDepth-2。图26是比较各种精度DCT矩阵的用于bitDepth=10和MAX_TR_DYNAMIC_RANGE=17的一个测试序列的PSNR对位速率的示图。
在实施方式中,MAX_TR_DYNAMIC_RANGE应至少是大于bitDepth的5(其是最小值log2(尺寸))。额外精度显示为进一步提高编码效率。
在实施方式中,ENTROPY_CODING_DYNAMIC_RANGE应至少是大于bitDepth(用于由小于(4-(6*(bitDepth-8))的QP应用的“量化”因子加上用于最大值log2(尺寸)的5)的6(其是最小值log2(size))。在其他实施方式中,在最低QP值的截取不是问题的情况下,然后,ENTROPY_CODING_DYNAMIC_RANGE应至少是大于bitDepth的5(最小值log2(尺寸))。
对于16位系统,变换矩阵精度应设为4,MAX_TR_DYNAMIC_RANGE应设为21,并且ENTROPY_CODING_DYNAMIC_RANGE应设为22。由于具有更多的内部精度很少被认为有害,所以还在不同的bitDepth上测试这些参数,产生结果,这些结果证明,对于相同数目的位,可实现明显更高的SNR,并且更大精度的系统具有适合于高达16的bitDepth的PSNR/MSE操作点。
如果范围延伸旨在为所有位深产生单个新配置文件,那么上述系统合适。然而,如果为不同的最大bitDepth描述不同的配置文件,那么具有不同参数的值可用于降低不需要最高配置文件的系统的硬件复杂度。在一些实施方式中,不同的配置文件可以定义不同的值,用于变换矩阵精度、MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE。
在其他实施方式中,配置文件允许编码器从一系列容许值中选择一些或所有变换矩阵精度、MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE的值或者边信息的函数,例如,bitDepth。然而,如果为配置文件定义变换矩阵精度,那么这需要多组变换矩阵,该转换矩阵精度与设计配置文件的最大位深的推荐值对应。下面参照图28,提出了一组可能的配置文件。
在以下表格中显示变换矩阵精度、MAX_TR_DYNAMIC_RANGE、ENTROPY_CODING_DYNAMIC_RANGE以及bitDepth:
Figure BDA0001972422260000411
在表格中,标有‘*’的值截取为最小15,与HEVC的当前描述一致。标有
Figure BDA0001972422260000412
Figure BDA0001972422260000413
的值大于规定为HEVC的当前描述规定的值,这些值分别是15和6。
如果要使用不同的配置文件,那么在本公开的实施方式中,这些规范可以用作极小值(注意,HEVC版本1的10位系统不是很满足这些目标)。虽然这使更高位速率(更低QP)的PSNR退化,但是能够使用小于这些指示的极小值的值。
因此,以上表格提供了一种设置的实例,其中,根据视频数据的位深,设置一个或多个编码(以及互补的解码)阶段的精度和/或动态范围。
然而,在一些实施方式中,亮度和色度数据可以具有不同的位深。
因此,在这种情况下,虽然可以不同地设置精度和/或动态范围值(与在亮度与色度数据之间一样),以便一组值用于亮度数据,并且另一组可能不同的值用于色度数据,但是本公开的实施方式通过不同的方式处理这个问题。
一些实施方式认识到,从实现方式效率的角度来看,可以将相同的精度和/或动态范围值有利地用于亮度和色度数据,同时依然保持根据位深改变那些值的能力。在亮度与色度数据之间使用相同的参数,允许给亮度与色度数据建立单个编码路径,避免了需要建立(在软件或固件实现方式中)两个不同的单独可编程的或可控制的路径。
可以根据预定的规则,选择使用哪组参数。例如,可以选择与亮度数据相关的参数。交替地,并且提供更高的操作灵活性,选择具有视频内容的最大位深的根据该视频内容(例如,亮度、色度)的参数。因此,例如,使用以上表格,如果亮度位深是(即)16,并且色度位深是(即)14,那么与位深16相关的参数列用于亮度并且用于色度处理。
位深和/或位深与上面讨论的参数的关系和/或参数的表格的指数(例如,上面显示的指数)可以由视频数据的一个或多个“参数组”定义。视频参数组(VPS)具有最高水平,然后具有(与更大的粒度对应,具有减小的水平)序列参数组(SPS),其中,序列包含一个或多个图片、图片参数组(PPS)以及片参数组,其中,图片包含一个或多个片。关系或位深或精度和/或动态范围值可以由这些中的任一个定义,但是在一些实施方式中,由SPS定义。
因此,在刚刚描述的实施方式中,一个或多个编码阶段的精度和/或动态范围值被设置为根据视频位深变化,以便如果位深在视频元件之间(例如,在亮度和色度数据之间)不同,那么预定规则用于选择单组精度和/或动态范围值被,以供所有视频元件使用。相似的考虑因素在图像数据(而非视频数据)方面适用。相似的原理适用于编码器和解码器。因此,这些设置还可以提供一个设置的实例,其中,对于具有不同位深的图像元件的输入或输出图像数据,选择最大动态范围和/或变换矩阵的数据精度的单组,以供所有图像元件使用。
在一些实施方式中,选择最大动态范围和/或变换矩阵的数据精度的单组,作为与具有最大位深的那个图像元件相关的那些值。
要注意的是,在解码器侧,并且在编码器的逆路径内,在一些实施方式中,可以使用与在编码器侧使用的最大动态范围和/或变换矩阵的数据精度相同(或一个或两个相同)的最大动态范围和/或变换矩阵的数据精度。在其他实施方式中,将逆(解码器侧)变换矩阵的数据精度设置为预定的值,例如,6。
下面在图38和39中进一步描述这些设置的实例。
现在,转向CABAC系统,如上所述,这提供了编码技术的一个实例,涉及:根据用于编码的数据集的当前输入数据值的值,选择多个互补子范围的一组码值中的一个,该码值集合由范围变量定义;将所述当前输入数据值分配给在所选择的子范围内的码值;根据所选择的子范围的所述分配的码值和尺寸,修改该码值集合;并且检测定义该码值集合的范围变量是否小于预定的最小尺寸,并且如果小于的话,那么连续增大所述范围变量,以便增大该码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位。在实施方式中,相对于该码值集合的子范围的比例由与所述输入数据值相关联的上下文变量定义。CABAC设置的实施方式涉及:在编码输入数据值之后,修改所述上下文变量,在下一个输入数据值方面使用,以便在给所述当前数据值选择的子范围内增大该码值集合的比例。
而且,如上所述,在一些实施方式中,HEVC CABAC熵编码器使用以下流程编码语法元素:
将最后有效系数(按照扫描顺序)在TU内的位置编码。
对于每个4x4系数组(按照颠倒的扫描顺序处理组),将重要的系数组标志编码,表示该组是否包含非零系数。这对于包含最后有效系数的组不需要,并且对于左上角的组(包含DC系数),假设是1。如果标志是1,那么随后立即编码属于该组的下面的语法元素:有效性图;大于1的图;大于2的图;符号位;以及转义码。
在图29中示意性地示出了了这个设置。在步骤1500中,CABAC编码器检查当年组是否包含最后有效系数。如果包含的话,那么流程结束。如果不包含,那么流程继续进入步骤1510,在该步骤中,编码器检查当前组是否是包含DC系数的左上角的组。如果包含的话,那么控制进入步骤1530。如果不包含,那么在步骤1520中,编码器检测当前组是否包含非零系数。如果不包含,那么流程结束。如果包含的话,那么在步骤1530中,生成有效性图。在步骤1540中,生成a>1图,这表示对于具有有效性图值1的高达8个系数,从组的端部往后计算,幅度是否大于1。在步骤1550中,生成a>2图。对于具有>1图值1的1个系数(最接近该组的端部的系数),这表示幅度是否大于2。在步骤1560中,生成符号位,并且在步骤1570中,对于幅度不完全由更早的语义元素描述的任何系数(即,在任何步骤1530-1560中生成的数据),生成转义码。
对于在MSE小于1的操作点上的16位、14位或者甚至12位系统(通常分别是QP-34、-22以及-10),该系统通常产生非常小的压缩(对于16位,实际上使源数据膨胀)。系数通常具有大数目,因此,几乎始终具有转义码。由于这个原因,所以通过将固定数目的LSB、BF放入每个系数的位流内,对熵编码器做出两个提出的变更,以允许具有更高的位深。在本质上,通过额外精度的替换路径将更高位系统(例如,16位)有效地转换成更低位系统(例如,10位),方案允许为8和10位运算开发的当前HEVC CABAC熵编码器在设计其的原始bitDepth上操作。有助于分离方法的效能,这是因为更低位系统值明显更可预测,因此,适合于通过更复杂的编码方案编码,而更高位系统所需要的额外经度不太可预测,因此,不容易压缩,并且复杂的编码方案不太有效。例如,16位系统可以将BF配置为8。
编码器在位流内指示使用固定位方案,并且在使用方案时,确定固定位的数目的方式由编码器指示给解码器。那些方式是直接编码数目,或者指示从已经在位流内编码的存在于位流内的参数(包括QP、位深和/或配置文件)或其组合中获得值BF的方式。编码器还具有使用相同的方式指示不同图片、片以及CU的不同BF值的选择,或者通过向为序列、图片、片或先前CU获得的BFvalue指示δ值。BF值还可以被配置为对于不同的变换单元区块尺寸、不同的预测类型(帧间/帧内)以及不同的颜色通道不同,其中,源视频的性质在选择不同参数时控制编码器。
基于QP的BF的一个实例推导如下:
BF=max(0,int(QP/-6))
基于位深的BF的一个实例推导如下:
BF=bitDepth–8
基于变换单元区块尺寸和QP的BF的一个实例推导如下:
BF=max(0,int(QP/-6)+2–log2(size))
BF的不同值可以使用预编码器(试验)设置,在编码器中确定,或者可以被配置为遵循预定规则。
熵编码实施方式1
为了允许通过更高的位深处理,对于小于bitDepth的多个固定位BF,HEVC熵编码器的流程变成以下流程:
将最后有效系数(按照扫描顺序)在TU内的位置编码。
对于每个4x4系数组(按照颠倒的扫描顺序处理组),每个系数C分成最高有效部分CMSB和最低有效部分CLSB,其中,
CMSB=abs(C)>>BF
CLSB=abs(C)–(CMSB<<BF)
并且BF是从位流中确定的要使用的固定位的数目。
所讨论的CMSB和CLSB的生成提供了从输入数据值中生成相应的互补最高有效数据部分和最低有效数据部分的一个实例(在用于编码一系列数据值的技术方面),以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分表示该值的剩余最低有效位。
将重要的系数组标志编码,表示该组是否包含CMSB的非零值。这对于包含最后有效系数的组不需要,并且对于左上角的组(包含DC系数),假设是1。如果标志是1,那么随后立即编码属于该组的下面的语法元素:
有效性图:
对于在组中的每个系数,将标志编码,表示CMSB的值是否重要(具有非零值)。为由最低有效位置表示的系数,编码标志。
大于1的图:
对于具有重要图值1(从组的端部往回数)的高达8个系数,这表示CMSB是否大于1。
大于2的标志:
对于具有大于1的图值1(最接近组的端部的值)的1个系数,这表示CMSB是否大于2。
固定位:
对于在组中的每个系数,使用等概率的CABAC二进制,将CLSB的值编码,作为旁路数据。
符号位:
对于所有非零系数,符号位编码,作为等概率的CABAC二进制,在使用符号位隐藏时,可能从奇偶性中推断出最后的符号位(按照颠倒的扫描顺序)。
转义码:
对于幅度不完全由更早的语义元素描述的任何系数,剩余部分编码,作为转义码。
然而,在重要系数组标志是0的情况下,那么随后立即编码属于该组的下面的语法元素:
固定位:
对于在组中的每个系数,使用等概率的CABAC二进制,将CLSB的值编码。
符号位:
对于所有非零系数,符号位编码,作为等概率的CABAC二进制,在使用符号位隐藏时,可能从奇偶性中推断出最后的符号位(按照颠倒的扫描顺序)。
生成这些数据集和标志中的一个或多个,提供生成一个或多个数据集的实例,表示预定幅度范围的最高有效数据部分的相对于所述值的阵列的位置。使用CABAC编码一个或多个图,提供使用二进制编码将所述数据集编码成输出数据流的一个实例。使用等概率的CABAC二进制编码其他数据提供包括在所述输出数据流内定义最低有效部分的数据的一个实例,或者(使用其他术语)包括在所述输出数据流内定义最低有效部分的数据的一个实例,包括使用算术编码来编码所述最低有效数据部分,其中,根据编码值范围的相应比例,将表示最低有效数据部分的符号编码,其中,描述最低有效数据部分的每个符号的编码值范围的相应比例具有相同的尺寸。然而,作为等概率的CABAC编码的替换物,包括在所述输出数据流内定义最低有效数据部分的数据的步骤可以包括在所述输出数据流内直接包括最低有效数据部分,作为原始数据。
本公开的一个实施方式改变了重要系数组的解释,以指示任何系数是否是非零(而非仅仅其CMSB对应物)。在这种情况下,不需要指示按照颠倒的扫描顺序包含最后系数的系数组(似乎是1),被抢走重要系数组标志是0时,不需要编码额外的语法元素。这提供了有效性图包括数据标志的一个实例,其表示具有非零值的最后一个最高有效数据部分的根据值阵列的预定顺序的位置。
在图30中示意性地示出了后一种设置,该设置在很多方面与图29对应。比较这两幅图,看出图30没有图29的步骤1500的等同物,与甚至包含最后有效系数的组发生流程这一事实对应。步骤1610和1620总体上与图29的步骤1510和1520对应。在最近引入的步骤1625中,系数分离成上述MSB和LSB部分。步骤1630、1640以及1650总体上与图29的相应步骤1530、1540以及1550对应,除了仅仅作用在分离系数的MSB部分上以外。最近引入的步骤1655涉及编码分离系数的LSB部分,作为固定的位,如上所述。步骤1660和1670总体上与图29的步骤1560和1570对应。
这个修改可以有效地产生一种系统,其中,CABAC熵编码器通过选择BF来在设计其的原始bitDepth上操作,以便等于编码器的设计位深的多个MSB穿过CABAC编码,旁路编码更高位深的LSB(其最不可预测,因此,最不能压缩)。例如,如果编码器是8或10位深编码器,BF可以等于8或10。这提供了一个系统的实例,其中,数据值序列表示具有图像数据位深的图像数据;并且该方法包括将在每个最高有效数据部分内用作多个最高有效位的位数设置为等于图像数据位深。
如上所述,技术可以(在一些实施方式中)应用于设置中,其中,数据值序列包括一系列频率变换的图像系数。然而,可以使用其他类型的数据(例如,音频或仅仅数字数据)。在图27中可以看出这个提议的结果,该图是示出根据位深设置的DCT矩阵精度和MAX_TR_DYNAMIC_RANGE的用于一个测试序列的PSNR对QP的示图,示出了具有(曲线1680)和没有(曲线1690)旁路固定位编码的等效操作。具有固定位的系统(相对于没有固定位的系统)的位速率的节省从在QP 0中的5%变成在QP-48的37%。BF的最佳值取决于序列。BF的实例是8或10,如上所述。
熵编码实施方式2
在其他实施方式下的相似方案使用很多相同的处理步骤,但是保持有效性图的原始功能,其中,标志值0表示系数值0(而非与在熵编码实施方式1中一样,用于系数的MSB部分的值0)。在考虑(通常光滑的)计算机生成的视频时(在预期0更常见的情况下),这可以更有用。对于小于bitDepth的多个固定位BF,这个熵编码实施方式包括以下处理步骤:
将最后有效系数(按照扫描顺序)在TU内的位置编码。
对于每个4x4系数组(按照颠倒的扫描顺序处理组),将重要的系数组标志编码,表示该组是否包含非零系数。这对于包含最后有效系数的组不需要,并且对于左上角的组(包含DC系数),假设是1。如果标志是1,那么每个系数C分成最高有效部分CMSB和最低有效部分CLSB,其中,
CMSB=(abs(C)–1)>>BF以及
CLSB=(abs(C)–1)–(CMSB<<BF)
所讨论的CMSB和CLSB的生成提供了从输入数据值中生成相应的互补最高有效数据部分和最低有效数据部分的一个实例(在用于编码一系列数据值的技术方面),以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分表示该值的剩余最低有效位。
随后立即编码属于该组的下面的语法元素:
有效性图:
对于在组中的每个系数,将标志编码,表示系数C是否重要(具有非零值)。由最低有效位置表示的系数不需要标志。
大于1的图:
对于具有重要图值1(从组的端部往回数)的高达8个系数,这表示CMSB是否大于1。
大于2的标志:
对于具有大于1的图值1(最接近组的端部的值)的1个系数,这表示CMSB是否大于2。
符号位:
对于所有非零系数,符号位编码,作为等概率的CABAC二进制,在使用符号位隐藏时,可能从奇偶性中推断出最后的符号位(按照颠倒的扫描顺序)。
固定位:
对于在组中的每个系数,将CLSB的值编码。
转义码:
对于幅度不完全由更早的语义元素描述的任何系数,剩余部分编码,作为转义码。
生成这些图和标志中的一个或多个,提供生成一个或多个数据集的实例,表示预定幅度的最高有效数据部分的相对于所述值的阵列的位置。使用CABAC编码一个或多个图,提供使用二进制编码将所述数据集编码成输出数据流的一个实例。使用等概率的CABAC二进制编码其他数据提供包括在所述输出数据流内定义最低有效部分的数据的一个实例。
要注意的是,在输出流内的数据的各种元件的顺序具有各种选择。例如,参照符号位、固定位以及转义码,一组(即)n个系数(其中,例如,n可能是16)的顺序可能是:
n x符号位,然后n x组固定位,然后n x转义码;或者
n x符号位,然后n x(用于一个系数的转义码和固定位)。
在图31的流程图中示意性地示出了这个设置。在此处,步骤1700…1770通过以下方式与图31和32的相应步骤对应,除非识别差异。要注意的是,步骤1755在图31中的步骤1760之后(相似的步骤1655位于在图30中的步骤1660之前)。
步骤1700总体上与图29的步骤1500对应。如果这不是包含最后有效系数的组,那么控制进入步骤1710。步骤1710和1720与图30的步骤1610和1620对应。在与图30的步骤1625对应的步骤1725中,分离系数。然而,在步骤1730中,与前面讨论的步骤1630的设置相比,在有效性图的推导中使用整个系数(暂时忽略在步骤1725中执行的分离)。步骤1740和1750仅仅作用在分离的系数的MSB部分上,并且在功能上与步骤1640和1650对应。除了在图32与33之间略微不同地阐明(通过实例)步骤的排序以外,步骤1755、1760以及1770与步骤1655、1660以及1670的功能对应。
在图28中可以看出比较这两个熵编码实施方式的结果。图28是为6个测试序列中的每个阐明相对于为熵编码实施方式1实现的结果(具有相同的参数)的熵编码实施方式2的位速率百分比改进的示图。
与熵编码实施方式1相比,熵编码实施方式2显示为对于负QP对某些源材料平均具有1%的更小效率,对于正QP,提高为大约3%。然而,对于某些更软的源材料,由于在系数内存在更多的0,所以观察到相反的情况。在一个实施方式中,编码器能够选择熵编码方法,并且将该选择信令给解码器。
由于与负QP的节省相比,正QP的节省更小,所以在QP是负时,可以启用熵编码修改。考虑到熵编码实施方式1显示了对于负QP具有高达37%的位节省,在与没有熵编码修改的系统相比时,在这些操作点上,在这两个熵编码实施方式之间具有很少的差异。
因此,在实例实施方式中,频率变换的输入图像系数是根据从一系列可用量化参数中选择的一个可变量化参数目化的频率变换的输入图像系数,该技术可以包括:对于使用在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,根据最高有效数据部分和最低有效数据部分,将所述频率变换的输入图像系数的阵列编码;并且对于使用不在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,将所述频率变换的输入图像系数的阵列编码,以便在每个最高有效数据部分内的位数等于该系数的位数,并且相应的最低有效数据部分不包含位。
由于正在编码的数据量略微高于为标准的HEVC版本1操作点观察到的量,所以额外阶段适用于或者可以适用于这两个提出的系统,并且实际上,现在,结合本公开的进一步实施方式,讨论不能或者不启用先前提出的系统的系统。
在为每个系数组编码旁路数据之前,这个额外阶段促使CABAC流进行位对准。由于现在直接从流中读出值,所以这允许更快速地(并且平行地)解码旁路数据,在解码旁路二进制时,去除了长除法的要求。
一种实现这个的机构是应用前面提出的CABAC终止方法。
然而,在现在描述的实施方式中,并未终止位流,CABAC状态与位边界对准。
在实施方式中,这组CABAC码只包括由范围变量定义的从0到上限值的值,所述上限值在预定的最小尺寸(例如,256)与第二预定的值(例如,510)之间。
为了与流位对准,m_Range在编码器和解码器内仅仅设置为256。这明显表示编码和解码流程,允许通过原始格式直接从m_Value中读取二元数据,因此,解码器一次可以同时处理多个位。
要注意的是,将m_Range设置为256的行为引起平均0.5的损耗(如果m_Range已经是256,那么没有损耗;如果m_Range是510,那么损耗大约1位;因此,在m_Range的所有有效值上的平均值是0.5位)。
多种方法可以用于减少由这些技术引起的损耗或可能的成本。图33到35是分别阐明由CABAC编码器执行的CABAC流程的终止阶段的版本的示意性流程图。
根据图33,可以根据旁路编码的数据的预期数目的估计(例如,根据等于1的大于1标志的数目),选择是否位对准。如果预期具有一些旁路编码的数据,那么由于位速率可能更低,所以位对准昂贵(每个对准平均浪费0.5位)并且也不需要。因此,在图33中,步骤1800涉及通过检测设置了的>1标志的数目,并且比较该数目和阈值Thr,来检测旁路编码的数据的估计数目。如果估量超过阈值Thr,那么控制进入步骤1810,在该步骤中,选择位对准模式。否则,控制进入步骤1820,在该步骤中,选择非位对准模式。例如,对于在每个TU内的每个子组,图33的步骤可以重复。这提供了一个实例,编码表示不在数据集内表示的系数的数据,作为旁路数据;检测与当前阵列相关联的旁路数据的数目;并且如果所述旁路数据的数目超过阈值量,那么应用所述设置步骤,否则,不应用所述设置步骤。
参照图34,并未在每个系数组的端部编码旁路数据,可以在TU的CABAC二元数据之后,共同编码TU的所有旁路数据。因此,每个编码的TU的损耗是0.5位,每个系数组的损耗并非0.5位。因此,在图34中的步骤1830中,应用测试,以检测在编码TU结束时,是否具有当前组。如果没有,那么不应用位对准(示意性地表示为步骤1840),并且控制返回步骤1830。但是如果有的话,那么在步骤1850中,应用位对准。这提供了一种设置的实例,其中,输入数据值表示图像数据;并且其中,编码所述图像数据,作为变换单元,包括多个阵列的系数,所述方法包括在编码变换单元结束时,应用所述设置步骤。
在使用等概率机构编码的流内的其他或所有数据之前,还可以使用这个对准机构,虽然该机构可以降低效率,但是可以简化流的编码。
作为一个替换的对准,参照如图35,m_Range可以设置为预定值的数目N中的一个,而非仅仅256(例如,384与半个位对准)。由于对准值必须小于或等于m_Range的原始值(由于范围不能增大,与重整不同),所以每个对准损耗然后(0.5/N)用于规则隔开的值。这种方法依然需要除以除了256以外的值,但是要提前知道分母,因此,使用查找表,可以评估除法。因此,在步骤1860中(在位对准的情况下应用),检测值m_range,并且在步骤1870中,根据m_range,选择对准值,用于位对准流程中。
作为这个替换的对准方法的进一步改进,可以使用作为2的幂的(不相等的)符号范围,在对准之后立即编码这个(或这些)二进制。通过这种方式,可以去除后续二进制的除法的所有要求,在位效率(0.5/N)上没有任何进一步损耗。
例如,在与384对准时,后续二进制的[0,1]的符号范围可以是[256,128]:
如果编码0,那么m_Range设置为256,使编码二进制的成本为0.5位。
如果编码1,那么m_Range设置为128(并且将256加入m_Value中),并且重整系统(而且,m_Range变成256),使编码二进制的成本为1.5位。
由于预期0和1具有相等概率,所以在对准之后立即编码二进制的平均成本依然是1位。对于N=2并且两个对准点是256和384的情况,该方法是采取最大的对准点,该对准点小于或等于当前m_Range。如果该对准点是256,那么m_Range仅仅设置为256,以对准CABAC引擎;如果对准点是384,那么需要以上流程,这需要编码一个符号。
这在图32A和B中显示,并且在图32C到32F中显示了N=4的进一步实例。
为了阐明对准CABAC引擎的优点,用于解码等概率(EP)二进制(无需这个对准阶段)的方法可能如下表示:
Figure BDA0001972422260000561
解码的等概率二进制对于长除法的一个阶段相等,并且需要算术来测试不相等。为了将两个二进制解码,然后,这个实例流程使用两次,实现两阶段长除法流程。
然而,如果应用对准阶段,造成m_Range是2的最大有效幂(例如,用于9位HEVCCABAC熵编码器的256),那么简化以上流程:
编码的EP值是m_Value的最高有效位;
通过将其视为移位寄存器,在流内的下一个位中移位到最低有效位置,来更新m_Value。
因此,m_Value基本上变成移位寄存器,并且从最高有效位置中读取EP二进制,同时位流移位到最低有效位置内。因此,通过仅仅从m_Value的顶部中移位更多的位,可以读取多个EP位。
这个对准情况的工作实例是:
假设m_Range=256、m_Value=189以及在位流内的接下来的两个位是1
周期1:
接下来,编码的EP值是作为1的m_Value的位7;
通过移出位7,并且将1从位流中移入最低有效位置内,来更新m_Value:m_Value变成123。
周期2:
接下来,编码的EP值是作为0的m_Value的位7;
通过移出位7,并且将1从位流中移入最低有效位置内,来更新m_Value:m_Value变成247。
所选择的对准点的数目N可以被视为在实现的复杂度与对准的位成本之间的权衡。对于每个对准点具有多个EP二进制的操作点,然后,浪费不太明显,并且具有更少点的对准系统就足够。相反,对于每个对准点具有更少EP二进制的操作点,然后,浪费更明显,并且具有更多点的对准系统优选;对于某些操作点,可以优选完全禁用对准算法。编码器以及因此位流可以表示解码器要使用的对准点的数目,可以根据用于数据流的该部分的操作点选择该数目。所指示的这个数目可以从存在于位流内的其他信息中交替地推断出,例如,配置文件或水平。
在对准位置仅仅是256和384的简单情况下,使用多个对准位置:
Figure BDA0001972422260000581
在图29中显示了具有刚刚讨论的CABAC位对准机构的熵编码实施方式1的结果,该图是具有和没有用于N=1的位对准机构的用于6个序列的位速率差值对QP的示图。正位速率差值(在垂直轴上)表示具有位对准的系统生成比没有位对准机构的方案更高的位速率。每个序列的位速率差值是每秒几千个系数组的数目的大约0.5倍(流量是2560x1600 30p=11520,所有其他是1920x1080 50p=9720)。
上面讨论的对准技术是以下情况的实例:在编码一组输入数据值之后,将所述范围变量设置为从可变范围变量值的预定子集中选择的一个值,在具有至少一个最低有效位的子集内的每个值等于0。子集可以包括最小尺寸(例如,256)。子集可以包括在预定的最小尺寸(例如,256)与第二预定的值(例如,510)之间的两个或多个值。可以根据范围变量的当前值,选择一个值。实施方式涉及如果范围变量的当前值在子集内在特定值与小于下一个更高值的值之间(例如,如图32A-32F中所示),那么从子集中选择一个特定值。在一个特定实例中,所述可用值的子集包括由256、320、384以及448构成的组;设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与319之间,那么所述范围变量设置为256,如果所述范围变量的当前值在320与383之间,那么所述范围变量设置为320,如果所述范围变量的当前值在384与447之间,那么所述范围变量设置为384,并且如果所述范围变量的当前值在448与510之间,那么所述范围变量设置为448。在另一个实例中,设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与383之间,那么所述范围变量设置为256,并且如果所述范围变量的当前值在384与510之间,那么所述范围变量设置为384。
在图30中陈述的选择被建议用作配置文件。
如果仅仅需要高配置文件来支持高达14的bitDepth,那么建议变换矩阵系数精度、MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE分别设置为12、19以及20。
除了这些配置文件,还可以定义仅仅帧内主要/扩展配置文件,但是由于仅仅帧内解码器明显不如帧内/帧间解码器复杂,所以在此处仅仅描述了高帧内配置文件。
同样,可以定义用于通过各种色度格式编码静态图片的扩展/高配置文件。
更低配置文件可以需要使用与由两个配置文件产生的位流不匹配的更高配置文件所使用的那些相同的矩阵精度、MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE。
现在,讨论各种选择。
选择1
Figure BDA0001972422260000601
在这个选择中,位深决定变换矩阵精度、MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE。这表示需要支持高达16的位深的解码器需要通过一组不同的矩阵处理13位数据,并且虽然解码器具有支持高达21的能力,但是内部精度限制为仅仅18位,用于MAX_TR_DYNAMIC_RANGE。然而,使用高配置文件编码的12位数据可以由在更低配置文件中顺应的解码器解码。
选择2
Figure BDA0001972422260000602
Figure BDA0001972422260000611
在这个选择中,用于重叠的位深的位参数由更低的配置文件确定,从而使用高配置文件将解码的12位数据编码,高配置文件使用符合扩展配置文件解码器可解码。此外,13位数据的内部精度与16位数据相同。此外,与在选择1中相比,需要支持少量矩阵精度。
在本背景下,可以存储单集变换矩阵值,并且从其中获得所有其他值。
要注意的是,如果变换矩阵具有14位的初始精度,那么通常,通过除以2并且凑整,可以获得更低的精度。
使用这个一般规则来从更高的精度矩阵中获得更低的精度矩阵,会造成:
实例1
选择1:高4:4:4:定义变换矩阵精度=14;
从14中获得变换矩阵精度=13...
扩展4:4:4:定义变换矩阵精度=14;
从14中获得变换矩阵精度=10...
即,以“高”精度存储。
实例2
选择1:高4:4:4:定义变换矩阵精度=10;
从10中获得变换矩阵精度=14...
扩展4:4:4:定义变换矩阵精度=10;
从14中获得变换矩阵精度=10...
即,以“扩展的”精度存储。
为了获得更好的质量,优选“实例1”。然而,实例2可以造成降低存储要求。
要注意的是,一种替换物当然是存储每个精度的变换矩阵组。“实例1”和“实例2”规则也可以用于“选择2”。
由于目标在于提高指令并且还分成配置文件,所以如果通过一个精度从单集中获得每个变换矩阵组,那么具有刻度误差。
在“实例1”的情况下,系统从14位中缩小变换矩阵,并且在“实例2”的情况下,系统从10位中放大和缩小变换矩阵。
选择3
Figure BDA0001972422260000631
即,虽然仅仅高4:4:4解码器能够解码使用高4:4:4方案编码的流,但是12位视频的位深可以编码为“高4:4:4”或“扩展4:4:4”。
选择4
Figure BDA0001972422260000632
Figure BDA0001972422260000641
即,“高4:4:4”配置文件需要支持更低的“扩展4:4:4配置文件”,通过这个“选择4”,对编码12位视频的方式仅仅具有一个选择。
选择5
Figure BDA0001972422260000642
在这个选择中,矩阵精度限制为每个配置文件具有仅仅1个值,减少了编码器的开销。此外,MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE由位深决定,因此,仅仅需要编码13位数据的编码器不需要包括使用额外内部计算精度的实现开销。
选择6
Figure BDA0001972422260000651
选择6与选择5相似,但是仅仅在定义扩展配置文件用于编码12位数据的情况下。
总之,根据本公开的各种实施方式的提出的变化如下:
将至少一个额外的变换矩阵组用于更高的精度。
所有更高精度优选地具有单集,以简化多配置文件编码器/解码器。
为变换矩阵精度7到14提供所提出的变换矩阵-参照以下描述。
建议使用14位精度转换矩阵,这是因为这些适合于在16位数据类型的软件内,并且提供足够的精度,以允许进一步扩展为16位视频。
变换矩阵精度的选择可以由输入数据的位深和配置文件配置,或者交替地,由在该序列、图片或片水平上规定的参数确定。
MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE可以改变(即,其中的一个或两个),用于更高的精度。
MAX_TR_DYNAMIC_RANGE以及ENTROPY_CODING_DYNAMIC_RANGE的多个值应没有多配置文件编码器/解码器的问题。
建议获得MAX_TR_DYNAMIC_RANGE=bitDepth+5和ENTROPY_CODING_DYNAMIC_RANGE=bitDepth+6。
MAX_TR_DYNAMIC_RANGE=bitDepth+5的使用可以适合于视频材料的很多情况和类型。然而,现在讨论可能需要其中的一个变化。
经验测试表明,在某些情况下,对于视频序列的子集,尤其是具有低噪声内容的某些视频序列,使用MAX_TR_DYNAMIC_RANGE=bitDepth+5,引起响应曲线(提供在输出位速率与量化参数之间的关系)不单调。
通常,这种响应曲线单调,与在速率与量化参数之间一样,以便更严厉的量化提供更低的输出位速率,并且不太严厉的量化提供更高的输出位速率。这个单调关系形成速率控制算法的基础,以便速率控制系统调整量化参数,以在期望范围内或者在期望阈值下保持输出位速率。
但是在使用MAX_TR_DYNAMIC_RANGE=bitDepth+5的某些情况下,发现单调关系失效,以便例如,不太严厉的量化的变化实际上可以引起更低的输出位速率,或者甚至以便特定的输出位速率可以具有图片SNR的两个可能值。这些像差可以促使速率控制算法努力或者甚至没有达到期望的位速率。
在经验测试中,人们发现,使用MAX_TR_DYNAMIC_RANGE=bitDepth+6,可以克服这种问题。因此,在一些实施方式中,使用在MAX_TR_DYNAMIC_RANGE与bitDepth之间的这种关系。
在32x 32 DCT矩阵的特定实例中,DCT流程倾向于在bitDepth上需要精度的log2(32)位,这就是获得bitDepth+5的值的方式。然而,量化流程可以增加精度的另一位的等同物。如果提供这个额外位,作为在DCT流程中的额外精度,那么可以获得明显更好的结果,至少用于一些视频材料。
然而,在经验测试中还发现,这个问题以及相应地使用MAX_TR_DYNAMIC_RANGE=bitDepth+6的解决方案仅仅与更大的DCT矩阵尺寸相关。允许在MAX_TR_DYNAMIC_RANGE与bitDepth之间具有不同的关系的优点可以在于,在不需要额外精度的情况下,这避免了不必要的处理开销。
尤其地,在本实例中,上述问题以及所提出的解决方案与32x 32 DCT矩阵尺寸特别相关。对于更小的矩阵,可以使用关系MAX_TR_DYNAMIC_RANGE=bitDepth+5。
更一般而言,可以使用在MAX_TR_DYNAMIC_RANGE与bitDepth之间的关系的自适应变化,以便根据矩阵尺寸,偏移(加入bitDepth中的值,以生成MAX_TR_DYNAMIC_RANGE)改变。因此,MAX_TR_DYNAMIC_RANGE=bitDepth+偏移,其中偏移是矩阵尺寸的函数。在一个实例中,可以如下选择偏移值:
Figure BDA0001972422260000671
Figure BDA0001972422260000681
在另一个实例中,可以使用递进的关系,以便识别更多精度需要更高矩阵尺寸,而更低精度可以供更小矩阵尺寸使用:
矩阵尺寸 偏移
32x 32 +6
16x 16 +5
8x 8 +4
在偏移与矩阵尺寸之间的关系应相同,如在编码器的逆(解码)路径与解码器的解码路径之间一样。因此,需要建立或者传送关系,与在该技术的这三个区域之间一样。
在一个实例中,可以在编码器和解码器上建立关系,作为预定的硬编码关系。
在另一个实例中,可以明确传送该关系,作为编码的视频数据的一部分或者与其联合。
在另一个实例中,可以在编码器和解码器上从与编码的视频数据相关联的“配置文件”的身份中推断出关系。在此处,如在本说明书的别处所述,配置文件是用于编码或解码视频数据的一组参数的识别。在配置文件识别与由配置文件识别设置的该实际参数之间的映射预先存储在编码器和解码器上。例如,可以传送配置文件识别,作为编码数据的一部分。
然而,通常,值偏移(在某些实例中,称为第二偏移)取决于变换矩阵的矩阵尺寸。
与变换矩阵精度一样,MAX_TR_DYNAMIC_RANGE和/或ENTROPY_CODING_DYNAMIC_RANGE的选择可以由输入数据的位深和配置文件配置,或者交替地由在该序列、图片或片水平上规定的参数确定(可能与选择DCT矩阵的参数相同的参数)。
这些设置提供了频率变换输入图像数据的实例,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
在实施方式中,可以将所述变换矩阵的数据精度设置为小于所述输入图像数据的位深的第一偏移数目的位(例如2);并且可以将所述变换矩阵的最大动态范围设置为大于所述输入图像数据的位深的第二偏移数目的位(例如5)。
熵编码可以变成包括某个固定位处理(参照熵编码实施方式1和2),以在具有低QP时,增大压缩。
可以在序列水平上配置固定位的存在。
可以在序列、图片(虽然由于图片参数组不了解序列水平设置,所以这很困难)、片或CU水平(可能通过从固定位的数目中信令δ,用于先前的序列/图片/片/CU、上代实体或配置文件定义)上,配置固定位BF的数目。
熵编码可以变成包括CABAC位对准,以允许从流中提取旁路位,而不使用长除法(还可以优选地应用一个或多个上述位损失减少方法)。
因此,本公开的实施方式规定,内部精度增大,以容纳在范围扩展授权中的要求,以允许通过HEVC具有更高的位深。研究了误差的各种来源,并且做出了推荐。此外,显示了对提高的编码效率的变化,并且还提出了提高吞吐量的变化。
更大精度变换矩阵
说明书的这个部分详细说明了具有各种水平的精度的变换矩阵。
4x4 DST
变换矩阵具有以下形式:
Figure BDA0001972422260000701
其中,由矩阵系数精度根据以下表格(包括6位HEVC版本1矩阵值,用于比较)定义在栅格内的值:
6位 7位 8位 9位 10位 11位 12位 13位 14位
a 29 58 117 233 467 934 1868 3736 7472
b 54 110 219 439 878 1755 3510 7021 14042
c 73 148 296 591 1182 2365 4730 9459 18919
d 83 168 336 672 1345 2689 5378 10757 21513
e 0 0 0 0 0 0 0 0 0
组合的DCT矩阵
为了容易实现,可以描述单个32x32 DCT矩阵M32,根据以下公式,通过子抽样(作为从具有不同的数据精度的相应源变换矩阵中获得具有需要的数据精度的变换矩阵的一个实例),从中获得每个更小的NxN DCT矩阵MN
MN[x][y]=M32[x][(2(5–log2(N)))y],x,y=0..(N–1)
组合的矩阵M32具有以下形式:
Figure BDA0001972422260000711
由矩阵系数精度根据以下表格(包括6位HEVC版本1矩阵值,用于比较)定义在栅格内的值:
Figure BDA0001972422260000712
Figure BDA0001972422260000721
Figure BDA0001972422260000731
为了提供参考,在此处显示从32x32矩阵中获得的更小DCT矩阵。在每个晶格内的值由矩阵系数精度根据以上表格定义。
4x4 DCT
矩阵M4定义为每第8行组合的矩阵M32的前4个系数。
Figure BDA0001972422260000732
8x8 DCT
矩阵M8定义为每第4行组合的矩阵M32的前8个系数。
Figure BDA0001972422260000741
16x16 DCT
矩阵M16定义为每偶数行组合的矩阵M32的前16个系数。
Figure BDA0001972422260000742
参照图36和37,讨论涉及固定位编码的实施方式的进一步技术或者相关技术。
首先,然而,讨论用于编码转义码的技术。
所谓的Golomb-Rice编码将值v作为一元编码前缀(变量1,随后是0,反之亦然)编码,然后,具有k位后缀。
假设prefix_length是在一元编码前缀内的总数1。假设K是最低有效k位的值。
v=(prefix_length<<k)+K
(其中,<<n表示向左移位n位;相似的注释>>n表示向右移位n位)
位的总数等于prefix_length+1+k。
接下来,讨论所谓的指数哥伦布k阶码。在这种码中,要编码的数目分成可变长度的一元编码前缀和可变长度的后缀。后缀位的数目=prefix_length+k。在此处,prefix_length再次是在一元码内的1的数目。
在码内的位的总数=prefix_length+1+prefix_length+k。
假设k是最后k位的值。
在prefix_length是0时,v等于k。
在prefix_length是1时,v在(1<<k)+K与(3<<k)+K和(不包括)之间。
在prefix_length是2时,v在(3<<k)+K与(7<<k)+K和(不包括)之间。
在prefix_length是3时,v在(7<<k)+K与(15<<k)+K和(不包括)之间。
因此,v=((2^prefix_length)-1)<<k)+后缀。
在HEVC中,使用Golomb-Rice和指数哥伦布码。如果prefix_length小于3,那么码解释为Golomb-Rice码。然而,如果prefix_length大于或等于3,那么码解释为k阶的指数哥伦布码。
前缀(在任一个系统内)是一元码的一个实例。后缀是非一元码的一个实例。这两个系统是两部分可变长度码的实例。
在这种情况下,由于这是使用Golomb-Rice码不能表示的最小值,所以用于解码指数哥伦布码的prefix_length的值减小3,并且由解码操作造成的值增大(3<<k)。
用于HEVC转义和转义-转义码的值“k”改变。对于每组16个系数,值k以0开始,并且每当系数值的幅度大于3<<k时增大。响应于这种情况,k增大(即,响应于当前数据值的幅度)为最大值4。要注意的是,由于单独发送表示系数的符号的符号位,所以讨论涉及系数幅度。
图36是示意性地示出了用于如上所述生成转义码的流程的流程图。几个流程图步骤与前面讨论的步骤相似,并且不再详细描述。
该方法相对于一组数据值可操作,包括(例如)频率变换的图像系数序列、或该序列的非零成分、或者每个数据值的幅度减小1的该序列的非零成分(在最后一种情况下,由于有效性图导致值1,所以可以首先生成有效性图,以便在进一步处理之前,每个系数减小1)。
在步骤2000中,设置初始值k。在正常的HEVC系统中,k最初设置为0。步骤2010、2020、2030、2040、2050以及2060与在图29-31的流程图中的步骤相似,并且在此处不进一步讨论。要注意的是,在图29-31以及图36中,在HEVC的一些实例实现方式中,每个系数并非需要生成所有图。例如,在一组(即)16个系数内,可以具有1个或多个系数,不生成一些图。
在步骤2070中,如果需要转义码,那么使用刚刚描述的技术,根据当前值k生成转义码。尤其地,首先使用有效性图以及可选地一个或多个其他图,处理需要使用转义码的系数。要注意的是,在需要转义编码的系数的情况下,所使用的任何重要>1和>2图标记为“1”。这是因为需要转义编码的系数根据定义大于使用在该系数方面可用的任何图都可以编码的值。
如果还未完全编码当前数据值,那么需要转义码。在此处,术语“完全”编码表示数据值减去已经编码的值(例如,由图或者图加上固定位)是0。换言之,如果(考虑已经生成的元件)该数据值的剩余量是0,那么那些元件将数据值完全编码。
因此,假设对于一个实例系数,有效性图和>1和>2图可用,这些图中的每个在系数方面标记为“重要”、“>1”以及“>2”。
这表示(在该实例中)系数必须至少是3。
因此,在转义编码之前,可以从系数中减去值3,不损失信息。在解码时,恢复值3(或者更一般而言,表示由适用于该系数的图定义的数值范围的变量base_level)。
以15小数(1111二进制)的系数值为例,有效性图是“1”,>1图是“1”,并且>2图是“1”。值base_level是3。从系数值中减去Base_level,以提供用于转义编码的12小数(1100二进制)的值。
现在,值k(见上文)定义后缀位的数目。在减去base_level之后,从系数值的最低有效位中提取后缀位。如果(例如)k=2,那么剩余值1100的两个最低有效位被视为后缀位,即,在这个实例中,后缀位是00。剩余位(在这个实例中,11)进行处理编码,作为前缀。
因此,总之,与转义码相关联的处理涉及:
生成定义系数的一个或多个最低有效位的一个或多个图,以便(如果需要转义码)系数必须具有至少base_level的值;
从系数中减去base_level;
编码系数的剩余部分的最低有效k位,作为后缀位;并且
编码系数的剩余部分的最高有效位,作为前缀。
然后,使用上述测试,如果值k需要改变,那么在步骤2080中实现变化,并且为步骤2070的下一个操作提供新值k。
可以给固定位(图30和31)的用户提供相似效应的转义码技术的修改是将偏移应用于定义在转义码中使用的后缀位数的值k中。
例如,在HEVC系统中的值k具有范围0到4,并且从起始点0过渡到最大值4(关于一组系数)。在本技术的实施方式中,将偏移加入该值k中。例如,偏移可以预先确定为值param_offset,例如,3,以便在编码一组系数的过程中改变k的现有技术将k从k=param_offset变成k=4+param_offset,而非将k从k=0变成k=4。
值param_offset可以预先确定在编码器与解码器之间。
或者,值param_offset可以从编码器和解码器中传送,例如,作为一部分流、图片、片或区块(例如,TU)报头。
或者,值param_offset可以在编码器和解码器上获得,作为视频数据的位深的预定功能,例如(例如):
对于bit_depth≤10,param_offset=0
对于bit_depth>10,param_offset=bit_depth-10
或者,值param_offset可以在编码器和解码器上获得,作为适用于区块或一组系数的量化(Qp)程度的预定功能;
或者,值param_offset可以取决于(例如,通过预定的方式)正在编码的一个或多个视频元件、区块尺寸、模式(例如,无损或有损的)、图片类型等。
或者,值param_offset可以基于自适应在编码器和解码器上获得,采用预定的起始点、或者在报头内传送的起始点、或者从(例如)bit_depth中获得的起始点。下面参照图37讨论这种自适应流程的一个实例。
或者,可以应用这些标准中的一个。尤其地,在值param_offset取决于另一个参数(例如,区块尺寸)并且自适应改变,与下面的图37中一样的情况下,然后,自适应变化可以单独地应用于每个可能值param_offset(即,单独用于每个区块尺寸)中。
要注意的是,关于在图30和31的设置中使用的固定位的数目,任何或所有这些依赖性可以适用。
比较这个修改技术和上面在图30和31中讨论的固定位技术,可以看出:
(a)在图30和31的固定位技术中,在生成任何图之前,系数分成更重要和不太重要部分,然后,从更重要部分中生成一个或多个图,并且直接编码不太重要部分(或者如上所述进行处理);但是
(b)在使用param_offset生成转义码时,首先生成一个或多个图,然后,系数值(减去值base_level)的剩余部分被处理为后缀或前缀,根据k+param_offset,在后缀与前缀之间具有边界,并且后缀表示剩余部分的最低有效位。
在任一种情况下,与固定位编码相关联的参数或值param_offset可以通过自适应的方式改变。现在,在图37中讨论可以实现这个的方式的一个实例。在图37中,从以上讨论中,相似的技术可以应用于固定位数(在图37中称为“NFB”,并且表示分别在图30和31的步骤1625或1725中获得的最低有效部分的位数)或值param_offset(在图37中缩短为“偏移)中。
在一个实例设置的以下讨论中,假设逐片地进行偏移或NFB值的自适应。要注意的是,片可以在HEVC族或系统内定义为从一个LCU到整个图片的任何物体,但是片的基本特征是其编码独立于应用于任何其他片中的编码,以便单独片可以解码,不参照任何其他片。当然,然而,可以逐块或逐个图片地发生自适应。
要注意的是,图37的流程在编码器上发生,而且,通过互补的解码形式,在解码器上发生,以便偏移/NFB变量的值相同追踪,与在编码器与解码器之间一样。
在步骤2100中,片的处理开始。
在步骤2110中,重置偏移/NFB值。这可以涉及将值重置为固定值,例如,0。在替换的设置中,值可以在一个或多个先前片方面重置为从偏移/NFB变量的最终值中获得的初始值。在这种情况下,为了保持单独解码每个片的能偶,本技术的实施方式提供在片报头内的偏移/NFB变量的初始值的指示。要注意的是,用于获得这种初始值的各种不同技术可用。例如,如果先前片的该变量的最终值不超过2,那么偏移/NFB变量的初始值可以设置为0,否则,可以设置为1。一种相似的设置可以应用于从涉及前一个图片的所有片中获得的变量的平均最终值中。技术人员会理解的是,各种其他可能性可用。当然,如果使用预定的初始值,那么这可以由适用于编码器和解码器的标准定义提前同意,或者可以在流或图片报头内规定预定的初始值。
关于报头数据,标志可以包含在流、图片或片报头内,以表示在该流、图片或片方面,是否发生图37的自适应流程。
在步骤2120中,第一变换单元(TU)的处理开始。片的处理逐个TU地继续,如前所述。
在步骤2130中,另外三个变量重置,这次重置为0。这些变量称为低于、超过以及总数。下面讨论这些变量的目的。
在TU内,轮流编码每个系数。在步骤2140中,编码下一个系数。系数的编码可以遵循图30/31的流程图或图36的流程图,在每种情况下,利用在该流程中的这个阶段适用的偏移或NFB值。当然,对于要编码的第一系数,偏移/NFB值等于在步骤2110中设置的值。对于稍后的系数,使用偏移/NFB的当前值。
在步骤2140的编码结果方面,应用测试。根据测试结果,控制进入步骤2150、2160或2170,或者直接进入步骤2180。首先,描述测试。要注意的是,根据使用图30/31的固定位系统还是图37以及所附讨论的param_offset系统,测试略微不同。
固定位测试
在固定位系统的情况下,每当编码一组固定位时(每当执行步骤1655或步骤1755时),然后,变量“total”增大。因此,由于变量最后重置,所以变量“total”表示编码固定位的次数。
然后,测试获得变量remaining_magnitude,其定义为并非作为固定位编码的系数幅度的一部分,以便:
remaining_magnitude=(幅度-1)>>NFB
另一个值base_level定义为(如上所述)不使用转义码也可以描述的最高幅度。在此处,要注意的是,特定系数可以具有在系数方面编码的1、2或3个标志或图条目。因此:
如果系数具有a>2标志,那么base_level=3;否则
如果系数具有a>1标志,那么base_level=2;否则
base_level=1。
然后,值remaining_magnitude再次测试为base_level。
如果((remaining_magnitude>>1)≥base_level),那么变量“under”增大。在图37中,这与步骤2150对应。这个步骤的潜在意义在于,检测了所谓的低于目标,以便固定位数(NFB)不足以编码当前系数。在测试中向右移位(>>1)的意义在于,如果变量NFB缺乏两个或多个位,那么低于目标仅仅标记为值得注意的低于目标。
同样,如果((NFB>0)并且((remaining_magnitude<<1)≤0)),那么变量“over”增大。在图37中,这与步骤2160对应。这个步骤的潜在意义在于,如果甚至通过一个更少的固定位(通过在上面提供的表达式中移位<<1来检测),固定位元件能够编码系数的整个幅度,那么检测所谓的超过目标。换言之,固定位数明显超过编码该系数所需要的数目。
要理解的是,在这些测试中使用的各种参数(尤其是应用的位移数)可以根据技术人员的设计水平变化。
如果未满足低于目标或者超过目标测试,但是编码固定位,那么控制进入步骤2170,在该步骤中,仅仅总变量增大。
为了完整性,要注意的是,控制直接进入图37的步骤2180,其中,不启用固定的位操作,以便任何变量都不进行变化:低于、超过以及总数。
Param_Offset测试
在基于param_offset的系数的情况下,基本原理相似,但是一些细节与上面讨论的略微不同。
每当编码转义值,变量“总数”增大。
再次测试系数值,作为参数k,如上所述,该参数定义为考虑偏移param_offset的效应。
如果(系数>(3<<k)),那么变量“低于”增大。这与图37的步骤2150对应,并且表示低于目标的情况,如上所述。换言之,考虑param_offset,变量k不足以编码转义码,作为后缀。
另外,如果((系数*3)<(1<<k)),那么变量“超过”增大。这与图37的步骤2160对应。这表示超过目标的情况,其中,考虑param_offset,变量k提供编码转义码所需要的更多后缀位。
如果未满足低于目标或者超过目标测试,但是编码转义码,那么控制进入步骤2170,在该步骤中,仅仅总变量增大。
而且,要注意的是,控制直接进入图37的步骤2180,其中,不启用转义码,以便任何变量都不进行变化:低于、超过以及总数。
要注意的是,在任一祖测试中,如果NFB或param_offset分别甚至更高或者甚至更低,那么通过检查发生低于目标还是超过目标,来检查低于目标还是超过目标重要。但是不需要这个额外边缘,测试可以仅仅是“发生低于(超过)目标?”。
在步骤2180中,如果另一个系数可用于在该TU内编码,那么控制返回步骤2140。否则,控制进入步骤2190,在每个TU结束时,但是在下一个TU编码之前,执行该步骤。在这个步骤2190中,变量偏移/NFB可能根据变量低于、超过以及总数自适应地变化。在此处,相同的自适应应用于偏移值或NFB值中,以便:
如果((低于*4)>总数,那么偏移/NFB值增大(1);以及
如果((超过*2)>总数,那么偏移/NFB值减小(1),经受最小值0。
要注意的是,如果在单个TU中通过这两个测试,那么NFB或param_offset的值保持相同。
要注意的是,除以片并且然后除以TU,并非必需的,可以通过这种方式处理任一组值(可以甚至不是视频数据值),并且细分成子集,代替在本说明书中的TU除法。
如果经受25%以上的低于目标,那么这等同于增大偏移/NFB,但是如果经受50%以上的超过目标,那么这等同于减小偏移/NFB值。因此,用于低于目标测试的比例低于用于超过目标测试的比例。这个不对称的原因在于,低于目标比超过目标生成更多的无效率,这是因为在低于目标的情况下使用的转义编码方法的性质。然而,要理解的是,可以使用相同的阈值,或者可以使用不同的值。
最后,在步骤2200中,如果在片内具有另一个TU,那么控制返回步骤2120。如果在片内没有进一步TU,那么控制返回步骤2100。要注意的是,如上所述,可选地,偏移/NFB的开始点可以根据在刚刚完成的编码流程期间获得的结果设置(用于步骤2120的下一个实例中,用于下一个或未来的片)。
在解码侧上(或者在编码器的解码路径上),执行互补步骤。例如,解码方法可以包括:将每个数据值的第一部分从一个或多个数据集中解码,所述数据集表示预定幅度范围的第一部分并且使用二进制编码,将所述数据集编码成输入数据流;解码数据值未完全编码的至少那些数据值的第二部分,第二部分的位数取决于值n,其中,n是整数,在所述输入数据流内包括定义第二部分的数据,并且如果相应的第一和第二部分未完全编码数据值,那么将数据值的剩余第三部分从输入数据流中解码;对于两个或多个数据值的子集,检测(i)数据值的实例的数目,如果使用了n的更高值,那么已经编码并且依然需要第三部分,以及(ii)数据值的实例的数目,编码了第二部分,但是n值促使数据值可以由第一和第二部分使用更低值n完全编码;并且在解码数据值的子集之后,根据检测步骤的结果,改变n,用于在后续数据值方面使用。
上面描述的步骤可以由熵编码器370和熵解码器410(在编码流程的情况下)或者仅仅由熵解码器410(在解码流程的情况下)执行。该流程可以在硬件、软件、可编程硬件等中实现。要注意的是,因此,熵编码器370可以用作编码器、发生器、检测器以及处理器,以实现编码技术。熵解码器410可以相应地用作一个或多个解码器、检测器以及处理器,以实现上述解码技术。
因此,上述设置表示用于将一组(例如,片)数据值(例如,图像数据)解码的数据解码方法的实例,该方法包括以下步骤:
将每个数据值的第一部分从一个或多个数据集(例如,图)中解码,所述数据集表示预定幅度范围的第一部分并且使用二进制编码,将所述数据集编码成输入数据流;
解码数据值未完全编码的至少那些数据值的第二部分,第二部分的位数取决于值n,其中,n是整数,在所述输入数据流内包括定义第二部分的数据,并且如果相应的第一和第二部分未完全编码数据值,那么将数据值的剩余第三部分从输入数据流中解码(在此处,例如,第二部分可以表示固定位或者后缀部分;值n可以表示固定位的数目或者后缀长度(在Golomb-Rice编码中)或者如上所述的指数哥伦布码编码的顺序;第三部分可以表示在Golomb-Rice或指数哥伦布码系统中的前缀或者在固定位实例中的转义码);
对于两个或多个数据值的子集,检测(i)数据值的实例的数目(例如,变量“under”),如果使用了n的更高值,那么已经编码并且依然需要第三部分,以及(ii)数据值的实例的数目(例如,变量“under”),编码了第二部分,但是n值促使数据值可以由第一和第二部分使用更低值n完全编码;并且
在解码数据值的子集之后,根据检测步骤的结果,改变n(例如,增大或减小),用于在后续数据值方面使用。
变量“total”表示实例的检测的总数的一个实例,关于数据值的该子集,编码第二部分。
以上实施方式还表示数据编码方法的一个实例,用于将数据值阵列编码成数据集以及所述数据集未编码的值的转义码,转义码包括一元编码部分和非一元编码部分,所述方法包括以下步骤:
设置定义非一元编码部分(在Golomb-Rice或指数哥伦布码中,k定义最小后缀长度或顺序)的最小数目的位的编码参数(例如,param_offset),所述编码参数在0与预定的上限之间;
将1或更大的偏移值(在实例中,param_offset)加入所述编码参数中,以便定义最小的最低有效数据部分尺寸;
生成一个或多个数据集(例如,有效性图,>1、>2组),其表示预定幅度范围的数据值的相对于所述数据值的阵列的位置,以便将每个数据值的至少一个最低有效位的值编码;
从所述一个或多个数据集未编码的每个数据值的至少一部分中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该部分的0或更多最高有效位,并且所述相应的最低有效数据部分取决于该部分的多个最低有效位,所述最低有效位的数目大于或等于所述最小的最低有效数据部分尺寸;
将所述数据集编码成输出数据流(例如,二进制编码的数据);
将所述最高有效数据部分编码成所述输出数据流(例如,前缀);并且
将所述最低有效部分编码成所述输出数据流(例如,后缀)。
要注意的是,在生成有效性图之后,可以执行以上流程(在一些实施方式中),以便可以通过以下步骤从相应的输入值中生成数据值(执行流程):生成进一步数据值,所述进一步数据值是有效性图,所述有效性图表示非零值的相对于输入值阵列的位置;并且从每个输入值中减去1,以生成相应数据值。
图38和39是阐明用于选择变换动态范围和数据精度参数的流程的示意性流程图。
参照图38,并且如上所述,在步骤2410中,根据每个图像或视频元件的位深,选择参数,例如,所述最大动态范围和/或所述变换矩阵的数据精度。在步骤2410中,对于具有不同位深的图像元件的图像或视频元件,选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,以供所有图像或视频元件使用。
参照图39,步骤2420与步骤2410相似,但是包括进一步特征,选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,作为与具有最大位深的那个图像或视频元件相关的那些值。
本公开的实施方式可以相对于取决于频率变换的输入图像系数阵列的一系列输入数据值操作。
上面讨论的实施方式由以下编号条款定义:
1.一种用于编码一系列数据值的数据编码方法,所述方法包括以下步骤:
从所述输入数据值中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分取决于该值的剩余最低有效位;
生成一个或多个数据集,其表示预定幅度范围的最高有效数据部分的相对于所述值的阵列的位置;
使用二进制编码,将所述数据集编码成输出数据流;并且
包括在所述输出数据流内定义最低有效部分的数据。
2.根据条款1所述的方法,其中,一个数据集是有效性图,其表示作为非零的最高有效数据部分的相对于数据值阵列的位置。
3.根据条款2所述的方法,其中,所述有效性图包括数据标志,其表示具有非零值的最后一个最高有效数据部分的根据数据值阵列的预定顺序的位置。
4.根据条款2或3所述的方法,其中,所述数据集包括:
大于1的图,其表示大于1的最高有效数据部分的相对于数据值阵列的位置;以及
大于2的图,其表示大于2的最高有效数据部分的相对于数据值阵列的位置。
5.根据条款1所述的方法,其中,所述数据集包括:
大于1的图,其表示大于或等于1的最高有效数据部分的相对于数据值阵列的位置;以及
大于2的图,其表示大于或等于2的最高有效数据部分的相对于数据值阵列的位置。
6.根据条款5所述的方法,包括生成进一步数据值的步骤,所述进一步数据值是有效性图,所述有效性图表示非零值的相对于输入值阵列的位置。
7.根据条款6所述的方法,其中,所述有效性图包括数据标志,其表示具有非零值的最后一个输入值的根据输入值阵列的预定顺序的位置。
8.根据前述条款中任一项所述的方法,其中,包括在所述输出数据流内定义最低有效数据部分的数据的步骤包括使用算术编码来编码所述最低有效数据部分,其中,根据编码值范围的相应比例,将表示最低有效数据部分的符号编码,其中,描述最低有效数据部分的每个符号的编码值范围的相应比例具有相同的尺寸。
9.根据条款1到7中任一项所述的方法,其中,包括在所述输出数据流内定义最低有效数据部分的数据的步骤包括在所述输出数据流内直接包括最低有效数据部分,作为原始数据。
10.根据前述条款中任一项所述的方法,其中,
所述数据值序列表示具有图像数据位深的图像数据;以及
所述方法包括将在每个最低有效数据部分内用作多个最高有效位的位数设置为等于图像数据位深。
11.根据前述条款中任一项所述的方法,其中,所述数据值序列包括一系列频率变换的图像系数。
12.根据条款11所述的方法,其中,所述频率变换的输入图像系数是根据从一系列可用量化参数中选择的一个可用量化参数目化的频率变换的输入图像系数,所述方法包括:
对于使用在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,根据最高有效数据部分和最低有效数据部分,将所述频率变换的输入图像系数的阵列编码;并且
对于使用不在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,将所述频率变换的输入图像系数的阵列编码,以便在每个最高有效数据部分内的位数等于该系数的位数,并且相应的最低有效数据部分不包含位。
13.根据条款11或12所述的方法,包括以下步骤:
频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
14.根据条款13所述的方法,其中,所述选择步骤包括:
将所述变换矩阵的数据精度设置为小于所述输入图像数据的位深的位的第一偏移数目;并且
将所述变换矩阵的最大动态范围设置为大于所述输入图像数据的位深的位的第二偏移数目。
15.根据条款14所述的方法,其中,所述位的第一偏移数目等于2并且所述位的第二偏移数目等于5。
16.根据条款13到15中任一项所述的方法,包括以下步骤:
从具有不同的数据精度的相应的源变换矩阵中获得具有需要的数据精度的变换矩阵。
17.根据前述条款中任一项所述的方法,其中,所述编码步骤包括:
根据用于编码的数据集的当前输入数据值的值,选择多个互补子范围的一码值集合中的一个,所述该码值集合集合由范围变量定义;
将所述当前输入数据值分配给在所选择的子范围内的码值;
根据所选择的子范围的所述分配的码值和尺寸,修改所述该码值集合集合;
检测定义所述码值集合的范围变量是否小于预定的最小尺寸,并且如果小于的话,那么连续增大所述范围变量,以便增大所述码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;并且
在编码一组输入数据值之后,将所述范围变量设置为从可变范围变量值的预定子集中选择的一个值,在具有至少一个最低有效位的子集内的每个值等于0。
18.根据条款17所述的方法,其中,
相对于所述码值集合的子范围的比例由与所述输入数据值相关联的上下文变量定义。
19.根据条款18所述的方法,包括以下步骤:
在编码数据值之后,修改所述上下文变量,在下一个输入数据值方面使用,以便在给所述当前数据值选择的子范围内增大所述码值集合的比例。
20.根据条款17到19中任一项所述的方法,其中,
所述码值集合包括由所述范围变量定义的从0到上限值的值,所述上限值在256与510之间。
21.根据条款20所述的方法,其中,
所述范围变量的可用值的子集包括值256。
22.根据条款20所述的方法,其中,
所述可用值的子集包括由256和384构成的集合;
设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与383之间,那么所述范围变量设置为256,并且如果所述范围变量的当前值在384与510之间,那么所述范围变量设置为384。
23.根据条款20所述的方法,其中,
所述可用值的子集包括由256、320、384以及448构成的集合;
设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与319之间,那么所述范围变量设置为256,如果所述范围变量的当前值在320与383之间,那么所述范围变量设置为320,如果所述范围变量的当前值在384与447之间,那么所述范围变量设置为384,并且如果所述范围变量的当前值在448与510之间,那么所述范围变量设置为448。
24.根据条款17到23中任一项所述的方法,包括:
编码表示不在数据集内表示的值的数据,作为旁路数据;
检测与当前阵列相关联的旁路数据的数量;并且
如果所述旁路数据的数量超过阈值量,那么应用所述设置步骤,否则,不应用所述设置步骤。
25.根据条款17到24中任一项所述的方法,其中,编码所述数据,作为变换单元,包括多个阵列的数据值,所述方法包括在编码变换单元结束时,应用所述设置步骤。
26.一种编码图像数据的方法,包括以下步骤:
频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
27.一种图像数据,其由根据前述条款中任一项所述的编码方法编码。
28.一种数据载体,其存储根据条款17所述的图像数据。
29.一种用于将数据解码以提供数据值阵列的数据解码方法,所述方法包括以下步骤:
从输入数据流中分离所述数据值和一个或多个编码数据集的最低有效数据部分;
使用二进制解码将所述数据集解码,以生成所述数据值的最高有效数据部分;并且
组合所述最高有效数据部分和所述最低有效数据部分,以形成所述数据值,以便对于数据值,所述相应的最高有效数据部分表示该数据值的多个最高有效位,并且所述相应的最低有效数据部分表示该数据值的剩余最低有效位。
30.一种解码图像数据的方法,包括以下步骤:
频率变换输入的频率变换的图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成输出图像数据的阵列;并且
根据所述输出图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
31.一种计算机软件,在由计算机执行时,所述计算机软件促使所述计算机执行根据前述条款中任一项所述的方法。
32.一种非易失性机器可读存储介质,根据条款31所述的计算机软件存储在所述介质上。
33.一种编码一系列数据值的数据编码设备,所述设备包括:
发生器,其被配置为从所述输入数据值中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分取决于该值的剩余最低有效位,并且所述发生器被配置为生成一个或多个数据集,其表示相对于所述值的阵列,预定幅度范围的最高有效数据部分的位置;以及
编码器,其被配置为使用二进制编码,将所述数据集编码成输出数据流;并且包括在所述输出数据流内定义最低有效部分的数据。
34.一种编码图像数据的数据编码设备,所述设备包括:
频率变换器,其被配置为频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
选择器,其被配置为根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
35.一种用于将数据解码以提供数据值阵列的数据解码设备,所述设备包括以下步骤:
数据分离器,其被配置为从输入数据流中分离所述数据值和一个或多个编码数据集的最低有效数据部分;
解码器,其被配置为使用二进制解码将所述数据集解码,以生成所述数据值的最高有效数据部分;以及
组合器,其被配置为组合所述最高有效数据部分和所述最低有效数据部分,以形成所述数据值,以便对于数据值,所述相应的最高有效数据部分表示该数据值的多个最高有效位,并且所述相应的最低有效数据部分表示该数据值的剩余最低有效位。
36.一种图像数据解码设备,包括:
频率变换器,其被配置为频率变换输入的频率变换的图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成输出图像数据的阵列;以及
选择器,其被配置为根据所述输出图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
37.一种视频数据捕捉、传输、显示和/或存储设备,其包括根据条款33到36中任一项所述的设备。
进一步实施方式由以下编号条款定义:
1.一种用于数据编码用于编码的数据集的输入数据值的方法,所述方法包括以下步骤:
根据用于编码的数据集的当前输入数据值的值,选择多个互补子范围的一码值集合中的一个,所述码值集合由范围变量定义;
将所述当前输入数据值分配给在所选择的子范围内的码值;
根据所选择的子范围的所述分配的码值和尺寸,修改所述码值集合;
检测定义所述码值集合的范围变量是否小于预定的最小尺寸,并且如果小于的话,那么连续增大所述范围变量,以便增大所述码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;并且
在编码一组输入数据值之后,将所述范围变量设置为从可变范围变量值的预定子集中选择的一个值,在具有至少一个最低有效位的子集内的每个值等于0。
2.根据条款1所述的方法,其中,
相对于所述码值集合的子范围的比例由与所述输入数据值相关联的上下文变量定义。
3.根据条款2所述的方法,包括以下步骤:
在编码数据值之后,修改所述上下文变量,在下一个输入数据值方面使用,以便在给所述当前数据值选择的子范围内增大所述码值集合的比例。
4.根据条款1到3中任一项所述的方法,其中,
所述码值集合包括由所述范围变量定义的从0到上限值的值,所述上限值在所述预定的最小尺寸与第二预定值之间。
5.根据条款4所述的方法,其中,所述预定的最小尺寸是256并且所述第二预定值是510。
6.根据条款1到5中任一项所述的方法,其中,
所述范围变量的可用值的子集包括所述预定的最小尺寸。
7.根据条款1到5中任一项所述的方法,其中,所述子集包括在所述预定的最小尺寸与所述第二预定值之间的两个或多个值。
8.根据条款7所述的方法,其中,所述设置步骤包括根据所述范围变量的当前值从所述子集中选择值。
9.根据条款8所述的方法,其中,所述设置步骤包括如果所述范围变量的当前值在特定值与小于在所述子集内的下一个更高值的值之间,那么从所述子集中选择该特定值。
10.根据前述条款中任一项所述的方法,包括:
编码表示不在数据集内表示的值的数据,作为旁路数据;
检测与当前阵列相关联的旁路数据的数目;并且
如果所述旁路数据的数目超过阈值量,那么应用所述设置步骤,否则,不应用所述设置步骤。
11.根据前述条款中任一项所述的方法,其中,
所述数据值表示图像数据;
编码所述图像数据,作为变换单元,包括多个阵列的数据值,所述方法包括在编码变换单元结束时,应用所述设置步骤。
12.一种数据,其由根据前述条款中任一项所述的编码方法编码。
13.一种数据载体,其存储根据条款12所述的视频数据。
14.一种用于将编码的数据集的输入数据值编码的数据编码设备,所述设备包括:
选择器,其被配置为根据用于编码的数据集的当前输入数据值的值,选择码值集合的多个互补子范围中的一个,所述码值集合由范围变量定义,并且将所述当前输入数据值分配给在所选择的子范围内的码值;
修改器,其被配置为根据所选择的子范围的所述分配的码值和尺寸,修改所述码值集合;
检测器,其被配置为检测定义所述码值集合的范围变量是否小于预定的最小尺寸,并且如果小于的话,那么连续增大所述范围变量,以便增大所述码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;以及
范围变量设定器,其被配置为在编码一组输入数据值之后,将所述范围变量设置为从可变范围变量值的预定子集中选择的一个值,在具有至少一个最低有效位的子集内的每个值等于0。
15.一种视频数据捕捉、传输、显示和/或存储设备,其包括根据条款14所述的设备。
进一步实施方式由以下编号条款定义:
1.一种用于编码一系列数据值的数据编码方法,所述方法包括以下步骤:
从所述输入数据值中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分取决于该值的剩余最低有效位;
生成一个或多个数据集,其表示预定幅度范围的最高有效数据部分的相对于所述值的阵列的位置;
使用二进制编码,将所述数据集编码成输出数据流;并且
包括在所述输出数据流内定义最低有效部分的数据。
2.根据条款1所述的方法,其中,一个数据集是有效性图,其表示作为非零的最高有效数据部分的相对于数据值阵列的位置。
3.根据条款2所述的方法,其中,所述有效性图包括数据标志,其表示具有非零值的最后一个最高有效数据部分的根据数据值阵列的预定顺序的位置。
4.根据条款2或3所述的方法,其中,所述数据集包括:
大于1的图,其表示大于1的最高有效数据部分的相对于数据值阵列的位置;以及
大于2的图,其表示大于2的最高有效数据部分的相对于数据值阵列的位置。
5.根据条款1所述的方法,其中,所述数据集包括:
大于1的图,其表示大于或等于1的最高有效数据部分的相对于数据值阵列的位置;以及
大于2的图,其表示大于或等于2的最高有效数据部分的相对于数据值阵列的位置。
6.根据条款5所述的方法,包括通过以下步骤从相应的输入值中生成数据值的步骤:
生成进一步数据值,所述进一步数据值是有效性图,所述有效性图表示非零值的相对于输入值阵列的位置;并且
从每个输入值中减去1,以生成相应数据值。
7.根据条款5或6所述的方法,其中,所述有效性图包括数据标志,其表示具有非零值的最后一个输入值的根据输入值阵列的预定顺序的位置。
8.根据前述条款中任一项所述的方法,其中,包括在所述输出数据流内定义最低有效数据部分的数据的步骤包括使用算术编码来编码所述最低有效数据部分,其中,根据编码值范围的相应比例,将表示最低有效数据部分的符号编码,其中,描述最低有效数据部分的每个符号的编码值范围的相应比例具有相同的尺寸。
9.根据条款1到8中任一项所述的方法,其中,包括在所述输出数据流内定义最低有效数据部分的数据的步骤包括在所述输出数据流内直接包括最低有效数据部分,作为原始数据。
10.根据前述条款中任一项所述的方法,其中,
所述数据值序列表示具有图像数据位深的图像数据;以及
所述方法包括将在每个最低有效数据部分内用作多个最高有效位的位数设置为等于图像数据位深。
11.根据前述条款中任一项所述的方法,其中,所述数据值序列表示一系列频率变换的图像系数。
12.根据条款11所述的方法,其中,所述频率变换的输入图像系数是根据从一系列可用量化参数中选择的一个可用量化参数目化的频率变换的输入图像系数,所述方法包括:
对于使用在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,根据最高有效数据部分和最低有效数据部分,将所述频率变换的输入图像系数的阵列编码;并且
对于使用不在这系列可用量化参数的第一预定子范围内的量化参数产生的系数,将所述频率变换的输入图像系数的阵列编码,以便在每个最高有效数据部分内的位数等于该系数的位数,并且相应的最低有效数据部分不包含位。
13.根据条款11所述的方法,包括以下步骤:
频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
14.根据条款13所述的方法,其中,所述选择步骤包括:
将所述变换矩阵的数据精度设置为小于所述输入图像数据的位深的位的第一偏移数目;并且
将所述变换矩阵的最大动态范围设置为大于所述输入图像数据的位深的位的第二偏移数目。
15.根据条款14所述的方法,其中,所述位的第一偏移数目等于2并且所述位的第二偏移数目等于5。
16.根据条款14所述的方法,其中,所述位的第一偏移数目等于2并且所述位的第二偏移数目等于6。
17.根据条款14所述的方法,其中,所述第二偏移数目取决于所述变换矩阵的矩阵尺寸。
18.根据条款13到17中任一项所述的方法,包括以下步骤:
从具有不同的数据精度的相应的源变换矩阵中获得具有需要的数据精度的变换矩阵。
19.一种用于将数据值阵列编码成数据集以及所述数据集未编码的值的转义码的数据编码方法,转义码包括一元编码部分和非一元编码部分,所述方法包括以下步骤:
设置定义非一元编码部分的最小数目的位的编码参数,所述编码参数在0与预定的上限之间;
将1或更大的偏移值加入所述编码参数中,以便定义最小的最低有效数据部分尺寸;
生成一个或多个数据集,其表示预定幅度范围的数据值的相对于所述数据值的阵列的位置,以便将每个数据值的至少一个最低有效位的值编码;
从所述一个或多个数据集未编码的每个数据值的至少一部分中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该部分的0或更多最高有效位,并且所述相应的最低有效数据部分取决于该部分的多个最低有效位,所述最低有效位的数目大于或等于所述最小的最低有效数据部分尺寸;
将所述数据集编码成输出数据流;
将所述最高有效数据部分编码成所述输出数据流;并且
将所述最低有效部分编码成所述输出数据流。
20.根据条款19所述的方法,其中,
将所述最高有效数据部分编码成所述输出数据流的步骤包括使用一元码将所述最高有效数据部分编码成所述输出数据流;并且
将所述最低有效部分编码成所述输出数据流的步骤包括使用非一元码将所述最低有效部分编码成所述输出数据流。
21.根据条款19或20所述的方法,其中,将所述数据集编码成输出数据流的步骤包括使用二进制码将所述数据集编码成输出数据流。
22.根据条款19到21中任一项所述的方法,其中,所述设置步骤包括根据在所述阵列内的当前数据值的幅度增大所述编码参数。
23.根据条款20到22中任一项所述的方法,其中,编码所述最高有效数据部分和所述最低有效数据部分的步骤包括使用Golomb-Rice码或指数哥伦布码编码所述最高有效数据部分和所述最低有效数据部分。
24.根据条款23所述的方法,其中,
所述Golomb-Rice码的后缀长度等于所述最小的最低有效数据部分尺寸;并且
所述指数哥伦布码具有等于所述最小的最低有效数据部分尺寸的阶数。
25.根据条款19到24中任一项所述的方法,其中,生成所述偏移值的步骤取决于所述数据值阵列的参数。
26.根据条款25所述的方法,其中,所述数据值阵列的参数包括从列表中选择的一个或多个,所述列表包括:
在所述阵列内的数据值的数目;
由所述数据值表示的数据的类型;
适用于所述数据值的阵列的量化参数;以及
编码模式。
27.根据条款19到26中任一项所述的方法,包括在定义所述偏移值的数据头内包括数据的步骤。
28.根据条款1所述的方法,其中,所述编码步骤包括:
根据用于编码的数据集的当前输入数据值的值,选择码值集合的多个互补子范围中的一个,所述码值集合由范围变量定义;
将所述当前输入数据值分配给在所选择的子范围内的码值;
根据所选择的子范围的所述分配的码值和尺寸,修改所述码值集合;
检测定义所述码值集合的范围变量是否小于预定的最小尺寸,并且如果小于的话,那么连续增大所述范围变量,以便增大所述码值集合的尺寸,直到至少具有预定的最小尺寸;并且响应于每个这种尺寸增大操作,输出编码的数据位;并且
在编码一组输入数据值之后,将所述范围变量设置为从可变范围变量值的预定子集中选择的一个值,在具有至少一个最低有效位的子集内的每个值等于0。
29.根据条款28所述的方法,其中,
相对于所述码值集合的子范围的比例由与所述输入数据值相关联的上下文变量定义。
30.根据条款29所述的方法,包括以下步骤:
在编码数据值之后,修改所述上下文变量,在下一个输入数据值方面使用,以便在给所述当前数据值选择的子范围内增大所述码值集合的比例。
31.根据条款28到30中任一项所述的方法,其中,
所述码值集合包括由所述范围变量定义的从0到上限值的值,所述上限值在256与510之间。
32.根据条款31所述的方法,其中,
所述范围变量的可用值的子集包括值256。
33.根据条款31所述的方法,其中,
所述可用值的子集包括由256和384构成的集合;
设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与383之间,那么所述范围变量设置为256,并且如果所述范围变量的当前值在384与510之间,那么所述范围变量设置为384。
34.根据条款31所述的方法,其中,
所述可用值的子集包括由256、320、384以及448构成的集合;
设置所述范围变量的步骤包括根据所述范围变量的当前值从所述子集中选择值,以便如果所述范围变量的当前值在256与319之间,那么所述范围变量设置为256,如果所述范围变量的当前值在320与383之间,那么所述范围变量设置为320,如果所述范围变量的当前值在384与447之间,那么所述范围变量设置为384,并且如果所述范围变量的当前值在448与510之间,那么所述范围变量设置为448。
35.根据条款28到34中任一项所述的方法,包括:
编码表示不在数据集内表示的值的数据,作为旁路数据;
检测与当前阵列相关联的旁路数据的数量;并且
如果所述旁路数据的数量超过阈值量,那么应用所述设置步骤,否则,不应用所述设置步骤。
36.根据条款28到35中任一项所述的方法,其中,编码所述数据,作为变换单元,包括多个阵列的数据值,所述方法包括在编码变换单元结束时,应用所述设置步骤。
37.一种编码图像数据的方法,包括以下步骤:
频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
根据所述输入图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
38.根据条款37所述的方法,其中,对于具有不同位深的图像元件的输入图像数据,所述选择步骤包括选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,以供所有图像元件使用。
39.根据条款38所述的方法,其中,所述选择步骤包括选择与具有最大位深的那个图像元件相关的那些值,作为所述最大动态范围和/或所述变换矩阵的数据精度的单集。
40.一种图像数据,其由根据前述条款中任一项所述的编码方法编码。
41.一种数据载体,其存储根据条款40所述的图像数据。
42.一种用于将数据解码以提供数据值阵列的数据解码方法,所述方法包括以下步骤:
从输入数据流中分离所述数据值和一个或多个编码数据集的最低有效数据部分;
使用二进制解码将所述数据集解码,以生成所述数据值的最高有效数据部分;并且
组合所述最高有效数据部分和所述最低有效数据部分,以形成所述数据值,以便对于数据值,所述相应的最高有效数据部分表示该数据值的多个最高有效位,并且所述相应的最低有效数据部分取决于该数据值的剩余最低有效位。
43.一种用于将输入数据解码以提供数据值阵列的数据解码方法,将所述输入数据编码成数据集以及所述数据集未编码的值的转义码,转义码包括一元编码部分和非一元编码部分,所述方法包括以下步骤:
设置定义非一元编码部分的最小数目的位的编码参数,所述编码参数在0与预定的上限之间;
将1或更大的偏移值加入所述编码参数中,以便定义最小的最低有效数据部分尺寸;
将一个或多个数据集解码,其表示预定幅度范围的数据值的相对于所述数据值的阵列的位置,以便将每个数据值的至少一个最低有效位的值解码;
从所述一元编码部分和非一元编码部分的相应互补的最高有效数据部分和最低有效数据部分中,将所述一个或多个数据集未编码的每个数据值的至少一部解压缩码,以便值的最高有效数据部分表示该部分的0或更多最高有效位,并且所述相应的最低有效数据部分表示该部分的多个最低有效位,所述最低有效位的数目大于或等于所述最小的最低有效数据部分尺寸。
44.一种解码图像数据的方法,包括以下步骤:
频率变换输入的频率变换的图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成输出图像系数的阵列;并且
根据所述输出图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
45.根据条款44所述的方法,其中,对于具有不同位深的图像元件的输出图像数据,所述选择步骤包括选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,以供所有图像元件使用。
46.根据条款45所述的方法,其中,所述选择步骤包括选择与具有最大位深的那个图像元件相关的那些值,作为所述最大动态范围和/或所述变换矩阵的数据精度的单集。
47.一种计算机软件,在由计算机执行时,所述计算机软件促使所述计算机执行根据条款1到39和42到46中任一项所述的方法。
48.一种非易失性机器可读存储介质,根据条款47所述的计算机软件存储在所述介质上。
49.一种编码一系列数据值的数据编码设备,所述设备包括:
发生器,其被配置为从所述输入数据值中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该值的多个最高有效位,并且相应的最低有效数据部分取决于该值的剩余最低有效位,并且被配置为生成一个或多个数据集,其表示预定幅度范围的最高有效数据部分的相对于所述值的阵列的位置;以及
编码器,其被配置为使用二进制编码,将所述数据集编码成输出数据流;并且包括在所述输出数据流内定义最低有效部分的数据。
50.一种用于将数据值阵列编码成数据集以及所述数据集未编码的值的转义码的数据编码设备,转义码包括一元编码部分和非一元编码部分,所述设备包括:
处理器,其被配置为:
设置定义非一元编码部分的最小数目的位的编码参数,所述编码参数在0与预定的上限之间;
将1或更大的偏移值加入所述编码参数中,以便定义最小的最低有效数据部分尺寸;
生成一个或多个数据集,其表示预定幅度范围的数据值的相对于所述数据值的阵列的位置,以便将每个数据值的至少一个最低有效位的值编码;并且
从所述一个或多个数据集未编码的每个数据值的至少一部分中生成相应互补的最高有效数据部分和最低有效数据部分,以便值的最高有效数据部分表示该部分的0或更多最高有效位,并且所述相应的最低有效数据部分取决于该部分的多个最低有效位,所述最低有效位的数目大于或等于所述最小的最低有效数据部分尺寸;
以及编码器,其被配置为:
将所述数据集编码成输出数据流;
将所述最高有效数据部分编码成所述输出数据流;并且
将所述最低有效部分编码成所述输出数据流。
51.一种用于编码图像数据的数据编码设备,所述设备包括:
频率变换器,其被配置为频率变换输入图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成频率变换的输入图像系数的阵列;并且
选择器,其被配置为根据所述输出图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
52.根据条款51所述的设备,其中,对于具有不同位深的图像元件的输入图像数据,所述选择器被配置为选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,以供所有图像元件使用。
53.根据条款52所述的设备,其中,所述选择器被配置为选择与具有最大位深的那个图像元件相关的那些值,作为所述最大动态范围和/或所述变换矩阵的数据精度的单集。
54.一种用于将数据解码以提供数据值阵列的数据解码设备,所述设备包括以下步骤:
数据分离器,其被配置为从输入数据流中分离所述数据值和一个或多个编码数据集的最低有效数据部分;
解码器,其被配置为使用二进制解码将所述数据集解码,以生成所述数据值的最高有效数据部分;以及
组合器,其被配置为组合所述最高有效数据部分和所述最低有效数据部分,以形成所述数据值,以便对于数据值,所述相应的最高有效数据部分表示该数据值的多个最高有效位,并且所述相应的最低有效数据部分表示该数据值的剩余最低有效位。
55.一种用于将输入数据解码以提供数据值阵列的数据解码设备,将所述输入数据编码成数据集以及所述数据集未编码的值的转义码,转义码包括一元编码部分和非一元编码部分,所述设备包括:
处理器,其可操作,以设置定义非一元编码部分的最小数目的位的编码参数,所述编码参数在0与预定的上限之间;将1或更大的偏移值加入所述编码参数中,以便定义最小的最低有效数据部分尺寸;将一个或多个数据集解码,其表示预定幅度范围的数据值的相对于所述数据值的阵列的位置,以便将每个数据值的至少一个最低有效位的值解码;从所述一元编码部分和非一元编码部分的相应互补的最高有效数据部分和最低有效数据部分中,将所述一个或多个数据集未编码的每个数据值的至少一部解压缩码,以便值的最高有效数据部分表示该部分的0或更多最高有效位,并且所述相应的最低有效数据部分表示该部分的多个最低有效位,所述最低有效位的数目大于或等于所述最小的最低有效数据部分尺寸。
56.一种图像数据解码设备,包括:
频率变换器,其被配置为频率变换输入的频率变换的图像数据,以根据所述变换的数据的最大动态范围并且使用具有数据精度的变换矩阵,通过矩阵乘法处理,生成输出图像系数的阵列;并且
选择器,其被配置为根据所述输出图像数据的位深,选择所述最大动态范围和/或所述变换矩阵的数据精度。
57.根据条款56所述的设备,其中,对于具有不同位深的图像元件的输出图像数据,所述选择器被配置为选择所述最大动态范围和/或所述变换矩阵的数据精度的单集,以供所有图像元件使用。
58.根据条款57所述的设备,其中,所述选择器被配置为选择与具有最大位深的那个图像元件相关的那些值,作为所述最大动态范围和/或所述变换矩阵的数据精度的单集。
59.一种视频数据捕捉、传输、显示和/或存储设备,其包括根据条款49到58中任一项所述的设备。
如上所述,要理解的是,以上条款的设备特征可以由编码器或解码器的相应特征实现,如前所述。

Claims (29)

1.一种用于对尚未以其他编码值描述的由变换系数表示的视频的剩余值进行编码的方法,所述方法包括:
通过使用当与前缀组合时定义后缀的位数的参数值来生成所述剩余值,所述剩余值包括后面接续有所述后缀的所述前缀,并且其中,所述参数值基于在先系数组中包括的系数的先前编码状态而变化。
2.根据权利要求1所述的方法,其中,所述在先系数组是4×4系数区块。
3.根据权利要求1所述的方法,其中,所述在先系数组形成同一片的一部分。
4.根据权利要求3所述的方法,其中,针对下一片重置与所述参数值的偏移。
5.根据权利要求1所述的方法,其中,通过确保不针对每个系数组重置偏移来改变所述参数。
6.根据权利要求1所述的方法,其中,所述系数组包括变换操作的所有系数。
7.根据权利要求1所述的方法,其中,所述系数组包括变换单元(TU)的所有系数。
8.根据权利要求1所述的方法,其中,首先已经根据有效性图至少对所述在先系数组中的一些系数进行编码。
9.根据权利要求8所述的方法,其中,所述参数值基于未根据所述有效性图编码的剩余值的编码而变化。
10.根据权利要求1所述的方法,其中,所述其他编码值由有效性图表示。
11.根据权利要求1所述的方法,其中,所述剩余值是系数值减去关于描述所述其他编码值的有效性图的基本级值。
12.根据权利要求1所述的方法,其中,系数的基本级取决于针对该系数可用的有效性图的数量。
13.一种非暂时性计算机可读介质,包括计算机程序指令,所述计算机程序指令在由计算机执行时,使所述计算机执行权利要求2所述的方法。
14.一种用于对尚未以其他编码值描述的由变换系数表示的视频的剩余值进行编码的数据编码装置,所述数据编码装置包括:
处理器,被配置为通过使用当与前缀组合时定义后缀的位数的参数值来生成所述剩余值,所述剩余值包括后面接续有所述后缀的所述前缀,并且其中,所述参数值基于在先系数组中包括的系数的先前编码状态而变化。
15.根据权利要求14所述的装置,其中,所述在先系数组是4×4系数区块。
16.根据权利要求14所述的装置,其中,所述在先系数组形成同一片的一部分。
17.根据权利要求16所述的装置,其中,针对下一片重置与所述参数值的偏移。
18.根据权利要求14所述的装置,其中,通过确保不针对每个系数组重置偏移来改变所述参数。
19.根据权利要求14所述的装置,其中,所述系数组包括变换操作的所有系数。
20.根据权利要求14所述的装置,其中,所述系数组包括变换单元(TU)的所有系数。
21.根据权利要求14所述的装置,其中,首先已经根据有效性图至少对所述在先系数组中的一些系数进行编码。
22.根据权利要求21所述的装置,其中,所述参数值基于未根据所述有效性图编码的剩余值的编码而变化。
23.根据权利要求14所述的装置,其中,所述其他编码值由有效性图表示。
24.根据权利要求14所述的装置,其中,所述剩余值是系数值减去关于描述所述其他编码值的有效性图的基本级值。
25.根据权利要求14所述的装置,其中,系数的基本级取决于针对该系数可用的有效性图的数量。
26.一种包括权利要求14所述的装置的视频处理设备。
27.一种包括权利要求14所述的装置的视频捕捉设备,进一步包括:用于将所述剩余值CABAC编码为比特流的CABAC编码器,以及被配置为解码所述比特流的解码器。
28.一种用于对尚未以其他编码值描述的由变换系数表示的视频的剩余值进行解码的方法,所述方法包括:
通过使用已经与前缀组合以定义后缀的位数的参数值来解码所述剩余值,所述剩余值包括后面接续有所述后缀的所述前缀,并且其中,所述参数值已经基于在先系数组中包括的系数的先前编码状态而变化。
29.一种用于对尚未以其他编码值描述的由变换系数表示的视频的剩余值进行编码的数据解码装置,所述数据解码装置包括:
处理器,被配置为通过使用已经与前缀组合以定义后缀的位数的参数值来解码所述剩余值,所述剩余值包括后面接续有所述后缀的所述前缀,并且其中,所述参数值已经基于在先系数组中包括的系数的先前编码状态而变化。
CN201910122503.9A 2013-04-08 2014-04-04 根据重要系数的参数的重要系数编码和解码 Active CN109889835B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
GB1306335.9 2013-04-08
GB1306335.9A GB2513111A (en) 2013-04-08 2013-04-08 Data encoding and decoding
GB1307121.2 2013-04-19
GB1307121.2A GB2513186A (en) 2013-04-08 2013-04-19 Data encoding and decoding
GB1312330.2A GB2512955A (en) 2013-04-08 2013-07-09 Data encoding and decoding
GB1312330.2 2013-07-09
GB1320775.8 2013-11-25
GB1320775.8A GB2512966A (en) 2013-04-08 2013-11-25 Data encoding and decoding
CN201480020304.2A CN105103549B (zh) 2013-04-08 2014-04-04 一种数据编码方法、数据解码方法及计算机可读介质

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480020304.2A Division CN105103549B (zh) 2013-04-08 2014-04-04 一种数据编码方法、数据解码方法及计算机可读介质

Publications (2)

Publication Number Publication Date
CN109889835A CN109889835A (zh) 2019-06-14
CN109889835B true CN109889835B (zh) 2021-10-29

Family

ID=48483538

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201480020304.2A Active CN105103549B (zh) 2013-04-08 2014-04-04 一种数据编码方法、数据解码方法及计算机可读介质
CN201910122503.9A Active CN109889835B (zh) 2013-04-08 2014-04-04 根据重要系数的参数的重要系数编码和解码
CN201480020292.3A Active CN105103548B (zh) 2013-04-08 2014-04-04 一种编码、解码图像数据的方法及设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201480020304.2A Active CN105103549B (zh) 2013-04-08 2014-04-04 一种数据编码方法、数据解码方法及计算机可读介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480020292.3A Active CN105103548B (zh) 2013-04-08 2014-04-04 一种编码、解码图像数据的方法及设备

Country Status (12)

Country Link
US (4) US10136136B2 (zh)
EP (2) EP2984828B1 (zh)
JP (3) JP6636909B2 (zh)
CN (3) CN105103549B (zh)
AU (1) AU2014252876B2 (zh)
BR (1) BR112015025478B1 (zh)
CA (2) CA2908301C (zh)
GB (5) GB2513111A (zh)
MX (1) MX352879B (zh)
RU (2) RU2637879C2 (zh)
TW (2) TWI685245B (zh)
WO (2) WO2014167298A1 (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2517416A (en) * 2013-08-15 2015-02-25 Sony Corp Data encoding and decoding
US9521423B2 (en) 2014-06-26 2016-12-13 Sony Corporation Data encoding and decoding apparatus, method and storage medium
CN105592313B (zh) * 2014-10-21 2018-11-13 广东中星电子有限公司 一种分组自适应熵编码压缩方法
FR3029333A1 (fr) * 2014-11-27 2016-06-03 Orange Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
TW201711475A (zh) * 2015-09-02 2017-03-16 矽創電子股份有限公司 哥倫布-萊斯編碼電路與解碼電路
US11223852B2 (en) 2016-03-21 2022-01-11 Qualcomm Incorporated Coding video data using a two-level multi-type-tree framework
CN109076242B (zh) * 2016-05-13 2023-01-03 索尼公司 图像处理设备和方法
US9705521B1 (en) * 2016-07-27 2017-07-11 Silicon Laboratories Inc. Noise shaping signed digital-to-analog converter
CN107801033B (zh) * 2016-09-06 2021-05-11 联发科技股份有限公司 应用于数字音视频编解码技术标准系统的解码方法及解码装置
US10848788B2 (en) * 2017-01-06 2020-11-24 Qualcomm Incorporated Multi-type-tree framework for video coding
DE102017204946A1 (de) * 2017-03-23 2018-09-27 Volkswagen Aktiengesellschaft Verfahren zur Bestimmung eines Wertes einer Integer-Skalierung in einer Verknüpfung von Eingangsmengen zu Ausgangsmengen und Computerprogrammprodukt
CN107181963B (zh) * 2017-03-31 2019-10-22 武汉斗鱼网络科技有限公司 一种视频压缩方法及装置
CN107094022B (zh) * 2017-04-25 2023-02-10 福州大学 一种用于VLSI设计的Huffman编码系统的实现方法
KR102395669B1 (ko) * 2017-12-05 2022-05-09 한국전자통신연구원 오류 벡터 크기 계산을 기반으로 한 데이터 압축 및 복원 장치와 그 방법
GB2570711B (en) * 2018-02-05 2023-04-05 Sony Corp Data encoding and decoding
GB2570710B (en) * 2018-02-05 2022-10-12 Sony Corp Data encoding and decoding
JP7235030B2 (ja) * 2018-02-14 2023-03-08 ソニーグループ株式会社 画像処理装置および方法
US10812102B2 (en) 2018-06-29 2020-10-20 Apple Inc. Efficient data encoding
TWI714153B (zh) * 2018-06-29 2020-12-21 大陸商北京字節跳動網絡技術有限公司 零單元的定義
US10922026B2 (en) * 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10841356B2 (en) * 2018-11-28 2020-11-17 Netflix, Inc. Techniques for encoding a media title while constraining bitrate variations
US10880354B2 (en) 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11477486B2 (en) * 2019-01-02 2022-10-18 Qualcomm Incorporated Escape coding for coefficient levels
US11012701B2 (en) * 2019-02-22 2021-05-18 Tencent America LLC Residual coding for transform skip mode and block differential pulse-code modulation
KR102639936B1 (ko) 2019-03-08 2024-02-22 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 처리에서 모델-기반 변형에 대한 제약들
US10587286B1 (en) * 2019-03-18 2020-03-10 Blackberry Limited Methods and devices for handling equiprobable symbols in entropy coding
CN110109615B (zh) * 2019-03-28 2022-08-30 西南电子技术研究所(中国电子科技集团公司第十研究所) 字节流转义字符硬件处理方法
CN110110535B (zh) * 2019-04-24 2021-01-01 湖北工业大学 一种基于像素矩阵的低失真隐写方法
JP7418478B2 (ja) 2019-06-22 2024-01-19 北京字節跳動網絡技術有限公司 クロマ残差スケーリングのためのシンタックス要素
GB2585044A (en) * 2019-06-25 2020-12-30 Sony Corp Image data encoding and decoding
US11218700B2 (en) * 2019-07-01 2022-01-04 Qualcomm Incorporated Minimum allowed quantization parameter for transform skip mode and palette mode in video coding
CN117395396A (zh) 2019-07-07 2024-01-12 北京字节跳动网络技术有限公司 色度残差缩放的信令通知
GB2589066B (en) * 2019-10-24 2023-06-28 Advanced Risc Mach Ltd Encoding data arrays
US20230042018A1 (en) * 2020-02-12 2023-02-09 Google Llc Multi-context entropy coding for compression of graphs
JP2021150788A (ja) * 2020-03-18 2021-09-27 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
GB2593778A (en) * 2020-04-03 2021-10-06 Sony Group Corp Video data encoding and decoding
CN111681192B (zh) * 2020-06-09 2022-08-02 天津大学 一种基于残差图像条件生成对抗网络的比特深度增强方法
US11523137B2 (en) 2020-06-09 2022-12-06 FG Innovation Company Limited Device and method for decoding video data using general constraints information
GB2599447A (en) * 2020-10-05 2022-04-06 Sony Group Corp Data encoding and decoding
US20220086445A1 (en) * 2020-12-03 2022-03-17 Intel Corporation Methods, apparatus, and articles of manufacture for multi-symbol equiprobable mode entropy coding
WO2022232064A1 (en) * 2021-04-26 2022-11-03 Innopeak Technology, Inc. Bypass alignment in video coding
US11818353B2 (en) * 2021-05-13 2023-11-14 Qualcomm Incorporated Reduced complexity transforms for high bit-depth video coding
US20230101542A1 (en) * 2021-09-29 2023-03-30 Tencent America LLC Techniques for constraint flag signaling for range extension with coding for last significant coefficient
CN115002461B (zh) * 2022-08-03 2023-08-11 杭州微帧信息科技有限公司 一种视频编码量化方法、装置、电子设备和存储介质
CN117498873B (zh) * 2023-11-07 2024-03-29 东莞市杜氏诚发精密弹簧有限公司 一种血管栓塞弹簧组件智能加工系统

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603012A (en) * 1992-06-30 1997-02-11 Discovision Associates Start code detector
US7095783B1 (en) * 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
IL129725A (en) 1999-05-02 2011-06-30 Nds Ltd Watermark system
US6396422B1 (en) * 1999-06-09 2002-05-28 Creoscitex Corporation Ltd. Methods for quantizing and compressing digital image data
JP2001298739A (ja) * 2000-04-14 2001-10-26 Canon Inc 符号化装置及びその方法
JP4086424B2 (ja) * 1999-08-31 2008-05-14 キヤノン株式会社 符号化装置
GB0007781D0 (en) * 2000-03-30 2000-05-17 Sony Uk Ltd Data compression
US7185037B2 (en) * 2001-08-23 2007-02-27 Texas Instruments Incorporated Video block transform
US6744387B2 (en) * 2002-07-10 2004-06-01 Lsi Logic Corporation Method and system for symbol binarization
KR20070046812A (ko) * 2004-06-30 2007-05-03 코메트 비디오 테크놀러지 비디오 데이터 압축을 포함하는 데이터 압축방법
US7620103B2 (en) * 2004-12-10 2009-11-17 Lsi Corporation Programmable quantization dead zone and threshold for standard-based H.264 and/or VC1 video encoding
WO2006084503A1 (en) 2005-02-08 2006-08-17 Telefonaktiebolaget Lm Ericsson (Publ) On-demand multi-channel streaming session over packet-switched networks
JP4468858B2 (ja) * 2005-06-01 2010-05-26 オリンパスイメージング株式会社 データ符号化装置、データ符号化方法、プログラム
GB0524983D0 (en) * 2005-12-07 2006-01-18 Imagination Tech Ltd Recompression and decompression of a data stream for rate smoothing
US7778472B2 (en) * 2006-03-27 2010-08-17 Qualcomm Incorporated Methods and systems for significance coefficient coding in video compression
US7884742B2 (en) * 2006-06-08 2011-02-08 Nvidia Corporation System and method for efficient compression of digital data
KR100831959B1 (ko) 2006-07-31 2008-05-23 티유미디어 주식회사 채널 전환 화면을 제공하는 디지털 방송 시스템 및 그 방법
US7885473B2 (en) * 2007-04-26 2011-02-08 Texas Instruments Incorporated Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors
CN101127910B (zh) * 2007-10-08 2013-01-02 威盛电子股份有限公司 编码图块标志参数运算方法和装置
TWI433545B (zh) * 2007-10-30 2014-04-01 Nippon Telegraph & Telephone 影像編碼裝置及影像解碼裝置
US20110038418A1 (en) * 2008-04-25 2011-02-17 Thomson Licensing Code of depth signal
JP4918103B2 (ja) * 2009-01-09 2012-04-18 日本電信電話株式会社 符号化方法、復号方法、それらの装置、プログラム及び記録媒体
KR20100136890A (ko) * 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
US8615043B2 (en) * 2010-03-04 2013-12-24 Texas Instruments Incorporated Fixed length coding based image data compression
JP2011193335A (ja) * 2010-03-16 2011-09-29 Sony Corp 画像符号化装置および方法、画像復号化装置および方法、並びにプログラム
WO2011126272A2 (en) * 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
US9049450B2 (en) * 2010-04-05 2015-06-02 Samsung Electronics Co., Ltd. Method and apparatus for encoding video based on internal bit depth increment, and method and apparatus for decoding video based on internal bit depth increment
KR101885258B1 (ko) * 2010-05-14 2018-08-06 삼성전자주식회사 비디오 신호의 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
EP2445214A1 (en) * 2010-10-19 2012-04-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Video coding using temporally coherent dynamic range mapping
JP2012129827A (ja) 2010-12-15 2012-07-05 Sony Corp 送信装置、送信方法、受信装置および受信方法
US8437581B2 (en) * 2011-03-04 2013-05-07 General Instrument Corporation Method and system for interpolating fractional video pixels
LT3343781T (lt) 2011-06-16 2022-03-10 Ge Video Compression, Llc Konteksto inicijavimas entropinio kodavimo metu
CN105357540B (zh) * 2011-06-28 2019-09-06 三星电子株式会社 对视频进行解码的方法
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
EP2732628A2 (en) * 2011-07-15 2014-05-21 Motorola Mobility LLC Context modeling techniques for transform coefficient level coding
IL299633B1 (en) * 2011-07-15 2024-03-01 Ge Video Compression Llc Array coding example for low delay
US9363535B2 (en) * 2011-07-22 2016-06-07 Qualcomm Incorporated Coding motion depth maps with depth range variation
WO2013059116A1 (en) 2011-10-20 2013-04-25 Dolby Laboratories Licensing Corporation Method and system for video equalization
GB201119180D0 (en) 2011-11-07 2011-12-21 Sony Corp Data encoding and decoding
GB2496201A (en) 2011-11-07 2013-05-08 Sony Corp Context adaptive data encoding and decoding
TW201325247A (zh) * 2011-11-07 2013-06-16 Samsung Electronics Co Ltd 在視訊解碼的反量化及逆轉換期間實現資料修剪的逆轉換方法及設備
CN107197284B (zh) * 2011-11-07 2020-03-27 太阳专利托管公司 图像编码解码装置
US9154792B2 (en) * 2011-11-08 2015-10-06 Qualcomm Incorporated Progressive coding of position of last significant coefficient
US9357185B2 (en) * 2011-11-08 2016-05-31 Qualcomm Incorporated Context optimization for last significant coefficient position coding
CN104185991B (zh) * 2011-11-09 2018-07-06 弗劳恩霍夫应用研究促进协会 不同动态采样值范围的层之间的层间预测
US9743116B2 (en) * 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
EP2805492B1 (en) * 2012-01-19 2018-11-14 VID SCALE, Inc. System and method of video coding quantization and dynamic range control
US9036710B2 (en) * 2012-03-08 2015-05-19 Blackberry Limited Unified transform coefficient encoding and decoding
US9584802B2 (en) * 2012-04-13 2017-02-28 Texas Instruments Incorporated Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
CN102801974B (zh) * 2012-07-19 2014-08-20 西安电子科技大学 基于cabac的图像压缩熵编码器
GB2521828A (en) * 2013-12-23 2015-07-08 Sony Corp Data encoding and decoding
US10241715B2 (en) * 2014-01-31 2019-03-26 Hewlett Packard Enterprise Development Lp Rendering data invalid in a memory array
JP5836424B2 (ja) 2014-04-14 2015-12-24 ソニー株式会社 送信装置、送信方法、受信装置および受信方法
EP3145167B1 (en) 2014-05-16 2020-04-01 Panasonic Intellectual Property Management Co., Ltd. Conversion method and conversion device
JP2015217628A (ja) * 2014-05-20 2015-12-07 セイコーエプソン株式会社 液体噴射装置
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AHG5:Max exponential golomb code for reducing number of bins;Kazuo Sugimoto;《Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11》;20120720;摘要 *
Binarisation modification for last position coding;Vadim Seregin;《Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG1》;20110722;第1-3页 *
CE10:Core transform design for HEVC;A.Fuldseth,Cisco Systems;《Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11》;20110722;全文 *
CE11:Parallel Context Processing for the significance map in high coding efficiency;J.Sole,R.Joshi,M.Karczewicz;《Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11》;20110723;第1-2页 *

Also Published As

Publication number Publication date
US11039142B2 (en) 2021-06-15
TWI685245B (zh) 2020-02-11
RU2017141156A3 (zh) 2020-10-23
RU2751570C2 (ru) 2021-07-15
US20160353109A1 (en) 2016-12-01
JP2017184239A (ja) 2017-10-05
GB2512965A (en) 2014-10-15
EP2984828B1 (en) 2021-06-16
JP2016519514A (ja) 2016-06-30
TW201511480A (zh) 2015-03-16
RU2017141156A (ru) 2019-02-13
JP2016519515A (ja) 2016-06-30
JP6655579B2 (ja) 2020-02-26
GB201306335D0 (en) 2013-05-22
CA2908301C (en) 2020-10-27
BR112015025478A2 (pt) 2017-07-18
RU2015147886A (ru) 2017-05-15
GB201307121D0 (en) 2013-05-29
AU2014252876A1 (en) 2015-09-10
US20190014322A1 (en) 2019-01-10
GB201312330D0 (en) 2013-08-21
EP2984828A1 (en) 2016-02-17
CN105103549B (zh) 2019-03-12
GB201320767D0 (en) 2014-01-08
BR112015025478B1 (pt) 2022-12-06
WO2014167297A1 (en) 2014-10-16
GB2512955A (en) 2014-10-15
CN105103548A (zh) 2015-11-25
GB201320775D0 (en) 2014-01-08
US20190089959A1 (en) 2019-03-21
US11463698B2 (en) 2022-10-04
TW201505423A (zh) 2015-02-01
CA2908301A1 (en) 2014-10-16
RU2637879C2 (ru) 2017-12-07
US10097834B2 (en) 2018-10-09
CN105103549A (zh) 2015-11-25
US10136136B2 (en) 2018-11-20
EP2984829B1 (en) 2019-10-30
TWI658702B (zh) 2019-05-01
EP2984829A1 (en) 2016-02-17
CA3096273A1 (en) 2014-10-16
GB2513186A (en) 2014-10-22
JP6134055B2 (ja) 2017-05-24
US20160050427A1 (en) 2016-02-18
WO2014167298A1 (en) 2014-10-16
CN105103548B (zh) 2019-03-15
AU2014252876B2 (en) 2016-09-22
GB2512966A (en) 2014-10-15
JP6636909B2 (ja) 2020-01-29
GB2513111A (en) 2014-10-22
MX352879B (es) 2017-12-13
MX2015014134A (es) 2016-04-07
CN109889835A (zh) 2019-06-14

Similar Documents

Publication Publication Date Title
CN109889835B (zh) 根据重要系数的参数的重要系数编码和解码
US20220217351A1 (en) Data encoding and decoding
US11290751B2 (en) Data encoding and decoding
CN111083476B (zh) 编码和解码视频数据的方法及视频数据编码器和解码器
US9544599B2 (en) Context adaptive data encoding
WO2013068732A1 (en) Context adaptive data encoding

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant