CN104081772A - 熵编码缓冲器配置 - Google Patents

熵编码缓冲器配置 Download PDF

Info

Publication number
CN104081772A
CN104081772A CN201280060042.3A CN201280060042A CN104081772A CN 104081772 A CN104081772 A CN 104081772A CN 201280060042 A CN201280060042 A CN 201280060042A CN 104081772 A CN104081772 A CN 104081772A
Authority
CN
China
Prior art keywords
symbol
entropy
buffer
storehouse
share
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.)
Granted
Application number
CN201280060042.3A
Other languages
English (en)
Other versions
CN104081772B (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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Publication of CN104081772A publication Critical patent/CN104081772A/zh
Application granted granted Critical
Publication of CN104081772B publication Critical patent/CN104081772B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/607Selection between different types of compressors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

本发明描述了一种用来对符号序列进行编码的编码器,包括分配器,被配置为基于符号序列的先前符号内所包含的信息而将多个参数分配给符号序列的每个符号;多个熵编码器,每个熵编码器被配置为将转发至各个熵编码器的符号转换为各个位串流;以及选择器,被配置为将每个符号转发至多个熵编码器中的所选择的一个,所述选择取决于分配给各个符号的参数数目。

Description

熵编码缓冲器配置
技术领域
本发明涉及熵编码并可用于诸如视频压缩和音频压缩的应用。
本发明描述了一种用于离散数据的熵编码和解码的新方法和装置。通常,熵编码可视为无损耗数据压缩的最通用的形式。无损耗压缩旨在以比原始数据表示所需更少的位表示离散数据而没有任何的信息损耗。离散式数据可以文本、图形、图像、视频、音频、语音、传真、医疗数据、气象数据、经济数据、或任何其它数字数据形式给出。
背景技术
在熵编码中,潜在离散数据源(underlying discrete data source)的特定高阶特性通常被忽略。结果,任何数据源都被视为给定为源符号序列,其具有于给定m元字母表的值,并且由对应的(离散的)概率分布{p1,…,pm}来表征。在这些概要的设定值中,就每个符号的期望的代码字长度(以位为单位)而言,任何熵编码方法的下限由熵给定
H = - Σ i = 1 m p i log 2 p i . - - - ( A 1 )
霍夫曼码和算术码为能够近似熵极限(以某种程度)的实用码的众所周知的实例。对于固定的概率分布,霍夫曼码相对容易被构建。霍夫曼码的最具吸引力的性质在于通过使用可变长度代码(VLC)表能够有效地实现其具体实施。但当处理时变源统计值,即,改变符号概率时,就算法复杂性以及实施成本而言,霍夫曼码的调适性和其对应的VLC表是相当苛刻的。同样,在具有优势字母表值而pk>0.5的情况下,相对应的霍夫曼码的冗余(未使用任何字母表扩展诸如游程编码)可能相当大。霍夫曼码的另一个缺点如下,在处理较高阶概率建模的情况下,可能需要多组VLC表。另一方面,算术编码尽管实质上比VLC更复杂,但当应付适应性和较高阶概率建模以及高度扭斜概率分布的情况时,提供了更为一致且可适当处理的优点。实际上,该特性基本上源于算术编码至少在构想上提供一机制来以或多或少直捷方式将概率估计值的任何给定值映射至结果所得放入代码字的一部分。提供这种接口程序,一方面,算术编码允许概率建模化与概率估算的任务之间有清晰的分开,而另一方面,允许实际熵编码,即,符号至代码字的映射。
为清楚起见,我们将以下的说明限制在二元字母表的情况,但概念上,本发明的非常基本的方法也适用于m(m>2)元字母表的一般情况。具有二元字母表中的值的符号的概率分布可由单一参数p=pLPS来描述,其中,在所谓的概率估计值pLPS≤0.5的较低概率符号(LPS)与pMPS=1-pLPS的较高概率符号(MPS)之间做出有用的区别。因此,在一般情况下,我们使得0<pLPS≤0.5,而在实际情况下,概率估计值经常由最小概率值pmin从下方限定,使得pmin≤pLPS
一方面编码效率与另一方面编码复杂性之间的良好折衷在于经由部分位串流对符号序列进行并行熵编码,每个部分位串流负责对诸如例如就符号统计或概率估计而言最适合符号序列相应部分的相应部分进行编码,在PIPE编码中就是这样(PIPE=概率区间分割熵)。然而,由此产生的问题是在想要普通单个位串流的情况下***部分位串流。
发明内容
根据本发明的实施方式,用来编码符号序列的编码器包含分配器,其被配置为基于该符号序列的先前符号内部所含信息而将多个参数分配给该符号序列的各个符号;多个熵编码器其各自被配置为将转发给各个熵编码器的符号转换成各个位串流;及选择器,其被配置为将各个符号转发给所述多个熵编码器中的所选择的一个,所述选择取决于分配给该各个符号的参数数目。
根据本发明的实施方式,用来重建符号序列的解码器包含多个熵解码器,其各自被配置为将各个位串流转换成符号;分配器,其被配置为基于该符号序列的先前已重建符号内部所含信息而将多个参数分配给将被重建的符号序列的各个符号;及选择器,其被配置为从所述多个熵解码器中的所选的一个恢复将被重建的该符号序列的各个符号,所述选择取决于对于各个符号所限定的参数数目。
根据一个方面,进行交插,使得每个熵编码器为VLC类型,所述交插以(准)固定尺寸的份额为单位进行,使得熵编码的语法分析程序对于每个熵编码路径可并行进行,并且使得至少一个代码字在解码期间在任何时候在解码侧为可用的,使得解码程序的并行处理及管线操作得到缓解。
根据另一个方面,进行交插,使得每个熵编码器为VLC类型,所述交插以(准)固定尺寸的份额为单位进行,使得熵编码的语法分析程序对于每个熵编码路径可并行进行,并且使得每当最大编码延迟约束将不被服从时,通过刷新不常访问的熵编码路径,可服从最大编码延迟约束。然而,相应熵编码路径的刷新并没有完整地进行,而是仅到必要量为止,以形成又一份额,使得服从最大编码延迟约束所花费的附加位率保持最小。
根据另一个方面,进行交插,使得每个熵编码器为VLC类型,所述交插以(准)固定尺寸的份额为单位进行,使得熵编码的语法分析程序对于每个熵编码路径可基于具有单个位串流的份额序列并行进行,但是份额序列在所谓块中以分段形式进行传输,所述块具有关于其中份额分布的信息,使得解码器并行处理程序得到进一步缓解,如果应用可选延迟约束服从方案,那么几乎不会引入延迟。
描述熵编码算法实施方式,其中,任意源符号序列被映射至两个或多个部分位串流,及解码算法,其中原始源符号从两个或多个部分位串流被解码。在编码器侧,源符号首先经二进制化(若其尚未表示二元符号),及二进制的各个仓(bin)与一参数集合相关联。然后相关联的参数映射至指数的一个小集合,且与特定指数相关联的全部仓都以特定二元熵编码器编码,及相对应的代码字被写至特定部分位串流。在解码器侧,源符号通过源符号的请求而解码。如同编码器的相同二进制化方案被用来将所述源符号的请求转换成仓的请求,及仓的请求与在编码器侧相对应仓的相同参数集合相关联。相关联的参数再次被映射至一个指数小集合,其中,该映射与编码器端相同。及与特定指数相关联的全部仓请求通过特定二元熵解码器解码,该熵解码器从相对应部分位串流读取代码字或多个代码字。编码器及解码器的配置方式为不同的二元熵编码器及熵解码器使用不同的编码算法(即仓序列与代码字间的不同映射关系)。
在本发明的优选实施方式中,相关联的参数集合表示对于特定仓(或相当测量值集合)的两个仓值中的一个的概率测量值。概率测量值例如可表示概率状态,其可以N值的集合值表示。概率估算与仓的实际编码解耦。然后,概率测量值映射至概率指数,由此,仓的编码及解码被指派给特定二元熵编码器及熵解码器。概率测量值对概率指数的映射关系(及如此簇集成多组概率测量值)也可随着时间而改变,例如,根据已传输的符号而改变。例如,指派可调整适应于已经以某个概率测量值或概率指数编码的仓数,来确保所形成的部分位串流具有相似的位率。在本发明的优选实施方式中,二元熵编码器及熵解码器的数目小于概率测量值可能的数值数目。允许准确估算相关联的概率的大量可能的概率测量值映射至少数概率指数,其中,各个概率测量值与特定二元熵编码器及熵解码器相关联。少数二元熵编码器及熵解码器提供下述优点,用来传输部分位串流的开销可保持为小量,及属于编码及解码***的同步化开销可保持为小量。当使用概率测量值作为将仓指派给特定二元熵编码器及熵解码器的基础时,二元熵编码器及熵解码器对于该群组概率测量值可特别地最佳化,允许获得高编码效率(类似最佳已知熵编码方案)。此外,可由仓序列对代码字及反之亦然的简单映射关系所组成的简单编码及解码算法可对于概率测量值群组的表示而设计。如此降低编码及解码***的复杂性但仍然提供高编码效率。此时,须注意对于仓概率的准确估算,要求高粒度的概率测量值;任何不准确都可能对编码效率造成负面影响。但用于编码仓,相对少数(显著少于用于概率估算的可能概率测量值数目)的概率群组即足,原因在于,通过使用设计用于与该特定概率不同但极为接近的概率的熵编码算法,来以特定相关联的概率测量值编码仓所导致的速率增高为极小。以及使用少数二元熵编码器及熵解码器提供前述优点。在本发明的其它实施方式中,与仓相关联的参数集合由对于两个仓值中的一个的概率测量值及一个或多个另外参数所组成。
独立权利要求的主题实现了刚刚概述且在下文中进一步详细说明的优点。
附图说明
在下文中,参照附图和本发明的各种优选实施方式来更详细地描述本发明的优选实施方式,这相对于若干设计方面提供了优点并且是突出的。在附图中,
图1示出了根据实施方式的编码器的框图;
图2示出了根据实施方式的适合用于对由图1的编码器所产生的位串流进行解码的解码器的框图;
图3为示出了根据比较性实施方式的具有多元部分位串流(multiplexedpartial bitstream)的数据包的示意图;
图4为示出了根据又一比较性实施方式具有使用固定尺寸片段的可选片段的数据包的示意图;
图5示出了根据比较性实施方式的使用部分位串流交插的编码器的框图;
图6示出了用于根据比较性实施方式的在图5的编码器侧处的代码字缓冲器的状态的示意性实例;
图7示出了根据比较性实施方式的使用部分位串流交插的解码器的框图;
图8示出了根据比较性实施方式的使用代码字交插的解码器的框图,所述代码字交插使用单组代码字;
图9示出了根据实施方式的使用固定长度位序列的交插的编码器的框图;
图10示出了用于根据实施方式的在图9的编码器侧处的通用位缓冲器的状态的示意性实例;
图11示出了根据实施方式的使用固定长度位序列的交插的解码器的框图;
图12示出了用来示出假设(0,0.5]内的一致概率分布,最佳概率区间离散化成为K=4个区间的曲线图;
图13为示出了对于p=0.38的LPB概率和通过霍夫曼算法所得的相关联的可变长度码的二元事件树的示意图;
图14示出了曲线图,通过所述曲线,在给定的表条目的最大数目Lm的情况下可以推断最佳代码C的相对位率增加ρ(p,C);
图15为示出了理论上分割成K=12个区间(cp.Sec.3)的最佳概率区间及具有最大数目Lm=65表条目的使用VNB2VLC码的实际设计的位率增高的曲线图;
图16为示出了用于三元选择树转换为全二元选择树的实例的示意图;
图17示出了根据实施方式的包括编码器(左边部分)和解码器(右边部分)的***的框图;
图18为根据实施方式的使用根据图1至图17的任一实施方式的熵编码的编码变换系数的基本原理示图;
图19示出了用来对有效位映射(标记的符号未被传输)进行编码的两个实例;
图20示出了变换系数(ABS)的幅值的二进制化;
图21示出了对于H.264/AVC标准的区块类型(block type)以及它们的分类;
图22示出了对于1-位符号CBP4的上下文建模;及
图23示出了用来对有效位变换系数的幅值进行编码的上下文建模的实例;
图24示出了根据应用实例的熵编码器配置的框图;
图25示出了来自图24的初始化器的详细示图;
图26示出了用来计算参考初始化概率信息表的参考指数的步骤序列,所述表包括用于最小概率符号(LPS)的概率信息和作为初始化概率信息的对应的最大概率符号(MPS)的值;
图27示出了根据应用实例的熵解码器配置的示意性框图;
图28示出了编码环境的高阶框图;
图29示出了图28图的编码环境的熵编码部分的框图;
图30为示出了图像或视频帧空间细分成宏区块对的示意图;
图31a为示出了根据本发明实施方式的帧模式的示意图;
图31b为示出了根据本发明实施方式的字段模式的示意图;
图32为示出了根据本发明实施方式的基于邻近语法元素的利用上下文分配的语法元素的编码的流程图;
图33为示出了根据本发明实施方式的基于上下文模型的语法元素的二元熵编码的流程图,所述上下文模型被分配给语法元素;
图34为示出了根据本发明实施方式的宏区块的寻址方案的示意图;
图35示出了一个表,所述表示出了如何获得指示了包括具有与当前宏区块的左上部分样本相关的坐标xN和yN的样本的宏区块的宏区块地址mbAddrN,另外,所述表示出了该样本的宏区块mbAddrN中的样本的y坐标yN,取决于所述样本被配置为超出当前宏区块的顶部或左侧边界,当前宏区块被帧编码或字段编码,当前宏区块为当前宏区块对的顶部或底部宏区块,以及最后宏区块mbAddrA被帧编码或字段编码且样本所处的行具有奇数或偶数行数yN;
图36为示出宏区块分割、子宏区块分割、宏区块分割扫描、及子宏区块分割扫描的示图;
图37示出了可以采用本发明的解码环境的高阶框图;
图38为示出了从编码位串流对如图32和33所示的编码的语法元素的解码的流程图;
图39图为示出了图3的熵解码处理及解码处理的流程图;
图40示出了对于宏区块用于出现的H.264/AVC视频编码器的基本编码结构;
图41示出了由在当前语法元素C的左侧和顶部上的两个邻近语法元素A和B所组成的上下文模板;
图42为图像细分成多个片段的示图;
图43的左侧示出了利用样本A_Q对块的样本a-p所进行的内_4x4预测右侧示出了内_4x4预测的预测方向。
图44示出了与图46的二进制化方案有关的二进制编码树的一部分;
图45为示出了绝对数据值的二进制化;
图46为示出了绝对值所二进制化而成的仓串的表;
图47为示出了绝对值所二进制化而成的仓串的表;
图48示出了用来执行二进制化的伪-C码;
图49为示出了将熵编码的位串流解码成数据值的示意图;
图50为示出了从数据值的二进制化恢复所述数据值的示意图;
图51为示出了在图50的处理中有关后缀部分的提取的示意图;
图52为示出了语法元素mb_field_decoding_flag的编码的流程图;
图53为示出了将上下文模型分配给mb_field_decoding_flag的处理的流程图;
图54为示出了从通过图52的编码方案所获得的编码位串流的语法元素mb_field_decoding_flag的解码的流程图;
图55为示出了视频帧或图像的编码的流程图;
图56示出了用于字段编码宏区块和帧编码宏区块的不同的扫描样式;
图57为示出了从示例性所选的变换系数级所得的有效位映射的表;
图58为示出了根据本发明实施方式的语法元素last_significant_coeff_flag和significant_coeff_flag的编码的流程图;
图59为示出了在解码器侧上的剖析处理的伪C-码;以及
图60为示出了从通过图58的编码方案所获得的编码位串流的语法元素significant_coeff_flag和last_significant_coeff_flag的解码的流程图;
图61示出了根据实施方式使用固定长度位序列交插的编码器的框图;
图62示出了根据实施方式使用固定长度位序列交插的解码器的框图;
图63示意性示出了源自使用图61和图62中实施方式的示例性常数多路复用方案的四个部分位串流的块的多路复用实例;
图64至图68示意性示出了图9中编码器的缓冲器的缓冲状态序列。
具体实施方式
应该注意的是,在附图的描述期间,出现在这些图的数幅图中的组件在这些图的每一个中以相同的参考标号表示,至于这些组件的功能性,将避免重复的描述以避免不必要的重复。然而,除非有明确的相反指示,否则相对于一幅图所提供的功能性和描述将也适用于其它的附图。
图1示出了根据本发明实施方式的编码器。该编码器将源符号1的串流无损耗地转换成一组两个以上部分位串流12。在本发明的优选实施方式中,各个源符号1与一组一个或多个类别的类别相关联。作为实例,所述类别可指定源符号的类型。在混合视频编码的上下文中,单独的类别可与宏区块编码模式、区块编码模式、参考图像指数、运动向量差、细分标识、编码区块标识、量化参数、变换系数级等相关联。在其它应用领域诸如音频、语音、文本、文件、或通用数据编码,不同源符号的归类是可能的。
一般而言,各个源符号可具有有限的值或可数无限的一组值,其中,该组可能的源符号值对于不同的源符号类别可以不同。为了降低编码和解码演算法的复杂性,且为了允许对不同的源符号和源符号类别进行一般的编码和解码设计,源符号1被转换为有序的二元判定组,然后这些二元判定通过简单的二元编码算法处理。因此,二进制化器(binarizer)2将各个源符号1的值双射映射至一序列(或一串)仓3。该仓序列3表示一组有序的二元判定。各个仓3或二元判定可获取两个值集合中的一个值,例如,值0和1中的一个。二进制化方案对于不同的源符号类别可以是不同的。对于特定源符号类别,二进制化方案可取决于可能的源符号值的集合和/或该特定类别的源符号的其它性质。表1示出了用于可数无限集合的三个示例性二进制化方案。用于可数无限集合的二进制化方案也可应用于符号值的有限集合。特别是对于大的符号值的有限集合,无效率(由于无用的仓序列所导致)可以忽略不计,但这样的二进制化方案的通用性就复杂性和存储需求方面而言提供了优势。对于小的符号值的有限集合,经常优选地(就编码效率而言)将二进制化方案调整适应于可能的符号值数目。表2示出了用于8个值的有限集合的三个示例性二进制化方案。以有限仓序列集合表示无冗余代码(及可能的重新排序仓序列)的方式,通过修改若干仓序列,可从用于可数无限集合的通用二进制化方案而得到用于有限集合的二进制化方案。作为一个实例,表2中的截头一元二进制化方案通过修改用于通用一元二进制化的源符号7的仓序列而形成(参照表1)。表2中的顺序0的截头的且重新排序的Exp-Golomb二进制通过修改用于Exp-Golomb顺序0二进制的源符号7的仓序列(见表1)并通过重新排序仓序列(用于符号7的截头仓序列被分配给符号1)而形成。对于符号的有限集合,可以使用非***性/非通用性二进制化方案,如表2的最后一栏所示。
表1:可数无限集合(或大的有限集合)的二进制实例。
表2:有限集合的二进制实例。
由二进制化器2所形成的仓序列的各个仓3被顺序馈进参数分配器4。参数分配器将一个或多个参数的集合分配给各个仓3,并输出具有相关联的参数集合的仓5。参数集合在编码器和解码器处以完全相同方式确定。参数集合可由下列参数中的一个或多个组成:
-当前仓的两个可能仓值中的一个的概率估计值的测量值,
-当前仓的用于较低概率或较高概率仓值的概率估计值的测量值,
-指定两个可能仓值中哪一个表示当前仓值的较低概率仓值或较高概率仓值的估计值的识别符,
-相关联的源符号的类别,
-相关联的源符号的重要性测量,
-(例如于时间、空间、或体积数据集合中)的相关联的符号的位置的测量,
-指定所述仓或相关联的源符号的信道代码保护的识别符,
-指定用于所述仓或相关联的源符号的加密方案的识别符,
-指定相关联的符号的类别的识别符,
-用于相关联的源符号的仓序列中的仓号码。
在本发明的优选实施方式中,参数分配器4将每个仓3、5与当前仓的两个可能仓值中的一个概率估计值的测量值相关联。在本发明的又一优选实施方式中,参数分配器4将每个仓3、5与当前仓的较低概率或较高概率仓值的概率估计值的测量值和指定两个可能仓值中的哪一个表示当前仓的较低概率或较高概率仓值的估计值的识别符。应该注意的是,该较低概率仓值或较高概率仓值概率和指定两个可能仓值中的哪一个表示较低概率或较高概率仓值的识别符为用于两个可能仓值中的一个概率的相等测量值。
在本发明的又一优选实施方式中,参数分配器4将各个仓3、5与当前仓的两个可能仓值中的一个的概率估计值的测量值以及一个或多个另外的参数(其可以是以上列出的参数中的一个或多个)相关联。在本发明的又一优选实施方式中,参数分配器4将各个仓3、5与当前仓的较低概率或较高概率值的概率估计值的测量值,指定两个可能仓值中的哪一个表示当前仓的较低概率或较高概率仓值的估计值的识别符,以及一个或多个另外的参数(其可以是以上列出的参数中的一个或多个)相关联。
在本发明的优选实施方式中,参数分配器4基于一个或多个已经编码的符号集合,确定上述概率测量值(当前仓的两个可能仓值中的一个概率估计值的测量值、当前仓的较低概率或较高概率仓值的概率估计值的测量值、指定两个可能仓值中的哪一个表示当前仓的较低概率或较高概率仓值的估计值的识别符)中的一个或多个。用来测定概率测量值的编码符号可包括相同符号类别的一个或多个已编码符号、与邻近空间和/或时间位置(与当前源符号相关联的数据集合有关)的数据集合(诸如样本区块或群组)相对应的相同符号类别的一个或多个已编码符号、或与相同和/或邻近空间和/或时间位置(与当前源符号相关联的数据集合有关)的数据集合相对应的不同符号类别的一个或多个已编码符号。
作为参数分配器4的输出的具相关联的参数集合的各仓5被馈入仓缓冲器选择器6。仓缓冲器选择器6基于输入仓值及相关联的参数5来潜在地修改输入仓的值5,并将具有潜在地修改的值的输出仓7馈入两个或多个仓缓冲器8中的一个中。输出仓7被发送至其中的仓缓冲器8基于输入仓的值5和/或相关联的参数值5来确定。
在本发明的优选实施方式中,仓缓冲器选择器6并未修改仓值,即,输出仓7通常具有与输入仓5相同值。
在本发明的又一优选实施方式中,仓缓冲器选择器6基于输入仓值5和当前仓的两个可能仓值中的一个的概率估计值的相关联的测量值来确定输出仓值7。在本发明的优选实施方式中,如果当前仓的两个可能仓值中的一个的概率的测量值小于(或小于或等于)特定临界值,则输出仓值7被设定为等于输入仓值5;如果当前仓的两个可能仓值中的一个的概率测量值大于或等于(或大于)特定临界值,则输出仓值7被修改(即,其被设定为与输入仓值相反)。在本发明的又一优选实施方式中,如果当前仓的两个可能仓值中的一个的概率测量值大于(或大于或等于)特定临界值,则输出仓值7被设定为等于输入仓值5;如果当前仓的两个可能仓值中的一个的概率测量值小于或等于(或小于)特定临界值,则输出仓值7被修改(即,其被设定为与输入仓值相反)。在本发明的优选实施方式中,对于两个可能的仓值的估算概率,临界值对应于值0.5。
在本发明的又一优选实施方式中,仓缓冲器选择器6基于输入仓值5和指定两个可能仓值中的哪一个表示当前仓的较低概率或较高概率仓值的估计值的相关联的识别符来确定输出仓值7。在本发明的优选实施方式中,如果识别符指定两个可能仓值中的第一个表示当前仓较低概率(或较高概率)仓值,则输出仓值7被设定为等于输入仓值5;以及如果识别符指定两个可能仓值中的第二个表示当前仓的较低概率(或较高概率)仓值,则输出仓值7被修改(即,其被设定为与输入仓值相反)。
在本发明的优选实施方式中,仓缓冲器选择器6基于当前仓的两个可能仓值中的一个的概率估计值的相关联的测量值来确定输出仓7被发送至的仓缓冲器8。在本发明的优选实施方式中,两个可能仓值中的一个的概率估计值的测量值的可能值的集合为有限的,仓缓冲器选择器6包含一表,该表将恰一个仓缓冲器8与两个可能仓值中的一个的概率估计值的各个可能值相关联,其中,两个可能仓值中的一个的概率估计值测量值的不同值可与同一个仓缓冲器8相关联。在本发明的又一优选实施方式中,两个可能仓值中的一个的概率估计值的测量值的可能值范围被分割成多个区间,仓缓冲器选择器6确定两个可能仓值中的一个的概率估计值的测量值的区间指数,及仓缓冲器选择器6包含一表,该表将恰一个仓缓冲器8与该区间指数的各个可能值相关联,其中区间指数的不同值可与同一个仓缓冲器8相关联。在本发明的优选实施方式中,具有两个可能仓值中的一个的概率估计值的相反测量值(相反测量值为表示概率估计值P及1-P的测量值)的输入仓5被馈至同一个仓缓冲器8。在本发明的又一优选实施方式中,当前仓的两个可能仓值中的一个的概率估计值的测量值与特定仓缓冲器的相关联性随着时间被调适,例如,以确保所形成的部分位串流具有相似的位率。
在本发明的又一优选实施方式中,仓缓冲器选择器6基于当前仓的较低概率或较高概率仓值的概率估计值的测量值而确定输出仓7被发送至的仓缓冲器8。在本发明的优选实施方式中,较低概率或较高概率仓值的概率估计值的测量值的可能值的集合为有限的,仓缓冲器选择器6包含一表,该表将恰一个仓缓冲器8与较低概率或较高概率仓值的概率估计值的各个可能值相关联,其中,较低概率或较高概率仓值的概率估计值测量值的不同值可与同一个仓缓冲器8相关联。在本发明的又一优选实施方式中,较低概率或较高概率仓值的概率估计值测量值的可能值范围被分割成多个区间,仓缓冲器选择器6确定较低概率或较高概率仓值的概率估计值测量值的区间指数,仓缓冲器选择器6包含一表,该表将恰一个仓缓冲器8与区间指数的各个可能值相关联,其中,区间指数的不同值可与同一个仓缓冲器8相关联。在本发明的又一优选实施方式中,当前仓的较低概率或较高概率仓值的概率测量值与特定仓缓冲器的相关联性随着时间被调适,例如来确保所形成的部分位串流具有相似的位率。
两个或多个仓缓冲器8的每一个与恰一个仓编码器10连接,而各个仓编码器只与一个仓缓冲器8连接。各仓编码器10从相关联的仓缓冲器8读取仓,并将仓序列9转换成表示位序列的代码字11。仓缓冲器8表示先进先出缓冲器;较迟(在顺序上)被馈至仓缓冲器8的仓不会在较早(在顺序上)被馈至该仓缓冲器的仓之前被编码。作为特定仓编码器10的输出的代码字11被写至特定部分位串流12。整个编码算法将源符号1转换为两个或多个部分位串流12,其中,部分位串流的数目等于仓缓冲器和仓编码器的数目。在本发明的优选实施方式中,仓编码器10将可变数目的仓9转换成可变位数的代码字11。本发明实施方式的上述和以下示出的一个优点在于仓编码可并列进行(例如,对于不同的概率测量值群组),这减少了若干具体实现的处理时间。
本发明实施方式的另一项优点在于可以为不同的参数集合5具体设计由编码器10执行的仓编码。具体地,对于不同的估计的概率组可以优化(就编码效率和/或复杂性而言)仓编码以及编码。一方面,这允许相对于具有相似的编码效率的现有技术的熵编码算法降低了编码/解码复杂性。另一方面,这允许相对于具有相似的编码/解码复杂性的现有技术的熵编码算法,提高了编码效率。在本发明的优选实施方式中,仓编码器10为不同群组的当前仓的两个可能仓值5中的一个的概率估计值的测量值执行不同的编码算法(即,仓序列映射至代码字)。在本发明的又一优选实施方式中,仓编码器10为不同组群的当前仓的较低概率或较高概率仓值的概率估计值的测量值执行不同的编码算法。在又一优选实施方式中,仓编码器10为不同的信道保护代码执行不同的编码算法。在又一优选实施方式中,仓编码器10为不同的加密方案执行不同的编码算法。在又一优选实施方式中,仓编码器10为信道保护代码与当前仓的两个可能仓值5中的一个的概率估计值的测量值的群组的不同组合执行不同的编码算法。在又一优选实施方式中,仓编码器10为信道保护代码与当前仓的较低概率或较高概率仓值5的概率估计值的测量值的群组的不同组合执行不同的编码算法。在又一优选实施方式中,仓编码器10为加密方案与当前仓的两个可能仓值5中的一个的概率估计值的测量值的群组的不同组合执行不同的编码算法。在又一优选实施方式中,仓编码器10为加密方案与当前仓的较低概率或较高概率仓值5的概率估计值的测量值的群组的不同组合执行不同的编码算法。
在本发明的优选实施方式中,仓编码器10或仓编码器中的一个或多个表示二元算术编码引擎。在本发明的又一优选实施方式中,仓编码器中的一个或多个表示二元算术编码引擎,其中,从给定的仓缓冲器的典型LPS/LPB概率pLPS至相对应的码区间宽度RLPS的映射—即,该二元算术编码引擎的由当前区间宽度R和当前区间偏移L限定的内部状态的区间细分识别例如码区间的下限—通过查表法来实现。在又一优选实施方式中,对于与给定仓缓冲器相关联的各个基于表的二元算术编码引擎,K个典型区间宽度值{Q0,...,QK-1}被用来表示具有K种选择的RLPS,典型的区间宽度值{Q0,...,QK-1}取决于仓缓冲器。对于K>1的选择,仓的算术编码可能涉及下述子步骤,将当前区间宽度R映射至具有在{0,…,k-1}中的值的量化指数q;以及使用q作为指数,通过从查找表访问相对应的部分区间宽度值Qq而进行区间细分。对于K=1的选择,即,对于只给定一个典型的区间宽度值Q0的情况,该值Q0可选择作为2的幂来允许在单一重新标准化循环中的进入对应的仓缓冲器的多个MPS/MPB值的解码。各个算术编码引擎的所得代码字可被分开地传输、打包、或存储,或如后所述可以被交插以用于传输或存储的目的。
即,二元算术编码引擎10可在其编码仓缓冲器8内的仓时执行下列步骤:
1.从仓缓冲器接收valLPS bin(忆起:这里考虑的各个二元算术编码引擎10被选择为接收“bin”,原因在于(或换言之,“bin”与各个二元算术编码引擎10相关联)概率分布估计值诸如p_state[bin]与二元算术编码引擎10相关联)
2.R的量化:
q_index=Qtab[R>>q](或一些其它量化形式)
3.RLPS和R的确定:
RLPS=Rtab[q_index](注意,这里并未提及p_state,原因在于,对于所考虑的二元算术编码引擎10其为固定的,即,p_state[encoder],Rtab已经在其中存储了用于p[p_state[encoder]]·Q[q_index]的预先计算的值
R=R-RLPS[即,仿佛“bin”为MPS般将R初步预更新]
4.新部分区间的计算:
如果(bin=1-valMPS)则
L←L+R
R←RLPS
5.L和R的重新标准化,写入位,
其中
q_index  描述Qtab的量化值读取的指数,
p_state  描述当前态(对于二元算术编码引擎10为固定的),
RLPS      描述对应于LPS的区间宽度以及
valMPS   描述对应于MPS的位值。
从而,二元算术解码引擎22可在对输出至仓缓冲器20的仓进行解码时执行下列步骤:
1.接收用于仓的请求(忆起:这里考虑的各个二元算术解码引擎22被选择为解码“bin”,原因在于(或换言之,“bin”与各个二元算术解码引擎22相关联)概率分布估计值诸如p_state[bin]与该二元算术解码引擎22相关联)
2.R的量化:
q_index=Qtab[R>>q](或一些其它量化形式)
3.RLPS及R的确定:
RLPS=Rtab[q_index](注意,这里并未提及p_state,原因在于,对于所考虑的二元算术解码引擎22其为固定的,即,p_state[encoder],Rtab已经在其中存储用于p[p_state[encoder]]·Q[q_index]的预先计算的值
R=R-RLPS[即,仿佛“bin”为MPS般将R初步预更新]
4.根据部分区间的位置而确定bin:
if(V≥R)then
bin←1-valMPS(bin被解码为LPS;仓缓冲器选择器18通过使用该仓信息和valMPS而获得实际仓值)
V←V-R
R←RLPS
else
bin←valMPS(bin被解码为MPS;仓缓冲器选择器18通过使用该仓信息和valMPS而获得实际仓值)
5.R的重新标准化,读取一个位并更新V,
其中
q_index  描述Qtab的量化值读取的指数,
p_state  描述当前态(对于二元算术解码引擎22为固定的),
RLPS      描述对应于LPS的区间宽度
valMPS   描述对应于MPS的位值,以及
V        描述来自当前部分区间内部的值。
在本发明的又一优选实施方式中,仓编码器10或仓编码器中的一个或多个表示将输入仓序列9直接映射至代码字10的熵编码器。这样的映射关系可有效地实现且不要求复杂的算术编码引擎。代码字向仓序列的逆映射(如在解码器中所进行)必须是唯一的以保证输入序列的完美解码,但仓序列9至代码字10的映射并不必要为唯一的,即,特定仓序列可以映射至多于一个的代码字序列。在本发明的优选实施方式中,仓序列9至代码字10的映射为双射的。在本发明的又一优选实施方式中,仓编码器10或仓编码器中的一个或多个表示将可变长度的输入仓序列9直接映射至可变长度的代码字10的熵编码器。在本发明的优选实施方式中,输出代码字表示无冗余的代码,诸如一般的霍夫曼码或标准的霍夫曼码。
在表3中示出了仓序列至无冗余代码的双射映射的两个实例。在本发明的又一优选实施方式中,输出代码字表示适合用于错误检测及错误恢复的冗余代码。在本发明的又一优选实施方式中,输出代码字表示适合用于加密源符号的加密代码。
表3:仓序列与代码字间的映射的实例。
在本发明的又一优选实施方式中,仓编码器10或仓编码器中的一个或多个表示将可变长度的输入仓序列9直接映射至固定长度的代码字10的熵编码器。在本发明的又一优选实施方式中,仓编码器10或仓编码器中的一个或多个表示将固定长度的输入仓序列9直接映射至可变长度的代码字10的熵编码器。
图2示出了根据本发明实施方式的解码器。解码器基本上执行编码器的逆操作,从而(先前已编码的)源符号27序列从两个或多个部分位串流24的集合被解码。解码器包括两个不同的处理流:一个流用于数据请求,其复制编码器的数据流;及数据流,表示编码器数据流的逆。如图2中所示,虚线箭头表示数据请求流,而实线箭头表示数据流。解码器的构建模块基本上复制编码器的构建模块,但执行逆操作。
源符号的解码通过发送给二进制化器14的新的解码源符号的请求13而触发。在本发明的优选实施方式中,新的解码源符号的请求13的每一个与一个或多个类别集合中的类别相关联。与源符号的请求相关联的类别与在编码期间与对应的源符号相关联的类别相同。
二进制化器14将源符号的请求13映射至发送给参数分配器16的仓的一个或多个请求。作为通过二进制化器14发送给参数分配器16的仓的请求的最后响应,二进制化器14接收来自仓缓冲器选择器18的解码的仓26。二进制化器14将所接收的解码的仓26的序列与所请求的源符号的特定二进制化方案的仓序列进行比较,如果所接收的解码的仓26的序列与源符号的二进制化匹配,则二进制化器排空其仓缓冲器并作为对新的解码符号的最终响应而输出解码的源符号。如果已接收的解码的仓序列与所请求的源符号的特定二进制化方案的仓序列不匹配,则二进制化器向参数分配器发送另一个仓请求,直到解码的仓序列与所请求的源符号的特定二进制化方案的仓序列中的一个匹配为止。对于源符号的各项请求,解码器使用用来对相对应的源符号进行编码的相同二进制化方案。对于不同的源符号类别,二进制化方案可能不同。特定源符号类别的二进制化方案可取决于可能的源符号值集合和/或特定类别源符号的其它性质。
参数分配器将一个或多个参数集合分配给仓的各个请求,并将具有相关联的参数集合的仓的请求发送至仓缓冲器选择器。通过参数分配器分配给所请求的仓的参数集合在编码期间同样被分配给对应的仓。参数集合可由在编码器描述中所提及的参数中的一个或多个组成。
在本发明的优选实施方式中,参数分配器16将仓的各项请求与当前所请求的仓的两个可能仓值中的一个的概率估计值的测量值相关联。在本发明的又一优选实施方式中,参数分配器16将仓的各项请求与当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值,及指定两个可能仓值中的哪一个表示当前所请求的仓的较低概率或较高概率仓值的估计值的识别符相关联。
在本发明的又一优选实施方式中,参数分配器16将仓15、17的请求与当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值以及一个或多个另外的参数相关联。在本发明的又一优选实施方式中,参数分配器16将仓15、17的请求与当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值,指定两个可能仓值中的哪一个表示该当前仓的较低概率或较高概率仓值的估计值的识别符,以及一个或多个另外的参数(可以为以上列出的参数中的一个或多个)相关联。
在本发明的优选实施方式中,参数分配器16基于一个或多个已解码的符号的集合来确定上述概率测量值中的一个或多个(当前所请求的仓的两个可能仓值中的一个的概率估计值的测量值、当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值、指定两个可能仓值中的哪一个表示当前所请求的仓的较低概率或较高概率仓值的估计值的识别符)。用于仓的特定请求的概率测量值的确定复制用于对应的仓的编码器处的处理。用于确定概率测量值的解码的符号可包括相同符号类别的一个或多个解码的符号、对应于邻近的空间和/或时间位置(和与源符号的当前请求相关联的数据集合相关)的数据集合(诸如块或样本群组)的相同符号类别的一个或多个已解码的符号、或对应于相同和/或邻近的空间和/或时间位置(和与源符号的当前请求相关联的数据集合相关)的数据集合的不同符号类别的一个或多个已解码的符号。
作为参数分配器16的输出的具有相关联的参数集合17的仓的各项请求被馈至仓缓冲器选择器18。基于相关联的参数集合17,仓缓冲器选择器18将仓的请求19发送至两个或多个仓缓冲器20中的一个,并从所选的仓缓冲器20接收解码的仓25。解码的输入仓25被潜在地修改,而具有潜在地修改值的解码的输出仓26作为具有相关联的参数集合17的仓的请求的最终响应被发送给二进制化器14。
以与在编码器侧仓缓冲器选择器的输出仓所发送至的仓缓冲器相同的方式选择仓的请求所转发至的仓缓冲器20。
在本发明的优选实施方式中,仓缓冲器选择器18基于当前所请求的仓的两个可能仓值中的一个的概率估计值的测量值,确定仓的请求19所发送至的仓缓冲器20。在本发明的优选实施方式中,两个可能仓值中的一个的概率估计值的测量值的可能值的集合为有限的,及仓缓冲器选择器18包含将恰一个仓缓冲器20与两个可能仓值中的一个的概率估计值的各个可能值相关联的表,其中,两个可能仓值中的一个的概率估计值的测量值的不同值可与同一个仓缓冲器20相关联。在本发明的又一优选实施方式中,两个可能仓值中的一个的概率估计值的测量值的可能值范围被分割成多个区间,仓缓冲器选择器18确定两个可能仓值中的一个的概率估计值的当前测量值的区间指数,仓缓冲器选择器18包含将恰一个仓缓冲器20与区间指数的各个可能值相关联的表,其中,区间指数的不同值可与同一个仓缓冲器20相关联。在本发明的优选实施方式中,具有两个可能仓值中的一个的概率估计值的相反测量值(相反测量值表示概率估计值P及1-P的那些测量值)的仓的请求17被转发给同一个仓缓冲器20。在本发明的又一优选实施方式中,当前仓请求的两个可能仓值中的一个的概率估计值的测量值与一特定仓缓冲器的关联性随着时间而被调适。
在本发明的优选实施方式中,仓缓冲器选择器18基于当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值来确定仓的请求19所发送至的仓缓冲器20。在本发明的优选实施方式中,较低概率或较高概率仓值的概率估计值的测量值的可能值的集合为有限的,及仓缓冲器选择器18包含将恰一个仓缓冲器20与较低概率或较高概率仓值的概率估计值的各个可能值相关联的表,其中,较低概率或较高概率仓值的概率估计值的测量值的不同值可与同一个仓缓冲器20相关联。在本发明的又一优选实施方式中,较低概率或较高概率仓值的概率估计值的测量值的可能值的范围被分割成多个区间,仓缓冲器选择器18确定较低概率或较高概率仓值的概率估计值的当前测量值的区间指数,及仓缓冲器选择器18包含将恰一个仓缓冲器20与区间指数的各个可能值相关联的表,其中,区间指数的不同值可与同一个仓缓冲器20相关联。在本发明的又一优选实施方式中,当前仓请求的较低概率或较高概率仓值的概率估计值的测量值与特定仓缓冲器的关联性随着时间而被调适。
在从该所选的仓缓冲器20接收到解码的仓25后,仓缓冲器选择器18潜在地修改输入仓25并将具有潜在地修改值的输出仓26发送至二进制化器14。仓缓冲器选择器18的输入/输出仓映射为在编码器侧处的仓缓冲器选择器的输入/输出仓映射的逆。
在本发明的优选实施方式中,仓缓冲器选择器18并未修改仓值,即,输出仓26总是具有与输入仓25相同的值。
在本发明的又一优选实施方式中,仓缓冲器选择器18基于输入仓值25及与仓的请求17相关联的当前所请求的仓的两个可能仓值中的一个的概率估计值的测量值而确定输出仓值26。在本发明的优选实施方式中,如果当前仓请求的两个可能仓值中的一个的概率测量值小于(或小于或等于)特定临界值,则输出仓值26被设定为等于输入仓值25;如果当前仓请求的两个可能仓值中的一个的概率测量值大于或等于(或大于)特定临界值,则输出仓值26被修改(即,设定为与输入仓值相反)。在本发明的又一优选实施方式中,如果当前仓请求的两个可能仓值中的一个的概率测量值大于(或大于或等于)特定临界值,则输出仓值26被设定为等于输入仓值25;如果当前仓请求的两个可能仓值中的一个的概率测量值小于或等于(或小于)特定临界值,则输出仓值26被修改(即,设定为与输入仓值相反)。在本发明的优选实施方式中,临界值对应于两个可能仓值的估算概率的0.5值。
在本发明的又一优选实施方式中,仓缓冲器选择器18基于输入仓值25及与与仓的请求17相关联的识别符来确定输出仓值26,所述识别符指定两个可能仓值中的哪一个表示当前仓请求的较低概率或较高概率仓值的估计值。在本发明的优选实施方式中,如果识别符指定两个可能仓值中的第一个表示当前仓请求的较低概率(或较高概率)仓值,则输出仓值26被设定为等于输入仓值25;而如果识别符指定两个可能仓值中的第二个表示当前仓请求的较低概率(或较高概率)仓值,则输出仓值26被修改(即,设定为与输入仓值相反)。
如上所述,仓缓冲器选择器将仓的请求19发送至两个或多个仓缓冲器20中的一个。仓缓冲器20表示先进先出缓冲器,其被馈以来自连接的仓解码器22的解码的仓序列21。作为对从仓缓冲器选择器18发送至仓缓冲器20的仓的请求19的响应,仓缓冲器20移出先馈进仓缓冲器20的内容的所述仓,并将其发送至仓缓冲器选择器18。较早发送给仓缓冲器20的仓被较早地移出并被发送至仓缓冲器选择器18。
两个或多个仓缓冲器20中的每一个恰与一个仓解码器22连接,而各个仓解码器只与一个仓缓冲器20连接。各个仓解码器22从分开的部分位串流24读取表示位序列的代码字23。仓解码器将代码字23转换成发送至连接的仓缓冲器20的仓序列21。整个解码算法将两个或多个部分位串流24转换成多个解码的源符号,其中,部分位串流的数目等于仓缓冲器和仓解码器的数目,而源符号的解码通过新的源符号的请求而触发。在本发明的优选实施方式中,仓解码器22将可变位数目的代码字23转换成为可变仓数的序列21。本发明的实施方式的一个优点在于,从两个或多个部分位串流的仓解码可并列(例如,对于概率测量值的不同群组)进行,这减少了若干具体实现的处理时间。
本发明的实施方式的另一个优点在于,通过仓解码器22所进行的仓解码对于不同参数集合17可具体设计。具体地,对于不同的估算的概率群组,可以优化(就编码效率和/或复杂性而言)仓编码及解码。一方面,这允许相对于现有技术的具有相似编码效率的熵编码算法可以降低编码/解码复杂性。另一方面,这允许相对于现有技术的具有相似的编码/解码复杂性的熵编码算法可以提高编码效率。在本发明的优选实施方式中,仓解码器22对于当前仓请求的两个可能仓值17中的一个的概率估计值的测量值的不同群组执行不同的解码算法(即,仓序列至代码字的映射)。在本发明的又一优选实施方式中,仓解码器22对于当前所请求的仓的较低概率或较高概率仓值的概率估计值的测量值的不同群组执行不同的解码算法。在又一优选实施方式中,仓解码器22对于不同的通道保护代码执行不同的解码算法。在又一优选实施方式中,仓解码器22对于不同的加密方案执行不同的解码算法。在又一优选实施方式中,仓解码器22对于通道保护代码与当前所请求的仓的两个可能仓值17中的一个的概率估计值的测量值的群组的不同组合执行不同的解码算法。在又一优选实施方式中,仓解码器22对于通道保护代码与当前所请求的仓的较低概率或较高概率仓值17的概率估计值的测量值的群组的不同组合执行不同的解码算法。在又一优选实施方式中,仓解码器22对于加密方案与当前所请求的仓的两个可能仓值17中的一个的概率估计值的测量值的群组的不同组合执行不同的解码算法。在又一优选实施方式中,仓解码器22对于加密方案与当前所请求仓的较低概率或较高概率仓值17的概率估计值的测量值的群组的不同组合执行不同的解码算法。
仓解码器22执行在编码器处的对应仓编码器的逆映射。
在本发明的优选实施方式中,仓解码器22或仓解码器中的一个或多个表示二元算术解码引擎。
在本发明的又一优选实施方式中,仓解码器22或仓解码器中的一个或多个表示将代码字23直接映射至仓序列21的熵解码器。这样的映射可被有效地实现而不要求复杂的算术编码引擎。代码字映射至仓序列的映射必须是唯一的。在本发明的优选实施方式中,代码字23映射至仓序列21的映射为双射的。在本发明的又一优选实施方式中,仓解码器10或仓解码器中的一个或多个表示将可变长度的代码字23直接映射至可变长度的仓序列21的熵解码器。在本发明的优选实施方式中,输出代码字表示无冗余代码,诸如一般的霍夫曼码或标准的霍夫曼码。表3中示出了用于无冗余代码至仓序列的双射映射的实例。在本发明的又一优选实施方式中,输出代码字表示适合于错误检测和错误恢复的冗余代码。在本发明的又一优选实施方式中,输出代码字表示加密代码。
在本发明的又一优选实施方式中,仓解码器22或仓解码器中的一个或多个表示将固定长度的代码字23直接映射至可变长度的仓序列21的熵解码器。在本发明的又一优选实施方式中,仓解码器22或仓解码器中的一个或多个表示将可变长度的代码字23直接映射至固定长度的仓序列21的熵解码器。
因此,图1和图2示出了用来编码符号序列3的编码器和用来重建符号序列的解码器的实施方式。编码器包含被配置为将多个参数5分配给符号序列的每个的分配器4。所述分配基于包含在所述符号序列的先前符号的信息,诸如语法元素1的类别而分配给当前符号所属的表示诸如二进制化,及根据语法元素1的语法结构,所述表示是当前预期的,该预期又可从先前语法元素1和符号3的历史来推定。此外,编码器包含多个熵编码器10和选择器6,所述熵编码器的每个被配置为将转发给各个熵编码器的符号3转换成各个位串流12,所述选择器被配置为将各个符号3转发至多个熵编码器10中的所选择的一个,所述选择取决于分配给各个符号3参数5的数目。用于重建符号序列的解码器包括:多个熵解码器22,每个熵解码器被配置为将各个位串流23转换成符号21;分配器16,被配置为基于包含在符号序列的先前重建的符号中的信息(参考第2图的26及27)将多个参数17分配给将被重建的序列符号的各个符号15;以及选择器18,被配置为从多个熵解码器22中的所选择的一个恢复将被重建的符号序列的各个符号,所述选择取决于限定至各个符号的参数数目。分配器16可被配置为使得分配给各符号的参数数目包含或为各个符号可推定的多个可能符号值中的概率分布估计值的测量值。将被重建的符号序列可以是二元字母表,分配器16可被配置为使得概率分布的估计值由该二元字母表的两个可能仓值的较低概率或较高概率仓值的概率估计值的测量值和指定两个可能仓值中的哪一个表示较低概率或较高概率仓值的估计值的识别符所组成。分配器16进一步可被配置为基于包含在将被重建的符号序列的先前重建的符号(各上下文具有与其相关联的各个概率分布估计值)内的信息而将上下文内部分配给将被重建的符号序列15的各个符号;以及基于各个上下文被分配至的先前重建的符号的符号值将每个上下文的概率分布估计值调适至实际符号统计值。所述上下文可考虑语法元素所属的位置诸如视频或图像编码,或甚至在财务应用的情况的表中的空间关系或邻近关系。然后,基于与分配给各个符号的上下文相关联的概率分布估计值,诸如通过将与分配给各个符号的上下文相关联的概率分布估计值量化为多个概率分布估计值表示中的一个来确定每个符号的概率分布的估计值的测量值,以获得所述概率分布的估计值的测量值。选择器可被配置为使得在多个熵编码器与多个概率分布估计值表示之间定义双射关联性。选择器18可被配置为根据该符号序列的先前重建的符号,以预定的确定性方式,随着时间而将量化映射从概率分布估计值的范围改变至多个概率分布估计值表示。即,选择器18可改变量化步幅大小,即,映射至与各个熵解码器双射地相关联的各个概率指数的概率分布的区间。多个熵解码器22由此可被配置为响应于量化映射的改变而调适它们的将符号转换成位串流的方式。例如,各个熵解码器22可以被优化为(即,可以具有最佳的压缩速率)用于在各个概率分布估计值量化区间内的某个概率分布估计值;并且可改变其代码字/符号序列映射,从而当各个概率分布估计值量化区间改变时,调适该某个概率分布估计值在该区间内的位置而被优化。选择器可被配置为改变量化映射,使得符号从多个熵解码器被恢复的速率变得较少分散。至于二进制化器14,应该注意的是,如果语法元素已经为二元则可保留。此外,根据熵解码器22的类型,缓冲器20的存在并不是必要的。此外,缓冲器可以集成在解码器内。
有限源符号序列的中断
在本发明的优选实施方式中,对有限的源符号集合进行编码和解码。通常一定量的数据诸如静态图像、视频序列的帧或字段、图像的片段、视频序列的帧或字段的片段、或连续音频样本的集合是编码的。通常,对于有限的源符号集合,在编码器侧处所形成的部分位串流必须被中断,即,必须确保全部源符号可从所传输的或所存储的部分位串流解码。在最后的仓被***对应的仓缓冲器8之后,仓编码器10必须确保完整的代码字被写至部分位串流12。如果仓编码器10表示二元算术编码引擎,则算术代码字必须被中断。如果仓编码器10表示执行仓序列至代码字的直接映射的熵编码器,则在将最后的仓写至仓缓冲器之后,存储在仓缓冲器的仓序列可能不能表示与代码字相关联的仓序列(即,其可能表示与代码字相关联的两个或多个仓序列的前缀)。在这样的情况下,与包含仓缓冲器中作为前缀的仓序列的仓序列相关联的任何代码字必须被写至部分位串流(仓缓冲器必须被刷新(flushed))。这可以通过将具有特定值或任意值的仓***仓缓冲器内直至代码字被写入为止来进行。在本发明的优选实施方式中,仓编码器选择具有最小长度(除了相关联的仓序列必须包含仓缓冲器中作为前缀的仓序列的性质之外)的代码字中的一个。在解码器侧,仓解码器22可解码比部分位串流中的最后一个代码字所需要的要多的仓;这些仓并未由仓缓冲器选择器18所请求从而被舍弃和忽略。有限的符号集合的解码通过解码的源符号的请求来控制;如果不再请求源符号某个数据量,则中断解码。
部分位串流的传输及多路复用
由编码器所形成的部分位串流12可分开地传输,或可多路复用成为单一位串流,或部分位串流的代码字在单一位串流中可以被交插。
在比较性实施方式中,一些数据的各部分位串流被写至一个数据包。这些数据可以是源符号的任意集合,诸如静态图片、视频序列的帧或字段、图片的片段、视频序列的帧或字段的片段、或音频样本的帧等。
在另一比较性实施方式中,一些数据的两个或多个部分位串流或一些数据的全部部分位串流被多路复用至一个数据包。在图3中示出了包含多路复用的部分位串流的数据包的结构。
数据包100由报头和各部分位串流(所考虑的数据量)的数据的一个分割所组成。数据包的报头101包含将数据包(的其余部分)分割成多个位串流数据片段102的标识。除了分割标识外,报头可包含另外的信息。在比较性实施方式中,数据包的分割标识为以位或字节或多个位或多个字节为单位的数据片段起点的位置。在又一比较性实施方式中,数据片段起点的位置相对于数据包起点、或相对于报头终点、或相对于先前数据包的起点被编码为数据包报头中的绝对值。在又一比较性实施方式中,数据片段起点的位置被差分地编码,即,只对数据片段的实际起点与数据片段起点的预测之间的差值进行编码。可基于已知信息或传输的信息,诸如数据包的总体大小、报头大小、数据包内的数据片段的数目、前一个数据片段起点的位置而得到所述预测。在比较性实施方式中,第一数据包起点的位置没有被编码,但基于数据包报头大小而被推定。在解码器侧,所传输的分割标识用来获得数据片段起点。然后,数据片段用作为部分位串流,及包含在数据片段中的数据被顺序地馈进对应的仓解码器。
对于将部分位串流多路复用成数据包有若干可选的方法。在图4中示出了特别对于其中部分位串流的大小极为相似的情况的可减少所要求的侧边信息的一种可选方法。数据包的有效载荷,即,数据包110的除了其报头111之外以预定方式而被分割成多个片段112。作为一个实例,数据包的有效载荷可被分割成为具有相同大小的片段。然后各片段与部分位串流或与部分位串流113的第一部分相关联。如果部分位串流大于相关联的数据片段,则其其余部分114被放置在其它数据片段末端的未用空间中。这可以以如下方式进行:位串流的其余部分以逆序(始于数据片段的末端)***,从而减少侧边信息。部分位串流的其余部分与数据片段相关联,以及当多于一个其余部分被加至数据片段时,其余部分中的一个或多个的起点必须在位串流内部,例如,在数据包报头中信号通知。
可变长度的代码字的交插
对于一些应用,上述在一个数据包的部分位串流(对于定量源符号)的多路复用可具有下列缺点:一方面,对于小型数据包,用来发送分割信号所要求的侧边信息的位的数目相对于部分位串流中的实际数据可能变显著,这最终降低了编码效率。另一方面,多路复用可能不适合要求低延迟的应用(例如用于视频会议应用)。通过前述多路复用,在部分位串流已经完全形成前,编码器无法开始数据包的传输,原因在于分割起点位置在之前并不是已知的。此外,一般而言,解码器必须等候直到其接收到最后的数据片段的起点,随后才可开始数据包的解码。对于作为视频会议***的应用,这些延迟更增加***若干视频图像的总体延迟(特别对于接近传输位率的位率,及对于要求二图像之间的时间区间接近以用于编码/解码图片的编码器/解码器),其对这样的应用至关重要。为了克服某些应用的缺点,比较性实施方式的编码器可以下述方式配置,由两个或多个仓编码器所产生的代码字被交插成单一位串流。具有交插代码字的位串流可直接发送至解码器(当忽略小的缓冲延迟时,见下文)。在解码器侧,两个或多个仓解码器以解码顺序直接从位串流读取代码字;解码可始于第一所接收的位。此外,不要求侧边信息以用来发送部分位串流的多路复用(或交插)的信号。
图5中示出了具有代码字交插的编码器的基本结构。仓编码器10并未将代码字直接写至部分位串流,反而被连接单一代码字缓冲器29,从该代码字缓冲器代码字以编码顺序而被写至位串流34。仓编码器10向代码字缓冲器29发送一个或多个新的代码字缓冲器条目的请求28,随后向代码字缓冲器29发送代码字30,其存储在所保留的缓冲器条目中。代码字缓冲器29的(通常为可变长度的)代码字31由代码字写入器32访问,其将对应的位33写至所产生的位串流34。代码字缓冲器29操作为先进先出缓冲器;较早保留的代码字条目被较早地被写至位串流。
在更一般的情况中,多个代码字缓冲器和部分位串流是可能的,其中,代码字缓冲器的数目少于仓编码器的数目。仓编码器10在代码字缓冲器29保留一个或多个代码字,从而在代码字缓冲器保留一个或多个代码字通过连接的仓缓冲器8内的某个事件触发。在比较性实施方式中,代码字缓冲器29以解码器可瞬时地解码位串流的方式操作。其中,代码字被写至位串流的编码顺序与对应的代码字被保留在代码字缓冲器的顺序相同。在本发明的优选实施方式中,各个仓编码器10保留一个代码字,而保留通过所连接的仓缓冲器内的某个事件触发。在本发明的另一优选实施方式中,各个仓编码器10保留多于一个代码字,而保留通过所连接的仓缓冲器内的某个事件触发。在又一比较性实施方式中,仓编码器10保留不同数量的代码字,其中,由特定仓编码器所保留的代码字的数量可取决于特定仓编码器和/或特定仓编码器/仓缓冲器的其它性质(诸如相关联的概率测量值、已写的位的数目等)。
在又一比较性实施方式中,代码字缓冲器操作如下。如果将新仓7发送至特定仓缓冲器8,而已存储在仓缓冲器的仓数目为零,且对于与特定仓缓冲器连接的仓编码器,当前并无任何代码字保留在代码字缓冲器中,则所连接的仓编码器10将请求发送给代码字缓冲器,通过此,对于特定仓编码器,一个或多个代码字条目被保留在代码字缓冲器29中。代码字条目可具有可变的位数目;缓冲条目中的位的数目的上限临界值通常由对应的仓编码器的最大代码字大小来给定。由仓编码器所产生的下一个代码字或接下来的多个代码字(已保留代码字条目)被保留在代码字缓冲器的所保留的一个或多个条目内。如果对于特定仓编码器在代码字缓冲器内的全部所保留的缓冲器条目由代码字填充,且下一个仓被发送至连接该特定仓编码器的仓缓冲器,则一个或多个新代码字被保留在该特定仓编码器的代码字缓冲器等中。代码字缓冲器29表示以某种方式的先进先出缓冲器。缓冲器条目被顺序保留。对于对应的缓冲器条目较早被保留的代码字较早地被写至位串流。代码字写入器32连续地或在代码字30被写至代码字缓冲器29之后检查代码字缓冲器29的状态。如果第一缓冲器条目包含完整的代码字(即该缓冲器条目未被保留,而是含括代码字),则对应的代码字31和对应的缓冲器条目从代码字缓冲器20被移出,及代码字33的位被写至位串流。该处理程序重复直到第一缓冲器条目不含代码字为止(即其被保留或为不含)。解码处理结束时,即,如果相当大量数据的全部源符号已经被处理时,代码字缓冲器必须被刷新。对于所述刷新处理,以下适用于各个仓缓冲器/仓编码器作为第一步:如果该仓缓冲器确实包含仓,则增加具有特定值或任意值的仓,直到所得仓序列表示与代码字相关联的仓序列为止(如前所述,增加仓的优选方式为增加产生最短可能代码字或其中的一个的这样的仓值——其与包含仓缓冲器的原始内容作为前缀的仓序列相关联),然后代码字被写至用于对应的仓编码器的下一个保留的缓冲器(且对应的仓缓冲器被排空)。若对于一个或多个仓编码器已经保留多于一个缓冲器条目,代码字缓冲器仍然包含保留的代码字条目。在这种情况下,这些代码字条目以对应的仓编码器的任意但有效的代码字填充。在又一比较性实施方式中,***最短有效代码字或最短有效代码字(如果有多者)中的一个。最后,在代码字缓冲器中的全部其余代码字被写至位串流。
在图6中示出了代码字缓冲器的状态的两个实例。在实例(a)中,代码字缓冲器包含以代码字填充的2个条目和5个保留条目。此外,下一个自由缓冲器条目被标示。第一条目以代码字(即,仓编码器2只将一个代码字写至先前保留的条目)填充。在接下来的步骤中,该代码字将从代码字缓冲器被移出并被写至位串流。然后,仓编码器3的第一保留代码字为第一缓冲器条目,但此条目无法从代码字缓冲器移出,原因在于其只保留,但无任何代码字已写至该条目。在实例(b)中,代码字缓冲器包含以代码字填充的3个条目和4个保留条目。第一条目被标示为保留,因此,代码字写入器无法将代码字写至位串流。尽管代码字缓冲器包含3个代码字,但代码字写入器必须等候直到代码字被写至仓编码器3的第一保留缓冲器条目。注意代码字须以其保留的顺序写入以能够反转在解码器侧的处理(见下文)。
图7示出了具有代码字交插的解码器的基本结构。仓解码器10并未从分离的部分位串流直接读取代码字,而是连接至位缓冲器38,从该位缓冲器,代码字37被以编码顺序读取。应该注意的是,位缓冲器38并不是必须的,原因在于代码字也可从位串流直接被读取。位缓冲器38主要包含在用来清楚地分开处理链的不同方面的示例中。具有交插代码字的位串流40的位39被顺序地***表示先进先出缓冲器的位缓冲器38。如果特定仓解码器22接收到一个或多个仓序列的请求35,仓解码器22经由位的请求36而从位缓冲器38读取一个或多个代码字37。解码器可瞬时解码源符号。注意,编码器(如前述)通过适当地操作代码字缓冲器必须确保代码字以其被仓解码器所请求的相同顺序而写入位串流。在解码器处,整个解码处理通过源符号的请求而触发。作为通过特定仓编码器在编码器侧保留的代码字的数目和由对应的仓编码器读取的代码字的数目的参数必须相同。
在更一般的情况中,多个代码字缓冲器和部分位串流是可能的,其中,位缓冲器的数目须小于仓解码器的数目。仓解码器22在一个时间瞬间从位缓冲器38读取一个或多个代码字,从而,从该位缓冲器读取一个或多个代码字通过在所连接的仓缓冲器20内的某些事件触发。在又一比较性实施方式中,解码器以下述方式操作,当仓的请求19被发送给特定仓缓冲器20且仓缓冲器不含任何仓时,读取一个或多个代码字。但也可以通过其它事件触发代码字的读取,例如,如果仓缓冲器中的仓的数目低于预定临界值。在又一比较性实施方式中,各个仓解码器22读取一个代码字,而读取通过所连接的仓缓冲器20内的某些事件触发。在另一比较性实施方式中,各个仓解码器22读取多于一个代码字,而读取通过所连接的仓缓冲器内的某个事件触发。在又一比较性实施方式中,仓解码器22读取不同数量的代码字,其中,通过特定仓解码器读取的代码字的数量可取决于特定仓解码器和/或该特定仓解码器/仓缓冲器的其它性质(诸如相关联的概率测量值、已读取的位的数目等)。
在比较性实施方式中,从位缓冲器读取代码字操作如下。如果新的仓请求19被从仓缓冲器选择器18发送至特定仓缓冲器20,且该仓缓冲器内的仓的数目为零,则所连接的仓解码器22经由至位缓冲器38的位请求36从位缓冲器38读取一个或多个代码字37。仓解码器22将所读取的代码字37转换成仓序列21并将这些仓序列存储在所连接的仓缓冲器20中。作为对于仓的请求19的最后响应,第一***的仓被从仓缓冲器20中移出并被发送至仓缓冲器选择器18。作为另外的仓请求的响应,在仓缓冲器内的剩余仓被移出直至仓缓冲器排空为止。另外仓请求触发仓解码器从仓缓冲器等读取一个或多个新的代码字。位缓冲器38表示具有预定大小的先进先出缓冲器,且以来自位串流40的位39被连续地填充。为了确保代码字以其被解码处理所要求的相同方式写至位串流,在编码器侧处的代码字缓冲器以前述方式操作。
因此,多个熵解码器的每个可以是可变长度的解码器,其被配置为将固定长度的代码字映射至可变长度的符号序列,及可以提供诸如代码字缓冲器43的输出的代码字条目以用来接收交插代码字的单一串流。多个仓解码器22可被配置为取决于其中将被重建的符号序列中的符号通过选择器18而从多个熵解码器恢复的顺序,而顺序从代码字条目恢复代码字,结果导致在各个熵解码器处将从新的代码字映射而得到的新符号序列。
具有低延迟约束的可变长度的代码字的交插
所述代码字交插并不要求发送任何分割信息作为侧边信息。由于代码字在位串流内交插,故延迟通常为很小。但不能保证遵守特定的延迟约束(例如,通过存储在代码字缓冲器的最大位的数目指定)。此外,对于代码字缓冲器所要求的缓冲器大小理论上变得非常大。当考虑图6(b)的实例时,可能无需向仓缓冲器3发送另外的仓,因此仓编码器3将不会将任何新的代码字发送给代码字缓冲器直到在数据包的结束处施加刷新处理为止。然后,仓编码器1和2的全部代码字在它们可被写至位串流前,必须等候直到数据包的结束。该确定可以通过向编码处理(及也向后述的解码处理)添加另外的机制而被克服。另外机制的基本构想为,如果与延迟或延迟上限相关的测量值(参见下文)超过规定的临界值,则第一保留缓冲器条目通过刷新对应的仓缓冲器(使用与数据包的结束处相似的机制)而被填充。通过这样的机制,等候中的缓冲器条目的数目减少直至相关联的延迟测量值小于规定的临界值。在解码器侧,已经在编码器侧处***的仓须被舍弃来遵守延迟约束。对于种仓的这种舍弃,基本上可使用在编码器侧处的相同机制。在下文中描述了用于这样的延迟控制的两个比较性实施方式。
在一个比较性实施方式中,延迟(或延迟上限)的测量值为在代码字缓冲器中的激活的缓冲器条目的数目,其中,激活的缓冲器条目的数目为保留的缓冲器条目的数目加上包含代码字的缓冲器条目的数目。注意,第一缓冲器条目通常为保留缓冲器条目或自由缓冲器条目,原因在于如果第一缓冲器条目包含一代码字,则此代码字被写至位串流。例如,如果最大容许缓冲器延迟(由应用确定)为D位,且全部仓编码器的最大代码字大小为L,则可包含在代码字缓冲器而未违反延迟约束的最大代码字的数目下限可由N=D/L求出。以位表示的延迟测量值D并非***所要求,但代码字的最大数目N须为编码器和解码器二者所已知。在又一比较性实施方式中,代码字缓冲器条目的最大数目N由应用固定。在另一比较性实施方式中,代码字缓冲器条目的最大数目N在位串流内被信号通知,例如,在数据包报头(或片段报头)或在包含在位串流中的参数集合中被信号通知。如果仓编码器10向代码字缓冲器29发送保留一个或多个新代码字缓冲器条目的请求,则在保留新代码字缓冲器条目之前执行下述处理(即,如果由一个请求而保留多个代码字缓冲器条目,则执行多次):如果当前激活的缓冲器条目的数目加1(考虑接下来将被保留的缓冲器条目)大于代码字缓冲器条目的最大数目N,则第一缓冲器条目(其被保留)通过以下描述的处理被刷新,直至当前激活的缓冲器条目的数目加1小于或等于代码字缓冲器条目的最大数目N为止。保留的缓冲器条目的刷新类似在数据包的结束处的刷新:已经保留对应的第一缓冲器条目的仓编码器10通过将具有特定值或任意值的仓添加至所连接的仓缓冲器8直至所得仓序列表示与代码字相关联的仓序列而刷新,然后代码字被写至所保留的缓冲器条目,及其最终被添加至位串流(同时排空仓缓冲器并移出先前所保留的缓冲器条目)。如前所述,将仓加至仓缓冲器的一种优选方式为添加产生最短可能代码字的那些仓。在解码器侧,执行类似处理来舍弃已添加的仓而遵守延迟约束。因此,解码器保持对已经从仓缓冲器读取的代码字进行计数计数器C(该计数器可保持在位缓冲器中)。该计数器C在数据包解码的起点处被初始化(例如,使用零),而在代码字被读取后递增1。此外,各个仓解码器22包含计数器Cx,其存储在最后一个代码字被对应的仓解码器22读取前的代码字计数器C的值。即,当特定仓解码器22读取新的代码字时,作为第一步,其计数器Cx被设定为等于C,然后从位缓冲器读取代码字。当仓的请求19被发送给特定仓缓冲器20且总代码字计数器C与所连接的仓解码器22的计数器Cx之间的差(C-Cx)大于代码字缓冲器条目的最大数目N时,当前存储在特定仓缓冲器20中的全部仓都被舍弃和忽略。除了其他的步骤之外,解码如前述地操作。如果仓的请求19所发送至的仓缓冲器20被排空(或因全部仓都已经被移出,或因在接收到仓请求之后的第一步中低延迟机制确实舍弃了全部仓),则所连接的仓解码器22从位缓冲器38等读取一个或多个新的代码字。
在另一比较性实施方式中,延迟的测量值(或延迟上限)为在代码字缓冲器中的激活的缓冲器条目的最大代码字长度之和,其中,特定缓冲器条目的最大代码字长度取决于与该缓冲器条目相关联的解码仓。如图所示,缓冲器条目的最大代码字长度在实例中表示为6。再次需要注意的是,第一缓冲器条目通常为保留缓冲器条目或自由缓冲器条目,原因在于,如果第一缓冲器条目包含代码字,则此代码字被写至位串流。设最大容许缓冲器延迟(如应用所确定)为D位。该最大缓冲器延迟D须为编码器和解码器二者所已知。在又一比较性实施方式中,最大缓冲器延迟D由应用所固定。在另一比较性实施方式中,最大缓冲器延迟D在位串流内被信号通知,例如,在包含在位串流的数据包报头(或片段报头)或在参数集合中被信号通知。可以位、或字节、或多个位、或多个字节为单位来进行信号通知。如果仓编码器10向代码字缓冲器29发送保留一个或多个新缓冲器条目的请求,则在新代码字缓冲器条目被保留之前执行以下处理(即如果多个代码字缓冲器条目通过一个请求而保留,则执行多次)。
如果全部当前激活的缓冲器条目的最大代码字长度加上将被保留的缓冲器条目的最大代码字长度的和大于最大缓冲器延迟D,则第一缓冲器条目(其被保留)通过前述处理被刷新,直到全部激活的缓冲器条目的最大代码字长度加上将被保留的缓冲器条目的最大代码字长度的和小于或等于最大缓冲器延迟D。作为实例,考虑图6(b)中的实例。全部当前激活的缓冲器条目的最大代码字长度的和为29。假设最大缓冲器延迟D被设定为等于32。如果由仓编码器2所保留的下一个缓冲器条目的最大代码字长度等于3,则第一缓冲器条目未被刷新,原因在于29+3不大于32。但如果由仓编码器1所保留的下一个缓冲器条目的最大代码字长度等于7,则第一缓冲器条目被刷新,原因在于29+7大于32。保留的缓冲器条目的刷新如前述进行(通过将具有特定值或任意值的仓添加至对应的仓缓冲器)。
在解码器侧,执行类似处理程序来舍弃已经被添加的仓而遵守延迟约束。因此,解码器保持对已经从位缓冲器读取的代码字的最大代码字长度进行计数的计数器C(该计数器可保持在位缓冲器)。注意,与不同仓解码器相关联的最大代码字长度可以是不同的。计数器C在数据包解码的起点被初始化(例如以零),并在代码字被读取之后增加。该计数器并不增加读取的代码字的实际长度,而增加其最大长度。即,如果代码字由特定仓解码器读取,且与由该特定仓解码器所使用的代码字表相关联的最大代码字长度为Lx(不同仓解码器可与不同最大代码字长度相关联),则计数器C增加Lx。除了总计数器C外,各个仓解码器22包含存储在最后一个代码字由对应的仓解码器22读取之前的代码字计数器C的值的计数器Cx。即,当特定仓解码器22读取新代码字时,作为第一步,其计数器Cx被设定为等于C,然后从位缓冲器读取代码字。当仓的请求19被发送给特定仓缓冲器20且总计数器C与所连接的仓解码器22的计数器Cx之间的差(C-Cx)大于最大缓冲器延迟D时,当前存储在特定仓缓冲器20的全部仓都被舍弃并忽略。除了其他步骤之外,如前述操作操作解码。当仓的请求19所发送至的仓缓冲器20被排空时(或因全部仓已经被被移出,或因在接收到仓请求之后的第一步中低延迟机制确实舍弃全部仓),所连接的仓解码器22从位缓冲器38等读取一个或多个新代码字。
因此,多个熵解码器22和选择器18可被配置为间歇地舍弃符号序列的后缀,从而不参与将被重建的符号序列29的形成。间歇地舍弃可在下述情况下执行,在各个熵解码器从代码字条目的连续两次代码字恢复之间,通过多个熵解码器已经从代码字条目恢复的多个代码字满足预定标准。因此所述多个熵编码器和代码字缓冲器可被配置为通过具有当前已转发的但尚未映射的符号作为前缀的随意(don’t-care)符号,间歇地将当前已转发的但尚未映射的符号扩展为有效符号序列;将由此扩展的之符号序列映射至代码字;将由此所得代码字***保留的代码字条目;并刷新代码字条目。间歇地扩展、***及刷新可在保留的代码字条目的数目加上具有代码字***其中的代码字条目的数目满足预定标准的情况下进行。该预定标准可考虑多个编码器/解码器对的最大代码字长度。
对于一些结构,就解码复杂性而言,前述代码字交插的比较性实施方式可能导致缺点。如图7所示,全部仓解码器22从单一位缓冲器38读取代码字(一般情况下,可变长度的代码字)。代码字的读取无法并列进行,原因在于代码字必须以正确的顺序读取。这意味着,特定仓解码器必须等候直到其它仓解码器完成代码字的读取。当可变长度的代码字的读取复杂性相对于解码处理的其余部分(部分并列)为重要的时,这样的可变长度的代码字的访问可能成为整个解码处理的瓶颈。存在可采用来用来降低从单一仓缓冲器访问的复杂性的所描述比较性实施方式的一些变形,在下文中,将描述它们中的一些。在一个比较性实施方式中,存在单一代码字集合(例如表示不含冗余前缀码),用于各个仓解码器22的代码字集合为该单一代码字集合的子集。注意,不同的仓解码器22可使用该单一代码字集合的不同的子集。即使由若干仓解码器22所使用的代码字集合为相同,但其与仓序列的关联性对于不同仓解码器22为不同的。在特定比较性实施方式中,同一个代码字集合被用于全部仓解码器22。如果我们有包括作为子集合的用于全部仓解码器的代码字集合的单一代码字集合,则代码字的剖析可在仓解码器外部进行,这可降低代码字访问的复杂性。相对于上述处理,编码处理是不变的。在图8中示出了修改的解码处理。单一代码字读取器被馈以来自位串流40的位46,及剖析通常为可变长度的代码字。所读取的代码字44被***表示先进先出缓冲器的代码字缓冲器43。仓解码器22向代码字缓冲器43发送一个或多个代码字的请求41,作为对该请求的响应,一个或多个代码字从代码字缓冲器(依序)被移出,并发送给对应的仓解码器22。注意,通过该比较性实施方式,潜在地复杂代码字剖析可在背景处理中进行,而无需等候仓解码器。仓解码器访问已经剖析代码字,潜在地复杂代码字剖析不再成为总个缓冲器请求的一部分。取代已经剖析的代码字被发送给仓解码器,其也可以只有代码字指数被发送给仓解码器的方式来实现。
固定长度位序列的交插
当仓解码器22没有从通用位缓冲器38读取可变长度代码字,而是它们通常从通用位缓冲器38读取固定长度位序列并将这些固定长度位序列添加至本地位缓冲器(其中,每个仓解码器22与分开的本地位缓冲器连接)时,可以获得降低解码器复杂性的另外的方式。然后从该本地位缓冲器读取可变长度代码字。因此,可变长度代码字的剖析可并列进行,只有固定长度位序列的访问必须以同步方式进行,但这样的固定长度位序列的访问通常极为快速,从而,对于某些结构,可降低整个解码复杂性。
发送给特定本地位缓冲器的固定的仓数目可因不同本地位缓冲器而异,也可随着时间而异,取决于在仓解码器、仓缓冲器、或位缓冲器中的某些参数。然而,通过特定访问而读取的位数目并未取决于在特定存取期间所读取的实际位,这是与可变长度代码字读取的重要差异。固定长度位序列的读取通过在位缓冲器、位解码器、或本地位缓冲器种的某些事件而触发。作为一个实例,当存在于所连接的位缓冲器的位数目降至低于预定临界值时,可请求读取新固定长度位序列,其中,不同临界值可用于不同位缓冲器。在编码器处,必须确保固定长度位序列以相同顺序***位串流,其中,它们在解码器侧从位串流读取。类似于前述实施方式,也可将该固定长度位序列的交插与低延迟控制组合。在下文中,描述了用于固定长度位序列的交插的优选实施方式。
图9为示出了对两个或多个仓编码器交插固定长度位序列的本发明实施方式的基本编码器结构的示图。与图5中所示的实施方式相比,仓编码器10并未连接单一代码字缓冲器。而是各个仓编码器10与存储对应部分位串流的位的分开的位缓冲器48相连接。全部位缓冲器48被连接至通用位缓冲器51。通用位缓冲器51被连接至位写入器53,所述位写入器以编码/解码顺序从通用位缓冲器移出仓52并将所移出的仓54写至位串流55。在某些情况下,在特定位缓冲器48或所连接的仓编码器10或仓缓冲器8中,位缓冲器48向通用位缓冲器51发送请求49,通过所述请求一定数目的位被保留在通用位缓冲器51中。保留固定长度位序列的请求49以顺序被处理。通用位缓冲器51以某种方式表示先进先出缓冲器;较早保留的位被较早写至位串流。应该注意的是,不同位缓冲器48可保留不同量的位,也可根据已编码的符号而随着时间改变;但通过特定请求而保留的位数目在该请求被发送至通用位缓冲器时为已知。
在本发明的特定实施方式中,位缓冲器48和通用位缓冲器51的操作如下文所详细描述的。如上所述,根据图9中实施方式,熵编码器为可变长度编码器,被配置为将符号序列映射至比相应最大位长Lx更短或与相应最大位长Lx一样长的代码字。使用哪个VLC代码并不重要。
由特定位缓冲器48所保留的位的量由Nx标示。该位的数目Nx对于不同的位缓冲器48可以是不同的且可随着时间而改变。在本发明的优选实施方式中,由该定特位缓冲器48所保留的位数目Nx可随着时间是固定的。
位49的固定数目Nx的保留基于位缓冲器48中的位数目Mx、保留请求的位数目Nx、存储于位缓冲器中的预期最小代码字数目Cx及相关联的最大代码字长度Lx而触发。
注意,Cx=0使最高编码效率成为可能,因为它使用最新可能性来保留新固定长度序列,这降低了不必要保留的概率,因此这会导致刷新。然而,对于基于硬件的解码器实施,较高值是可以期望的。在Cx=1情况下,至少一个完整代码字在位缓冲器中为可用的,并且单仓请求可以一直进行回答,而无需使管线停止,以重新填充位缓冲器。也请注意,每个仓编码器10可与不同最大代码字长度Lx相关联,并且应当满足Nx≥max((Cx+1)*Lx-1,Lx)。
如果仓7被发送给特定仓缓冲器8且该特定仓缓冲器8为空,并且无Nx位序列保留在与特定仓缓冲器(经由仓编码器)连接的位缓冲器48的通用位缓冲器中,那么所连接的位缓冲器49发送Nx位保留请求49给通用位缓冲器51。否则,如果仓7被发送给特定仓缓冲器8且该特定仓缓冲器8为空,并且只有一个Nx位序列保留与特定仓缓冲器(经由仓编码器)连接的位缓冲器48的通用位缓冲器中,并且由与特定仓缓冲器8(经由仓编码器)连接的位缓冲器48的保留请求所保留的位数目Nx与当前存在于位缓冲器48的位数目Mx间之差Nx-Mx小于与对应仓编码器10相关联的最大代码字长度Lx乘以预期代码字数目Cx加上1(Nx-Mx<(Cx+1)*Lx),那么所连接的位缓冲器49向通用位缓冲器51发送Nx位的保留的请求49。通用位缓冲器51对于该特定位缓冲器48保留Nx位,并递增下次保留的指标。在Nx位已经保留在通用位缓冲器之后,仓7被存储在仓缓冲器8中。如果该单一仓确实已经表示与代码字相关联的仓序列,则仓编码器10从仓缓冲器8去处该仓,且将对应的代码字47写至所连接的位缓冲器48。否则(该单一仓确实已经表示与代码字相关联的仓序列),另外的仓7由特定仓缓冲器8接受直到仓缓冲器8包含与代码字相关联放入仓序列。在这种情况下,所连接的仓编码器10从仓缓冲器8去处仓序列9并将对应的代码字47写至所连接的位缓冲器48。如果在位缓冲器48所得的位数目Mx大于或等于保留的位数目Nx,则先写至位缓冲器48的Nx位被***在通用位缓冲器51中先前保留的空间。对于发送给特定位缓冲器48的下一个仓7,执行前文指定的相同处理;即,首先检查新的位数目Nx是否须保留在通用位缓冲器中(如果Nx-Mx小于(Cx+1)*Lx),然后该仓被***仓缓冲器8等。
换言之,一般地,通用缓冲器51被配置为根据多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留这些份额条目的序列,即,长度Nx的位序列。相应地,触发如上所述进行。即,在由选择器6转发至所述多个熵编码器10的符号序列的符号导致新符号序列开始映射至相应熵编码器10处的代码字时,多个熵编码器10及相应单独缓冲器48协作触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留49,假设在(新符号开始的)相应时间处,在通用缓冲器51中为相应熵编码器10当前保留的位数,即,在如上所述已经适当地选择Nx的情况下的Nx减去在相应熵编码器10的单独缓冲器48或通用缓冲器中为相应熵编码器当前缓冲的位数Mx(在所保留Nx位的中间部分填充的情况下)不足以容纳相应熵编码器的另外的代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx。
位写入器53以保留的顺序而写入通用位缓冲器的固定长度位序列。如果通用位缓冲器51中的第一固定长度条目包含实际上***通用位缓冲器(即非仅保留)的固定长度位序列,位写入器53从通用位缓冲器51去处该位序列52的位,并将位54写至位串流。重复该处理程序直到通用位缓冲器中的第一固定长度条目表示保留或自由条目。如果通用位缓冲器中的第一固定长度条目表示保留条目,则位写入器53等候直到该条目由实际位填充,随后才将另外位54写至位串流55。
即,多个熵编码器10的单独缓冲器48输出它们位串流47的缓冲部分以填充通用缓冲器51中的相应保留份额条目,并且通用缓冲器51相应地被配置为按顺序去除所填充的份额条目以获得所述多个位串流的位串流的单个份额串流52,所述位串流以交插方式散布在单个份额串流中。即,位写入器53的功能可看作包括在通用缓冲器51内。
在数据包的结束处,仓缓冲器如前述被刷新。此外,仓缓冲器必须通过添加具有特定值或任意值的位而被刷新,直到通用位缓冲器中的全部保留缓冲器条目被填充并被写至位串流。
在图10中,示出了通用位缓冲器51的可能状态的两个实例。在实例(a)中,示出了其中不同位缓冲器/仓编码器保留不同的位数目的情况。通用位缓冲器包含3个具有实际写入固定长度位序列的条目及4个具有保留的固定长度位序列的条目。第一固定长度条目已包含实际位(其必须仅由位缓冲器/仓编码器2***),该条目(即,对应的8位)可被移出并写至位串流。下一个条目保留10位用于仓编码器3,但实际位尚未***。该条目无法写至位串流,其须等候直到***实际位为止。在第二实例(b)中,全部位缓冲器/仓编码器保留同样数目的位(8位)。通用位缓冲器包含4个8-位序列的保留和3个实际写入的8-位序列。第一条目包含仓编码器3的8-位的保留。在任何新位可被写至位串流前,位写入器须等候直到位缓冲器/仓编码器3将8-位实际值写入该保留条目为止。
图11示出了交插固定长度位序列的本发明的实施方式的基本解码器结构的示图。与图7中所示的实施方式相比,仓解码器22并未连接单一位缓冲器。而是各仓解码器22与存储来自对应的部分位串流的位的分开位缓冲器58连接。全部位缓冲器58被连接至通用位缓冲器61。来自位串流63的位62被***通用位缓冲器61。在某些情况下,在特定位缓冲器58或所连接的仓解码器22或仓缓冲器20中,位缓冲器58向通用位缓冲器61发送请求59,由此固定长度位序列60从通用位缓冲器61中被移出并被***特定位缓冲器58。固定长度位序列的请求59以顺序被处理。通用位缓冲器61表示先进先出缓冲器,较早***的位被较早移出。应该注意的是,不同位缓冲器58可请求不同量的位,也可根据已解码的符号而随着时间改变;但通过特定请求所请求的位数目在该请求被发送至通用位缓冲器时为已知。应该注意的是,通用位缓冲器61并非必须的,原因在于代码字也可直接从串流读取。为了清楚地将处理链的不同方面分开,示例中主要包含通用位缓冲器61。相应地,位缓冲器58可看作由熵解码器22包括。
在本发明的特定实施方式中,位缓冲器58和通用位缓冲器61的操作如下文所述。由特定位缓冲器58所请求且读取的位的量被标示为Nx,其等于在编码器侧通过对应的位缓冲器所写至通用位缓冲器61的位的量。该位的数目Nx对于不同的位缓冲器58是不同的且可随着时间而改变。在本发明的优选实施方式中,由定特位缓冲器58所请求并读取的位的数目Nx随着时间是固定的。
固定数目Nx的位60的读取基于位缓冲器58中的位数目Mx、存储于位缓冲器中的预期最小代码字数目Cx及相关联的最大代码字长度Lx而触发。注意,各个仓解码器22可与不同最大代码字长度Lx相关联,并且应当满足Nx≥max((Cx+1)*Lx-1,Lx)。
如果仓的请求19被发送至特定仓缓冲器20且特定仓缓冲器20为空,及与特定仓缓冲器20连接(经由仓解码器)的位缓冲器58的位数目Mx小于与对应的仓解码器22相关联的最大代码字长度Lx乘以预期代码字数目Cx加上1(Mx<(Cx+1)*Lx),那么所连接的位缓冲器58向通用位缓冲器61发送新的Nx位序列的请求59。响应于该请求,从通用位缓冲器61移出前Nx位,而该Nx位序列60被发送给发送所述请求的位缓冲器58。最后,该Nx位序列被添加至对应的位缓冲器58。然后从该位缓冲器读取下一个代码字57,所连接的仓解码器22将相关联的仓序列21***所连接的仓缓冲器20。作为对仓的请求19的最终响应,第一仓从仓缓冲器20被移出,且该解码仓25被发送给仓缓冲器选择器18。当仓请求19被发送给特定仓缓冲器20而仓缓冲器不为空时,下一个位被从仓缓冲器20移出。如果仓缓冲器为空但所连接的位缓冲器58内的位数目Mx大于或等于相关联的最大代码字长度Lx乘以预期代码字数目Cx加上1(Mx≥(Cx+1)*Lx),那么从位缓冲器读取下一个代码字,且新的仓序列被***第一位被移出并被发送至仓缓冲器选择器的仓缓冲器。如果仓缓冲器为空且所连接的位缓冲器58内的位数目Mx小于相关联的最大代码字长度Lx乘以预期代码字数目Cx加上1(Mx<(Cx+1)*Lx),那么接下来的Nx位序列从通用位缓冲器61被读取,并被***所连接的本地位缓冲器58,从该位缓冲器读取下一个代码字,新仓序列被***仓缓冲器,及第一仓序列被移出并被发送至仓缓冲器选择器。重复该处理直到全部源符号都被解码为止。
换言之,通用缓冲器61一般被配置为接收多个位串流的位串流60的单个份额串流62,所述位串流以交插方式散布在单个份额串流62中,其中,通用缓冲器61被配置为根据份额请求59发生的顺序顺序地将份额从通用缓冲器分发到所述多个熵解码器。具体地,在如由选择器18从所述多个熵解码器检索的将被重建的符号序列25的符号中,遇到形成新符号序列开始在相应位串流57内通过相应熵解码器从新代码字映射的符号时,多个熵编码器22的每一个被配置为从通用缓冲器61触发相应位串流的相应位长Nx的相应份额请求56,59,假设在相应时间处,已经通过通用缓冲器61分发给相应熵解码器22但至今尚未通过熵解码器22进行熵解码的包括新代码字的相应位串流57的位数Mx小于相应熵解码器的另外的代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx。
在数据包的结束处,比用来解码所请求的源符号所需更多的仓和/或位可被***仓缓冲器和/或位缓冲器。仓缓冲器中的其余仓和位缓冲器中的其余位被舍弃及忽略。
具有低延迟约束的固定长度位序列的交插
具有固定长度位序列交插的熵编码器和熵解码器的所述实施方式也可以与上述用来控制编码器缓冲器延迟的方案进行组合。基本构思与具有上述延迟控制的实施方式相同。如果与延迟或延迟上限相关的测量值(参见下文)超过规定临界值,通过刷新对应的仓缓冲器(使用在数据包的结束处相似的机制)和潜在地写入另外位以用来填充所保留的固定长度缓冲器条目而填充第一保留缓冲器条目。通过这样的机制,等候的缓冲器条目数目减少直至相关联的延迟测量值小于所指定的临界值。在解码器侧处,在编码器侧处已经被***以遵守延迟约束的仓和位必须被舍弃。对于仓和位的这种舍弃,基本上可采用与编码器侧处相同的机制。
在本发明的优选实施方式中,延迟(或延迟上限)的测量值为通用位缓冲器中的激活的缓冲器条目的位数目,其中,激活的缓冲器条目的数目为保留的固定长度缓冲器条目的数目加上包含已写入的位的固定长度缓冲器条目的数目。注意,又一限制应用于位写入器53。与只要通用位缓冲器51中的第一固定长度条目包含固定长度位序列(即,它不是仅有保留)位写入器53就开始写入位的无低延迟约束的情况相比,所述处理被延迟,直至固定长度保留49的下一个请求被触发且然后在请求49之前立即执行。原因如下:如果位写入器53在任何时候被允许读取通用缓冲器51,那么编码器和解码器必须检查仓级,即,对于共同仓序列中的每个仓,低延迟约束。然而,这是繁琐的任务,就延迟等而言可能无法避免。
设最大容许缓冲器延迟(如通过应用所确定的)为D位。该最大缓冲器延迟D必须为编码器和解码器二者所已知。在本发明的优选实施方式中,最大缓冲器延迟D由应用固定。在本发明的另一优选实施方式中,最大缓冲器延迟D在位串流内,例如在数据包报头(或片段报头)或在包含在位串流的参数集合中被信号通知。可以位、或字节、或多个位、或多个字节为单位进行信号通知。如果仓编码器10向通用位缓冲器51发送新固定长度位序列的保留的请求,则在新固定长度缓冲器条目被保留之前执行下列处理。
如果通用位缓冲器中的激活的缓冲器条目的位的数目加上通过当前保留请求将被保留的位的数目大于最大缓冲器延迟D,则第一缓冲器条目(其被保留)通过下文描述之处理被刷新直至通用位缓冲器中的激活的缓冲器条目的位数目加上通过当前保留请求将被保留的位的数目小于或等于最大缓冲器延迟D。保留的固定长度缓冲器条目的刷新类似于数据包的结束处的刷新:与已经保留了对应的第一缓冲器条目的位缓冲器48连接的仓编码器10被刷新。这意味着,如果对应仓缓冲器8不为空,那么具有特定或任意值的仓添加至所连接仓缓冲器8,直至所得仓序列表示与代码字相关联的仓序列,并且所述代码字然后被***到对应仓缓冲器48中。如上所述,用来将仓添加至仓缓冲器的一个优选方式为添加那些产生最短可能代码字的仓。对于位缓冲器将被刷新的与从通用位缓冲器61请求的固定长度位序列相同的情况,仓缓冲器仅存储触发请求59的单个仓且并不进行刷新。如果对应位缓冲器48中的所得位数Mx小于固定长度序列的位数Nx,那么添加一样多的特定或任意位,直至Mx等于Nx。之后(不论仓是否添加),Mx大于或等于Nx,并且一个固定长度位序列被写入至通用位缓冲器51中的对应保留时隙(及在位写入器53的下一个处理期间,在固定长度保留49的请求之前立即,或在位串流结束时通过刷新处理将写入至位串流55)。即,在例如由于通过在相应仓缓冲器中填充现有仓而执行新代码字产生所导致的位数超过Nx的情况下,相应位缓冲器48不必完全刷新。相反,这些位保持在相应位缓冲器48中且无需位填充,否则会另外施加应变于位率。
即,换言之,通用缓冲器51可被配置为当通过多个熵编码器10中任一个及相应单独缓冲器48触发49相应保留时执行以份额条目为单位从最近保留、已经填充的份额条目按顺序去除填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止。
通用缓冲器51可被配置为当通过多个熵编码器中任一个及相应单独缓冲器触发相应保留时进行以下操作。
首先,通用缓冲器51完成从最近保留、已经填充的份额条目按顺序去除份额条目中的填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止。
其次,通用缓冲器51检查通用缓冲器51中由保留的份额条目覆盖的位数加上相应保留触发熵编码器10的位长Nx是否大于最大缓冲器延迟D。
第三,如果检查结果为否定的,那么通用缓冲器51只保留相应保留触发熵编码器22的位长Nx的相应新份额条目。
然而,如果检查结果为肯定的,那么最近保留、尚未填充的份额条目被保留的熵编码器10由通用缓冲器51使其将通过选择器6转发至它的尚未被熵编码的符号,如果有的话,扩展为有效符号序列,并且将如此获得的有效符号序列映射至代码字以通过对应单独缓冲器进行缓冲。然后,检查当前缓冲在最近保留、尚未填充的份额条目被保留的熵编码器22的单独缓冲器48中的位数Mx是否小于所述熵编码器22的位长Nx,若是,增补Nx-Mx个位至当前缓冲的Mx个位。不论至有效符号序列的任何扩展或任何增补是否必要,从最近保留、尚未填充的份额条目被保留的熵编码器22的单独缓冲器48中输出Nx个缓冲位输出到最近保留、尚未填充的份额条目中,以填充所述份额条目,在单独缓冲器中剩下除输出的Nx个缓冲位外可能另外缓冲的位。
然后,在再次检查低延迟标准以最终处理份额条目请求之前,至少一个同时填充的最近份额条目(至少包括通过刷新而填充的最近一个填充的份额条目)从通用位缓冲器51输出,然后再次检查低延迟标准,以此类推。
在解码器侧,执行类似处理程序以用来舍弃已经添加来遵守延迟约束的仓和位。因此,解码器保持对已经从通用位缓冲器读取的位进行计数的计数器C(该计数器可保持在通用位缓冲器中)。计数器C在数据包的解码的起点被初始化(例如,使用零),并在读取固定长度序列之后增加。如果固定长度Nx位序列从通用位缓冲器61被读取,则计数器C增加Nx。除了总计数器C外,各个位缓冲器58包含两个计数器Cx1和Cx2,所述计数器Cx1和Cx2存储在最后两个的固定长度位序列被读进对应的位缓冲器58之前的位计数器C的值。应当保证不超过两个的固定长度位序列的位在特定位缓冲器58内,并且Cx1总是存储与较早读取的固定长度位序列对应的总计数值。这意味着,当位从位缓冲器58去除时,Cx2可变为Cx1,并且Cx2然后为不明确。当特定位缓冲器58读取新固定长度位序列时,作为第一步,根据位缓冲器58是否为空(Cx1)或非空(Cx2),其计数器Cx1或Cx2被设定为等于C,及然后从通用位缓冲器61读取固定长度位序列。当固定长度位序列请求59被发送给通用位缓冲器61,及总计数器C与所有位缓冲器中的具有最小值Cx1的位缓冲器58的计数器Cx1之间的差(C-Cx1)大于最大缓冲器延迟D时,当前存储在对应仓缓冲器20中的全部仓和存储在所连接的位缓冲器58中源自与Cx1相关联的固定长度序列的全部位都被舍弃和忽略。除了其他的步骤之外,如上所述操作解码。如果仓的请求19被发送至仓缓冲器20为空(或因全部仓都已经被移出,或因低延迟机制确实在已经接收到仓请求之后的第一步中舍弃全部仓),则所连接的仓解码器22试图从所连接的位缓冲器58读取新代码字。如果位缓冲器58的位的数目小于最大代码字长度,则在该代码字被读取之前等,从通用位缓冲器61读取新固定长度位序列。
换言之,对于每个熵解码器22,解码器被配置为记录从通用缓冲器61分发到多个熵解码器22的位数,到从通用缓冲器61分发到相应熵解码器22的最近分发份额的分发为止。此外,每当相应位长Nx的份额的相应请求被触发时,解码器判定一方面从通用缓冲器61分发到多个熵解码器的到相应请求为止的通用位数与另一方面最小记录的位数Cx1之差是否大于最大缓冲器延迟D。若是,通过选择器18舍弃从通用缓冲器61分发到最小记录数目已经记录的熵解码器22的最近分发份额以及尚未从最小记录数目已经记录的熵解码器22中检索的任何符号21。
不言而喻,如果利用Cx=0执行,那么刚刚所述的低延迟实施方式也会有利且有益。
具有低延迟约束和减低的位率开销的固定长度位序列的交插
前述方案可进一步优化以减少由低延迟处理引入的位率开销。假设存在特定仓编码器10,所述特定仓编码器10适合等概率仓且从每个仓7产生1位长的代码字47,并且进一步假设,它比其它仓编码器10更频繁地被使用。更确切地,所述更频繁使用的仓编码器10可更频繁地通过仓缓冲器选择器6提供仓7。此外,所述更频繁使用的仓编码器10可产生更多代码字47,从而也可产生更多固定长度位序列50,所述固定长度位序列50被转发至通用位缓冲器51。在具有用于等概率仓的所述更频繁使用的仓编码器10的编解码器设置中,如在前一节中所述,对交插方案的修改可减少源自由低延迟约束导致的刷新操作的位率开销。对以上方案的所需改变在下文中进行说明。
如果仓编码器10发送新固定长度位序列的保留请求给通用位缓冲器51,那么检查低延迟标准,只要违反低延迟标准,就执行刷新操作。新发明使用与前一节中方案完全相同的程序,但是在用于等概率仓的更频繁使用的仓编码器10发送新固定长度位序列的保留请求给通用位缓冲器51的情况下添加了另外的处理步骤。检查在通用位缓冲器中的主动缓冲器条目中的位数加上将通过当前保留请求进行保留的位数是否大于预定临界值D2(其中D2<D),而不是检查低延迟标准。
若是,执行以下处理步骤。
确定属于通用位缓冲器51中最近保留且尚未填充的份额条目的仓编码器10(注意,所述仓编码器10不能为用于等概率仓的更频繁使用的仓编码器10,因为它仅产生1位代码字47,因此,所属位缓冲器48需要为空)。仓缓冲器8中属于通用位缓冲器51中最近保留且尚未填充的份额条目的仓完成,直至可产生代码字47(通过添加任意或特定仓,以产生代码字,优选短代码字),并且所述代码字被添加到对应位缓冲器48。在下一个步骤中,所述位缓冲器的内容被移动至用于等概率仓的更频繁使用的仓编码器10的空位缓冲器48,并且通用位缓冲器51中最近保留的份额条目的所有权被移动至用于等概率仓的更频繁使用的仓编码器10。之后,检查是否仍有必要保留新固定长度位序列,若是,,程序完全如在前一节的方案中所述的那样继续(检查低延迟标准、潜在缓冲器刷新、代码字保留)。
否则,即,如果通用位缓冲器中的主动缓冲器条目中的位数加上将通过当前保留请求进行保留的位数证明为不大于预定义临界值D2(D2<D)。
程序完全如在前一节的方案中所述的那样继续(检查低延迟标准、潜在缓冲器刷新、代码字保留)。
图64至图68示出以上程序,使用具有示例性缓冲器填充的4仓编码器的示例性设置,其中,对于所有仓编码器和所有保留,示例性Lx=8。具有指数1的仓编码器10应当为更频繁使用的仓编码器。
首先,通过具有指数1的仓编码器发出固定长度位序列的保留请求(参见图64)。因此,检查通用位缓冲器51中的主动缓冲器条目的位数加上将通过当前保留请求进行保留的位数是否大于预定义临界值D2。在实例中如此,因此,属于最近保留、尚未完成的通用位缓冲器保留的仓编码器被刷新。在实例中,这为仓编码器3(参见图64)。通过刷新处理产生的代码字被转发至具有指数3的位缓冲器,从图65可以看出。随后,位缓冲器3的内容被移动至位缓冲器1(在这种情况下,位缓冲器1总是为空,参见图66),并且具有指数3的仓编码器的保留切换至具有指数1的仓编码器(参见图67)。作为最后步骤,重复保留请求是否必要的初始检查(参见图68)。即,检查新填充的位缓冲器1是否获得这么多的位,同时仅Lx个保留位已经被转移至已经需要新请求的相应熵编码器,也就是说,根据Cx和Lx,熵编码器1的Lx-Mx满足上述标准。若是,处理如在前一节中所述那样继续(检查低延迟标准、潜在刷新、固定长度位序列保留)。若不是,可能不会引起新保留请求,直至下一个代码字在仓编码器1至4中的任一个中准备好。
利用以上修改,强制代码字完成的数目增加,但是随后份额条目完成数目可减少,如果正确选择临界值D2(根据D、仓编码器10的属性及仓缓冲器选择器6如何分发仓给仓编码器10的统计),因此,总位率开销可减少。
对解码器实施的对应修改也是必要的,如下所述。当固定长度位序列请求59通过用于等概率仓的更频繁使用的仓解码器22发送至通用位缓冲器61时,对总计数C与在所有位缓冲器中具有最小值Cx1的位缓冲器58的计数Cx1之差(C-Cx1)进行评估:
如果其值大于预定义临界值D2,
那么当前存储于对应仓缓冲器20中的所有仓被舍弃,但是存储于所连接的位缓冲器58中源自与Cx1相关联的固定长度序列的所有尚未消耗的位被移动至用于等概率位的更频繁使用的仓解码器22的位缓冲器58。之后,重复固定长度位序列是否必须被读取的初始检查。即,检查更频繁使用的仓解码器22的位缓冲器58现在是否包含足够未消耗的位,以根据Cx和Lx根据上述标准对代码字进行解码。若是,处理如在前一节中所述那样继续(检查低延迟标准、仓和位的潜在舍弃、固定长度位序列读取)。否则,如果其值大于最大缓冲器延迟D,执行那么如在前一节的方案中那样的相同处理(检查低延迟标准、仓和位的潜在舍弃、固定长度位序列读取)。
交插固定长度位序列的处理优化
图9至图11中针对具有固定长度位序列交插、有无低延迟约束和/或具有解码器最小代码字保证的熵编码器和熵解码器所述的实施方式也可以以下方式进行扩展,使得解码器并行处理得到缓解。当与用于控制编码器缓冲器延迟的方案结合(这针对低延迟约束进行了描述)时,下文所述的实施方式特别有利。
现在所述的实施方式定义了在解码器处优化处理的方案,这适用于低延迟情况,但是也适用于存在由解码器待处理的“固定区间”或“块”尺寸的任何其它情况。所述处理允许在解码器处的简化处理,这基于“块”处理方案,这可最好描述为特殊位串流内信令(signaling)或带外显式或隐式信令。“分批处理方案(tranche processing scheme)”表示解码器,特定“管线”中多少份额将伴随“块”。该特定方案可用于以例如轮叫方式(round-robin fashion)“填充”“管解码器”。所述方案将被应用,直至“块”结束。这允许解码器直接处理代码字,而无需检测待处理下一个管线。这简化了解码器实施,因为待处理的下一个管线的检测不再需要。
图61中示出了编码器的实施方式,图62中示出了解码器的实施方式。几乎所有元件都和如图9和图11所示的相同,因此,参考相对于这些图所述的实施方式的以上说明。然而,分段器200位于位写入器53与将被最终传输的位串流55被应用的输出之间,分段器202而不是通用位缓冲器61位于已经传输的位串流63进入的对应输入与单独缓冲器58之间。
分段器200被配置为将位串流62表示的单个份额串流分段成块。一个这样的块204如图63所示。每个块204伴随有去分段器202,报头206包括至于多个熵编码器#(即,相应部分位串流P#的熵编码器#)的份额如何分布于相应块204的信息,以便获得形成位串流63的块序列。报头信息的示例性形式在下文中进行讨论且在208处示例性示出。具体地,如下文中讨论,分段器可被配置为在将单个份额串流分段成块中将在单个份额串流内相应块的份额的原始顺序置换为希望顺序,所述希望顺序由伴随相应块的信息表示。
相应地,解码器包括去分段器202,所述去分段器202被配置为使用块报头206中的信息来分发位串流63表示的块序列的块内的份额。由于当形成单独块时编码侧维持份额中相对于每个单独部分位串流60的顺序,所以去分段器202只需根据与熵解码器和部分位串流60的份额的关联性将块内份额分别分发至位缓冲器58,VLC代码字通过仓解码器22以请求56方式从位缓冲器58获取。
因此,三种类型的信息对于去分段器必须为已知:相应块内份额的位置、份额与熵解码器的关联性及份额中直至每个部分位串流被单独地关注为止的正确顺序。第一信息类型在默认情况下对于解码器可能为已知,诸如例如通过对所有熵解码器使用均相等的Nx且将块尺寸设置为Nx的预定倍数,同时份额与熵解码器的关联性及部分位串流相对于正确顺序的单独置换在报头中指示-或指示为串流外侧信息。当然,分段器可以限制置换为这样的置换(permutation),其中,对于每个部分位串流维持部分位串流相对于正确顺序的单独置换。
如果在编码器侧已经应用置换,那么去分段器相应地以置换的顺序根据指示属于相应熵解码器的份额的位置的信息进行操作。
如下对于假设4个管线,示例方案可描述“块”的份额方案:
解码器在实例中正在如下处理数据,直至消耗“块”的所有数据:解码器消耗份额,例如以轮叫方式,处理P0的4个份额、P1的3个块、P2的2个块及P3的1个块。
图63在208处示出了包括位串流内信令方案的实例,所述位串流内信令方案包括在每个“块”前的报头206。
报头在本实例中表示每个“部分位串流”的份额数目与块N的最后绝对份额位置的差异。
在编码器侧,位写入处理延迟直至达到“块”大小的时间。即,所有代码字根据“部分位串流”进行缓存,直至“块”大小限制。块大小可以等于D,即,延迟约束,包括或不包括报头大小。分段器200内的“处理方案”评估器可定义选择的“处理方案”,即,在“块”中以轮叫方式处理的份额数目。
然后,可在分段器200中应用写入处理,在所选择的“分批处理方案”中,设置位串流中的“块”的“份额”。写入处理还可包括用于选择“分批处理方案”的信令。
在解码器处,如在位串流内或-或可位串流外可用的信令隐含地或明显地需要进行识别。在最简单的情况下,先于“块”的报头206被读取且基于信令处理方案,位串流读取器正在以轮叫方式逐份额地填充部分位串流,直至如由信令“分批处理方案”识别的每个部分位串流的份额数目已经达到。
“分批处理方案”位串流内信令。为了减少发信令“分批处理方案”所需的开销,信令报头对于每个管线可指示信令“块”中特定管线的份额值的存在。如果相应部分位串流的份额存在,那么设置标志,随后跟随位置信令。位置信令可如下工作。对于每个标志指示的“部分位串流”,报头指示相应部分位串流的最后份额的位置为与最后份额位置N-1相距的距离,其中,N等于“块”中所有份额的数目。
另一个位置信令可以基于轮叫间隔数目,其中,对于标志指示的“部分位串流”,从“块”开始的轮叫间隔数目,作为对于每个“部分位串流”与特定管线的差异,即,就轮叫间隔相对于在“块”处理中已经完成的最后管线而言的差异。
可选地,至于图62的说明,去分段器可位于已经传输的位串流63进入的对应输入与通用位缓冲器61之间。去分段器202可被配置为使用块报头206中的信息从图11中的位串流63表示的块序列再次对图11中的进入通用缓冲器61的位串流62表示的原始单个份额串流进行去分段。
因此,上述实施方式中的每一个表示在霍夫曼编码的复杂性级别提供了算术编码的有效且简单的建模能力的新颖的熵编码方法。离散符号的输入序列的事件空间被映射至二元概率区间的小的集合。源符号的概率模型可以是固定性或适应性,而使用概率区间的熵编码保持为固定的且与建模级解耦。概率区间的每一个使用具有霍夫曼码的复杂性级别的极为简单的熵码编码。事件空间投射熵码(ESPEC)的超过比率(excess rate)与算术编码的类似。
因此,前述实施方式允许提高熵编码效率的可能方式。一般而言,熵编码可视为无损耗数据压缩的最一般形式。无损耗压缩旨在表示具有比原始数据表示所需的更少位的离散数据,而不会造成信息的任何损耗。离散数据可以文本、图形、图像、视频、音频、语音、传真、医疗数据、气象数据、财务数据、或任何其它数字数据形式给定。在许多编码应用中,原是来源数据被首先映射至所谓的编码符号,然后这些编码符号被熵编码。至编码符号的映射可包括量化,在这种情况下,总编码方案为有损耗的。编码符号s可具有M-元(M≥2)字母表A={a0,...,aM-1}的任何值。为了对符号s进行编码的目的,将字母表与估算的概率质量函数(pmf){ps(a0),...,ps(aM-1)}相关联,并且在该pmf种未考虑的编码符号之间的所有相关性都被忽略。对于对于这样的概要设定值,熵
H s = - &Sigma; i = 0 M - 1 p s ( a i ) log 2 p s ( a i ) - - - ( B 1 )
为以熵编码技术所能获得的用来对符号s进行编码的所期望的代码字长度下限,以每个符号的位为单位。数十年来,霍夫曼编码和算术编码支配着实际的熵编码。它们是能够近似熵极限(就某种意义而言)的众所周知的实例。
对于固定概率分布,霍夫曼码相当容易组成。霍夫曼码最令人关注的性质在于,其实施可通过使用可变长度码(VLC)表而有效地实现。然而,当处理时变源统计值(time-varying source statistic),即,改变符号概率时,就算法复杂性和实施成本二者而言,相当要求霍夫曼码及其相对应VLC表的调适。此外,在具有ps(ai)>0.5的优势字母表值的情况下,对应的霍夫曼码(未使用任何字母表扩展,诸如执行长度编码)的冗余可能相当大。霍夫曼码的另一项缺点在于,当处理更高阶概率建模时,可能要求多个VLC表集合。
另一方面,尽管算术编码实质上比VLC更复杂,但当应付适应性和更高阶概率建模以及高度偏斜的概率分布的情况时,算术编码可以提供更好的一致性和适当的处理的优点。实际上,该特性基本上来自于算术编码提供一项机制,至少在构思上提供了一种机制以将任何给定的概率估计值以或多或少直接的方式映射至部分所得代码字。通过提供这样的接口,算术编码一方面允许概率建模与概率估算任务之间清晰地分开,另一方面,允许实际熵编码,即,符号至代码字的映射。
与刚刚讨论的传统熵编码方案不同,本发明的上述实施方式的一些使用一种描述数学背景的事件空间投射,如下文所述。
考虑编码符号序列{s0,...,sN-1}。各个符号从字母表si∈Ai抽出。字母表包含两个或多个均与概率估计值相关联的字母其。概率估计值为编码器和解码器所已知且可以是固定的或可变的。假设在编码器和解码器处同时估算可变概率。字母表Ai对于符号序列可为相同,或对于不同符号类型与不同的字母表相关联。在后者的情况下,假设解码器知道该序列中的各个符号的字母表。该假设被证明为作为实际源编解码器描述,包含规定符号及其字母表的顺序的语法。
符号序列{s0,...,sN-1}被转换为二元符号序列,其也被称作仓(bin)。对于各个符号si,二进制化
= i { b 0 i . . . } = &gamma; b i ( s i ) - - - ( B 2 )
表示字母表字母至仓的有序集合的双射映射。二进制映射对于不同的符号si或符号类别可以是不同的。特定符号si的各个仓序列i由一个或多个仓组成。在解码器侧处,符号si可通过给定仓序列i的逆映射被重建。作为二进制化的结果,获得仓序列{b0,...,bB-1}其表示源符号序列{s0,...,sN-1}。
全部仓bj与同一个二元字母表B={0,1}相关联,但对应的二元通常是不同的,其中,二元可通过较低概率仓(LPB)值bj LPB及其概率pj LPB(其中,pj LPB≤0.5)来描述。该二元概率描述{bj LPB,pj LPB}可从给定二进制映射的符号字母表的概率估计值直接获得。也可以(且经常为优选)在编码器和解码器侧同时直接估算{bj LPB,pj LPB}。因此,基于语法和先前编码的符号或仓,可以将仓与概率模型(也称作上下文)相关联。对于各个概率模型,概率描述{bj LPB,pj LPB}可基于通过概率模型编码的仓值而被估算。在【Ed:添加引用CABAC】中描述了这样的二元概率模型的实例。
由于二元熵函数
H(p)=-p log2(p)-(1-p)log2(1-p)   (B3)
以p=0.5对称,所以相同二元编码器可用来对与相同的LPB概率pj LPB相关联的全部仓进行编码,而与bj LPB值独立无关。因此,仓序列{b0,...,bB-1}被转换成编码仓序列对于各个仓bj,对应的双射映射通过下式规定
b j c = &gamma; c j ( b j ) = b j &CirclePlus; b j LPB - - - ( B 4 )
其中,表示排它或算子。在解码器侧,通过逆映射给定编码仓及相对应LPB值bj LPB,可重建仓bj。编码仓指定对应的仓值bj等于LPB值bj LPB;而编码仓指定对应的仓值bj等于较高概率仓(MPB)值1-bj LPB
编码仓序列确实唯一地表示源符号序列{s0,...,sN-1},可被采用为用于熵编码的对应的概率估计值通过LPB概率pj LPB(其中pj LPB≤0.5)完整描述。因此,只有在半开区间(0,0.5]中的概率才需考虑以用来设计用于编码仓的二元熵编码器。
对于实际的二元熵编码,编码仓序列被投射至少数的概率区间Ik。LPB概率区间(0,0.5]被分割成K个区间Ik=(pk,pk+1]
&cup; k = 0 k - 1 I k = ( 0,0.5 ]
K区间集合由K-1个区间边界pk来表征,其中k=1,...,K-1。为了不丧失其一般性,我们假设对于k=0,...,K,pk<pk+1。外区间边界为固定的且由p0=0及pK=0.5给定。对于每个区间Ik设计单纯非适应性二元熵编码器。具有相关联LPB概率pj LPB∈Ik的所有编码仓被分配给区间Ik并利用对应固定熵编码器进行编码。
在以下的描述中,全部仓表示编码仓及全部概率p为LPB概率pj LPB
为了研究概率区间离散对编码效率的影响,我们假设可对固定概率设计一种能够获得熵极限的最佳熵编码器。各概率区间Ik=(pk,pk+1]与典型的概率相关联,而对应的最佳熵编码器将获得该典型的概率的熵极限。在这些假设下,对于区间表示使用最佳熵编码器以概率p来编码仓的速率通过下式给定
R ( p , p I k ) = - p log 2 ( p I k ) - ( 1 - p ) log 2 ( 1 - p I k ) = H ( p I k ) + ( p - p I k ) H ' ( p I k ) - - - ( B 6 )
其中,H(p)表示二元熵函数3及
H ' ( p ) = log 2 ( 1 - p p ) - - - ( B 7 )
为其第一导数。我们进一步假设区间(0,0.5]的概率分布以f(p)给定,其中然后,对于具有对应的典型的概率的给定K区间{Ik}集合,以每仓的位表示,期望的率可写成
R = R ( { I k } , { p I k } ) = &Sigma; k = 0 K - 1 ( &Integral; p k p k + 1 R ( p , p I k ) f ( p ) dp ) - - - ( B 8 )
相对于任何典型的概率的第一偏导数由如下给出,其中k=0,...,K-1,
&PartialD; &PartialD; p I k R = p I k &Integral; p k p k + 1 f ( p ) dp - &Integral; p k p k + 1 pf ( p ) dp p I k ( 1 - p I k ) ln 2 - - - ( B 9 )
方程式具有单一解
p I k * = &Integral; p k p k + 1 pf ( p ) dp &Integral; p k p k + 1 f ( p ) dp - - - ( B 10 )
对于在定义域Ik内的典型的概率该解的第二偏导数
&PartialD; 2 &PartialD; p I k 2 R ( p I k * ) = &Integral; p k p k + 1 f ( p ) dp p I k * ( 1 - p I k * ) ln 2 - - - ( B 11 )
通常大于零,如果
&Integral; p k p k + 1 f ( p ) dp > 0 - - - ( B 12 )
因此,如果满足条件B12,则在方程式B10中给定的值为最小化给定区间边界pk及pk+1的期望的总率R的区间Ik的典型概率。否则并无任何仓投射至区间Ik,典型的概率可任意选定而不会对总率R造成任何影响;但应该避免这样的配置,原因在于区间Ik不能被采用用于熵编码。
为了找出最佳区间边界的条件,我们相对于区间边界pk研究了期望总率R的第一导数,其中k=1,...,K-1。如果对于全部则方程式具有单一解
p k * = H ( p I k ) - p I k H ' ( p I k ) H ( p I k - 1 ) + p I k - 1 H ' ( p I k - 1 ) H ' ( p I k - 1 ) - H ' ( p I k ) - - - ( B 13 )
对于在定义域内的区间边界pk,及该解的第二偏导数
&PartialD; 2 &PartialD; p k 2 R ( p k * ) = f ( p k * ) ( H ' ( p I k - 1 ) H ' ( p I k ) ) - - - ( B 14 )
通常大于零,因此为最小化给定区间表示的期望总率R的区间边界如果存在概率其中f(p)=0,则方程式具有多解。但方程式B13中给定的仍然为最佳,即使可能存在其它最佳解。
将期望总率R最小化的给定区间数目K及概率分布f(p),区间边界pk其中k=1,...,K-1及区间表示其中k=0,...,K-1可通过解出由条件B12(k=0,...,K-1)限制的方程式B10和B13所给出的方程组来获得。
算法1:
1)以对于全部k=0,...,K-1遵照条件B12的方式,对于全部k=0,...,K-1,将区间(0,0.5]划分成K个任意区间Ik=(pk,pk+1],其中p0=0,pK=0.5,及pk<pk+1
2)根据方程式B10更新表示其中k=0,...,K-1。
3)根据方程式B13更新区间边界pk,其中k=1,...,K-1。
4)重复之前的两个步骤直至收敛。
图12示出了使用所述算法的最佳区间离散的实例。对于该实例,我们假设对于0<p≤0.5一致的概率分布f(p)=2,并将概率区间(0,0.5]划分成K=4个区间。可以看出,对于全部p∈(0,0.5],概率区间离散导致二元熵函数H(p)的分段线性近似值A(p),其中A(p)≥H(p)。
作为区间离散对编码效率的影响的测量值,可使用相对于熵极限,期望总率增高
&rho; &OverBar; = R &Integral; 0 0 . 5 H ( p ) f ( p ) dp - 1 - - - ( B 15 )
对于图12的特定实例,熵的期望值等于1/(2ln2)位/仓,率开销(rate overhead)等于1.01%。表4列出了对于选定的区间数目K,一致概率分布和线性增高概率分布f(p)=8p的率开销其中p∈(0,0.5]。
表4:,率开销相对于一致和线性增加的概率分布的概率区间数目
本章节的研究显示LPB概率区间(0,0.5]的离散成具有固定概率的少量区间(例如8至10个区间)对编码效率具有极小的影响。
上述讨论的用于概率区间的熵编码因此能够使得各个编码器使用固定概率。
在下文中,我们首先示出如何为固定概率设计简单的编码。基于此,我们发展出下述算法,其联合优化代码设计和LPB概率区间(0,0.5]的划分。
可以使用算术编码或可变长度编码来进行固定概率的熵编码。对于后者,下述办法显然简单且极有效。
我们考虑二元熵编码方案,通过该方案可变数目的仓被映射至可变长度代码字。对于唯一的可解码性,代码字至仓序列的逆映射必须是唯一的。用于我们期望设计一种尽可能地趋近熵极限的代码,所以我们将考虑限制在双射映射。这样的双射映射可以由二元树表示,其中,全部叶节点与代码字相关联,如图13所示。树缘表示二元事件。在图13的实例中,下缘表示LPB仓值,而上缘表示MPB仓值。如果二元树为完全二元树,即,如果每个节点为叶或有两个子代,则二元树表示仓的前缀码。基于给定的LPB概率p,各个叶节点与概率相关联。根节点具有概率proot=1。全部其它节点的概率通过对应的先辈的概率乘以LPB子代的p及MPB子代的q=1-p而获得。各个叶节点Ll由从根节点至叶节点的LPB缘数目al及MPB缘数目bl表征。对于特定LPB概率p,叶节点Ll={al,bl}的概率pl等于
p l = p a l ( 1 - p ) b l - - - ( B 16 )
二元树T由叶节点L数目及相关联的对{al,bl}充分表征,其中l=0,...,L-1。
给定完整二元树T及LPB概率p,通过霍夫曼算法可获得代码字至叶节点的最佳分配。所得可变位数目至可变长度代码字(VNB2VLC)映射C由代码字L的数目(与叶节点数目相同)及对于l=0,...,L-1的字节组{al,bl,ll}(其中,ll表示与对应的叶节点Ll={al,bl}相关联的代码字长度)来表征。应该注意的是,对于给定的代码字长度{ll},存在多种可能的代码字分配,实际的代码字分配并不重要,只要代码字表示唯一的可解码的前缀码。对于给定的代码C和LPB概率p,以位/仓表示的期望率R(p,C)为期望的代码字长度比每个代码字的期望的仓数目的比。
R ( p , C ) = &Sigma; l = 0 L - 1 p l l l &Sigma; l = 0 L - 1 p l ( a l + b l ) = &Sigma; l = 0 L - 1 p a l ( 1 - p ) b l l l &Sigma; l = 0 L - 1 p a l ( 1 - p ) b l ( a l + b l ) - - - ( B 17 )
代码设计经常受多种因素所限,诸如,最大代码字数目L、每个代码字的最大仓数、或最大代码字长度,或受限于特定结构的代码(例如,用来允许最佳化的剖析)。如果假设对于特定应用,给定寻常码集合SC,对于特定LPB概率p,最佳码C*∈SC可通过最小化预期率R(p,C)得知。
C * ( p ) = arg min &ForAll; C &Element; S C R ( p , C ) - - - ( B 18 )
作为更快速的替代,最小化也在给定的二元树ST集合上进行,对于各树,只考虑通过霍夫曼算法所得的一个VNB2VLC码C。作为实例,我们通过考虑全部二元树T(其叶节点L的数目小于或等于给定的最大值Lm)来设计各种LPB概率p的VNB2VLC码。在图14中,对于选定的最大表尺寸Lm,相对率增高ρ(p,C*(p))=R(p,C*(p))/H(p)对LPB概率p作图。率增高ρ(p)通常可通过允许更大的表大小而降低。对于更大的LPB概率,8至16代码字的小表大小L通常即足够将率增高ρ(p)保持合理地小,但对于更小的LPB概率(例如,p<0.1),要求更大的表尺寸L。
在先前章节中,我们考虑最佳概率离散,假设最佳码及对于固定LPB概率的码设计。但因通常我们无法以有限表尺寸的实际VNB2VLC码获得熵极限,故码设计及LPB概率区间(0,0.5]的划分须联合考虑来获得最佳化熵编码设计。
对于给定区间Ik=(pk,pk+1],如果最小化该给定区间的期望率则为给定集合SC的码Ck的最佳码
C k * = arg min &ForAll; C k &Element; S C &Integral; p k p k + 1 R ( p , C k ) f ( p ) dp - - - ( B 19 )
对于实际设计,可简化方程式B19中整数的最小化,而对编码效率极少有影响,通过首先根据方程式B10确定区间Ik的最佳典型概率其次根据方程式B18选择典型概率的给定集合SC的最佳码
给定码Ck集合,其中k=0,...,K-1,通过最小化期望总率,可获得最佳区间边界pk,其中k=1,...,K-1。
R = R ( { p k } , { C k } ) = &Sigma; k = 0 K - 1 ( &Integral; p k p k + 1 R ( p , C k ) f ( p ) dp ) - - - ( B 20 )
对于k=1,...,K-1,相对于区间边界将第一导数设定为等于零, &PartialD; &PartialD; p k R = 0 , 从而得到
而R(pk,Ck-1)=R(pk,Ck)   (B21)
类似方程式B13,可示出通常为最佳解,但取决于概率分布f(p),可能存在其它最佳解。因此,具有给定相关联的码Ck-1和Ck的两个区间Ik-1和Ik之间的最佳区间边界为函数R(p,Ck-1)和R(p,Ck)的交插点。
从而,给定概率区间数目K、可能码集合SC、及概率分布f(p),其中p∈(0,0.5],下述迭代重复算法可用来联合地推导出概率区间划分及相关联的码。
算法2:
1)用章节3中指定的算法1而推导出初始概率区间边界pk,其中k=0,...,K。
2)据方程式B10,推导出概率区间Ik的表示其中k=0,...,K-1。
3)据方程式B18,推导出区间表示的代码Ck∈SC,其中k=0,...,K-1。
4)据方程式B21,更新区间边界pk,其中k=1,...,K-1。
5)重复先前三个步骤直至收敛。
算法2中的步骤2和3也可根据方程式B19,基于区间边界pk(其中k=0,...,K)通过Ck∈SC(其中k=0,...,K-1)的直接推导而被替换。如在章节4.1所述,步骤3的最小化也可在给定二元树集合ST上进行,其中,对于各个二元树T,只考虑通过霍夫曼算法所得的一个VNB2VLC码Ck
作为实例,我们使用算法2联合地推导出成为K=12个概率区间的划分和对应的VNB2VLC码。此时,算法步骤3的最小值由给定二元树集合ST的等同的最小值替换,其中,各树T的估计码C通过霍夫曼算法获得。我们考虑具有最大数目Lm=65个叶节点的树T和因而具有高达65个表条目码C。全部具有高达16叶节点的二元树T以最小值被评估;对于具有多于16叶节点的树,给定具有较少叶节点数目的树的最佳结果,我们采用次最佳搜寻。
在图15中,对于码设计实例,相对于熵极限△R(p)=R(p)-H(p)的期望率增高对LPB概率p作图。作为比较,我们也在略图中作图理论上最佳概率区间离散(如章节3所发展)及理论上最佳概率离散而有另外限制的期望率增高△R。可以看出,概率区间离散及VNB2VLC码设计联合导致区间边界的移位(区间边界pk,其中k=1,...,K-1,由△R(p)曲线局部最大值给定)。对于具有实际VNB2VLC码的设计实例,当假设一致概率分布f(p)时,相对于熵极限的相对期望总率为对于理论上最佳概率区间离散及理论上最佳概率离散而有另外限制的对应的相对率增高分别为
可如下进行代码字结束。当编码符号的有限序列{s0,...,sN-1}时,K个二元编码器的每个处理编码仓的有限序列其中k=0,...,K-1。已经确定的是,对于K个二元编码器中的每个,给定代码字或代码字序列可重建序列的全部编码仓。
当采用算术编码时,编码仓序列的算术代码字须以一种给定代码字,全部编码仓可被解码的方式结束。对于前述VNB2VLC码,在序列尾端的仓可能不表示与代码字相关联的仓序列。在这种情况下,可写入包含其余仓序列作为前缀的任何代码字。如果选用具有最小长度的对应的代码字(或这些代码字中的一个),则开销可被最小化。在解码器侧,给定位串流语法及二进制化方案,可被识别的在仓序列的结束处的另外读取的仓被舍弃。
简单码设计实例呈现如下。用于例示说明目的,我们考虑具有三个字母及ps(a0)=0.7,ps(a1)=0.18,及ps(a2)=0.12固定的相关联概率的源{s}的简单实例。对应的三元选择树可被转换成完整二元树,如图15所示。
图15的完整二元树的二进制化在表5中给定。三元符号pmf ps被转换为两个二元对于位串流的各符号s,存在仓b0。当b0等于0时,还存在b1。注意,表2中给定的二进制化与源s的最佳单字母霍夫曼码相同。
表5:三字母源的二进制化。对于第一仓LPB概率pLPB为0.3而对于第二仓为0.4
符号ai 概率p(ai) 仓b0 仓b1
a0 0.7 1
a1 0.18 0 1
a2 0.12 0 0
LPB概率 pLPB=p(bj=0) 0.3 0.4
源s的熵为
H(0.7,0.18,0.12)=H(0.7,0.3)+0.3H(0.6,0.4)=101726位/符号          (B22)
单字母霍夫曼码的平均代码字被给定为
l &OverBar; HC = &Sigma; i = 0 M - 1 p i l i HC = 1.3 位/字符    (B23)
对应于ρHC=0.1274位/符号的冗余或10.87%期望率另外开销。
对于具有固定pmf的特定二进制实例,因对于两个仓,LPB值bj LPB等于0,故仓b0及b1已表示编码仓。LPB概率的分布f(s)为离散的,其中f(p)=0但p=0.3及p=0.4除外。从而,最佳概率离散导致K=2个区间,具有表示这些区间之间的区间边界p1可以是在[0.3,0.4)中所选的任意值。
为了对所述源进行编码,源符号序列被二进制化为仓序列。对于每个源符号,仓b0被传输。仓b1只在b0=0时传输。仓b0及b1的常数LPB概率分别被分开编码。
通过简单的VNB2VLC映射可以获得具有固定概率的二元字母表的有效编码。在图6和图7中分别给定了LPB概率pLPB=0.3和pLPB=0.4的具有小的编码表的VNB2VLC映射的实例7。pLPB=0.3的VNB2VLC映射产生0.0069位/仓或0.788%的冗余。对于pLPB=0.4的VNB2VLC映射,冗余为0.0053位/仓或0.548%。
表6:LPB概率pLPB=0.3的仓树和代码。该代码码的冗余为0.788%
仓树 概率 代码
'11′ 0.72=0.49 '1′
'01′ 0.7·0.3=0.21 '01′
'0′ 0.3 '00′
表7:LPB概率pLPB=0.4的仓树和代码。该码的冗余为0.548%
仓树 概率 代码树
'111′ 0.63=0.216 '11′
'110′ 0.62·0.4=0.144 '001′
'10′ 0.6·0.4=0.24 '11′
'01′ 0.4·0.6=0.24 '01′
'00′ 0.42=0.16 '000′
通过新编码方法所得总期望率为
相对于熵极限的总冗余为0.73%,表示与单字母霍夫曼码相比具有显著的改善。
通过形成回合长度码,可获得相似编码效率的改善可能有争议。对于前述实例,我们通过考虑至多二个符号的回合,可建构最大可能符号的回合长度码。事件{a0a0,a0a1,a0a2,a1,a2}的每一个可与分开的代码字相关联。这样的代码获得相对于熵极限的冗余为1.34%。实际上,VNB2VLC码可视为二元符号的回合长度码的一般化(表3的VNB2VLC码确实有效地表示回合长度码)。对于具有固定概率的单一符号字母表,通过形成将可变数目的源符号映射至可变长度代码字的代码,也可获得类似所述方法的编码效率。所述方法的主要优点在于,将具有固定或适应性概率估计值的任意源符号序列映射至以固定LPB概率操作的少数简单的二元编码器的灵活性。
其次考虑如何获得唯一的确定性。
采用所述的熵编码方案,源符号序列={s0,...,sN-1}的编码包含以下三个基本步骤:
符号二进制化={b0,...,bB-1}=γb()产生仓序列={b0,...,bB-1}
仓序列转换成编码仓序列
使用概率区间离散及K个固定二元编码器,编码仓序列的二元熵编码
如果编码仓序列是唯一地解码的且映射γb及γc为可逆的,则符号序列={s0,...,sN-1}是唯一地可解码的。
设γe告知编码器一个或多个编码仓序列映射至一个或多个代码字序列(c)={c0,...}
(c)=γe(c)   (B25)
给定代码字序列(c),为了获得编码仓序列c的唯一的解码能力,编码器映射γe必须具有唯一的代码字(c)被分配给各个可能的编码仓序列c的性质:
&ForAll; , j c i c , &NotEqual; j c i c &DoubleRightArrow; ( i c ) &NotEqual; ( j c ) - - - ( B 26 )
当使用算术码或前缀码时通常满足该性质。特别地满足章节4.1所述的VNB2VLC码(包括章节4.3中所述代码字结束),原因在于VNB2VLC码表示可变数目仓的前缀码。
然而,在所述的熵编码方法中,编码仓序列c被划分成K个子序列其中k=0,...,K-1,
{ , . . . , K - 1 c 0 c } = &gamma; p ( c ) - - - ( B 27 )
及对于各个子序列使用特定编码器映射而分配代码字序列从而,唯一解码能力的条件必须扩展。如果给定对应的代码字各个编码仓子序列为可唯一地解码,且划分规则γp为解码器所已知,则给定K个代码字序列,其中k=0,...,K-1,编码仓序列c可唯一地地解码。划分规则γp由LPB概率区间离散{Ik}及与编码仓其中j=0,...,B-1相关联的LPB概率pj LPB给定。因此,LPB概率区间离散{Ik}须在解码器端知晓,及对于各个编码仓的LPB概率pj LPB须以相同方式在编码器及解码器端推导出,其中j=0,...,B-1。
对于仓序列至编码仓序列c的映射γc,各个单一bj通过二元映射转换,其中j=0,...,B-1。在解码器端,仓序列可通过二元映射而推导出
b j = ( &gamma; c j ) - 1 ( b j c ) = b j c &CirclePlus; b j LPB - - - ( B 28 )
其中j=0,...,B-1。如果各仓bj的LPB值bj LPB在编码器及解码器端以相同方式被推导出,则这些映射表示对应的编码器映射的逆,因
b j c &CirclePlus; b j LPB = b j &CirclePlus; b j LPB &CirclePlus; b j LPB = b j &CirclePlus; 0 = b j - - - ( B 29 )
因此,仓序列至仓编码序列c的转换γb是可逆的。
最后,我们研究二进制化=γb()的可逆性,由此各符号si被映射至仓序列其中i=0,...,N-1。如果对于符号si二进制化映射将不同仓序列分配给字母表Ai的各个字母则给定对应的仓序列i,符号si可唯一地被解码。然而,该种条件是不充分,原因在于,仓序列={b0,...,bB-1}的划分成为对应于符号si的仓序列i对于解码器来说是未知的,其中i=0,...,N-1。当对于各个符号si,与字母表Ai的各个字母相关联的仓序列形成前缀码,及对于各符号si的二进制化映射在解码器端为已知时,其中i=0,...,N-1,给定充分条件。
所述的熵编码方法的唯一解码能力的条件概述如下:
·二进制化映射表示前缀码且为解码器所已知(以符号编码顺序)
·在编码器及解码器侧以相同方式推导出全部仓bj的概率模型(bj LPB,pj LPB)
·LPB概率区间(0,0.5]的划分成K个区间Ik为解码器所已知,其中k=0,...,K-1
·各个概率区间Ik的映射表示独特可解码的代码,其中k=0,...,K-1
在后文中,我们以更详细的方式描述编码器及解码器的总体设计。我们的关注集中在编码方案,其中,仓的概率模型{bLPB,pLPB}在编码器及解码器侧直接估算,及K个二元编码器使用章节4.1描述VNB2VLC映射。各源符号s应该与符号类别cs相关联,其确定符号类别包括其数值范围。符号顺序及相关联的符号类别应该通过语法给定,推定在编码器及解码器侧为已知。
图17中示出了编码器和解码器设计实例的框图。在编码器侧,与相关联的符号类别cs的符号s被馈至二进制化器,其将各符号s转换成仓序列
所使用的二进制方案基于符号类别cs而确定。此外,二进制化器将仓序列s的各仓b与概率模型指示cb(指定用于编码仓b的概率模型)相关联。概率模型指示cb可基于符号类别cs、仓序列s内部的当前仓的仓数目、和/或已编码仓及符号值而推导出。
概率估算器和分配器保持多个概率模型,其由成对值{bLPB,pLPB}表征。其从二进制化器接收仓b和相关联的概率模型指示cb,并分别地将指示的概率模型的LPB值bLPB及LPB概率pLPB转发给编码仓推导器及概率量化器。随后对应的概率模型{bLPB,pLPB}利用所接收的仓b的值被更新。
编码仓推导器分别从二进制化器和概率估算器以及分配器接收仓b和相关联的LPB值bLPB,并将编码仓bc(由推导出)发送给概率量化器。该概率量化器将各个编码仓bc转发至K个二元编码器中的一个。其包含有关LPB概率区间量化{Ik}的信息。与编码仓bc相关联且接收自概率估算器及分配器的LPB概率pLPB与区间边界{pk}作比较,并推导出概率区间指数k,其中pLPB∈Ik。然后,编码仓bc被转发至相关联的二元编码器。
个二元编码器的每个由仓缓冲器和仓编码器组成。仓缓冲器从概率量化器接收编码仓bc,并以编码顺序存储。仓编码器实施特定的VNB2VLC映射,并将仓缓冲器内的仓序列与代码字相关联的仓序列进行比较。如果仓缓冲器内的仓序列等于这些仓序列中的一个,则仓编码器从仓缓冲器移出该仓序列{bc}及将相关联的代码字({bc})写至对应的代码字串流。对于仓缓冲器为非空的全部二元编码器,在符号序列的编码处理的结束处,结束代码字如章节4.3所述写入。
K个所得代码字串流可分开地传输、打包、或存储,或者可交插(参考章节6.2)用于传输或存储目的。
在解码器侧,由仓解码器和仓缓冲器所组成的K个二元解码器各自接收一个代码字串流。仓解码器从代码字串流读取代码字({bc}),并将相关联的仓序列{bc}以编码顺序***仓缓冲器。
符号序列的解码由潜在语法所驱动。符号s的请求连同符号类别cs被发送至二进制化器。二进制化器将这些符号请求转换成仓请求。仓的请求与概率模型指示cb相关联,其以与编码器相同的方式被推导出,并被发送至概率估算器和分配器。概率估算器和分配器以类似其在编码器侧的对应部分般操作。基于概率模型指示cb,识别概率模型,及分别将其LPB值bLPB和LPB概率pLPB转发给编码仓推导器和概率量化器。
以与在编码器侧确定二元编码器的相同方式,概率量化器基于LPB概率pLPB而确定K个二元解码器中的一个,从对应的仓缓冲器以编码顺序移出第一编码仓bc,并转发至仓推导器。仓推导器从概率量化器的概率估算器及分配器分别接收编码仓bc及相关联的LPB值bLPB,及测定仓值作为对由二进制化器发送的仓请求的最后响应,仓推导器将解码仓值b发送至二进制化器和概率估算器及分配器。
在概率估算器和分配器中,解码仓b值用来以与编码器侧相同的方式更新概率模型{bLPB,pLPB},其通过相关联的值cb择定。最后,二进制化器将所接收的仓b添加至已经对于符号请求而接收的仓序列s,并将该仓序列s与通过二进制化方案而与符号值相关联的仓序列进行比较。如果该仓序列s匹配这些仓序列中的一个,则对应的解码符号s作为对符号请求的最终响应而被输出。否则,二进制化器发送另外的仓请求直至符号s被解码为止。
如果未接收到由语法所驱动的另外的符号请求,则结束符号序列的解码。在熵解码处理结束时可能含在仓缓冲器的编码仓bc(由于结束代码字的结果)被舍弃。
综合前述实施方式,同样表示熵编码的新颖方法。描述了符号序列映射至位串流及逆映射。各个符号承载同时在编码器和解码器知晓的相关联的参数。熵编解码器包含多个先进先出(FIFO)缓冲器,其各自被分配给与符号相关联的参数子集。对于给定的符号参数,编码器将符号分配给对应的FIFO缓冲器。因编码器分配规则在解码器侧已知,故解码器从编码器已经分配符号的FIFO缓冲器读取。
参数分配给符号的一个实例为其概率的估计值。概率估计值可以是给定的或在编码器及解码器处同时进行而从测量值推导出的。特定FIFO缓冲器包含具有落入所选的概率子集的估算的概率值的符号,从而可以改善熵编码。所述改善可以涉及位率减少、复杂性降低、延迟降低或误差弹性。
参数分配给符号的另一个实例为符号概率估计值及包括下列中的一个或多个的另一参数:符号的语义、其重要性、其位置(时间、空间、体积等)、其信道代码保护。特定FIFO缓冲器包含与所选的概率子集相关的符号,从而可改善熵编码,且关于其他的参数可以获得效果。
在已经描述一些实施方式而不是笼统地关于压缩的数据之后,描述了这样的实施方式,根据所述实施方式,上述编码被用于压缩视频数据,即,在视频和/或图像编码中被采用。
实例1
第一实施方式关于图像及视频编码器及解码器中的编码变换系数,并描述可特别地采用作为在视频编码领域用来编码系数的新颖有效的方法,例如,替换H.264/AVC中的CABAC的对应的部分。
在视频编码的较早基于混成区块标准,诸如MPEG-2、H.263及MPEG-4中,量化变换系数(层级)的区块通过已限定的扫描处理程序而映射至向量,所述向量通过使用游程编码及随后的映射而被编码成为具有可变长度的代码字。
在MPEG-2中,具有可变长度的代码字与二维事件(RUN、LEVEL)相关联,其中,LEVEL表示未经量化成为零的(有效的)变换系数的量化值;回合长度RUN指示量化成为零的后续(非有效)的变换系数的数目,其在变换系数向量中紧接在本有效变换系数前方。此外,对于两个特别事件EOB和ESCAPE定义具可变长度的代码字。尽管EOB事件指示区块中不再有有效变换系数,但ESCAPE事件信号通知现有事件(RUN、LEVEL)无法通过具有可变长度的被限定的代码字的字母表表示。在这种情况下,符号RUN和LEVEL通过固定长度代码字编码。
在较新的编码标准H.263及MPEG-4中,具有可变长度的代码字的关联性基于三维事件(LAST、RUN、LEVEL)进行,其中,二元符号LAST指示本有效变换系数是否为在区块内部的最后的有效系数,或是否有其它有效变换系数接在其后。通过使用这些三维事件,无需另外的EOB事件;EXCAPE事件被以类似MPEG的方式使用,其中,除RUN和LEVEL外,二元符号LAST被编码。
在MPEG-2、H.263及MPEG-4中实现的变换系数编码具有下列缺点:
-只有一个具有整数长度的代码字与该编码事件相关联,不会发生具有大于0.5的概率的事件的有效编码。
-对于区块中的全部变换系数,使用固定表来将编码事件变换至具有可变长度的代码字并未考虑与位置或频率相关的符号统计值。
-调整适应于实际上存在的符号统计值是不可能的。
-未使用存在的符号间冗余。
H.263的Annex E标准指定选择性非适应性算术编码,其中使用不同预定模型概率分布,
-对于第一、第二及第三事件各有一个(LAST、RUN、LEVEL)/ESCAPE各有一者,
-对于区块变换系数的全部后续事件(LAST、RUN、LEVEL)/ESCAPE有另一者,
-以及对于符号LAST、RUN及LEVEL各有一者,其在ESCAPE事件之后编码。
由于下述理由,通过该选择性算术编码,编码效率并无可察觉地增加是可能的:
-具有非整数长度的代码字可与编码事件相关联的算术编码的优点几乎不会对通过使用形式(LAST、RUN、LEVEL)的组合事件的编码效率造成任何影响。
-使用不同概率分布的优点被下述事实所消除:调整适应于实际存在的符号统计值为不可能。
在H.264/AVC中,基于具有编码变换系数的可变长度的代码字,上下文适应性方法被指定为熵编码的标准方法。这里,变换系数区块的编码由下列特性确定:
-在区块内的有效系数数目和在变换系数向量的结束处被量化为1的连续系数的数目由符号COEFF_TOKEN确定。根据块类型和邻近区块已经编码/解码的符号COEFF_TOKEN,选择五个被限定的代码字表中的一个用于编码。
-虽然对于在系数向量的结束处被量化成为1的变换系数,只有单一位被移转来指定符号,但其余有效变换系数的值(层级)的编码利用组合的前缀后缀代码字而以逆扫描顺序进行。
-如果有效变换系数数目小于对应的块的变换系数数目,则符号TOTAL_ZERO将被编码,其指示变换系数量化成为零的数目,其在系数向量中在最后的有效系数前方。为此,指定18各代码字表,其根据有效系数数目及区块类型而切换。
-在有效系数前方量化成为零(非有效)系数的回合长度(RUN)系以逆扫描顺序对于各个有效变换系数编码,只要RUN的已编码和小于TOTAL_ZEROS即可。根据TOTAL_ZEROS及已编码/解码的RUN,可在七个代码字表之间进行切换。
虽然通过基于上下文切换代码字表的这种所谓的CAVLC方法(CAVLC:上下文-适应性可变长度编码),允许比MPEG-2、H.263及MPEG-4中指定方法显著更有效的变换系数编码,但基本上有下列缺点:
-不同代码字表之间的切换根据已编/解码的符号进行,但代码字表无法调整成为实际符号统计值。
-通过使用具有可变长度的代码字,具有大于0.5的符号概率的事件无法有效地编码。该限制特别妨碍具有较小值范围的编码符号,由此,适当的上下文的构建对于在不同模型概率分布之间的切换是可能的。
避免对于基于块的图像及视频编码器的编码变换系数的众所周知方法的缺点的一个可能的解决方案为适应性熵编码与使用符号间冗余的适当上下文产生的组合。
与前述编码方案相比,接下来描述的应用例表示用来编码图像和/或视频编码器及解码器中的编码变换系数的方案,该方案消除了前述缺点,及特别地,将编码所需的计算量保持为小。通过将这种编码与相对于图1至17在实施方式中描述的熵编码方案的结合,获得了极为有效的编码效率。
根据第一方面,下述编码方案提供一种用来编码图像和/或视频编码器及解码器中的编码变换系数的方法,其中对包含效变换系数的(视频)图像的区块,对于各块,变换系数的编码以下述方式进行,使得,
-在扫描处理中,块中的有效变换系数的位置及随后,
-以逆扫描顺序——始于在该块内的最后的有效变换系数,有效变换系数的值(层级)
被确定和编码。
一个优选实施方式的特征在于所述块的每个有效变换系数而不是所述块的最后的变换系数由1-位符号来表征。
如果各个有效变换系数的符号由1-位符号(SIGN)指示且幅值由二元编码符号(ABS)指示,则同样具有优点。
在一个优选实施方式中,包含效变换系数的块通过与其他语法元素(诸如CBP或宏区块模式)连接的1-位符号CBP4表征。
所述方法的特别的优点在于,通过传输块的各系数的1-位符号SIG,及块的各个有效系数的1-位符号LAST,编码有效位映射,其中,传输以扫描顺序进行,SIG用来识别有效系数,及LAST指示在该块中是否有另外的有效变换系数。
在另一个优选实施方式中,对于1-位符号CBP4、对于有效位映射和/或对于系数幅值的建模以上下文相依性方式进行。因此,具有可比较的统计值的变换系数的块类型被概述至块类别。
另外的优点在于,在本发明方法的特定实施方式中,对于块的最后扫描位置,并未传输有效信息(SIG、LAST)。
在优选实施方式中,幅值(ABS)以一元二进制的符号指示或通过具有前缀部分及后缀部分的符号指示,其中该前缀部分由1所组成,而后缀部分以0次幂exp-golomb码编码。
根据第二方面,本实施方式提供一种具有形成为使得可以执行用于在图像和/或视频编码器和解码器中对变换系数进行编码的至少一个处理器和/或芯片的配置,其中,对于包含有效变换系数的(视频)图像的块,变换系数的编码以前述方式进行。
根据第三方面,本应用例提供一种计算机程序,在已经加载至计算机的内存之后,允许计算机执行用于在图像和/或视频编码器及解码器中对变换系数进行编码的方法,其中,对于包含有效变换系数的(视频)图像区块,变换系数的编码以前述方式进行。
这样的计算机程序例如(收费或无偿、可自由存取或由通行码保护)可以数据或通信网路提供用来下载。以此方式提供的计算机程序然后可由一种方法利用,在所述方法中,根据权利要求11的计算机程序从网络下载用来例如从因特网传输至与所述网络连接的数据处理设备。
根据第四方面,本实施方式提供一种其上存储程序的计算机可读取存储介质,该程序在已经加载计算机的内存后,允许计算机执行用来在图像和/或视频编码器及解码器中对变换系数进行编码的方法,其中,对于包含有效变换系数的(视频)图像块,变换系数的编码以前述方式进行。
用来对变换系数进行编码的方法由以下特征来表征:
-二维变换系数块通过扫描处理而映射至一维向量。
-在众所周知的方法使用的EOB符号、LAST符号或系数计数器(有效系数数目)以及RUN(呈扫描顺序之非有效系数数目)的语法元素由1-位符号CBP4和有效位映射所替换。
-层级(有效系数幅值)以逆扫描顺序编码。
-上下文建模以新颖方式进行。
图18示出了编码方法。对于各块变换系数,除非更高阶位语法元素(CBP或宏区块模式)已指示所考虑的区块不含任何有效变换系数,否则首先传输1-位符号CBP4。如果在该区块内没有有效系数,则CBP4符号将为零。如为1,则将编码指定有效变换系数的位置(与扫描顺序)的有效位映射。随后,以逆扫描顺序传输有效系数的幅值及符号。编码处理程序的详细说明将在1中示出。随后,二元熵编码的上下文模型在2中描述,仓的熵编码以前文概述的用于熵编码的任何实施方式进行。
1.变换系数的编码描述
1.1扫描变换系数
各块的变换系数系利用扫描处理(诸如锯齿形扫描)而映射至向量。
1.2CBP4符号
CBP4为指示区块内是否存在有效变换系数(变换系数不等于零)的1-位符号。如果CBP4符号为零,则对于相对应区块将不再有信息被传输。
1.3有效位映射
如果CBP4符号指示对应的块包含有效系数,则有效位映射将被编码。这可以以扫描顺序通过传输各系数的1-位符号(SIG)而进行。如果对应的有效符号为1(有效系数),则将传输另一个1-位符号(LAST)。该符号指示该有效系数是否为块的最后的有效系数或是否为之后的另外的有效系数。图19示出了所描述的用于对有效映射进行编码的方法的两个实例。对于块的最后的扫描位置,有效信息(SIG、LAST)绝不会被传输。如果有效位映射的传输未被1的LAST符号中断,则显然在最后的扫描位置处的系数为有效的(见图19图中的黄色标记的位置)。
1.4层级信息
在块内部的有效变换系数位置由有效位映射所清晰指定。系数(层级)的精准值编码通过两个编码符号进行:ABS(系数幅值)及SIGN(系数符号)。虽然SIGN表示1-位符号,但根据图20的二进制化被用于编码系数幅值(ABS)。对于在区间[1;14]中的系数幅值,该二进制化对应于一元二进制化。大于14的系数幅值的二进制化由14个1的前缀部分及表示符号的第0次幂exp-golomb码的后缀部分组成。二进制化并不包括同值0的系数幅值(ABS)的表示,原因在于,有效系数(不等于零的系数)通常具有大于或等于1的幅值(ABS)。
对于大于14的系数幅值,由前缀部分和第0次幂exp-golomb码的后缀部分所形成的二进制化具有的优点为:可以使用具有符号概率0.5的特别非适应性上下文而不牺牲后缀部分的二元判定的编码效率,从而可减少编码及解码的计算量。
层级系以逆扫描顺序——始于块内最后的有效系数被编码;这使得能够形成二元熵编码的合适的上下文。
2.上下文建模
前述有效位映射及数值二进制化的编码导致符号序列,其通过前述任一实施方式所解/编码,其中,分配器系基于与上下文相关联的概率而分配部分位串流的参数,而上下文如以下所述确定。
一般而言,当考虑图像和/或视频编码***时,区分不同类型的变换系数块。因此,例如存在12种类型的变换系数块,其具有在H.264/AVC标准的所述最终稿本国际标准中的不同统计值(图21中表的左栏)。对于大部分图像序列及编码状况,部分统计值极其类似。为了保持使用的上下文数目少,由此确保快速调适将被编码的图像序列的统计值,在H.264/AVC标准中的块类型例如可归类为五大类(图21图中表的右栏)。类似的分类可以用于其它图像和/或视频编码***。在H.264/AVC标准的情况下,对于五类,各个上下文的量被用于符号CBP4、SIG、LAST及ABS。
2.1CBP4符号的上下文建模
为了对1-位符号CBP4进行编码,四个不同上下文被用于各个变换块类别(见图21)。将被编码的块C的上下文数目通过下式确定
ctx_number_cbp4(C)=CBP4(A)+2xCBP4   (B)
其中,考虑为与相同块类型相关联的块C的那些邻近区块(左及上)以A和B标示。关于H.264/AVC标准,为该条件区分以下6种类型的块:亮度-DC、亮度-AC、彩度-U-DC、彩度-U-AC、彩度-V-DC、及彩度-V-AC。如果变换系数的相关块X(A或B)不存在于邻近宏区块中(换言之,例如如果本块以INTRA16x16模式编码,但邻近区块已经以INTER模式传输),对于邻近区块X,CBP4(X)被设定为零。如果邻近区块X(A或B)在图像区外侧,或属另一片段,则相对应值CBP4(X)由默认值所替换。默认值1用于INTRA-编码块,而默认值0用于INTER-编码块。
2.2用于对有效位映射进行编码的上下文建模
为了对有效位映射进行编码,每个块类别使用max_koeff-1不同的上下文的每个(参考第21图)以用来对符号SIG和LAST进行编码。max_koeff由此指定对应的块类别(用于H.264/AVC,见图21)的变换系数数目。上下文数目通常由所考虑的系数的对应的扫描位置指示。已经扫描作为第i系数的系数koeff[i]的上下文数目由此导致:
ctx_number_sig(koeff[i])=ctx_number_last(koeff[i])=i
对于每个块类型,使用2*max_koeff-2上下文以用来对有效位映射进行编码。
2.3用来对系数幅值进行编码的上下文建模
在图20中示出的二进制化被用来对有效变换系数的幅值进行编码。两个不同的上下文量被用于每个区块类别,即,一个用于对第一二元判定仓=1(图20中标为橙色)进行编码,而另一个用于对二元判定仓=2,…,14(图20中标为绿色)进行编码。由此相关联的上下文数目如下:
变换系数幅值以逆扫描顺序传输。第一二元判定的上下文通过具有ABS=1的幅值的已传输(以逆扫描顺序)的系数数目确定。如果多于三个具有幅值ABS=1的系数已经被传输,则将通常选用上下文值3。一旦具有幅值ABS>1的系数已经被传输,则上下文4将用于块内全部其余有效系数。
使用一个且相同的上下文对全部具有仓=2.14的二元判定进行编码。因此,上下文值由具有幅值ABS>1的已编码的以逆扫描顺序)的系数确定,其中,最大上下文数目限于4。作为实例,当对有效变换系数的幅值ABS进行编码时,上下文选择的两个实例在图23中示出。为了对系数幅低和符号SIGN的二元判定仓>14进行编码,使用具有符号概率P0=P1=0.5的各个非适应性上下文。
因此,相对于图18至23所描述的应用实施方式涉及在图像和/或视频编码器和解码器中对变换系数进行编码,其中,对于包含有效变换系数的(视频)图像块,变换系数的编码系以下述方式进行使得对于各块,在扫描处理中,在块中的有效变换系数位置,随后,以逆扫描顺序——始于块内最后的有效变换系数——有效变换系数的值(层级)被确定和编码。除了块的最后的有效变换系数外,块的有效变换系数可以有1-位符号表征。此外,对于各个有效变换系数,符号可由1-位符号(SIGN)指示,而幅值由二元编码符号(ABS)指示。幅值可由符号(ABS)以一元二进制指示,或由具有前缀部分和后缀部分的符号(ABS)指示,其中,前缀部分由1所组成,而后缀部分以0次幂exp-golomb码编码。包含有效变换系数的块可由与另外的语法元素连接的1-位符号CBP4,例如,CBP或宏区块模式表征。此外,通过传输块的各系数的1-位符号(SIG)和块的各有效系数的1-位符号(LAST),可对有效位映射进行编码,其中,所述传输以扫描顺序进行,(SIG)用来识别有效系数,及(LAST)指示块中是否有另外的有效变换系数。对于1-位符号CBP4、对于编码有效位映射和/或对于编码系数幅度的建模可以上下文相依性方式进行。对于块的最后的扫描位置,并无任何有效信息(SIG、LAST)可被传输。具有可比较的统计值的变换系数的区块类型可概述为区块类别。
以另一方式陈述,变换系数层级的编码可分成三个步骤。在第一步中,对各变换块传输二元语法元素coded_block_flag,其信号通知该变换区块是否包含有效变换系数层级(即非为零的变换系数)。如果该语法元素指示有效变换系数层级为存在,则二元值有效位映射被编码,其指定哪一个变换系数层级具有非零值。及然后,以逆扫描顺序,非零变换系数层级被编码。有效位映射编码如下。对于以扫描顺序的各个系数,二元语法元素significant_coeff_flag被编码,其指定对应的变换系数层级是否不等于零。如果significant_coeff_flag仓等于1,即,如果非零变换系数层级存在于该扫描位置处,则对另外二元语法元素last_significant_coeff_flag进行编码。该仓指示该当前有效变换系数层级是否为该块内的最后放入有效变换系数,或另外的有效变换系数层级是否以扫描顺序跟随。如果last_significant_coeff_flag指示并无其它有效变换系数接在其后,则无另外语法元素被编码以用来指定块的有效位映射。在接下来的步骤中,有效变换系数层级值被编码,其在块内部位置已经由有效位映射确定。有效变换系数层级值通过使用如下三个语法元素而以逆扫描顺序被编码。二元语法元素coeff_abs_greater_one指示有效变换系数层级的绝对值是否大于1。如果二元语法元素coeff_abs_greater_one指示绝对值大于1,则发送另外的语法元素coeff_abs_level_minus_one,其指定有效变换系数层级的绝对值减1。最后,对于各个有效变换系数层级,编码指定变换系数值符号的二元语法元素coeff_sign_flag。再次需要注意的是,与有效位映射相关的语法元素以扫描顺序被编码,而与变换系数层级的实际值相关的语法元素以逆扫描顺序被编码,而允许使用更适当的上下文模型。
在H.264的CABAC熵编码中,变换系数层级的全部语法元素使用二元概率模型编码。非二元语法元素coeff_abs_level_minus_one首先经二进制化,即,其被映射至二元判定(仓)序列,而这些仓被顺序编码。二元语法元素significant_coeff_flag、last_significant_coeff_flag、coeff_abs_greater_one、及coeff_sign_flag被直接编码。各个编码仓(包括二元语法元素)与上下文相关联。上下文表示一类编码仓的概率模型。对于每个上下文,基于已经利用对应的上下文被编码的仓的值来估计与两个可能的仓值中的一个的概率相关的测量值。对于与变换编码相关的若干仓,基于已经传输的语法元素或基于块内的位置来选择用于编码的上下文。
有效位映射指定有关扫描位置的有效性(变换系数层级为非零)的信息。在H.264之CABAC熵编码中,对于4x4的块大小,分开的上下文被用于各个扫描位置以用来对二元语法元素significant_coeff_flag和last_significant_coeff_flag进行编码,其中,不同的上下文被用于扫描位置的significant_coeff_flag和last_significant_coeff_flag。对于8x8块,相同的上下文模型用于四个连续的扫描位置,结果导致significant_coeff_flag的16个上下文模型和last_significant_coeff_flag的另外的16个上下文模型。
在对有效位映射进行编码之后,区块以逆扫描顺序被处理。如果扫描位置为有效的,即该系数不同于零,则传输二元语法元素coeff_abs_greater_one。最初,对于coeff_abs_greater_one语法元素,选择对应的上下文模型集合中的第二上下文模型。如果在块内的任何coeff_abs_greater_one语法元素的编码值等于1(即绝对系数大于2),则上下文建模切换返回至集合的第一上下文模型。否则(在内的全部coeff_abs_greater_one编码值为零,及对应的绝对系数层级等于1),上下文模型根据已经在所考虑块的反扫描中编码/解码的等于零的coeff_abs_greater_one语法元素的数目而选定。对于语法元素coeff_abs_greater_one的上下文模型的选择可以下式概述,其中,当前上下文模型指数Ct+1基于前一个上下文模型指数Ct及先前已编码的语法元素coeff_abs_greater_one的值(其在式中以bint表示)而选定。对于块内的第一语法元素coeff_abs_greater_one,上下文模型指数被设定为等于Ct=1。
用来对绝对变换系数层级进行编码的第二语法元素coeff_abs_level_minus_one只有在相同扫描位置的coeff_abs_greater_one的语法元素等于1时被编码。非二元语法元素coeff_abs_level_minus_one被二进制化成为仓序列,及对于该二进制化的第一仓,上下文模型指数的选择如下所详述。二进制化的其余仓以固定的上下文被编码。二进制化的第一仓的上下文选择如下。对于第一coeff_abs_level_minus_one语法元素,选择coeff_abs_level_minus_one语法元素的第一仓的上下文模型集合的第一上下文模型,对应的上下文模型指数被设定为等于Ct=0。对于coeff_abs_level_minus_one语法元素的各个另外的第一仓,上下文建模切换成集合中的下一个上下文模型,其中,集合中的上下文模型数目限于5。上下文模型的选择可通过下式表示,其中,当前上下文模型指数Ct+1基于前一个上下文模型指数Ct而选择。如前述,对于在块内的第一语法元素coeff_abs_level_minus_one,上下文模型指数被设定为等于Ct=0。注意,用于语法元素coeff_abs_greater_one和coeff_abs_level_minus_one的上下文模型集合是不同的。
Ct+1(Ct)=min(Ct+1,4)
当组合刚才描述的应用实施方式与稍早描述的熵编码实施方式时,在已经将概率量化成为概率部分位串流的较小集合之后,分配给各个上下文的概率例如可用作为或参数中的至少一个用于诸如如前述,用来从多个部分位串流路径中选择熵编码器/熵解码器。换言之,顺序定义有效位映射的符号序列的重建与随后不等于零的变换系数值的编码可使用根据前述实施方式中的任一个的解码器执行。
实例2
根据用于上述上编码实施方式的应用的实例2,可获得具有较高压缩效率的改善的熵编码设计。
一种用于对信息符号的符号序列进行熵编码以获得熵编码的信息符号的装置,所述符号序列具有起始符号,所述装置包含:熵编码器,用来基于符号序列的符号(该符号为符号集合的一部分)的概率信息而熵编码该符号来产生熵编码的信息符号;上下文建模器,用来基于符号的上下文而推导出该符号的概率信息,所述上下文包括在处理符号前通过熵编码器处理的一个或多个上下文符号,所述上下文建模器包括初始化器,用来通过确定及提供初始化概率信息给熵编码器而初始化该上下文建模器,所述初始化概率信息将被熵编码器用来处理起始符号,其中,该初始化器可操作为基于与起始符号相关的符号统计值的估计值而测定初始化概率信息,使得初始化概率分布与对于符号集合的全部符号的等-可能性分布不同。熵编码器可根据前述任一实施方式而实施。
一种用来对熵编码的信息符号进行熵解码的解码器,所述熵编码的信息符号基于符号的概率信息而通过对符号序列的符号进行熵编码而产生,该符号为符号集合的一部分,其中,该符号的概率信息基于符号上下文而推导出,该上下文包括一个或多个稍早处理的上下文符号,及其中,对于熵编码该起始符号,使用初始化概率信息,初始化概率信息基于与起始符号相关的符号统计值的估计值,并被确定为使得初始化概率分布与符号集合的全部符号的等-可能性分布不同,所述解码器包含:熵解码器,用来将熵编码的信息符号进行熵解码来获得具有起始符号的信息符号的符号序列;及上下文建模器,用来获得熵编码信息符号序列时所使用的概率信息,所述上下文建模器包括初始化器,用来获得熵编码起始符号时所使用的初始化概率信息。熵解码器可根据前述任一实施方式而实施。
通过初始化上下文建模器,使得初始化概率分布与符号集合的全部符号的等-可能性分布不同,可获得改善的压缩效率。具体地,初始化器可操作为基于与起始符号相关的符号统计值的估计值而确定至少用在符号序列的起始符号的初始化概率信息,使得该初始化概率信息与符号集合的全部符号的等-可能性分布不同。
特别地,对于对具有来自不同的视频源的广泛变化的内容的视频材料进行编码来说,这种“智能的”初始化是有优势的。在本发明的优选实施方式中,发现初始化概率信息可基于用来量化将被编码的信息的量化参数而推导出。在视频编码应用中,及特别地,在与H.264/AVC视频压缩标准相关的视频编码应用中,将被熵编码的信息符号的符号序列从变换残差值推导出,所述变换残差值例如通过时间/空间内/内帧预测模式而获得。
此外,智能的初始化可优异地基于关于视频源材料的先前知识。特别地,已经发现,通过定义几个初始化值集合可提高压缩效率。对于所谓的I-或SI-片段,例如单个初始化值集合就足够了。对于时间上预测编码的片段,诸如所谓的P-、SP-或B-片段,可定义多于一个且优选三个不同初始化值集合。对于这些片段,所选的初始化值集合将通过在编码器输出位串流中的某个语法元素而被指定,使得处理编码的输出位串流的解码器可正确地初始化其本身。优选地,该语法元素系作为片段报头的一部分而被传输。现在,编码器具有对各个片段的符号统计值为最适合的初始化值集合的选择自由度。
优选地,通过检测将通过熵编码器处理的符号序列属于哪一数据型或次数据型而将初始化值进一步分集。所述某一类型通过上下文索引变量而指示。所述上下文索引变量优选地被设计成其可信号通知(由此可推导出对应的数目的初始化概率信息的)399个不同模型中的一个,使得对于大量不同的符号序列,其各自具有起始符号,可确定最佳适应性初始化。
应该注意的是,将被熵编码的符号归属于的不同的上下文模型。优选地,将使用多个上下文模型中的一个上下文模型对若干个符号或位进行编码。这些若干个符号或位形成符号序列,其中,该符号序列的第一个将被编码的符号为起始符号,所述符号序列归属于不同的上下文模型。上下文模型可包括一个或甚至多于一个概率模型。在上下文模型具有多于一个概率模型的情况下,对于概率模型的各个改变,将进行新的初始化。
在下文中,将参照图24以用来示出熵编码装置和熵编码方法的结构和功能。具体地,图24示出了一种用来熵编码信息符号的符号序列以获得熵编码的信息符号的装置,其中,所述符号序列具有起始符号。符号序列被输入至熵编码器1112的符号序列输入端。熵编码的信息符号在连接至熵编码器1112的熵编码器输出端1114被输出。熵编码器可操作为用来基于符号的概率信息而熵编码该符号序列的符号。概率信息经由概率信息输入端16而输入熵编码器1112。因符号为特定符号集合的一部分,在二元情况下,只包括两个不同符号,即二元“0”及二元“1”,其只对符号集合的一个符号提供概率信息是足够的。根据本发明,优选提供最小可能符号(LPS)的概率信息,原因在于该数目当然小于最大可能符号的概率。此外,经由概率信息输入端16而提供给熵编码器的概率信息包括最大概率符号,由此易推导得最小可能符号值,反之亦然。
编码器进一步包括用来基于符号的上下文而推导出符号的概率信息的上下文建模器1118,该上下文包括通过上下文输入端1120将一个或多个上下文符号输入上下文建模器,该上下文符号在处理实际符号前已经通过熵编码器1112处理。
上下文建模器1118包括初始化器1120,所述初始化器用来在初始化概率信息由熵编码器1112用来处理起始符号(即符号序列的符号,对此不存在上下文符号,即在起始符号之前,通过熵编码器1112已经处理的符号)时,通过确定并提供初始化概率信息给熵编码器1112而初始化上下文建模器。这意味着,因熵编码器方案为串行方案,故起始符号为符号序列的第一符号。
初始化器可操作为基于与起始符号相关的符号统计值的估计值而确定初始化概率信息,使得对于起始符号所属的符号集合的全部符号,初始化概率不同于等-可能分布。
因上下文建模器及因此,熵编码器基于将通过熵编码器所编码的符号序列预期符号统计值的估计值,而以智能的方式初始化,故熵编码装置表现出改善的启动效能。换言之,熵编码装置对于起始符号的表现类似该起始符号并非序列的第一符号,反而为序列的中间符号。因此,初始化结果导致熵编码装置对于起始符号的预调适。与直接的方法相反,其中,初始化概率信息被设定为等-可能分布,熵编码器即刻经上下文-预调适。在直接的情况下,上下文调适需要数个步骤,对应于形成这些上下文符号的先前预编码符号的数目。
已发现本发明的上下文建模器和熵编码器的初始化使得与直接等可能分布相比仅通过提供智能的初始化概率信息(没有其他的动作)就可以节省高达3%的位率。
图25示出了来自图24的初始化器1020的优选实施方式。初始化器1120包括用来从片段报头取回符号序列的量化参数的取回器。此外,片段报头也被输入至检测器用来检测片段数据的数据类型。此外,提供一种用来检测片段数据的子数据类型的检测器1204。检测器1204进一步可操作为基于检测的子数据类型访问不同的初始化表。如后文所描述的,访问不同的初始化表一方面通过上下文索引控制,另一方面,通过初始化索引控制。根据片段数据只存在一个具有一定的I-及SI-片段的上下文索引的初始化表。对于P-及B-片段,存在至少两个且优选三个初始化表,其再次通过上下文索引寻址,其中实际使用的至少两个表中的该表通过初始化索引寻址。
一方面连接至取回器1200,而另一方面,连接至检测器1204的为计算器1206,其可操作为基于初始化概率计算信息,该初始化概率可以是实际初始化概率,或根据优选实施方式可以是概率状态索引,即,涉及包括对于最小可能符号的概率信息的初始化概率信息。我们发现用来量化片段数据的量化参数所得初始化概率的线性相依性,结果导致改善的压缩效率,即导致近最佳初始化。因此,图25中的计算器1206可操作为施加线性计算,其中,参数m指示线性相依性梯度,而另一初始化参数即n指示y轴偏位。图15中通过计算器1206处理的基本方程式在块206中表示为
m x QP+n,
其中,QP为量化参数,而m和n为从通过某个上下文索引寻址的不同初始化表获取的初始化参数。
在优选实施方式中,图25中的计算器1206执行如图25中所示的步骤序列。在第一步中,计算方程式mx片段QP+n。这里需要注意的是,在图26的优选实施方式中,mx片段QP的值F朝右移位4个数字。这里需要注意的是,当然全部值都为二元字符串。移位4个数字涉及在2-互补表示中的积mx片段QP的表示。然后,移位后的结果加至另一初始化参数n。然后一方面选择该结果的最小值,另一方面选择整数值1126。当该最小值大于1时,该最小化被选择并被分配给辅助变量preCtxState。然后确定该辅助变量是否低于或等于63。如果此确定获得“是”答案,则概率状态索引变量pStateIdx被计算为63与辅助变量之间的差。此外,确定最高概率符号(valMPS)的值等于零。在其它情况下,即,其中,辅助变量大于63的情况下,概率状态索引pStateIdx被计算为辅助变量与64的值之间的差。此外,最高概率符号值被设定为1。
应该注意的是,概率状态索引为参考包括最小可能符号的概率信息的初始化概率信息表。概率状态索引值可对在概率信息表中的64个不同概率信息值进行寻址。首先计算器率态索引及然后使用该概率状态索引寻址表的理由在于实际熵编码器核心的改善式设计。当然,通过适当映射,图26中所示的步骤序列也可直接计算初始化概率信息。
量化参数SliceQP被用来测定变换系数的量化。参数可具有52个值。可排列这些值从而使得量化参数递增1意味着量化步长大小增加约12%(增加6意味着量化步长大小恰增加2的因子)。应该注意的是,步长大小改变约12%也粗略表示位率缩减达约12%。
下文中,将参考示出了本发明的熵解码器的图27。如熵编/解码领域中所知的,熵解码器需要由编码器在各个编码步骤所使用的相同概率分布来将所传输的区间(自然以二元形式表示)解析成解码位,即,具有起始符号的信息符号序列。为此,本发明的熵解码器包括熵解码器1160和上下文建模器1162,所述上下文建模器还包括初始化器1164。这里可知,图27中所示的解码器的组成系类似图24中的编码器。再者,上下文建模器1162提供概率信息,或当考虑该序列的起始符号时,提供初始化概率信息。该信息系与相对于图24所描述的相同的方式产生,即,当熵解码器可操作为处理起始符号时,通过确定各个片段量化参数,通过确定某个上下文索引,及通过确定用来计算初始化概率信息的对应的初始化参数m、n来产生。这里需要注意的是,熵编码/解码链是一种先进先出管线,原因在于编码器中的符号序列的起始符号为将被编码的第一符号也且是将被解码的第一符号。因此,可使用图27中所示的熵解码器的相同初始化程序,其已经结合图24中所示的熵编码器进行了描述。
关于一般的上下文适应模式,上下文建模器还执行已经相对于图24所描述的相同的操作步骤。
在图24和图27中,熵编/解码器可如先前的图1至图17中的人一个所示的来实现。
实例3
在实例3中,描述了前述实施方式的一些扩展。
当在欲编码或解码下方的概率估算与使用索引p_state的概率状态Pn相关联时特别优异。
例如,存在N个不同的代表性概率状态。对此,可给定变迁规则,其中该变迁规则指示基于将被编码或解码的下一个符号的当前已编码或已解码符号,使用哪一个新态。如果除了当前给定概率状态Pn的指数n之外,出现最小可能符号(LPS),则当形成包含新概率状态Pm的指数m的表Next_State_LPS时,如果除了当前给定概率状态Pn的指数n之外,出现最高概率符号(MPS),则当形成包含新概率状态Pm的指数m的表Next_State_MPS时具有优点。
编码的一个特别具体实现包括下列步骤:
1.LPS的测定
2.量化
p=quantize[p_state]
3.编/解码
使用p作为部分位串流选择的参数的编/解码
4.p_state的调适:
bit将被解码/编码的当前位
p_state描述分配给位的上下文的当前概率状态
valMPS描述对应于MPS的位值
当根据量化参数SliceQP和预设的模型参数m和n执行概率模型的初始化时其进一步表现出优异性,其中,SliceQP描述在片段起点预设的量化参数,m和n描述模型参数。
当概率模型的初始化包括下列步骤时其也是具有优势的:
其中,valMPS描述与MPS对应的位的值,SliceQP描述在片段起点预设的量化参数,及m和n描述模型参数。
将详细地说明理论背景:
表协助概率估算
如前文已述,将被编码的符号出现概率的估算必须尽可能地良好。为了能够调适至非静态源统计值,该估算必须在编码过程中更新。一般而言,使用编码结果的定标频率计数器操作的方法通常被用于此。如果CLPS和CMPS指定LPS和MPS发生频率的计数器,则使用这些计数器,可进行估算
P LPS = C LPS C LPS + C MPS - - - ( C 1 )
及然后熵编/解码可使用该概率进行。为了实用目的,方程式(C1)所要求的分割有其缺点。但其通常是方便的且被要求用来在超过超过总该数器CTotal=CMPS+CLPS的预定临界值Cmax时执行计数器读数的重新定标。通过Cmax的适当选择,可将CTotal的往复值列表,从而方程式(C1)要求的分割可通过表访问及通过乘法与移位运算替换。为了也防止这些算术运算,在本发明中,完整表辅助方法被用于概率估算。
为了该目的,在训练期预选定代表性概率状态{PK|0≤k<Nmax},其中,状态的选择一方面取决于将被编码数据的统计值,及另一方面,取决于状态的默认最大数目Nmax的侧边状况。此外,定义变迁规则,其指示基于当前编码的符号,哪一个新状态将被用于将被编码的下一个符号。这些变迁规则以二个表的形式提供:{Next_State_LPSk|0≤k<Nmax}及{Next_State_MPSk|0≤k<Nmax},其中,所述等表对于当前给定概率状态的指数n在发生LPS或MPS时,提供新概率状态Pm的指数m。这里需要注意的是,对于分别在熵编码器或解码器中的概率估算,无需要求概率状态的明确表列。而是,只使用其各个的索引而暗中地寻址这些状态,如下章节描述。除了变迁规则外,须指定LPS及MPS值在哪个概率状态需被交换。一般而言,只存在可能使用其索引p_state而被识别的一个这样的良好状态。
其次,基于编码的位的值,描述如何执行概率状态p_state的更新:
使用已经在“表辅助概率估算”部分中已经提及的变迁表Next_State_LPS和Next_State_MPS。
具有一致概率分布的编码
在其中例如将被编码的有符号值(其概率分布在零附近被对称地设置)的应用中,为了编码符号信息,通常假设相等分布。由于该信息一方面将被嵌在熵编码位串流内,而另一方面,对使用表辅助概率估算的相对紧密装置及对于概率p≈0.5的情况的区间分隔不敏感,对于这种特定情况,提出了选择性地使用特定编码器/解码器程序,将示例如下。
在这种特定情况下,使用概率分布(据此,所有的符号值为同等可能的)执行仓的熵编码。
寻址和初始化概率模型
每个概率模型当被使用时以两个参数指示:1)表征LPS的概率状态的索引p_state,及2)MPS的值valMPS。两个变量的每一个需要在完整的编码单元(在关于一个片段的视频编码的应用中)的编码或解码的开始处被分别初始化。从而初始化值可从控制信息推导出,例如类似(片段的)量化参数,如下举例说明:
正向控制初始化处理
模型起始分布的调适的另一可能性通过下述方法提供。为了保证模型的初始化的更佳调适,在编码器中,可提供模型的预定起始值的选择。这些模型可被组合至起始分布群组中,且可使用索引寻址,从而在编码器中,执行一组起始值的适应性选择,且以索引形式传输给解码器而作为页面信息。该方法被称作为正向控制初始化处理。
实例4
接下来的实例涉及视频帧编码,具体地涉及基于邻近语法元素使用上下文分配的编码方案。下列应用实例提供使用前述实施方式的视频编码方案,其允许获得较高的压缩效率。
通过编码表示至少一个视频帧的视频信号来获得该有点,至少一个视频帧由图像样本组成,图像样本属于在不同时间瞬间拍摄的第一字段或第二字段,视频帧经空间划分成宏区块对区,各个宏区块对区与顶部及底部宏区块相关联,编码包含下列步骤:对于各宏区块对区确定其是否属第一或第二分布类型;对于各宏区块对区,根据各个宏区块对区的分布类型,将在各个宏区块对区的各个像素样本分配给各个宏区块对区的顶部及底部宏区块中的每个;及将该视频信号预编码成预编码视频信号,该预编码包含预编码与宏区块对区的当前宏区块对区相关联的顶部及底部宏区块的当前宏区块来获得当前语法元素的子步骤。随后,对于当前语法元素,至少基于当前宏区块对区为第一或第二分布类型而确定邻近宏区块。基于邻近宏区块的预定属性,将至少两个上下文模型中的一个分配给当前语法元素,其中各上下文模型与不同的概率估算相关联。最后,符号序列的编码根据前述任一实施方式进行,而至少一个符号涉及语法元素的表示。分配器被配置为基于与分配给各个符号的上下文相关联的概率分布估计值,对于各个符号,确定概率分布估计值的测量值。选择器据此而选择各个熵编码器及各个部分位串流。
还描述从编码位串流解码语法元素。编码位串流为预编码视频信号的熵编码版本,该预编码视频信号为视频信号的预编码版本,视频信号表示由图像样本组成的至少一个视频帧,这些图像样本属于在不同时间瞬间被拍摄的第一字段或第二字段,该视频帧在空间上被划分成宏区块对区,各个宏区块对区与顶部及底部宏区块相关联,各个宏区块对区为第一或第二分布类型,其中,对于各个宏区块对区,在该各个宏区块对区内的像素样本的每个根据该各个宏区块对区的分布类型而被分配给该各个宏区块对区的顶部及底部宏区块中的每个,其中,该预定语法元素与该各个宏区块对区中的预定宏区块对区的顶部及底部宏区块中的预定宏区块相关联。该方法包括对于该当前语法元素,至少基于该预定宏区块对区为第一或第二分布类型而确定邻近宏区块;基于该邻近宏区块的预定属性,将至少两个上下文模型中的一个分配给该当前语法元素,其中,各上下文模型与不同概率估算对应;及根据前述任一实施方式,重建符号序列,其中,至少一个符号系与语法元素的表示有关。分配器被配置为基于与分配给各个符号的上下文相关联的概率分布估计值而测定对于各个符号的概率分布估计值。选择器分别据此而选择各个熵解码器及各个部分位串流。
以下的应用实例探讨当由于任何理由诸如具有非移动区和移动区的编码视频帧的优选效率时,第一和第二分布类型宏区块对区,即字段及帧编码宏区块对同时用在视频帧,即使用MBAFF编码,连续像素样本区块间的邻近关系必须以与考虑各宏区块对作为帧宏区块对用于上下文建模目的不同方式定义;及当考虑各宏区块对为帧宏区块对时,由邻近区块及当前区块所覆盖区域距离可极大。从而,可能劣化编码效率,原因在于,选择没有配置在当前区块附近的邻近区块影响条件式概率模型的调适。
此外,如下所述的应用例探讨为了更佳定义图像样本区块间的邻近关系,即,将被编码或解码的语法元素所涉及的邻近区块和当前区块(基于其属性进行上下文模型的分配),当邻近区块位于超出包含当前区块的当前宏区块的边界或周边时,根据包含当前区块的当前宏区块对区属第一或第二分布类型,即编码的帧或字段而确定包含邻近区块的宏区块。
区块可以是宏区块或其一些子部分。在两种情况下,邻近区块的确定包含至少确定邻近宏区块,只要邻近区块的位置超出当前宏区块的边界即可。
图28示出了本发明可以被应用的视频编码器环境的概图。视频帧的图像2010被馈至视频预编码器2012。视频预编码器以所谓的宏区块10a为单位处理图像2010。各宏区块包含若干个图像2010的图像样本。在各宏区块上,在执行变换成变换系数之后执行量化成变换系数层级。此外,内-帧预测或移动补偿被用来不直接在像素数据反而在其与预测像素值之间的差上执行前述步骤,从而达成更易压缩的小值。
预编码器2012输出结果,即预编码视频信号。预编码视频信号中与变换系数编码有关的全部残差数据元素,诸如变换系数层级或指示变换系数层级跳位的有效位映射,称作残差数据语法元素。除了这些残差数据语法元素外,通过预编码器2012输出的预编码视频信号包含信息语法元素,所述信息语法元素包含各宏区块如何编码与如何解码控制信息的控制信息。换言之,语法元素可划分成两大类。在第一大类中,控制信息语法元素包含例如与宏区块类型、子-宏区块类型、及预测模式信息包括空间型及时间型,以及基于片段及基于宏区块的控制信息相关的元素。在第二大类中,全部残差数据元素诸如指示在量化变换系数区块内部的全部有效系数位置的有效位映射,及以与量化步长对应的层级为单位组合,即残差数据语法元素。
图像2010划分成的宏区块被分组成数个片段。换言之,图像2010再细分成片段。这种细分的实例在图43中示出,其中,各区块或各矩形表示宏区块。对于各片段,由预编码器2012产生多个语法元素,其形成各个片段的宏区块的编码版本。
预编码器2012将语法元素传输至终编码器阶段2014,其包含根据前文相对于图1至图17任意一个所述且相对于图29详细说明的熵编码器。终编码器阶段2014产生各片段的代码字串流。当产生片段的代码字串流时,终编码器阶段2014探讨下述事实,各语法元素为在送至熵编码器2014的视频信号位串流中有某个定义的数据值。熵编码器2014输出包含图像2010的片段的代码字的终压缩编码视频位串流。
图29示出了用来将语法元素编码成终码位串流的配置,该配置通常以组件符号2100表示。编码配置2100被划分成三个阶段2100a、2100b及2100c。
第一阶段2100a为二进制化阶段并包含二进制化器2102。二进制化器2102的输入端经由开关2106连接至阶段2100a的输入端2104。同时,输入端2104形成编码配置2100的输入端。二进制化器2102的输出端连接至阶段2100a的输出端2108,其同时形成阶段2100b的输入端。开关2106可以将到达输入端2104的语法元素传输至二进制化器2102或二进制阶段输出端2108,从而旁路二进制化器2102。
如果语法元素已经为期望的二进制形式,则开关2106的功能为直接将在输入端2104处的实际语法元素传输至二进制阶段输出端2108二。不是正确二进制形式的语法元素(称作非二元值语法元素)的实例,为移动向量差和变换系数层级。由于已是二元值而无需被二进制化的语法元素的实例包括MBAFF(MBAFF=宏区块适应性帧/字段)编码模式标识或mb_field_decoding_flag、mb_skip_flag、及coded_block_flag,如随后详述。因其不是二元值而必须被二进制化的语法元素实例包括语法元素mb_type、coded_block_pattern、ref_idx_10、ref_idx_11、mvd_10、mvd_11以及intro_chroma_pred_mode。
不同的二进制化方案用于将被二进制化的语法元素。例如,通过使用语法元素值的L-位无符号整数仓串,构建固定长度二进制化处理,其中,L等于被四舍五入至大于或等于该和值的最接近整数的log2(cMax+1),而cMax为语法元素的最大可能值。fl二进制化仓的检索使得零的仓指数与最小有效位相关,而仓指数值朝向最大有效位递增。另一个二进制化方案为截头一元二进制化方案,其中,小于最大可能值cMax的语法元素值C被映射至长度C+1的位或仓串,而具有小于C的仓指数的仓等于1,而具有C的仓指数的仓等于0,而对于等于最大可能值cMax的语法元素,对应的仓串为长度cMax的位串,具有全部位等于1而未由零跟随。另一项二进制化方案为k次幂指数Golomb二进制化方案,其中,语法元素被映射至由前缀位串和最终后缀位串所组成的仓串。
非二元值语法元素经由开关2106被传输至二进制化器2102。二进制化器2102将非二元值语法元素映射至代码字,或所谓的仓串,从而它们现在为二元形式。术语“仓”表示当从编码树的路由节点变迁至与该编码的树将被二进制化的非二元语法元素的非二元值对应的叶时,在限定非二元值的二进制化映射至位串或代码字的编码树的节点处必须做的二元判定。因此,仓串为仓序列或二元判定,且对应于具有相同位数的代码字,各位为二元判定的结果。
由二进制化器2102输出的仓串可能并非直接被送至二进制阶段输出端2108,反而通过设置在二进制化器2102的输出端与输出端2108间的装置2110上方的仓回路而控制式地送至输出端2108,以将通过二进制化器2102输出的仓串和旁路二进制化器2102的二元值语法元素在二进制阶段输出端2108合并成单一位串流。
因此,二进制阶段2108用来将语法元素变换成适当的二进制化表示。二进制化器2102中的二进制化处理程序优选产生二进制化表示,其被调适至语法元素的概率分布,从而允许极为有效的二元熵编码。
阶段2100b为上下文建模阶段,并包含上下文建模器2112以及开关2113。上下文建模器2112包含输入端、输出端、及选择性反馈输入端。上下文建模器2112的输入端经由开关2113而连接至二进制阶段输出端2108。上下文建模器2112的输出端被连接至阶段2100c的常规编码的输入端2114。开关2113的功能为将在二进制阶段输出端2108处的仓序列的位或仓传输至上下文建模器2112,或至阶段2100c的旁路编码输入端2116,从而旁路上下文建模器2112。
开关2113的目标为使在阶段100c中能够容易地进行连续二元熵编码变。更精确言之,由二进制化器2102输出的仓串中的部分仓启发式地显示接近等-可能分布。由此表示对应的位具有近50%概率为1,及具有近50%概率为0,或换言之,在仓串中该仓对应的仓具有50/50机会为1或0。这些仓被馈至旁路编码输入端2116,且通过使用等-可能概率估计值(其为常数)进行二元熵编码,因此需要适应或更新开销。对于全部其它仓,已经启发式地确定这些仓的概率分布取决于阶段2100a作为输出的其它仓,从而值得适应或更新用于各个仓的二元熵编码的概率估算,如在下文中相对于示例性语法元素所详细的示例性描述的。后述仓由此通过开关2113而馈至上下文建模器2112的输入端。
上下文建模器2112管理上下文模型集合。对于各上下文模型,上下文建模器2112已经存储实际位或仓值概率分布估算。对于到达上下文建模器2112输入端的各仓,上下文建模器2112选择上下文模型集合中的一个。换言之,上下文建模器2112将仓分配给上下文模型集合中的一个。将仓分配给上下文模型使得属于同一个上下文模型的仓的实际概率分布表现出相同的或相似的性质,使得对于某个上下文模型存储在上下文建模器2112的实际位或仓值概率分布估算为分配给该上下文模型的全部仓的实际概率分布的良好近似值。根据本发明的分配处理程序探讨邻近区块的语法元素间的空间关系。该分配处理程序将在下文中详细描述。
当已经将上下文模型分配给输入仓时,上下文建模器2112将仓连同仓所被分配的该上下文模型的概率分布估算一起进一步送至熵编码阶段2100c。通过该方式,上下文建模器2112根据如上下文建模器2112所指示切换位值概率分布估计值,通过开关2113驱动熵编码阶段2100c而产生作为上下文建模器2112中的仓的编码表示的位序列。
此外,上下文建模器2112对于各上下文模型,连续更新概率分布估计值以将各上下文模型的概率分布估计值调整适应语法元素及仓由其中所推导出的图像或视频帧的性质或属性。估算适应或估算更新基于上下文建模器2112经由反馈线路2117而在反馈输入所接收的或可暂时存储的过去或先前位或仓值。因此,换言之,上下文建模器2112响应于送至熵编码阶段2100c的仓值而更新概率估计值。具体地,上下文建模器2112使用分配给某个上下文模型的仓值仅用来适应和更新与仓值的上下文模型相关联的概率估计值。
根据先前输入或先前熵编码的仓,和/或根据其他的条件,诸如邻近区块的先前编码的语法元素,如相对于示例性语法元素而在以下详细描述的,当同一仓或同一语法元素在从阶段2100a传输的仓中出现若干次时,所述语法元素中的一些可以在每次它们出现时被分配至不同的上下文模型。
由前文说明显然易知,用于二元熵编码的概率估算首先确定代码及其效率,且极为重要地具有适当模型,所述模型很大程度上利用语法元素和仓的统计相关性,从而使得概率估算值通常非常有效地接近编码期间的实际概率分布。
编码配置100的第三阶段2100c为熵编码阶段。其包含常规编码引擎2118、旁路编码引擎2120、及开关2122。常规编码引擎2118包含输入端和输出端。常规编码引擎2118的输入端被连接至常规编码输入端2114。常规编码引擎2118通过使用同样从上下文建模器2112传输的上下文模型来对从上下文建模器2112传输的仓值进行二元熵编码,并输出编码的位。此外,常规编码引擎2118将用于上下文模型更新的仓值经由反馈线路2117送至上下文建模器2112的反馈输入。常规编码引擎对应于图1至图17的上述实施方式中的任一个,然而,上述实施方式的分配器部分地集成在上下文建模器中,只要考虑各个仓的上下文设定及对应的概率指数。如上所述,分配器可以在将由此所得的参数转发给选择器18之前量化概率指数,从而选择各个熵编码器。
上下文建模器2112也具有输入端和输出端,该输入端被连接至旁路编码输入端2116。旁路编码引擎2120通过使用静态预定概率分布估算,用来二元熵编码经由开关2113而从二进制阶段的输出端2108直接传输的仓值,并输出编码的位。旁路编码引擎可以任何符号数目为单位而使用1:1映射。
从常规编码引擎2118及旁路编码引擎2120输出的编码的位在编码配置2100的输出端2124,通过开关2122而合并成单一位串流,该位串流表示语法元素的二元熵编码位串流作为在输入端2104的输入。因此,常规编码引擎2118和旁路编码引擎2120协力合作,基于适应性或静态概率分布模型而逐位执行熵编码。
在相对于图28和图29一般性地描述了编码配置2100的操作之后,在下文中,将根据实施方式,相对于示例性语法元素的处理更加详细地描述了其功能,其中,基于邻近区块的语法元素的上下文分配处理被用于所述示例性语法元素。为此,首先,相对于图30至图31,描述了MBAFF编码的含义,以使得能够更好地理解当前区块和在MBAFF的情况下将上下文模型分配给与当前区块相关的语法元素期间的邻近区块之间的邻近关系。
图30示出了图像或解码的视频帧2010。视频帧2010被空间上划分成宏区块对10b。宏区块对被以2200列和2202行的阵列排列。各宏区块对由两个宏区块2010a所组成。
为了寻址各宏区块10a,相对于宏区块2010a定义序列。为此,在各宏区块对中,一个宏区块被标示为顶部宏区块,而该宏区块对的另一个宏区块被标示为底部宏区块,顶部和底部宏区块的定义取决于宏区块对通过预编码器2012(图28)编码的模式(将于后文相对于图31a和图31b进行描述)。因此,各宏区块对列2200由两个宏区块列组成,即,由在宏区块对行2200的所述宏区块对中的顶部宏区块组成的顶部宏区块列2200a,以及包括宏区块对的底部宏区块的底部宏区块列200b。
根据本实例,左上宏区块对的顶部宏区块驻在地址零。下一个地址,即地址1,被分配给左上宏区块对的底部宏区块。在同一,即,顶部宏区块列2200a的宏区块对的顶部宏区块地址为2,4,…,2i-2,地址从左至右升高,而i表示图像宽度,以宏区块或宏区块对为单位。地址1,3,…,2i-1被分配给在顶部宏区块对行2200中的宏区块对中的底部宏区块,地址从左至右升高。从2i至4i-1的接下来的2i-地址被从顶部分配给在下一宏区块对列中的宏区块对的宏区块等,如在图30中通过写入表示宏区块2010a的框中的数目和拱形箭头所示出的。
强调图30确实示出了图像2010的空间细分,以宏区块对为单位,而非以宏区块为单位。各宏区块对2010b表示图像的空间矩形区。位于特定宏区块对2010b的空间矩形区中的图像2010的全部图像样本或像素(未示出)属该宏区块对。特定像素或图像样本是否属于宏区块对的顶部或底部宏区块取决于预编码器2012就此编码宏区块对中的宏区块的模式,如下文所详细描述的。
图31a在左手侧示出了属于宏区块对2010b的像素或图像样本的配置。如图可知,像素以列和行阵列配置。所示各像素以数目表示以方便图31a的如下描述。从图31a可以看出,若干像素以“x”标示,而其它像素以“□”标示。以“x”标示的全部像素属于图像的第一字段,而以“□”标示的全部像素属于图像的第二字段。属于同一字段的像素以图像的交错列配置。图像或视频帧可考虑为包含两个交插字段,即顶部和底部字段。顶部字段包含以“□”标示的像素,包含偶编码列2n+2、2n+4、2n+6、…而2n为一个图像或视频帧的列数,n为大于或等于0的整数。底部字段包含始于帧的第二行的奇编码列。
假设宏区块对2010b所属的视频帧为交插帧,其中,两个二字段为在不同时间瞬间拍摄,例如,顶部字段在底部字段之前。现在宏区块对的像素或图像样本不同地分配给宏区块对的顶部或底部宏区块,取决于各个宏区块对由预编码器2012预编码的模式(图28)。其理由如下。
如相对于图28所描述的,可以是发光度或亮度和色度或彩度样本的宏区块的图像样本可通过预编码器2012被空间地或时间地预测,且所得的预测残差使用变换编码而被编码来获得残差数据语法元素。现在是,在交插帧(假设所述视频帧为交插帧)中,有移动中的对象区或相机移动区,与其中在同一时间拍摄了两个字段的改善的视频帧相比,像素的两个邻近的列趋向于表现出降低的统计相关度。因此,在这样的移动中的对象区或相机移动区的情况下,当宏区块对被空间上细分成表示该宏区块对的顶部半区的一顶部宏区块及表示该宏区块对的底部半区的底部宏区块时,如前述在宏区块上操作,通过预编码器2012执行预编码可获得仅降低的压缩效率,原因在于在这种情况下,两个宏区块,即,顶部和底部均包含顶部字段和底部字段像素。在这种情况下,预编码器2012可更有效地分开编码各字段,即,将顶部字段像素分配给顶部宏区块,而将底部字段像素分配给底部宏区块。
为了示出如何将宏区块对的像素分配给顶部和底部宏区块,图31a和图31b在右手侧分别示出了根据帧和字段模式所得的顶部和底部宏区块。
图31a表示帧模式,即,其中,各宏区块对被空间细分成顶部半宏区块和底部半宏区块。图31a示出了入它们在以帧模式被编码时所定义的在2250顶部宏区块和在2252底部宏区块处,帧模式以双箭头2254表示。可以看出,顶部宏区块250包含宏区块对2010b的像素样本的一半,而其它像素样本被分配给底部宏区块2252。具体地,编码2n+1至2n+6的上半各列图像样本属于顶部宏区块2250;而组成宏区块对10b的列2n+7至2n+12的下半图像样本91至96、01至06、11至16属于底部宏区块2252。因此,当以帧模式编码时,宏区块2250和2252二者包含以下二者,即,以“x”标示且在第一时间瞬间拍摄的第一字段图像元素,而以“□”标示且在第二不同的时间瞬间拍摄的第二字段图像样本。
在字段模式中,当像素通过相机等输出时分配给顶部或底部宏区块略有不同。当在字段模式编码时,如图31b中的双箭头2256所指示,宏区块对2010b的顶部宏区块2252包含以“x”标示的顶部字段的全部像素样本,而底部宏区块2254包含以“□”标示的底部字段的全部像素样本。因此,当根据字段模式2256编码时,在宏区块对中的各宏区块确实只包含顶部字段的图像样本或底部字段的图像样本而非顶部和底部字段的混合图像样本。
现在,在已经描述图像的空间细分成宏区块对且将宏区块对中的图像样本分配给该宏区块对的顶部或底部宏区块(分配取决于该宏区块对或对宏区块对的宏区块藉预编码器2012编码的模式)之后,再次参考图28以说明包含在由预编码器2012所输出的预编码视频信号中的语法元素mb_field_decoding_flag的功能和定义,且同时说明MBAFF编码帧优于只有字段或帧编码帧的优点。
当预编码器2012接收到表示交插视频帧的视频信号时,预编码器2012在编码视频帧2010时可自由做下列决定:
-可将两个字段组合在一起以将它们编码成单一编码帧,从而使得各宏区块对和各宏区块可以帧模式编码。
-可选地,可组合两个字段,并将它们编码成分开编代码字段,从而使得各宏区块对和各宏区块可以字段模式编码。
-作为最后的选项,可将两个字段组合在一起并压缩成为单一帧,但当对帧进行编码时,将宏区块对在对它们编码之间***成两个字段宏区块对或两个帧宏区块对。
对于序列中的各帧适应性可以做出三个选项之间的选择。前两个选项之间的选择被称作为图像适应性帧/字段(PAFF)编码。当一个帧被编码成两个字段时各字段被划分成宏区块,且以与帧极为类似的方式被编码。
如果帧由混合区组成,其中,某些区为移动的,而其它区则不是,以帧模式编码非移动区而以字段模式编码移动区通常是有效的。因此,对于在帧中的各垂直宏区块对可独立地做帧/字段编码决定。这为以上所列出的选项的第三编码选项。该编码选项被称作宏区块适应性帧/字段(MBAFF)编码。在下文中,假设预编码器2012决定只使用该选项。如前所述,MBAFF编码允许预编码器编码模式类型(字段或帧模式)更佳地调适各个场景区。例如,预编码器2012以帧模式编码在视频场景的静态区处的宏区块对,而以字段模式编码在示出快速运动的场景的区域中的宏区块对。
如前所述,对于以帧模式编码的宏区块对,各宏区块包含帧行。对于以字段模式编码的宏区块对,顶部宏区块包含顶部字段行,底部宏区块包含底部字段行。各宏区块对的帧/字段决定在宏区块层级通过预编码器2012做出,即,如果顶部宏区块为字段编码,则同样适用于在同一宏区块对内部的底部宏区块。由此,基本宏区块处理结构保持完好,且移动补偿区被允许与宏区块的大小一般大。
字段宏区块对的各宏区块在PAFF编代码字段内部极以及其类似于宏去开的方式被处理。但因字段和帧混合宏区块对可出现在MBAFF帧内部,在预编码器2012的预编码程序的某些阶段,当与PAFF编码相比较时,诸如移动向量的预测、内-预测模式的预测、内-帧样本预测、于熵编码中的解区块滤波及上下文建模、及变换系数的锯齿扫描被修改以考虑该混合。
简言之,由预编码器2012输出的预编码视频信号取决于已确定使用的编码预编码器2012类型。在MBAFF编码的情况下,如这里所假设的,预编码视频信号包含各个非跳过宏区块对的标识mb_field_decoding_flag。标识mb_field_decoding_flag对于其所属的各宏区块对,指示对应的宏区块是否以帧或字段编码模式编码。在解码器侧,需要该标识来正确地解码预编码视频信号。如果宏区块对的宏区块以帧模式编码,则标识mb_field_decoding_flag为零,而另一情况的标识为1。
现在,尽管已经描述了图29的原始解码器配置的般操作模式而未称作特定仓,相对于图32,现在相对于示例性语法元素的仓串的二元熵编码描述了该配置的功能性,对于所述示例性语法元素,使用了邻近区块的语法元素之间的空间关系,而同时MBAFF编码模式是有效的。
图32中示出的处理始于语法元素的仓值到达上下文建模器2112的输入端。换言之,最终,如果需要,语法元素须在二进制化器2102被二进制化,即,除非语法元素已经为二元值。在第一步骤2300中,上下文建模器2112基于邻近语法元素,即,在邻近区块中的语法元素,确定输入仓是否为专用于上下文分配。须记住,图32的描述假设MBAFF编码为可有效的。如果步骤2300中的确定导致基于邻近语法元素,输入仓非专用于上下文分配,则在步骤2304中执行另一语法元素处理。在第二种情况下,上下文建模器2112确定输入仓的语法元素所相关的当前区块的邻近区块。以下分别相对于示例性语法元素和它们的仓详细描述了步骤2306的确定处理。总之,步骤2306中的去定取决于当前仓的语法元素所相关的当前宏区块为帧或字段编码,只要关注的邻近区块在包含当前区块的宏区块外侧即可。
接下来,在步骤2308中,上下文建模器2112基于测得的邻近区块属性而将上下文模型分配给仓。分配步骤2308导致指向将每个上下文索引分配给概率模型的表中的各个条目的上下文索引ctsIdx被用于当前语法元素的当前仓的二元熵编码。
在ctsIdx确定之后,上下文建模器2112将变量ctsIdx或由ctsIdx所检索的概率估算状态连同当前仓本身传输至常规编码引擎2118。基于这些输入,通过使用如由ctsIdx所检索的上下文模型的当前概率状态,在步骤2322中,常规编码引擎2118对该仓进行熵编码。特别地,例如该索引被用来选择各个部分位串流2012。
随后,常规编码引擎2118经由路径2117将仓值传输回上下文建模器2112,因此,在步骤2324中,上下文建模器2112相对于其概率估算状态,调适由ctsIdx所检索的上下文模型。随后,在输出端2124处将语法元素编码成位串流的处理结束于2326。
需要强调的是,在步骤2310之前,语法元素可被二进制化而成的仓串可由下述两项组成:在步骤2322,被编码的,即,被分配至各个部分位串路2012并随后通过使用上下文模型ctsIdx的当前概率状态而被编码的仓;及通过使用等-可能概率估算而在旁路编码引擎2120中被编码(尽管在图32中未示出)的仓。而是,图32仅仅关注于语法元素的一个仓的编码实例。
以下将相对于图33详细说明图32中由虚线2327所包围的步骤2322和2324。
在图33的左手侧示出了处理2327的流程图。图33右侧示出了存储器2328,上下文建模器2112和常规编码引擎2118两者已经访问该存储器以加载、写入和更新特定的变量。这些变量包含R及L,其定义二元熵编码器2100C的当前态或当前概率区间。
存储器2328包含表2329,该表将ctsIdx的各个可能值相关联,例如0-2398、定义由各个上下文索引ctsIdx所检索的各个上下文模型的当前概率估算态的一对概率状态指数σ和MPS值ω。概率状态σ为唯一地识别可能的概率值pσ集合中的一个的指数。概率值pσ为最小可能符号(LPS)的上下文模型的下一个仓的概率估计值。LPS表示哪一个可能仓值即零或1由MPS值ω指示。如果ω为1,则LPS为0,及反之亦然。因此,状态指数和MPS一起独唯一地限定各个上下文模型的实际概率状态或概率估计值。
在步骤2334中,实际仓值被发送至常规编码引擎2118。
在步骤2336中,常规编码引擎2118检查是否实际仓值,即,已属二元语法元素或得自当前语法元素的仓串的一个仓,是否等于ωi指示的最大可能符号。如果当前仓为MPS,则上下文建模器2112通过更新σi而更新当前上下文模型的概率估算状态。具体地,上下文建模器2112使用表2340,所述表在实际符号或仓为最大可能符号,即σ变成transIdxMPS(σi)的情况下,将各概率状态指数σ与更新的概率状态指数相关联。
在步骤2338之后,处理结束在2340,其中,发送至常规编码引擎2118的仓通过其选择器而转发至各个部分位串流编码器。
如果在步骤2336中确定当前仓为最小可能符号LPS,则在步骤2344中确定σi是否等于0,即,概率状态指数是否指示两者即1和0的概率相等。然后,值MPS通过运算ωi=1-ωi而更新。随后,在步骤2346中,概率状态指数通过使用表2340而实际化,所述表在实际仓值为最小可能符号的情况下,即,将σi修正变成transIdxLPS(σi),也将各当前概率状态指数与更新概率状态指数相关联。在步骤2344和2346中概率状态指数σi及ωi已经被调适之后,处理进入已经在前文中所述的步骤2340。
在已经对于上下文模型分配通过探讨邻近区块的语法元素之间的空间关系而描述语法元素的编码处理之后,相对于包含在如通过预编码器2012输出的预编码视频信号中的如下的语法元素,更详细地描述上下文模型分配及当前区块与邻近区块间的邻近关系定义。这些语法元素列举如下。
如可由上表收集,这些语法元素中的一些涉及当前宏区块全体,而其它语法元素涉及当前宏区块的子部分,即子-宏区块或其划分。同理,上下文模型分配给这些语法元素取决于邻近宏区块、邻近子-宏区块或其邻近划分的语法元素。图36示出了宏区块(上列)及子-宏区块(下列)的划分。如图36所示,划分被扫描以用于跨-预测。图36的外矩形指分别在宏区块或子-宏区块内的样本。内矩形指划分。各个内矩形的数字指定逆宏区块划分扫描或逆子-宏区块划分扫描的指数。
在描述上下文模型分配与邻近区块的语法元素的相关性之前,相对于图34描述如何计算宏区块对的左上当前宏区块对的顶部宏区块的地址,原因在于,这些为可能的候选者,其包含在区块中包含将被编码的当前语法元素的左上当前区块的语法元素。为了示出空间关系,在图34中,示出了视频帧的六个宏区块对的一部分,其中图34的各矩形区对应于一个宏区块,及各行中第一和第二两个垂直相邻宏区块形成宏区块对。
在图34中,CurrMbAddr表示当前宏区块对中该当前语法元素所相关联的或相关的顶部宏区块的宏区块地址。当前宏区块对以粗线框出。换言之,其形成宏区块对的边界。mbAddrA和mbAddrB分别表示宏区块对的左及上当前宏区块对的顶部宏区块地址。
为了计算邻近宏区块对的左上当前宏区块对的顶部宏区块地址,上下文建模器2112计算
MbAddrA=2·CurrMbAddr/2–1)
MbAddrB=2·(CurrMbAddr/2–PicWidthInMbs)
其中,PicWidthInMbs指定宏区块单元内的图像。参照图30,可以理解上述给定的方程式。应该注意的是,在图30中,宏区块单元中的图像宽度标示为i。进一步注意到的是,在当前宏区块地址CurrMbAddr与当前宏区块对的底部宏区块的奇编号宏区块地址,即,CurrMbAddr+1互换时,以上给定的方程式也为真,原因在于,在以上方程式中,“/”表示结果朝向零移动的处理的整数分割。例如,7/4及-7/-4被截为1,而-7/4及7/-1被截为-1。
现在,在已经描述如何计算当前宏区块之后,简短忆起各宏区块包含16x16个亮度样本。这些亮度样本被分割成四个8x8亮度区块。这些亮度区块再细分为4x4个亮度区块。此外,对于如下的描述,各宏区块进一步包含8x8个亮度样本,即,与亮度样本相比,彩度样本的像素宽度为其两倍。宏区块的这些8x8彩度区块被划分为四个4x4亮度区块。宏区块的区块被编号。从而,四个8x8亮度区块的每个具有唯一地指示在宏区块内的各个8x8区块的区块地址。其次,宏区块中的各个像素样本属于位置(x,y),其中(x,y)表示相对于该宏区块的左上亮度或彩度样本的当前区块的左上样本的亮度或彩度位置。例如,关于亮度样本,图31b在顶部宏区块2252的像素2023具有像素位置(2,1),即第三行、第二列。
在已经描述这些之后,描述上表中列举的至少部分仓的语法元素ctxIdx的推导处理。
关于语法元素mb_skip_flag,上下文建模器分配取决于与邻近宏区块相关的语法元素。因此,为了确定上下文指数ctxIdx,地址mbAddrA及mbAddrB如前述测定、然后,设condTermN(N为A或B)为如下设定的变量:
-如果mbAddrN是不可用的或如果宏区块mbAddrN的mb_skip_flag等于1,则将condTermN设定为0
-否则,将condTermN设定为1。
ctxIdx基于上下文指数递增器ctxIdxInc=condTermA+condTermB而推导出。
对于语法元素mb_field_decoding_flag,ctxIdx确定如下:
设condTermN(N为A或B)为如下设定的变量。
-如果下列任何条件中的任何一个真,则将condTermN设定为0,
-mbAddrN为不可用的
-宏区块mbAddrN为帧宏区块。
-否则将condTermN设定为1。
ctxIdx基于上下文指数递增器ctxIdxInc=condTermA+condTermB而推导出
其中,如果
(((CurrMbAddr/2)%(PicWidthInMbs))==0).
则mbaddrN是不可用的。
对于语法元素Mb_type,ctxIdx取决于mbAddrN(N为A或B)及该邻近宏区块的语法元素Mb_type的可用性来确定。
关于上表列举的其它语法元素,上下文建模器分配的相关性由此定义,其中,对于语法元素,其与小于宏区块的区块相关,分配也取决于与这些比宏区块小的区块相关联的语法元素。例如,对于语法元素coded_block_pattern,上下文模型分配不仅取决于宏区块MbAddrN的可用性和宏区块MbAddrN的语法元素Mb_type,同时也取决于邻近区块的语法元素Coded_block_pattern。此外,值得注意的是,以上列出的语法元素全部都与邻近区块的各个语法元素具有关性。不同于此,语法元素mvd_10、mvd_11、ref_idx_10及ref_idx_11的上下文模型分配与邻近区块的各个语法元素不具相关性。intra_chroma_pred_mode的上下文建模器分配与mbAddrN的可用性、宏区块mbAddrN以跨-预测模式编码与否、对于宏区块mbAddrN的Mb_type、及对于宏区块mbAddrN的语法元素intra_chroma_pred_mode不具相关性。语法元素coded_block_flag上下文模型分配与mbAddrN的可用性、宏区块mbAddrN以跨-预测模式编码与否、对于宏区块mbAddrN的Mb_type、及对于宏区块mbAddrN的语法元素intra_chroma_pred_mode具有相关性。
在下文中,将描述如何确定邻近区块。具体地,其涉及计算mbAddrN和指示宏区块MbAddrN的子部分的区块指数,该子部分为当前区块的邻近区块。
根据本发明的实施方式,下文中描述的使用宏区块适应性帧/字段编码的片段邻近关系以下述方式定义,其中,该方式保证在MBAFF-帧内侧在上下文适应性二元熵编码中由用于上下文建模的邻近区块所涵盖的区域毗邻于由当前区块所涵盖的区域。相比于如本说明书引言部分所述,考虑各个宏区块对为帧宏区块对以用于上下文建模目的,因此处结合MBAFF-片段编码使用,因此通常改善了上下文适应性熵编码方案的编码效率,原因在于,在编码程序中估算的条件式概率更加可靠。
定义当前区块与参考区块之间的邻近关系的一般构想在如下章节1.1中描述。在章节1.2中,给出了指定如何获得左上当前区块、宏区块、或划分的邻近区块、宏区块、或划分以为了上下文建模的目的的具体描述。
1.1.一般构想邻近关系定义
设(x,y)表示相对于图像CurrPic的左上亮度或彩度样本的当前区块左上样本的亮度或彩度位置。变量CurrPic指定当前帧,如果当前区块为在帧模式中编码的宏区块对的部分(mb_field_decoding_flag等于0),则该变量通过交插顶部和底部字段获得。如果当前区块为或属于顶部字段宏区块的一部分,则CurrPic指定当前帧的顶部字段;而如果当前区块为或属于底部字段宏区块的一部分,则CurrPic指定当前帧的底部字段。
设(xA,yA)和(xB,yB)分别表示在图像CurrPic内侧的左上位置(x,y)的亮度或彩度位置。(xA,yA)和(xB,yB)被指定为
(xA,yA)=(x-1,y)
(xB,yB)=(x,y-1)
当前区块的左侧区块被定义为包含相对于图像CurrPic的左上亮度或彩度样本位于位置(xA,yA)处的亮度或彩度样本的区块;当前区块的上方区块被定义为包含相对于图像CurrPic的左上亮度或彩度样本位于位置(xB,yB)处的亮度或彩度样本的区块。如果(xA,yA)或(xB,yB)表示在当前片段以外的位置,则对应的区块被标示为是不可用的。
1.2.邻近关系定义的详细描述
章节1.2.1中描述的算法指定MBAFF-片段的一般构想,其描述了如何将相对于当前宏区块的左上亮度样本而表示的亮度样本位置映射为宏区块地址,其指定涵盖对应的亮度样本的宏区块,及相对于当前宏区块的左上亮度样本而表示的亮度样本位置。此构想将用在下列章节1.2.2至1.2.6。
章节1.2.2至1.2.6描述了如何指定邻近宏区块、8x8亮度区块、4x4亮度区块、4x4彩度区块、及当前宏区块的左上划分、8x8亮度区块、4x4亮度区块、4x4彩度区块、或划分。这些邻近宏区块、区块、或划分为下列语法元素的CABAC上下文建模所需:mb_skip_flag、mb_type、coded_block_pattern、intra_chroma_pred_mode、coded_block_flag、ref_idx_10、ref_idx_11、mvd_10、mvd_11。
1.2.1邻近样本位置的规定
设(xN,yN)表示相对于具有宏区块地址CurrMbAddr的当前宏区块的左上亮度样本而表示的亮度样本位置。忆起根据本发明各宏区块包含16x16个亮度样本。xN及yN在-1…16以内。设mbAddrN为包含(xN,yN)的宏区块地址,及设(xW,yW)为相对于宏区块mbAddrN(而不是相对于当前宏区块的左上亮度样本)的左上亮度样本而表示的位置(xN,yN)。
设mbAddrA和mbAddrB分别指定当前宏区块对左侧的宏区块对的顶部宏区块的宏区块地址和当前宏区块对上方的宏区块对的顶部宏区块的宏区块地址。设PicWidthInMbs为以宏区块为单位指定图像宽度的变量。mbAddrA及mbAddrB分别表示如下。
·mbAddrA=2*(CurrMbAddr/2-1)
如果mbAddrA小于0,或如果(CurrMbAddr/2)%PicWidthInMbs等于0,或如果具有地址mbAddrA宏区块属于与当前片段不同的片段,则mbAddrA标记为不可用。
·mbAddrB=2*(CurrMbAddr/2-PicWidthInMbs)
如果mbAddrB小于0,或如果具有地址mbAddrB的宏区块属于与当前片段不同的片段,则mbAddrB标记为不可用。
图35中的表表示在如下两个有序步骤中的宏区块地址mbAddrN和变量yM:
1.宏区块地址mbAddrX(第五行)规格取决于(xN,yN)(第一和第二行)及下列变量:
-如果具有地址CurrMbAddr的当前宏区块为帧宏区块对的一部分,则变量currMbFrameFlag(第三行)被设定为1;否则被设定为0。
-如果CurrMbAddr%2等于0,则变量mblsTopMbFlag(第四行)被设定为1;否则被设定为0。
2.取决于mbAddrX(第五行)的可用性,适用后述者:
-如果mbAddrX(可以是mbAddrA或mbAddrB)标记为不可用,则mbAddrB标记为不可用。
-否则(mbAddrX为可用),mbAddrN被标示为可用,且表1指定mbAddrN和yM取决于(xN,yN)第一和第二行)、currMbFrameFlag(第三行)、mblsTopMbFlag(第四行)、及mbAddrXFrameFlag(第六行),其推导如下:
-如果宏区块mbAddrX为帧宏区块,则mbAddrXFrameFlag被设定为1;否则被设定为0。
表1中上述标识的未指定值表示对应的标识的值非关当前表列。
简言之:前四行中,载入输入值Xn、Yn、currMbFrameFlag及mblsTopMbFlag。更具体地,参数xN及yN的可能的输入值为-1至16(包括两端)。这些参数确定第五行列出的mbAddrX,即包含期望亮度样本的宏区块对。需要接下来的两行,即,第六和第七行,来获得终输出mbAddrN和yN。这些另外的输入参数为指示由mbAddrX所指示的宏区块对是否为帧编码或字段编码的mbAddrXFrameFlag,和关于yN是否为偶或奇编号,或是否大于或等于8的一些另外的条件。
可以看出,当xN及yN均为正或零时,即,期望的像素样本位于相对于xN和yN所定义的当前宏区块内时,输出宏区块地址不变,即,其等于CurrMbAddr。此外,yM等于yM。当输入xM和yM指示位于当前宏区块外侧的像素样本时,例如,其改变成左侧(xN<0)全部变成当前宏区块顶部上(yN<0)。
从图35的结果出发,相对于宏区块mbAddrN的左上亮度样本的邻近亮度位置(xW,yW)被表示为
xW=(xN+16)%16
yW=(yM+16)%16。
需要强调的是,前述考虑仅适合于亮度样本的示例性目的。当考虑彩度样本时,因宏区块只含8x8彩度样本,故考虑略有不同。
1.2.2邻近宏区块的规格
当前宏区块左上邻近宏区块的规格被用于下列语法元素的CABAC上下文建模:mb_skip_flag、mb_type、coded_block_pattern、intra_chroma_prediction_mode以及coded_block_flag。
设mbAddrA为当前宏区块左侧宏区块的宏区块地址,而mbAddrB为当前宏区块上方宏区块的宏区块地址。
mbAddrA、mbAddrB以及其可用性状态获得如下:
给定亮度地址(xN,yN)=(1,0),如在章节1.2.1中所描述的获得mbAddrA及其可用性状态。
给定亮度地址(xN,yN)=(0,-1),如在章节1.2.1中所描述的获得mbAddrB及其可用性状态。
1.2.3邻近8x8亮度区块的规格
当前8x8亮度区块的左上的邻近8x8亮度区块的规格被用于语法元素coded_block_pattern的CABAC的上下文建模。
设luma8x8BlkIdx为在当前宏区块CurrMbAddr内的当前8x8亮度区块的指数。亮度指数luma8x8BlkIdx分配给在一宏区块内的各个区块的实施方式在图9中示出(右上角)。
设mbAddrA为包含当前8x8亮度区块左侧8x8亮度区块的该宏区块的宏区块地址,及设mbAddrB为包含当前8x8亮度区块上方8x8亮度区块的该宏区块的宏区块地址。此外,设luma8x8BlkIdxA为当前8x8亮度区块左侧的8x8亮度区块的该8x8亮度区块指数(在宏区块mbAddrA内),及设luma8x8BlkIdxB为当前8x8亮度区块上方的8x8亮度区块的该8x8亮度区块指数(在宏区块mbAddrB内)。
mbAddrA、mbAddrB、luma8x8BlkIdxA、luma8x8BlkIdxB及其可用性状态获得如下:
·设(xC,yC)为相对于当前宏区块的左上亮度样本的当前8x8亮度区块的左上样本的亮度位置。
·给定亮度位置(xN,yN)=(xC-1,yC),如章节1.2.1中所描述的获得mbAddrA、其可用性状态以及亮度位置(xW,yW)。如果mbAddrA为可用的,则luma8x8BlkIdxA以这样的方式设定,即,其指在宏区块mbAddrA内侧涵盖亮度位置(xW,yW)的8x8亮度区块;否则,luma8x8BlkIdxA被标示为不可用的。
·给定亮度位置(xN,yN)=(xC,yC-1),如章节1.2.1中所描述的获得mbAddrB、其可用性状态以及亮度位置(xW,yW)。如果mbAddrB为可用的,则luma8x8BlkIdxB以如下方式设定,即,其指在宏区块mbAddrB内侧涵盖亮度位置(xW,yW)的8x8亮度区块;否则,luma8x8BlkIdxB被标示为不可用的。
1.2.4邻近4x4亮度区块的规格
当前4x4亮度区块的左上的邻近4x4亮度区块的规格被用于语法元素coded_block_flag的CABAC的上下文建模。
设luma4x4BlkIdx为在当前宏区块CurrMbAddr内的当前4x4亮度区块的指数(以解码顺序)。例如,luma4x4BlkIdx可定义为包含4x4区块乘以4加划分数目的8x8区块的luma8x8BlkIdx,如图9中的右下角所示。
设mbAddrA为含当前4x4亮度区块左侧4x4亮度区块的该宏区块的宏区块地址,及设mbAddrB为含当前4x4亮度区块上方4x4亮度区块的该宏区块的宏区块地址。此外,设luma4x4BlkIdxA为当前4x4亮度区块左侧的4x4亮度区块的该4x4亮度区块指数(在宏区块mbAddrA内),及设luma4x4BlkIdxB为当前4x4亮度区块上方的4x4亮度区块的该4x4亮度区块指数(在宏区块mbAddrB内)。
mbAddrA、mbAddrB、luma4x4BlkIdxA、luma4x4BlkIdxB及其可用性状态获得如下:
设(xC,yC)为相对于当前宏区块的左上亮度样本的当前4x4亮度区块的左上样本的亮度位置。
给定亮度位置(xN,yN)=(xC-1,yC),如章节1.2.1中所描述的获得mbAddrA、其可用性状态以及亮度位置(xW,yW)。如果mbAddrA为可用的,则luma4x4BlkIdxA以这样的方式设定,即,其指在宏区块mbAddrA内侧涵盖亮度位置(xW,yW)的4x4亮度区块;否则,luma4x4BlkIdxA被标示为不可用的。
给定亮度位置(xN,yN)=(xC,yC-1),如章节1.2.1中所描述的获得mbAddrB、其可用性状态以及亮度位置(xW,yW)。如果mbAddrB为可用的,则luma4x4BlkIdxB以这样的方式设定,即,其指在宏区块mbAddrB内侧涵盖亮度位置(xW,yW)的4x4亮度区块;否则,luma4x4BlkIdxB被标示为不可用的。
1.2.5邻近4x4彩度区块的规格
当前4x4亮度区块的左上的邻近4x4彩度区块的规格被用于语法元素coded_block_flag的CABAC的上下文建模。
设chroma4x4BlkIdx为在当前宏区块CurrMbAddr内的当前4x4彩度区块的指数(以解码顺序)。
设mbAddrA为包含当前4x4彩度区块左侧的4x4彩度区块的该宏区块的宏区块地址,及设mbAddrB为包含当前4x4彩度区块上方的4x4彩度区块的该宏区块之宏区块地址。此外,设chroma4x4BlkIdxA为当前4x4彩度区块左侧的4x4彩度区块的4x4彩度区块指数(宏区块mbAddrA内);及设chroma4x4BlkIdxB为当前4x4彩度区块上方的4x4彩度区块的4x4彩度区块指数(宏区块mbAddrB内)。
mbAddrA、mbAddrB、chroma4x4BlkIdxA、chroma4x4BlkIdxB及其可用性状态获得如下:
·给定luma8x8BlkIdx=chroma4x4BlkIdx,如章节1.2.3中所描述的获得变量mbAddrA、mbAddrB、luma8x8BlkIdxA、luma8x8BlkIdxB及其可用性状态。
如果luma8x8BlkIdxA为可用的,则chroma4x4BlkIdxA被设定为等于luma8x8BlkIdxA;否则chroma4x4BlkIdxA被标示为不可用的。
如果luma8x8BlkIdxB为可用的,则chroma4x4BlkIdxB被设定为等于luma8x8BlkIdxB;否则chroma4x4BlkIdxB被标示不可用的。
1.2.6邻近划分的规格
当前划分的左上邻近划分的规格被用于下列语法元素的CABAC上下文建模:ref_idx_10、ref_idx_11、mvd_10、mvd_11。
设mbPartIdx和subMbPartIdx为指定当前宏区块CurrMbAddr内的当前划分的宏区块划分指数和子-宏区块划分指数。图36中示出了这样的划分指数的实例。
设mbAddrA为包含当前划分左侧划分的该宏区块的宏区块地址,及设mbAddrB为包含当前划分上方划分的该宏区块的宏区块地址。此外,设mbPartIdxA和subMbPartIdxA为当前划分左侧划分的宏区块划分指数及子-宏区块划分指数(宏区块mbAddrA内),及设mbPartIdxB和subMbPartIdxB为当前划分上方划分的宏区块划分指数和子-宏区块划分指数(宏区块mbAddrB内)。
mbAddrA、mbAddrB、mbPartIdxA、subMbPartIdxA、mbPartIdxB、subMbPartIdxB及其可用性状态获得如下:
·设(xC,yC)为相对于当前宏区块的左上亮度样本的由mbPartIdx和subMbPartIdx所给定的当前划分的左上样本的亮度位置。
·给定亮度位置(xN,yN)=(xC-1,yC),如章节1.2.1中所描述的获得mbAddrA、其可用性状态以及亮度位置(xW,yW)。如果mbAddrA为不可用的,则mbPartIdxA和subMbPartIdxA被标示不可用;否则mbPartIdxA以这样的方式设定,即,其指在宏区块mbAddrA内侧涵盖亮度位置(xW,yW)的宏区块划分;及subMbPartIdxA以这样的方式设定,即,得其指在宏区块mbPartIdxA内侧(在宏区块mbAddrA内)涵盖亮度位置(xW,yW)的子-宏区块划分。
·给定亮度位置(xN,yN)=(xC,yC-1),如在章节1.2.1中所描述的获得mbAddrB、其可用性状态以及亮度位置(xW,yW)。如果mbAddrB为可不用的,则mbPartIdxB及subMbPartIdxB被标示为不可用;否则mbPartIdxB以这样的方式设定,即,其指在宏区块mbAddrB内侧涵盖亮度位置(xW,yW)的宏区块划分;及subMbPartIdxB以这样的方式设定,即,其指在宏区块mbPartIdxB内侧(在宏区块mbAddrB内)涵盖亮度位置(xW,yW)的子-宏区块划分。
在已经描述了如何将以上语法元素或仓串或其仓部分编码成熵编码为位串流之后,相对于图37至图39描述了该位串流的解码及仓的恢复。
图37示出了本发明适用的视频解码器环境的概图。熵解码器400接收上述熵编码位串流并对其进行处理,如以下相对于图38至图39所详细描述的。更具体地,熵解码器2400通过二元熵解码而对熵编码的位串流进行解码来获得预编码的视频信号,及具体地,获得包含在其中的语法元素,并将其传输至预编码解码器2402。预编码解码器2402使用语法元素,诸如移动向量分量和标识,诸如以上列出的语法元素来逐宏区块及然后逐片段地恢复视频帧2010的像素的图像样本。
图38现在示出了每次仓被解码时,通过熵解码器2400执行的解码处理。哪一个仓将被解码取决于由熵解码器2400当前预期的语法元素。该知识由各个语法剖析规定所得。
在解码处理中,首先,在步骤2500中,熵解码器2400基于邻近语法元素,检查下一个将被解码的仓是否为对应于上下文模型分配的类型的语法元素的仓。如果情况并非如此,则熵解码器2400前进至步骤2504中的另一个语法元素处理。但如果在步骤2500中的检查结果肯定的,则熵解码器2400在步骤2506和2508中进行将被解码的当前仓所属的当前区块的邻近区块的确定,及基于在步骤2506中所确定的邻近区块的预定属性而将上下文模型分配给该仓,其中,步骤2506和2508对应于图32图的编码处理的步骤2306和2308。这些步骤的结果为上下文指数ctxIdx。从而,在步骤2506和2508中的ctxIdx的确定以与图32的步骤2306和2308的编码处理相同的方式来执行,以确定将被用在随后熵解码中的上下文模型。
然后,在步骤2522中,通过使用如在步骤2510至2520中所得的ctxIdx检索的上下文模型的实际概率状态,熵解码器2400从熵编码位串流熵解码实际仓。即,熵解码器2400包含常规解码引擎,所述常规解码引擎对应于在内部具有多个熵解码器(每一个与各个部分位串流相关联)的上述熵解码器。在步骤2522中,从(至少依赖于)由概率指数检索的部分位串流,请求仓。该步骤的结果为实际仓的值。
随后,在步骤2524中,如在步骤2224中的情况,调适或更新ctxIdx概率状态。随后,处理在步骤2526处结束。
当然,通过图38所示的处理获得的各个仓表示仅在语法元素为二元类型的情况下的语法元素值。否则,对应于二进制化的步骤须以逆的方式进行以从仓串获得语法元素的实际值。
图39在左手侧详细示出了由虚线2527包围的步骤2522和2524。在右手侧,以2564表示,图39示出了存储器及其内容,其中,熵解码器2400访问该存储器以加载、存储与更新变量。可以看出,熵解码器操控或管理与熵编码器2014相同变量,原因在于,熵解码器2400仿真编码处理,如在下文中所述。
在第一步2566中,熵解码器2400从部分位串流获得由与各个上下文相关联的概率指数检索的当前仓值。
但该值相对于MPS和LPS值以相对术语表示。因此,在步骤2570中,熵解码器2400检查在熵编码位串流中的熵编码代码字的值是否为ωI表示的最大可能符号,在这种情况下,解码器2400在步骤2572据此将仓值设定为ωi值。在其它情况下,解码器2400在步骤2574将符号设定为1-ωi值。
在步骤2572之后,在步骤2576中,如相对于图36中的步骤2338所描述的,解码器2400通过变迁概率状态指数ωi而调适或更新如由ωi及ωi限定的当前上下文模型i的概率状态。随后处理2527在步骤2578处结束。
在步骤2574之后,如果ωi等于0,则解码器2400在步骤2582中通过计算ωi=1-ωi,并以与相对于图36中的步骤2346所描述的相同方式,将概率状态指数ωi变迁为新概率状态指数而在步骤2582和2584中调适或更新概率状态。随后处理在步骤2578处结束。
在已经描述特定实施方式之后,应该注意的是,并不限于这些实施方式。具体地,根据步骤2308的2408的分配不必依赖于与邻近区块的语法元素,即,包含在由预编码器2012输出的预编码视频信号中的语法元素。而是,分配可依赖于邻近区块的其它属性。此外,相对于图35的表所描述的邻近区块之间的邻近关系的定义可以改变。此外,两个交错字段的像素样本可以以其他方式而不是上述方式来配置。
此外,4x4区块以外的区块大小也可用作为变换基础,尽管如上实施方式中,变换被应用至图像样本的预测差,但变换也可应用至图像样本本身而不用进行预测。此外,变换类型并无特殊限制。DCT和FFT或子波变换都可使用。此外,简述的实例并不限于二元熵编码/解码。而是,同样适用于多符号熵编码。此外,视频帧的细分成片段、宏区块对、宏区块、图像元素等仅用于示例性目的,并不意在限制实例的范围。
在下文中,参考图40,以图28更详细地示出包括上编码器的视频编码器的完整设置,如图40的框2800中所示,其中,使用了通过使用基于邻近语法元素的上下文分配的前述语法元素的熵编码。更具体地,图40示出了用于宏区块的正在萌出H.264/AVC标准的基本编码结构。输入视频信号***成多个宏区块,各宏区块具有16x16亮度像素。然后,选定宏区块与片段群和片段之间的关联性,及然后,各片段的宏区块通过图40的操作区块网络处理。这里需要注意的是,当图像有多个片段时,宏区块的有效并列处理是可能的。宏区块与片段群和片段之间的关联性利用图40的称作编码器控制装置2802的区块执行。存在数个片段,定义如下:
I片段:其中该片段的全部宏区块都使用内-预测编码的片段。
P片段:除了I片段编码类型之外,P片段的若干宏区块也使用跨-预测编码,而每个预测区块至多只有一个移动补偿预测信号。
B片段:除了P片段编码类型之外,B片段的若干宏区块也使用跨-预测编码,而每个预测区块有两个移动补偿预测信号。
上述三种类型的编码极为类似先前标准,但参考图像的使用除外,如下文所述。以下两种类型对于片段的编码类型为新颖的:
SP片段:所谓的切换P片段,被编码为使得不同预编码图像之间的有效切换变成可能。
SI片段:所谓的切换I片段,允许在SP片段中宏区块的确切匹配来用于随机访问及错误恢复目的。
片段为宏区块序列,当未使用弹性宏区块排序(FMO)时,其以光栅扫描顺序被处理。如图42所示,图像可被***成一个或数个片段。因此图像为一个或多个片段的集合。片段为自容式,表示给定激活的序列及图像参数集合,其语法元素可从位串流剖析,在片段表示的图像区的样本值可正确地解码而未使用得自其它片段的数据,但先决要件为在编码器及解码器利用的参考图像为相同。来自其它片段的若干信息可能需要施加跨片段边界的解块滤波器。
FMO利用片段群组构想而修改图像如何划分成片段及宏区块的方式。各片段群组为由宏区块至片段群组映射所界定的宏区块集合,其由图像参数集合内容及来自片段报头的若干信息所指定。宏区块至片段群组映射由图像中各个宏区块的片段群组识别号码组成,指定相关联的宏区块所属哪一个片段群组。各个片段群组可被划分为一个或多个片段,使得片段在特定片段群组的宏区块集合内以光栅扫描顺序处理的相同片段群组内部的序列宏区块(未使用FMO时的情况可视为其中整个图像由单一片段群组所组成的FMO的简单特例)。
使用FMO,图像可被***成多个宏区块扫描样式,诸如交插片段、分布式宏区块配置、一个或多个“前景”片段群组及“遗留”片段群组,或棋盘型映射关系。
根据片段编码类型,各宏区块可以若干编码类型中的一个传输。在全部片段编码类型中,支持下列内-编码类型,它们被标示为Intra_4x4或Intra_16x16连同彩度预测模式及I_PCM预测模式。
Intra_4x4模式基于分开预测各个4x4亮度区块,且极为适合用来编码具有有效细节的图像部分。另一方面,Intra_4x4模式进行整个16x16亮度区块的预测,更适合用来编码图像的极为平顺区。
除了这两种类型的亮度预测外,进行分开彩度预测。作为Intra_4x4和Intra_16x16的替换,I_PCM编码类型允许编码器单纯绕过预测与变换编码处理,而是,直接发送编码样本值。I_PCM模式用于下列目的:
1.允许编码器精确地表示样本值
2.提供准确地表示异常图像内容值的方式而无显著数据放大
3.对于宏区块,使得能够对解码器必须处理的位数目施加硬限幅,而不影响编码效率。
对照若干先前视频编码标准(即,H.263+及MPEG-4视觉),此处内-预测已经在变换域进行,通过参考在将被预测区块的左上的先前编码区块的邻近样本仓,在H.264/AVC的内-预测经常性地在空间域进行。因此可能在有因移动装偿而传播入跨-编码宏区块的传输错误环境下遭致错误传播。因此,可信号通知允许只从内-编码邻近宏区块预测的被约束的内-编码模式。
当使用Intra_4x4模式时,各个4x4区块从如在图43的左手侧上所示的空间上邻近的样本预测。以a-p标示的4x4区块的16个样本使用以A-Q标示的相邻区块中的先前解码样本预测。对于各4x4区块,可使用九个预测模式中的一个。此外,对“DC”预测(其中,一个值用来预测整个4x4区块),如在图41的右手侧上示出,指定了八个方向性预测模式。这些模式适合预测图像中的方向性结构,诸如各个角的边缘。
此外,对于内-宏区块编码类型,各个预测或移动补偿编码类型被指定为P宏区块型。各个P宏区块型对应于宏区块至用于运动补偿预测的区块形状的特定划分。具有16x16、16x8、8x16和8x8样本的亮度区块大小的划分由语法支持。在选择具有8x8样本的划分的情况下,传输各8x8划分的一个另外的语法元素。该语法元素指定对应的8x8划分是否进一步被分割成为8x4、4x8或4x4亮度样本及对应的彩度样本划分。
各个预测编码MxN亮度区块的预测信号通过置换对应的参考图像的一个区域而获得,所述区域由平移移动向量和图像参考指数指定。因此,如果宏区块使用四个8x8划分编码,而各个8x8划分又被***成四个4x4划分,则对于单一P宏区块可传输至多16个移动向量。
量化参数SliceQP被用来以H.264/AVC确定变换系数的量化。参数可有52个值。这些值被配置为使得量化参数递增1表示量化步长大小增加约12%(递增6表示量化步长大小恰增加2的因子)。可以注意到,步长改变约12%也粗略表示位率降低约12%。
区块的量化变换系数通常以锯齿形样式扫描,并使用熵编码法传输。彩度成分的2x2DC系数以光栅扫描顺序扫描。以H.264/AVC的全部反变换运算可只使用16-位整数值的加法和位移位运算而具体实现。同理,为了在编码器获得正向变换和量化处理的良好具体实现,只需16-位存储器存取。
图40的熵编码器2800与相对于图29的上述编码配置一致。上下文建模器将上下文模型,即,概率信息馈至熵编码器(其又称常规编码引擎)。将被编码的位,即,仓从上下文建模器被转发至常规编码引擎。该仓值也被反馈至上下文建模器,故可获得上下文模型更新。提供旁路分支,其包括熵编码器,又称旁路编码引擎。旁路编码引擎可操作为将输入仓值进行熵编码。对比于常规编码引擎,旁路编码引擎并非适应性编码引擎,而是以固定式概率模型工作未作任何上下文适应。利用开关可获得两个分支的选择。二进制化装置可操作为将非二元值语法元素加以二进制化来获得仓串,即,二元值串。在语法元素已经是二元值语法元素的情况下,则旁路二进制化器。
在所谓的常规编码模式中,在实际熵编码处理之前,下文中将称作为仓的给定的二元判定进入上下文建模阶段,其中,选择概率模型,从而使得对应的选择可取决于先前编码语法元素或仓。然后,在上下文模型分配之后,仓值连同其相关联的模型被传输至常规编码引擎,其中进行熵编码最末阶段连同随后模型更新(参考图29)。
另外,对于选定的仓选用旁路编码模型来利用简化编码引擎而加速整个编码(及解码)处理,而未使用明确分配的模型。该模型在考虑移动向量与变换系数位准之间的差成分而编码该等语法元素的一次后缀的仓时特别有效。
下文中,三个主要功能构建模块,即,图40编码器的二进制化、上下文建模、及二元熵编码连同其
实例5
在本实例中,实例4被进一步扩展以及图34、图35、图46至49图。根据本实例,通过将数据值及预定截止值(cut-off value)中的最小值二进制化,根据第一二进制化方案而执行数据值的二进制化来获得一元后缀;及如果数据值大于截止值,根据第二二进制化方案,将数据值减去预定截止值的差二进制化来获得二元后缀,第一二进制化方案与第二二进制化方案不同,且将一次后缀附接至一次前缀。
数据值从该数据值的二进制化表示恢复,该数据值的二进制化表示为具有一次前缀的代码字,该一次前缀为数据值及预定截止值中的最小值根据第一二进制化方案而二进制化,及如果该数据值大于预定截止值,一次后缀被附接至一次前缀,该一次后缀为数据值减去预定截止值的差根据第二二进制化方案而二进制化,该方法包含从一次前缀提取最小值;而如果该最小值等于截止值,则从该一次后缀提取数据值减去预定截止值的差。然后,预定截止值加至该差来获得数据值;及如果该最小值小于截止值,则最小值视为数据值。
数据值编码成编码位串流包含根据第一二进制化方案而二进制化数据值及预定截止值中的最小值来获得一次前缀;而如果该数据值大于截止值,则根据第二二进制化方案而二进制化数据值减去预定截止值的差而获得二元后缀,该第一二进制化方案与第二二进制化方案不同,及将一次后缀附接至一次前缀。然后,对于代码字内的各位,如果代码字位的位为一次前缀的一部分,则根据前述任一具有概率估算相关性部分位串流选择的实施方式,利用适应性改变位值概率估算而执行二元熵编码位;或如果代码字的位为一次后缀的一部分,则利用静态位值概率估算执行位的二元编码,从而获得编码位串流。
描述了解码表示数据值的二进制化表示的编码的位串流,该数据值的二进制化表示为具有一次前缀的代码字,该一次前缀为数据值和预定截止值中的最小值根据第一二进制化方案的二进制化值,及如果数据值大于预定截止值,一次后缀被附接至一次前缀,所述一次后缀为数据值减去预定截止值的差根据第二二进制化方案的二进制化值,该方法包括:对于代码字内的各个位,如果该代码字的位为一次前缀的一部分,则利用适应性变更位值概率估计值,即,通过经由与概率估计值相关联的部分位串流恢复位,而通过对编码的位串流进行二元熵解码来确定该位;及如果代码字的位为一次后缀的一部分,则利用静态位值概率估计值,而通过对该位进行二元解码来确定该位,从而获得代码字。然后从一次前缀提取最小值。如果该最小值等于截止值,则从一次后缀提取数据值减去预定截止值的差值,并将预定截止值加至该差值来获得数据值。如果该最小值小于截止值,则将最小值视为数据值。
数据值,特别是形成视频信号的语法元素的移动向量差分量或变换系数位准值分量的极为有效的压缩通过下述方式来实现:使用二进制化方案来准备用于熵编码器的语法元素,该二进制化方案实质上为两个不同二进制化方案的组合;及通过使用二元熵编码替代m-元熵编码来编码二进制化语法元素。
使用二元熵编码引擎替代m-元熵编码器在原始m-元源字母表上操作优点为概率估算的复杂性降低,原因在于,两个可能位值的概率测定可只通过一个概率估算值而限定。对于m>2,适应性m-元熵编码通常为要求大量相当复杂的操作来执行概率估算的更新的运算复杂的操作。
根据特定的实施方式,使用截头一元二进制化方案与第k次幂指数Golomb二进制化方案的级联(concatenation)。这种级联方案被称作一元/第k次幂Exp-Golomb(UEGk)二进制化方案,被应用至移动向量差及变换系数位准的绝对值。该级联二进制化方案的设计由下列观察而激发。首先,就具体实现成本而言,一元码为最简单的无前缀码。其次,其允许在随后上下文建模阶段各个符号概率的快速调适,原因在于,在对应的树的节点配置典型地使得:随着内部节点距根节点距离的增加,对应的二元概率较少扭斜。这些观察对于移动向量差及变换系数位准的绝对值中的小值为正确。对于较大值,不太使用适应性建模,结果导致级联经调适的截头一元树作为前缀及静态指数Golomb码树作为后缀的构想。通常,对于较大值,EGk后缀部分表示相当良好匹配观察得的概率分布,如前文已述。
为了示出一方面“位”或二进制化器2102将语法元素所映射至的代码字的仓和另一方面“仓”之间的关系,图44示出了相对于图46所描述的与二进制化方案对应的二元码树。代码树大致上以组件符号3150指示,包含根节点3152和数个内部节点3154,根节点3152和内部节点3154以Ci标示,指数i为与对应的节点相关联的整数。这些节点各自限定条件式分支或称作“仓”的二元判定,左分支对应于仓值0,而右分支对应于仓值1。
树3150还包括端节点3156。图44中分配给端节点3156的数字对应于语法元素的数据值,根据图46的二进制化方案,该数字与当遵循从根节点3152至各个端节点3156的路径时从位或仓值所得代码字或位串式对应的。例如,如图46所示,仓值17对应于代码字位串1111111111111101。路径包含根节点3152和内部节点3154C2至C17。各个节点3152或3154可视为称作“仓”的二元判定。从根节点3152至各个端节点3156横过树3150放入二元判定的级联表示对应的符号值或语法元素值的“仓串”。
各个二元判定具有指示概率是否该决定获得二元0(图44的左分支)和二元1(图44的右分支)的实际概率分布。换言之,二元判定的实际概率分布限定在此二元判定中语法元素路径采用0或1分支的概率。据此,语法元素获得某个数据值的实际概率等于沿着从根节点3152至各个端节点3156的路径排列的节点的各个概率。
对于二元熵编码,树3150的各个二元判定或节点3152、3154,即,各仓与仓值概率估算或上下文模型即Ci相关联。如以下所详细描述,并非全部节点或仓系与适应性概率估算模型相关联,但可与静态概率估算相关联,从而减少上下文模型开销,即,减少根据过去仓用来调适估算的管理以提高压缩比。
接下来,相对于图45,描述了根据本发明实施方式的二进制化方案实施方式。图45示意性地示出了二进制化器3102在非二元值语法元素上执行的步骤。具体地,图45为将变换系数位准的绝对值二进制化的实施方式,即,在定标用于变换系数值的运算前,在解码处理中,表示与特定二维频率指数相关联值数量。
图45的二进制化方案为一方面截头一元二进制化方案与另一方面第k次幂Exp-Golomb二进制化方案的级联。截头一元二进制化方案基于一元二进制化方案。基于一元二进制化方案,对于大于或等于0的各个无符号的整数值符号x,x所映射的一元代码字由x个“1”位加一个结束“0”字节组成。与一元二进制化方案不同,截头一元(TU)码只对于x而0≤x≤S定义,其中,对于x<S,码以一元码给定;而对于x=S,结束“0”位被忽略,使得x=S的截头一元码只通过x个“1”位所组成的代码字给定,即不含结束“0”位。根据指数Golomb二进制化方案,通常数据值x被映射至前缀及后缀组成的代码字。更精确言之,根据第k次幂Exp-Golomb二进制化方案,数据值被映射至具有至少一个前缀及取决于数据值,具有后缀的代码字。EGk代码字的前缀部分由对应于值1(x)的一元码组成,其中 k指示码的次幂,及为小于或等于实数值r的最大整数。EGk后缀部分使用k+1(x)有效位,运算为x+2k(1-21(x))的二元表示。
从图45可知,将被二进制化的绝对数据值x在3200与截止值S作比较而判定x及S间的最小者。S为限定将排它地使用截头一元码的绝对数据值x(即未使用残差的Golomb二进制化方案)的截止值。换言之,对于小于截止值S的全部绝对数据值x,排它地使用截头一元二进制化来将绝对数据值x映射至代码字,从而,该代码字仅由一次前缀组成。如果绝对数据值x大于或等于S,一次后缀被附接至一次前缀,则一次后缀从x-S根据零次幂Exp-Golomb二进制化方案形成,如后所详述。
x和S之间的最小者在3202处根据截头一元二进制化方案而被二进制化。结果为一次前缀204,其形成x所映射的最终代码字3206的至少一部分。因此一次前缀由Min(S,Abs(x))值的一元二进制化组成,其中,Min(a,b)表示a与b之间的最小值,及其中,Abs(x)表示x的绝对值。换言之,如果x大于或等于S,则一次前缀由S组成,如果x小于S,则由x个前导1接着一个结束零组成。
在3208处,将绝对数据值x与截止值S进行比较。如果比较结果为x小于S,则二进制化在3210结束,因此,绝对数据值x根据图45二进制化方案所映射至的代码字3206只由一次前缀3204组成。否则,换言之,如果x等于或大于S,则在3212处,截止值S被从绝对数据值x减去。所得的x减去S的差(有时称作残差)在3214,根据第k次幂Exp-Golomb二进制化方案处理,k等于零。下文将相对于图48更加详细地描述第k次幂Exp-Golomb二进制化方案。
差值“x-S”的二进制化3214结果被附接至一次前缀3204作为一次后缀3208。因此,如果绝对数据值x大于或等于截止值S,则所得代码字206由其后跟随有一次后缀3208的一次前缀3204所组成,其中,一次后缀3208为x-S的第k次幂Exp-Golomb二进制化。从进一步的描述将显而易见的是,一次后缀3208本身由前缀与后缀组成,下文称作二次前缀3218和二次后缀3220。
实验研究显示,对于变换系数位准的绝对值,当将这样的二进制变换系数位准值传输至二元熵编码器时,S=14和k=0获得相当良好的压缩比,即便只有构成一次前缀的一部分的代码字3206位使用适应性概率模型作熵编码亦因此,从而降低了编码开销。
图46示出了一表,其中S=14和k=0,列出了在左行3215中的变换系数位准的绝对值,而在图45根据二进制化的对应的代码字列举在右3252处。注意,二进制化及随后编码程序被调适至语法元素“变换系数位准值减去1“,原因在于,零值即无意义的变换系数位准使用前述有效位映射表编码。因此,参考图45,图46的表中在3250列出的x加1的值。图46的表示出对于S=14和k=0的值图45的二进制化方案结果。
如图可知,绝对值所对应的代码字或仓串包含至少一个截头一元(TU)前缀,代码字或仓串的截头一元(TU)前缀在图46在3254处被强调。可以看出,如3256所示,低于15(=x+1)的绝对值不具有EG0后缀。此外,如虚线3258所示,各EG0后缀3256包含在虚线3258左侧的二次前缀;及属于绝对值15的代码字的后缀除外,全部EG0后缀3256包含配置在虚线3258右侧的二次后缀。
以图46相同的方式,图47示出了根据图45的二进制化方案,而k=3和S=9所得的绝对值和仓串的成对的表。等于图46的表的元素的图47的表的元素以图46相同的参考标号表示,并省略其重复描述。在图47的表中未示出符号位。
当应用至移动向量差的绝对值时,根据图47根据二进制化方案的k和S值已表现出良好的压缩效率。对于移动向量差,图47所示的UEGk二进制如下组成。假设给定移动向量分量值mvd。对于UEGk仓串的前缀部分,TU二进制化(图45的3202)使用具有S=9的截止值的mvd绝对值而被调用。如果mvd等于零,则仓串只由前缀代码字“0“270组成。如果满足条件|mvd|≥9(图45的3208),则后缀被构建为(图45中的3214)用于|mvd|-9的值的EG3代码字,对于负mvd使用符号位“1”(未示出)附上mvd符号,否则即使用符号位“0”(未示出)。对于mvd值,后缀只由符号字节组成,其中0<|mvd|<9。
假设移动向量差的分量表示在四分之一样本准确度处的预测误差,前缀部分通常对应于+/-2样本的最大误差成分。选择指数-Golomb参数k=3,给定后缀代码字,使得以2个样本为单位的预测误差的几何增高通过对应的后缀代码字长度的线性增加而获取。
已经参照图45至47,以相当粗糙的方式描述了图29的二进制化器3102的功能之后,相对于图48更加详细地描述了图45中的第k次幂Exp-Golomb二进制化3214的可能的实施。图48示出了伪C代码,所述代码示出了根据图45的二进制方案,组成表示绝对数据值x的二进制化的代码字的一次后缀部分的处理。首先,在3300处,辅助参数k被初始化至所使用的Exp-Golomb二进制化的幂。在根据图47的移动向量差的分量的二进制化的情况下,例如k在步骤3300处被初始化至值3。
如果在行3302中在移动向量差(mvd)的绝对值与截止值(这里为9)之间的比较,示出mvd的绝对值大于或等于9,在步骤3304中,将截止值S=9从mvd绝对值中减去而获得sufS。此外,参数stopLoop在步骤3306中被初始化至零值。接下来,在3308中,如在行310中,310检查,执行条件式if-运算,只要stopLoop参数尚未将其值改变为大于0的正值即可。如果条件式if-运算示出sufS为大于或等于2的第k次幂(312d),在3312处输出具有位值1的一位(3312a),2的第k次幂从sufS中被减去(3312b)),k递增(3312c)。否则,如果sufS为小于2的第k次幂(3312e),输出具有零位值的一位(3312f),使用位数目等于k实际值的sufS二元表示(3312g)被输出(3312h),及参数stopLoop被设定为1的值(3312e),从而导致if-运算的迭代重复执行3308的停止。
如果在步骤3302中的比较执行的全部步骤3304至3312示出mvd的绝对值大于或等于9。不考虑3302中的比较,在3314中,如果mvd大于零,即输出零的符号位,而如果mvd小于零,即输出1的符号位,该符号位在图47中未示出。
从图48的伪C代码显而易见的是,在第三次幂Exp-Golomb二进制化方案的情况下,后缀部分至少包含4位,1位为3312f的零位,而另外三位为3312h的二元表示输出位,在图47中还可以看出,忽略各代码字端处的符号位。
根据本发明的实施方式,已经描述在编码器侧的二进制化及熵编码之后,图49示出了本发明实施方式,在解码器侧执行步骤以解码熵编码的位串流。
首先,在步骤3400中,解码器接收熵编码位串流,判定将从该编码位串流确定的下一个仓或位是否为一次前缀位或为一次后缀位。解码器从熵编码的位串流的预定语法方式,知道下一仓或位是否为二进制化语法元素的一次前缀或一次后缀的位。
在步骤3400中,如果确定预期位为一次前缀位,则解码器基于适应性变化概率估算或上下文模型通过二元熵解码来确定该位的位值。即,解码器使用用来选择的各个概率估算来选择前述各个部分位串流。解码器基于由各个上下文模型类别所指示的过去解码仓而更新此适应性改变中的概率估算。
如果该位为一次后缀位,在3404中,基于静态概率模型,通过执行熵解码而确定下一位或仓值。这涉及包括实际位的代码字对仓的1:1映射。
在3408中,如果有位留下来获得整个代码字的位值,则解码器重复步骤3400至3404。。如果在步骤3408未留下位,则解码处理步骤3410处结束。在语法元素为绝对变换系数位准减1的情况下,从后续的各个二进制码树,诸如图44所示的码树,解码器知晓何时语法元素的二元表示结束,即该解码位为实际语法元素的最末位。
图50示出了从通过图49的处理所得代码字恢复数据值(已经被二进制化为代码字)的处理。通过图49的处理所得的位值形成位串流3450。如上所述,解码器知晓何时新代码字在位串流3450上,即由信号3452指示的新代码字情况。
在最小值提取步骤3454中,通过计数在代码字的一次前缀中的领先1,而从二元代码字提取值m,计数等于m。如果在步骤3456中检查m等于S(因解码器知晓哪一个语法元素通过哪一个二进制化方案编码,故S值为解码器所知晓),在差提取步骤3458中,接收来自位串流3450在一次前缀位随后的位,其形成代码字的一次前缀部分。在差提取步骤3458中,将被恢复的数据值x与截止值S之间的差被从在位串流3450的代码字的一次前缀恢复。
在步骤3460中,S被加至在步骤3358中恢复的差x-S来获得x值,即,实际编码的语法元素的值。
示出最小值提取步骤的伪C代码的实例可以是:
图51中示出了通过在差提取步骤3458中执行的子步骤。在步骤3500中,差提取器计数一次后缀中的领先位而获得m值。接下来,k在步骤3502中与零比较,k对于移动向量差为3而对于变换系数位准值为0。如果在步骤3504中,k等于零,则在步骤3504中,m与零比较。如果比较获得m=0,则在步骤3506推定数据值x等于截止值S,该S值在移动向量差的情况为9,而在变换系数位准的情况下为14。
如果k不等于零和/或m不等于零,则在步骤3508中,从位串流3450读取接下来的k加m个随后位,即,跟随在二次前缀的结束位之后的位。从而,获得A=x-S+2k(1-2m)的二元(k+m)位长度表示。收集形成该方程式A=x-S,如果m=0。
当在步骤3510中,m与0比较显示m=0时,从二元表示A减去值2k(1-2m)而获得x-S值。
实例6
本实例中,实例4被进一步扩展,且也应用了图34、图35、图36、图37a、图37b、图39、图45、图46至49图。在本实例中,提供了用于包含在预编码视频信号中的语法元素的编码方案,这能够获得更高的压缩效果。
描述了一种用来将包含在预编码视频信号中的语法元素编码成编码的位串流的方法,所述预编码视频信号表示至少一个视频帧,所述语法元素与该视频帧的预定部分相关联,并指示该视频帧的预定部分是否以第一或第二方式预编码成预编码视频信号,所述方法包括调查该预定部分邻近的视频帧的邻近部分是否以第一或第二方式预编码来获得二元值;基于二元值,将至少两个上下文模型中的一个分配给该视频帧的预定部分,其中各上下文模型与不同概率估算相关联;最后,根据前述实施方式中的任一个进行符号序列的编码,至少一个符号与语法元素的表示相关。分配器被配置为基于与分配给各个符号的上下文相关联的概率分布估计值而确定对于各个符号的概率分布估计值的测量值。选择器从而选择各个熵编码器。
根据本发明的第二方面,该方面通过一种用来从编码的位串流解码语法元素的方法而获得,该语法元素包含在预编码视频信号中,预编码视频信号表示至少一个视频帧,语法元素与该视频帧的预定部分相关联,且指示该视频帧的预定部分是否以第一或第二方式预编码成预编码视频信号,该方法包含调查该预定部分邻近的该视频帧的邻近部分是否以第一或第二方式预编码来获得二元值;基于二元值,将至少两个上下文模型中的一个分配给视频帧的预定部分,其中,各上下文模型与不同概率估算相关联;及根据前述实施方式中的任一个重建符号序列,其中,至少一个符号与语法元素的表示相关。分配器被配置为基于与分配给各个符号的上下文相关联的概率分布估计值而测定各个符号的概率分布估计值的测量值。选择器从而选择各个熵编码器。
本实例基于以下发现:预编码视频信号的编码可变得更为压缩,当与视频帧或图像的预定部分相关联的或指示视频帧的预定部分是否以第一或第二方式预编码的语法元素,即,控制信息语法元素被分配给至少两个上下文模型中的一个时,所述分配取决于该视频帧的邻近部分是否以第一或第二方式预编码。然后语法元素可基于一个上下文模型相关联的概率估算而熵编码成编码位串流。由此,探讨该语法元素的实际或真正概率分布对语法元素的相关性系属同型,但关联该视频帧的邻近部分,实际概率分布可更准确地求取近似值。
因此,本发明的优点在于,由于更准确的可调式概率估算,可加强编码位串流对预编码视频信号的压缩比。
换言之,根据本发明的实施方式,在特定类型的语法元素每次出现在预编码视频信号时,可将其分配给至少两个上下文模型中的不同的上下文模型。上下文模型的选择在每次出现语法元素时被执行,且取决于该视频帧的邻近部分是否以第一或第二方式预编码。实际上,由此,出现在预编码视频信号的该类型的全部语法元素被分组成数个上下文模型群组,各个语法元素属于一个上下文模型群组,各个上下文模型群组被分配给上下文模型中的不同的上下文模型,及各个上下文模型与不同概率估算相关联。因此,各群组基于不同概率估算,换言之,属于其所被分配的上下文模型的概率估算而被熵编码。
根据本发明的另一实施方式,各个上下文模型的概率估算被调适为先前编码的语法元素,所述调适对于各个上下文模型分开进行。换言之,刚才已经熵编码的各个语法元素被用来调适该语法元素被分配至的上下文模型的概率估算。因此,同一类型的且被分配至同一上下文模型的接下来的语法元素通过调适的概率估算而被熵编码。由此,因上下文模型被彼此独立无关地调适或管理,调适获得更佳近似于实际或真正概率估算,因而导致更佳压缩比。
根据本发明的特定实施方式,空间相关的上下文模型的选择被用来编码在预编码视频信号中的帧/字段编码模式标识。帧/字段编码模式标识指示各个视频帧部分是否以帧或字段编码模式编码。更精确言之,根据该实施方式,视频帧为交错帧,其中,部分图像样本在一个时间瞬间被拍摄,而其它图像样本在不同时间瞬间被拍摄,第一图像样本被称作第一字段,而第二图像样本被称作第二字段。此外,视频帧在空间上被细分成宏区块对阵列,各宏区块对由两个宏区块组成。当以字段模式编码时,宏区块对中的一个宏区块仅包含在该宏区块对内的第一字段的图像样本或第二字段的图像样本,而该宏区块对中的另一个宏区块包含或表示该宏区块对内的其它字段的图像样本。当以帧模式编码时,宏区块包含第一及第二字段图像样本,具体地,在宏区块对内的空间上顶部或底部样本,而同一宏区块对的另一宏区块表示宏区块对内的其它图像样本。
如相对于语法元素mb_field_decoding_flag将详细描述的,当同一仓或同一语法元素在通过阶段2100a的仓中出现数次时,根据先前输入的或先前熵编码的仓,其可以被分配给上下文模型中的不同的上下文模型。
已经描述了编码配置2100的操作后,下文将将根据本发明的实施方式,相对于语法元素mb_field_decoding_flag的处理详细描述其功能。为此,首先,关于图30至图31b,说明了该标识的含义。
现在,取决于宏区块对或宏区块对的多个宏区块由预编码器2012编码的模式进行分配,再次参考图28来说明包含在由预编码器4012所输出的预编码视频信号中的语法元素mb_field_decoding_flag的功能和含义。
-当预编码器4012接收表示交错视频帧的视频信号时,预编码器4012在编码视频帧4010可自由做出下列决定:
-可将两个字段组合在一起以将它们作为单一编码的帧进行编码,从而使得每个宏区块和每个宏区块可以以帧模式而被编码。
-可选地,可组合两个字段并将它们作为分开的编代码字段进行编码,从而使得每个宏区块和每个宏区块可以以字段模式而被编码。
最后,可以将两个字段组合在一起并将它们作为单个帧压缩,但当编码所述帧时,在对它们进行编码之前,将宏区块对***成成对的两个字段宏区块或成对的两个帧宏区块。
对于序列中的各帧,可适应性地做出三个选项之间的选择。前两个选项之间的选择被称为图像适应性帧/字段(PAFF)编码。当帧作为两个字段而被编码时,各字段被划分成宏区块,且以极为类似帧的方式被编码。
如果帧由其中一些区域为移动的而其他区域不是的混合区域组成,对非移动区域以帧模式进行编码而对移动区域以字段模式进行编码通常是更为有效的。因此,对于在帧的各垂直宏区块对,可独立地做出帧/字段编码决定。其为以上列出的相向中的第三种编码选项。该编码选项被称为宏区块适应性帧/字段(MBAFF)编码。下文中,假设预编码器4012确定仅使用该选项。如前述,MBAFF编码允许预编码器将编码模式类型(字段或帧模式)更加地调整适应场景的各个区。例如,预编码器预编码器4012以帧模式编码在视频场景的静态区的宏区块对,而以字段模式编码在视频场景表示快速移动的区域的宏区块对。
如上所述,对于以字段模式编码的宏区块对,各宏区块包含帧行。对于以字段模式编码的宏区块对,顶部宏区块包含顶部字段行,底部宏区块包含底部字段行。各宏区块对的帧/字段决定通过预编码器4012而在宏区块对层面做出,即,如果顶部宏区块被字段编码,则同样适用于同一宏区块对内的底部宏区块。由此,基本宏区块处理结构保持完好,及移动补偿区之大小允许与宏区块大小一般大。
字段宏区块对的各宏区块以PAFF编码,极为类似字段内的宏区块处理。然而,因字段与帧宏区块对的混合可能出现在MBAFF帧内,比较PAFF编码,在预编码器4012预编码程序的某些阶段,诸如移动向量的预测、内-预测模式的预测、内-帧样本预测、在熵编码的解块滤波及上下文建模、及变换系数的锯齿形扫描被经修改来考虑该混合。
简言之,由预编码器4012输出的预编码视频信号取决于预编码器4012已经确定使用的编码类型。在MBAFF编码的情况下,因此处假设,对于各个非跳过宏区块对,预编码视频信号包含标识mb_field_decoding_flag。标识mb_field_decoding_flag对于其所属的各宏区块对指示对应的宏区块是否以帧或字段编码模式编码。在解码器侧,需要该标识来正确解码预编码视频信号。在宏区块对的多个宏区块被以帧模式编码时,标识mb_field_decoding_flag为零;而在另一情况下该标识为1。
现在,尽管已经描述了图29的原始解码器配置的操作的一般模式而未参照特定仓,但相对于图52,现在将相对于标识mb_field_decoding_flag的二元熵编码描述给配置的功能。
图52中所示的处理始于下述时间,其中,标识mb_field_decoding_flag到达上下文建模器4112之输入端。在第一步4300中,上下文建模器4112确定输入的语法元素或仓是否为mb_field_decoding_flag。如果不是,则在步骤302中,上下文建模器4112切换成另一语法元素处理程序或例程。如果输入的仓为mb_field_decoding_flag,则在步骤304中,上下文建模器4112确定标识属于哪一个上下文模型。
在图53中详细地示出了步骤4304。当确定上下文模型对应于当前mb_field_decoding_flag时,在步骤4306中,上下文建模器4112首先计算当前宏区块对左上宏区块对的顶部宏区块地址。
在接下来的步骤4308和4309中,上下文建模器4112分别确定当前宏区块对左上宏区块对的顶部宏区块的可用性。在步骤4308中,当mbAddrA小于0时,左侧邻近宏区块A被标示为可用。这同样适用于关于mbAddrB的步骤4309。因此,在宏区块对确实真正存在且当前指示表示各邻近宏区块对A和B的可用状态的情况下,MbAddrN(N为A或B)为各个邻近宏区块对的顶部宏区块地址。
在可选实施方式中,唯有除了前述条件外,下述亦为真时,宏区块A或B才标示为可用:具有地址mbAddrN的宏区块属于作为当前片段的同一片段。
当在步骤4308/4309中确定宏区块N(N为A或B)标示为可用时,在步骤4310和步骤4311中,分别确定宏区块N(N等于A或B)为以字段模式编码的宏区块或以帧模式编码的宏区块。在宏区块A以字段模式被编码情况下,在步骤4312中,标识condTermflagA被设定为1。同样适用于宏区块B,故,如果宏区块B以字段模式被编码,在步骤4313中,condTermflagB被设定为1。在所有其它情况下,即,当mbAddrA小于0(4308)或宏区块A以帧模式被编码(4310)时,在步骤4314中,标识condTermflagA被设定为0。从而,当mbAddrB小于0(4309)或宏区块B被以帧模式编码(4311)时,在步骤4315中,标识condTermflagB被设定为0。
在步骤4316中,condTermflagA和condTermflagB由上下文建模器4112用来计算指示将被用于mb_field_decoding_flag的二元熵编码的概率模型的上下文指数ctxIdxMbField。具体地,上下文建模器计算
ctxIdxMbField=condTermflagA+condTermflagB,
结果为{0,1,2}的数目。
返回参照图52,在步骤4304的确定之后,上下文建模器4112将变量ctxIdxMbField(上下文指数宏区块字段)或以ctxIdxMbField连同mb_field_decoding_flag检索的概率估算状态传输至常规编码引擎4118,其相应地根据前述任一实施方式而构成。即,前述实施方式的配器经由确定的上下文,根据所确定的概率而设定用来选择部分位串流的参数,从而在步骤4304中,选择器将ctxIdxMbField仓发送给各个部分位串流路径。在步骤4318中,标识mb_field则根据通过ctxIdxMbField检索的上下文模型的当前概率状状态被而编码成所选各个位串流。
随后,常规编码引擎4118经由路径4117将mb_field_decoding_flag仓值传输回上下文建模器4112,于是在步骤4320中,上下文建模器4112相对于其概率估算状态而调适由ctxIdxMbField检索的上下文模型。其后,在输出端4124,将标识mb_field_decoding_flag编码成为位串流的处理在4322处结束。
图54更详细示出通过熵解码器4400执行的解码处理。首先,在步骤4500中,熵解码器4400检查下一个被解码的仓是否为mb_field_decoding_flag。如果情况并非如此,则在步骤4502中,熵解码器4400切换至另一仓处理(未示出)。如果为是,则在步骤4504中,熵解码器4400确定标识所属的上下文模型。步骤4504以编码处理中的步骤4304相同的方式被执行,或如图53所示。
然后,在步骤4506中,通过使用如在步骤4504中所得的通过ctxIdxMbField检索的上下文模型的实际概率状态检索,从各部分位串流熵解码器获得实际仓,即,mb_field_decoding_flag。该步骤的结果为mb_field_decoding_flag值。其后,在步骤4508中,如同步骤4320的情况,ctxIdxMbField概率状态被经调适或更新。随后,处理在步骤4510处结束。
在步骤4504中的确定产生了相同指数ctxIdxMbField,原因在于,宏区块以适当顺序通过预编码视频信号,保证宏区块A和B(图22)的标识mb_field_decoding_flag已经被先前预编码。因此,如同编码器端的情况,基于邻近宏区块的先前解码标识mb_field_decoding_flag,在步骤4504中,可推定上下文模型。
注意前述实例并不限于指示宏区块或宏区块对的帧/字段模式编码的标识。而是,以上描述也可以被应用至其他语法元素。
至于步骤4310,注意以下情况。通常,宏区块被编码成预编码视频信号。然而,可能宏区块未被编码或被跳过,原因在于,该宏区块的对应的变换系数位准全部都小于某个量化临界值。因此,对于某些宏区块,无法取得mb_field_decoding_flag。因此,如果邻近宏区块为被跳过的宏区块,可能无法通过单纯调查各个邻近宏区块的mb_field_decoding_flag而执行步骤4310。当邻近宏区块对(包含图22中A或B)的任一宏区块不存在mb_field_decoding_flag时(当底部宏区块具有mb_field_decoding_flag时,其被选择为A或B的mb_field_decoding_flag),适用下述(假设包含A的宏区块对被错过):
如果在同一片段中(A的)左侧存在邻近宏区块对,则(A的)mb_field_decoding_flag值应该被推断为等于当前宏区块对(包含A)的左侧邻近宏区块的mb_field_decoding_flag值,
如果在同一片段中(A的)左侧不存在邻近宏区块对,且在同一片段中(A的)上方存在邻近宏区块对,则(A的)mb_field_decoding_flag值应该被推断为等于当前宏区块对(包含A)的上方邻近宏区块的mb_field_decoding_flag值,
否则,如果在当前宏区块对(包含A)上左侧或上方不存在邻近宏区块,则(A的)mb_field_decoding_flag值应该被推定为等于零。
当然,单纯通过将A切换成为B,前述步骤也适用于顶部宏区块B。
此外,可以使用相对于图22和图34所描述的那些之外的其它邻近关系以确定用于熵编码mb_field_decoding_flag的上下文模型。
此外,如前文已述,前述实施方式也适用于其它控制语法元素或其它仓。此外,本发明并不限于二元熵编码,而是也适用于其它符号熵编码。此外,视频帧的细分成片段、宏区块对、宏区块图像元素等仅用于示例的目的,并非用来将本发明的范围限制于该特定情况。
实例7
在本实例中,实例4进一步被扩展,图34、图35、图36、图37a、图37b、图39、图45、图46至图49同样适用。根据实例7,一种编码视频帧或图像的方法包括将视频帧或图像划分为第一类型部分和第二类型部分,其中,第一类型部分与第一扫描样式相关联,而第二类型部分与不同于第一扫描样式的第二扫描样式相关联;将对应于视频帧或图像的各部分中的预定部分的数据变换成二维变换系数阵列,其中,在变换系数中的扫描顺序通过预定部分的扫描样式限定,扫描顺序对各个变换系数分配一个唯一的扫描位置;预编码这些变换系数中的预定的变换系数来获得变换数据单元;选择第一和第二上下文模型集合中的一个,取决于该预定部分为与第一或第二扫描样式相关联的类型部分,第一与第二集合彼此不同;基于分配给预定变换系数的扫描位置,而将第一和第二上下文模型集合中的所选的一个上下文模型分配给变换数据单元,其中,各个上下文模型与不同概率估算相关联;以及使用前述实施方式中的任一个,基于所分配的上下文模型所相关联的概率估算,而将该变换数据单元或其子单元编码成编码位串流。
根据实例7,描述了从编码的位串流而解码变换数据单元或其子单元,该变换数据单元为与视频帧或图像的多个部分的预定部分对应的数据变换结果所得多个变换系数中的预定变换系数的预编码版本,这些部分为与第一扫描样式相关联的第一类型的一部分或与第二扫描样式相关联的第二类型的一部分,该方法包含选择第一和第二上下文模型集合中的一个,取决于该预定部分为与第一或第二扫描样式相关联的类型部分,第一与第二集合彼此不同;基于分配给预定变换系数的扫描位置,而将第一和第二上下文模型集合中的所选的一个的上下文模型分配给变换数据单元,其中,各个上下文模型与不同概率估算相关联;以及使用前述实施方式中的任一个,基于所分配的上下文模型所相关联的概率估算,而将该变换数据单元或其子单元编码成编码位串流。
该项发现探讨,相比于和与不同的扫描样式相关联的视频帧或图像的部分相关的变换数据单元或其子单元,当不同的上下文模型的集合被用于对和与第一扫描样式相关联的视频帧或图像的部分相关的变换数据单元或其子单元进行编码时,从视频帧或图像获得的变换数据单元或其子单元可以以更压缩的方式被编码。由此,上下文模型可更加精准地调适实际符号统计值,由于不同扫描样式,这在属于同一个扫描位置的不同变换数据单元间可能不同。由于可更加精准地近似实际概率分布,故可提高编码位串流的压缩比。此外,因不同上下文模型用于与不同扫描样式相关联的图像部分有关的变换数据单元,故有助于该上下文模型的概率估算的更新的变换数据单元表现出更加一致的实际概率分布,从而使得更新后的概率估算确实更精准地近似实际概率分布。同理,提供不同上下文模型集合,使得相对于实际概率分布,更精准地初始化上下文模型的概率估算。因此,可以进一步改善编码的位串流的压缩比。
已经描述宏区块适应性帧/字段编码之后,相对于图55描述了根据本发明实施方式的在编码方案期间帧和字段宏区块的一般性处理。图55示出了通过图28图的预编码器2012和熵编码器2014执行编码帧和字段宏区块的步骤。
图55示出了对已经被分割成如相对于图34所描述的宏区块对5010b1和5010b2的视频帧或图像5010进行编码的处理。在图55中,仅示例性地示出了两个宏区块对5010b1和5010b2。假设宏区块对5010b1为字段编码,而宏区块对5010b2为帧编码。属于宏区块对5010b1和5010b2的像素样本被传输至预编码器5012,其中,它们在步骤5270中被处理。步骤5270包含从宏区块对5010b1和5010b2的图像样本减去预测像素样本,并将差值从空间域变换至谱域(spectrum domain)。步骤5220的结果为各个宏区块对5010b1和5010b2的几个变换系数的二维阵列,各个变换系数的二维阵列属于宏区块对5010b1和5010b2的宏区块的子部分,诸如4x4像素样本或像素样本差的子部分。图55的示例性示出由5272指示的从宏区块5010b1推导出的这样的变换系数的二维阵列,及从宏区块5010b2推导出的另一个变换系数的二维阵列5274。例如,阵列5272和5274为4x4阵列。它们可以通过施加DCT至宏区块对5010b1和5010b2中的一个宏区块上的4x4预测残差区块而获得。例如,宏区块大小为16x16样本。对于各宏区块,16个4x4预测残差区块可变换成16个4x4变换系数阵列。DCT可以是4x4离散余弦变换或具有相似性质的分离式整数变换。通过限定变换矩阵使得逆变换由确切整数运算所限定,从而避免在解码器端的逆变换不匹配。
现在,在下文中,假设4x4像素样本区块导致变换系数阵列5272对应于宏区块2252中的像素区块1至4、21至24、41至44及61至64;而阵列5274有关的4x4像素样本区块包含宏区块2250的像素样本1至4、11至14、21至24和31至34,如图31a所示。
如图可知,对其施加步骤5270变换的4x4区块内的像素之间的空间关系在字段宏区块与帧宏区块中是不同的。具体地,相比于字段宏区块,沿所述行的像素间距在帧宏区块的情况下加倍。因此,假设在阵列5272和5274相同阵列位置的两个变换系数有关不同的频率。由此,如前述,使用不同扫描样式来在阵列5272和5274中的变换系数之间限定扫描顺序。其理由为,较低频变换系数较为可能为零。因此,使用不同的扫描顺序以根据其相关频率来“分类”变换系数。
图56示出了用于帧及字段宏区块的扫描样式的实例。在5274处,如图所示,从帧宏区块获得变换系数的二维阵列。在各阵列位置,写入0至15的编号,编号表示各个变换系数的扫描位置。箭头5276表示扫描样式。如图可知,用来限定与帧编码的宏区块相关的变换系数之间的扫描顺序的扫描样式5276以之字形扫描,所述之字形起始于阵列5274的一角而对角线前进至与起始角相对的直线设置的角。在图56中,假设阵列5274左上角具有扫描位置0的变换系数,表示在行和列方向上的DC分量;而与其相对的直线设置的具有扫描位置5015的变换系数表示在行和列方向上的最高频部分。
在图56的右手侧,如图所示,变换系数阵列5272的扫描样式与字段宏区块相关。再次,4X4变换系数阵列5272的各个阵列位置以其扫描位置编号标示。字段宏区块情况下的扫描样式以箭头5278表示。如图可知,字段编码宏区块的扫描样式5278与帧编码宏区块的扫描样式5276不同。两个扫描样式5276和5278限定了变换系数0至15之间的扫描顺序。
返回参照图55,预编码器5012在步骤5280前进,将阵列5272和5274的变换系数预编码成变换数据单元序列5282的5284。将相对于图57更加详细地描述该步骤,示出了具有四列的表。在第一列中,列出了从0至8的扫描位置。在第二列中,对于扫描位置0至8给出了可能的变换系数位准的实例。假设在大于8的扫描位置的变换系数位准全部都为0。
现在,当执行预编码5280时,预编码器5012以始于扫描位置0的扫描顺序通过变换系数,且对各个变换系数执行下列步骤:
1.如果变换系数不为零,即变换系数为有效,预编码器5012将此扫描位置的significant_coeff_flag设定为1。否则预编码器5012将significant_coeff_flag设定为0。如图可知,在扫描位置0处的第一变换系数位准为9,使得如图57第三列可知,该扫描位置的significant_coeff_flag为1。
2.对于有效的变换系数,证实该变换系数是否为扫描顺序中变换系数间的最后的有效变换系数。如果情况如此,则当前扫描位置的last_significant_coeff_flag经形成且设定为1。否则,当前扫描位置的last_significant_coeff_flag设定为0。从在图57的最后一列可以看出,本实例中,最后一个有效的变换系数位准为在扫描位置8的变换系数。因此,对于该变换系数的last_significant_coeff_flag被设定为1,而对于在扫描位置0、2、3及6的其它有效变换系数的last_significant_coeff_flag被设定为0。
3.对于全部有效变换系数,预编码器5012形成指定这些变换系数的语法元素。
简言之,则预编码器5012对于从第一扫描位置至最后有效变换系数的扫描位置的每个变换系数产生,如果各个变换系数为不是有效的,由significant_coeff_flag组成的变换数据单元,以及在变换系数为有效的情况下,由significant_coeff_flag、last_significant_coeff_flag和指定各个变换系数的值的数据所组成的变换数据单元。这样获得的全部语法元素significant_coeff_flag和last_significant_coeff_flag形成指示有变换系数的扫描位置为有效的扫描位置的有效映射表。
预编码器5012将序列5282和5284结合进语法元素的线性串流,即,预编码视频信号5286。语法元素的顺序如下:
一般而言,首先,传输与有效映射表对应的语法元素,随后,为表示以逆扫描顺序的有效变换系数的数值。具体地,序列5282和5284的第一语法元素为扫描位置0的significant_coeff_flag。如果扫描位置0的变换系数为有效,则扫描位置0的significant_coeff_flag由该扫描位置的last_significant_coeff_flag跟随。其后,传输后续扫描位置,即,扫描位置01的significant_coeff_flag等。已经传输具有非零变换系数的最后的扫描位置的last_significant_coeff_flag之后,非零变换系数的非二元值以逆扫描顺序传输。在图57的实例中,在语法元素串流286中的语法元素为(始于第一语法元素):1、0、0、1、0、1、0、0、0、1、0、0、1、1、1、-1、-3、-5、9。
另三个语法元素5286被馈至熵编码器5014,其逐一元素处理语法元素。以下的描述现在集中在significant_coeff_flag和last_significant_coeff_flag的处理。当这样的标识到达熵编码器5014时,基于后述扫描样式而在步骤5288中选择两个上下文模型集合5290和5292中的一个,该扫描样式被用来将二维变换系数矩阵映射至当前语法元素last_significant_coeff_flag或significant_coeff_flag所属的序列变换数据单元。为了执行步骤5288,熵编码器5014检查当前语法元素所属的前述当前宏区块的mb_field_decoding_flag,该标识指示当前宏区块是否以字段模式编码,在这种情况下使用扫描样式5278,或当前宏区块是否以帧模式编码,在这种情况下使用扫描样式5276。
在接下来的步骤中,熵编码器5014基于其扫描位置而将上下文模型集合5290和5292中的所选的一个的一个上下文模型分配给将被编码的当前语法元素。由此,例如属于序列5282扫描位置2的语法元素significant_coeff_flag结果导致上下文模型集合5290的上下文模型,该上下文模型与分配给序列5284扫描位置2的语法元素significant_coeff_flag的上下文模型不同。这解释了由于用来限定序列5282和5284的扫描位置的扫描样式不同,故在这些扫描位置处用于语法元素significant_coeff_flag的概率分布不同。
最后,在步骤5296中,当前语法元素使用从所选上下文模型集合分配的上下文模型进行二元熵编码。其如在前述实施方式中所执行的,即,通过使用所选上下文的概率估计值来选择各个部分位串流。
在下文中,相对于图58,更加详细地描述由来自图55的熵编码器5014执行的步骤5288、5294和5296。
图58中所示的处理始于语法元素到达上下文建模器5112的输入端的时间。在第一步5300中,上下文建模器5112确定输入的语法元素或仓是否为last_significant_coeff_flag。如果否,则上下文建模器5112在步骤5302中确定输入的语法元素或仓是否为significant_coeff_flag。如果情况不是如此,则上下文建模器5112在步骤5304中切换成另一个语法元素处理程序或子例程。如果当前语法元素为last_significant_coeff_flag,则在步骤5306中检查该标识是否属帧编码宏区块或字段编码宏区块。步骤5306等于检查是否last_significant_coeff_flag所属的变换系数的扫描位置通过扫描样式5276或扫描样式5278确定。如果在步骤5302判定语法元素为significant_coeff_flag,则在步骤5308执行同样的检查。步骤5300、5302、5306和5308将语法元素可能到达的场景限在五种可能情况。当当前语法元素既非last_significant_coeff_flag也非significant_coeff_flag时,第一种情况已经被提及并存在。在这种情况下,在步骤5304中进行另一个语法元素处理。在第二种情况下,该语法元素为属于字段编码宏区块的last_significant_coeff_flag,在这种情况下,在步骤5310中,上下文指数偏位值被设定为值offset1。在第三种情况下,当前语法元素为属于帧编码宏区块的last_significant_coeff_flag,其中,在步骤5312中,上下文指数ctxIdxOffset被设定为offset2。同理,在第四种和第五种情况下,语法元素为属于字段编码或帧编码宏区块的significant_coeff_flag,其中,在步骤5340中,上下文指数ctxIdx Offset被设定为offset3,而在步骤5316中被设定为offset4。指数ctxIdx偏位值用来指向上下文模型的共用列表。Offset1值至offset4值彼此不同。
在步骤5310至5316之后,在步骤5318中,指数递增器ctxIdxInc(上下文指数递增器)被设定为等于语法元素,即,last_significant_coeff_flag或significant_coeff_flag所属的扫描位置(scanningPos)。随后,在步骤5320中,上下文指数通过上下文指数偏位值ctxIdx Offset与指数递增器ctxIdxInc之和确定。步骤5300至5320通过上下文建模器5112执行。步骤5320的结果为上下文指数ctxIdx,指示用于语法元素的两个或多个的概率模型。
在ctxIdx的确定之后,上下文建模器5112将变量ctxIdx或由ctxIdx检索的概率估算状态连同语法元素本身,即,连同last_significant_coeff_flag或significant_coeff_flag传输至常规编码引擎118,如前文摘述该引擎根据前述实施方式中的任一者配置。基于这些输入,在步骤5322中,常规编码引擎5118通过使用如ctxIdx检索的上下文模型的当前概率状态,而将语法元素熵编码成位串流5124。
其后,常规编码引擎5118将仓值last_significant_coeff_flag或significant_coeff_flag分别经由路径117而传输回上下文建模器5112,其中,在步骤5324中,上下文建模器5112相对于其概率估算状态而调适由ctxIdx所检索的上下文模型。其后,在输出端5124将last_significant_coeff_flag或significant_coeff_flag编码成位串流的处理在5326处结束。
从以上可以清楚地看出,步骤5300至5316属于图55的步骤5288,而步骤5318和5320属于步骤5294,步骤5322和5324属于步骤5296。
在更详细地说明实际解码处理之前,相对于示出了用于在熵解码器5400中所执行的剖析处理的伪C代码的图59示出了剖析处理。图59中所示的语法剖析处理适用来剖析有效位映射表连同其对应的宏区块系数值,但先决要件为有效位映射表和系数值系以相对于图57所说明的方式编码,即,在扫描顺序之后而在有效变换系数的系数值前方的有效位映射表以逆扫描顺序排序。
在图59中,以粗体字所写的变量读取自到达熵解码器5400的熵编码位串流。为了读取,使用二元熵解码。在图60中对于仓significant_coeff_flag和last_significant_coeff_flag更加详细地示出了读取处理。语法剖析处理被称作residual_block_CABAC,从图59的伪C代码的行1可以看出。所述处理residual_block_CABAC的输出为一维阵列coeffLevel,指示对于类似图57所示各个扫描位置的变换系数位准。作为输入,所述处理residual_block_CABAC接收变量maxNumCoeff,其指示宏区块中的系数的最大数目,在我们的情况下为16。
然后,处理始于行2,读取称作coded_block_flag的标识,所述标识指示在当前区块中全部变换系数位准是否为零。在这种情况下,coded_block_flag为零,否则coded_block_flag为1。在下文中,假设coded_block_flag为1,故至少一个变换系数位准不为零。因此,在行4中,变量NumCoeff被设定为maxNumCoeff。因此表示下文中当读取条件循环并无last_significant_coeff_flag等于1时,最后的有效变换系数的扫描位置等于系数maxNumCoeff的最大数目。在行5中,计数器i被初始化为零。在始于行6的随后条件循环中,首先,一个仓被读取且被输入至significant_coeff_flag。相对于图59,significant_coeff_flag为一维阵列。在行7中的读取的仓被输入阵列significant_coeff_flag的位置i,即,significant_coeff_flag[i]。如果significant_coeff_flag[i]为1(行8),即,在扫描位置i的系数为有效,则从位串流读取下个仓,即last_significant_coeff_flag[i]。如果last_significant_coeff_flag[i]为1(行10),即,在扫描位置i的变换系数为扫描顺序中的最后的有效变换系数,则变量NumCoeff在行11中被设定为i+1,及也属一维阵列的coeffLevel在大于或等于i+1的全部位置被设定为零(行12和13)。这表示,超过扫描位置,于该处last_significant_coeff_flag为1,全部后续扫描位置的变换系数都为零。
在两个条件子句(行14和15)之后,在行16中的计数器i递增。结束时,在行17中,证实计数器i是否大于或等于NumCoeff-1。如果情况如此,则条件循环再重复一次。因此,在行5至17中,从位串流读取有效位映射表。随后在行18处,读取第一有效变换系数位准减1,即coeff_ups_level_minus1,接着读取符号标识coeff_sign_flag。具体地,在行18和19中读取的语法元素coeff_abs_level_ups_minus1及coeff_sign_flag涉及扫描顺序中的最后的有效变换系数。该变换系数的实际值在行20中被计算。然后,在从行21至28的循环中,通过使用在行4至17中接收的有效位映射表,其余有效变换系数被读取自位串流。循环的计数器i被初始化为NumCoeff-2,即紧接在最后的有效变换系数的扫描位置前方的扫描位置。在各次循环变迁后,该计数器递减。如果significant_coeff_flag[i]为1(行22),则在扫描位置i的变换系数的系数位准在行23至25中被测定,这些行实际上与行18至20相同。如果significant_coeff_flag[i]为0(行26),则在行27中,扫描位置的系数位准被设定为0。
图60现在示出了每次仓被解码时,通过熵解码器400执行的解码处理。哪一个仓将被解码取决于熵解码器5400当前预期的语法元素。关于有效位映射表及对应的非零变换系数位准,该知识来自图59的语法剖析处理。
在解码处理中,首先,在步骤5500中,解码器5400检查下一个将被解码的仓是否为last_significant_coeff_flag。如果为否,则在步骤5502中检查下一个将被解码的仓是否为significant_coeff_flag。下一个将被解码的仓为significant_coeff_flag。如果下一个将被解码的仓为last_significant_coeff_flag或significant_coeff_flag,则解码器5400分别在步骤5504或5506检查标识是否属于帧编码或字段编码宏区块。如果下一个将被解码的仓不属于last_significant_coeff_flag及significant_coeff_flag中的任一个,则解码器400在步骤504前进至另一语法元素处理。步骤5500、5502、5506及5508的检查分别对应于图58的编码处理的步骤5300、5302、5306及5308,据此,取决于下一个将被解码的仓为last_significant_coeff_flag或significant_coeff_flag及对应的宏区块为帧编码或字段编码,分别在步骤5510、5512、5514及5516中的一个,offset1、offset2、offset3和offset4的ctxIdxOffset被设定为1。据此,ctxIdxInc和ctxIdx在步骤5518和5520中以图8的步骤318和320的编码程序相同的方式而被确定,来确定将被用在随后的熵解码中的上下文模型。
然后,在步骤5522中,熵解码器5400通过使用如在步骤5510至5520所得的通过ctxIdx检索的上下文模块的实际概率状态,而从熵编码位串流解码实际仓,即last_significant_coeff_flag或significant_coeff_flag。即,各个部分位串流基于概率指数及从其中恢复的仓而被选择。该步骤结果为实际仓值。随后,在步骤5524中,如同步骤5224的情况,ctxIdx被调适或更新。其后,处理在步骤5526处结束。
尽管在前述解码处理中,步骤5527,即mb_field_decoding_flag的解码似乎在各个仓的解码之后发生,但实际上并非如此。实际上,该步骤至多仅对于一个对宏区块对发生。
根据相应说明或权利要求,以上说明及以下权利要求也应当理解为包括方法,所述方法包括在编码器或解码器的操作期间执行的步骤。
虽然已经就装置的上下文描述了若干方面,但显然这些方面也表示对应的方法的描述,其中,方块或装置是与方法步骤或方法步骤的特征对应的。同理,在方法步骤的上下文中描述的方面也表示对应的方块或对应的装置的项目或特征结构的描述。部分或全部方法步骤可通过(或使用)硬件装置执行,类似例如微处理器、可规划计算机或电子电路。在若干实施方式中,最重要方法步骤中的某一者或多者可通过这种装置执行。
发明的编码/压缩的信号可存储于数字存储介质上或可在诸如无线传输介质或有线传输介质(诸如因特网)的传输介质上进行传输。
根据某些实现要求,本发明实施方式可以硬件或以软件实现。可使用数字存储介质进行实施,所述数字存储介质例如为软盘、DVD、蓝光、CD、ROM、PROM、EPROM、EEPROM或快闪存储器,其上存储电子可读控制信号,所述电子可读控制信号与可编程计算机***协作(或可协作),使得执行相应方法。因此,数字存储介质可为计算机可读。
根据本发明的一些实施方式包括数据载体,具有电子可读控制信号,所述电子可读控制信号可与可编程计算机***协作,使得执行本文中所述的方法之一。
一般地,本发明实施方式可实现为具有程序代码的计算机程序产品,当所述计算机程序产品在计算机上运行时,所述程序代码***作用于执行所述方法之一。程序代码可例如存储于机器可读载体上。
其它实施方式包括所述计算机程序,用于执行本文中所述的方法之一,所述计算机程序存储于机器可读载体上。
换言之,发明的方法的实施方式因此为具有程序代码的计算机程序,当计算机程序在计算机上运行时,用于执行本文中所述的方法之一。
发明的方法的又一实施方式因此为数据载体(或数字存储介质或计算机可读介质),所述数据载体包括记录于其上的计算机程序,用于执行本文中所述的方法之一。
发明的方法的又一实施方式因此为表示用于执行本文中所述的方法之一的计算机程序的数据流或信号序列。数据流或信号序列可例如被配置为经由数据通信连接(例如,经由因特网)进行传输。
又一实施方式包括处理装置,例如计算机或可编程逻辑器件,被配置为或适于执行本文中所述的方法之一。
又一实施方式包括计算机,具有安装于其上的用于执行本文中所述的方法之一的计算机程序。
在一些实施方式中,可编程逻辑器件(例如,现场可编程门阵列)可用于执行本文中所述的方法的功能的一些或全部。在一些实施方式中,现场可编程门阵列可与微处理器协作,以执行本文中所述的方法之一。一般地,所述方法优选通过任何硬件装置来执行。
上述实施方式仅说明本发明原理。应当理解,本文中所述的设置和细节的修改及变动对于本领域技术人员应当显而易见。因此,意图在于仅由所附专利权利要求的范围来限定而不是由通过本文中实施方式的描述和说明而呈现的特定细节来限定。

Claims (40)

1.一种用来对符号序列进行编码的编码器,所述编码器包括
分配器(4),被配置为基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;
多个熵编码器(10),每个熵编码器被配置为将转发至相应熵编码器的符号(7)转换为相应位串流(47);以及
选择器(6),被配置为将每个符号转发至所述多个熵编码器中的选择的熵编码器,所述选择取决于分配给相应符号的参数数目,
其中,每个熵编码器为可变长度编码器,被配置为将符号序列映射至比相应最大位长Lx更短或与相应最大位长Lx一样长的代码字,
其中,对于每个熵编码器(10),所述编码器包括用来缓冲相应熵编码器的相应位串流(47)的单独缓冲器(48)和通用缓冲器(51),其中,所述通用缓冲器(51)被配置为根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留相应位长Nx的份额条目序列;
其中,在由选择器(6)转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,所述多个熵编码器及相应单独缓冲器协作触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留(49),设定在相应时间处,在通用缓冲器(51)中为相应熵编码器当前保留的位数减去在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx不足以容纳相应熵编码器的另外代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx,
其中,所述多个熵编码器的单独缓冲器被配置为输出位串流(47)的缓冲部分以填充通用缓冲器(51)中的相应保留份额条目,并且所述通用缓冲器被配置为按顺序去除所述份额条目中被填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流(52)。
2.根据权利要求1所述的编码器,其中,所述分配器被配置为使得分配给每个符号的参数数目包含或者为所述各个符号可取得的可能值中的概率分布的估计值的测量值。
3.根据权利要求2所述的编码器,其中,所述符号序列为二元字母表,且所述分配器被配置为使得所述概率分布的估计值由较低概率或较高概率仓值的概率估计值的测量值和指定两个可能仓值中哪一个表示表示较低概率仓值或较高概率仓值的估计值的识别符组成。
4.根据权利要求2或3所述的编码器,其中,所述分配器被配置为基于所述符号序列的先前符号内所包含的信息而将上下文分配给所述符号序列的每个符号,每个上下文具有与其相关联的各概率分布估计值,并且所述分配器被配置为基于各上下文被分配至的先前符号的符号值而将每个上下文的概率分布估计值调适至实际符号统计值,且所述分配器被配置为基于与分配给各符号的上下文相关联的概率分布估计值来确定对于每个符号的所述概率分布估计值的测量值。
5.根据权利要求4所述的编码器,其中,所述分配器被配置为在确定每个符号的所述概率分布估计值的测量值中,将与分配给所述各个符号的所述上下文相关联的概率分布估计值量化为多个概率分布估计值表示中的一个,以获得所述概率分布估计值的测量值,以及其中,所述选择器被配置为使得在所述多个熵编码器与所述多个概率分布估计值表示之间定义双射关联性。
6.根据权利要求5所述的编码器,其中,所述选择器被配置为随着时间根据所述符号序列的先前符号以预定的确定性方式改变从一定范围的所述概率分布估计值至所述多个概率分布估计值表示的量化映射。
7.根据权利要求6所述的编码器,其中,所述多个熵编码器被配置为调适其响应于量化映射的改变而将符号转换为位串流的方式。
8.根据权利要求5或6所述的编码器,其中,所述选择器被配置为改变所述量化映射使得所述熵编码器将符号转换而成的位串流的位率呈现较少分散。
9.根据前述任一项权利要求所述的编码器,其中,所述多个熵编码器的至少一个具有与其相关联的符号输入缓冲器,其中,所述选择器被配置为经由所述相关联的符号输入缓冲器将所述符号转发至所述至少一个熵编码器。
10.根据前述权利要求1至9中任一项所述的编码器,其中,所述通用缓冲器被配置为当通过所述多个熵编码器中任一个及相应单独缓冲器触发相应保留时执行以份额条目为单位从最近保留、已经填充的份额条目按顺序去除份额条目中的被填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止。
11.根据前述权利要求1至10中任一项所述的编码器,其中,
所述单独缓冲器被配置为输出位串流的缓冲部分以便以份额条目为单位填充通用缓冲器中的相应保留份额条目;
所述通用缓冲器被配置为当通过所述多个熵编码器中任一个及相应单独缓冲器来触发相应保留时,
完成从最近保留、已经填充的份额条目按顺序去除份额条目中的被填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止,然后
检查所述通用缓冲器中由保留份额条目覆盖的位数加上相应保留触发熵编码器的位长Nx是否大于最大缓冲器延迟D,并且
若不是,
保留所述相应保留触发熵编码器的位长Nx的相应新份额条目,但是
若是,
使最近保留、尚未填充的份额条目被保留的熵编码器通过选择器将转发至其的尚未被熵编码的符号,如果有的话,扩展至有效符号序列,并且将所述有效符号序列映射至代码字,以便通过所述对应单独缓冲器进行缓冲,并且然后
检查当前缓冲在最近保留、尚未填充的份额条目被保留的所述熵编码器的所述单独缓冲器中的位数Mx是否小于该熵编码器的位长Nx,若是,增补Nx-Mx个位至当前缓冲的Mx个位,并且然后
从最近保留、尚未填充的份额条目被保留的所述熵编码器的所述单独缓冲器中输出Nx个缓冲位到最近保留、尚未填充的份额条目中,以填充所述最近保留、尚未填充的份额条目,在单独缓冲器中剩下除输出的Nx个缓冲位外可能另外缓冲的位。
12.根据前述权利要求中任一项所述的编码器,其中,所述编码器还包括分段器,所述分段器被配置为将单个份额串流分段成块,每个块伴随有所述多个熵编码器的份额如何分布于相应块上的信息,以获得块序列。
13.根据前述权利要求中任一项所述的编码器,其中,所述多个熵编码器和所述通用缓冲器被配置为通过具有当前已转发的但尚未映射的符号作为前缀的随意符号将当前已转发的但尚未映射的符号间歇地扩展至有效符号序列,将如此经扩展的符号序列映射至代码字,将如此所得的代码字***保留的份额条目并刷新所述份额条目。
14.根据前述权利要求中任一项所述的编码器,其中,所述多个熵编码器和所述通用缓冲器被配置为在保留的份额条目的数目加上具有***在其中的代码字的份额条目的数目满足预定标准的情况下,执行间歇地扩展、***和刷新。
15.一种用于对符号序列进行编码的方法,包括:
基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;以及
将每个符号转发至多个熵编码器中的选择的熵编码器,所述选择取决于分配给相应符号的参数数目,并且所述多个熵编码器的每个被配置为将转发至相应熵编码器的符号转换为相应位串流,其中每个熵编码器为可变长度编码器,被配置为将符号序列映射至比相应最大位长Lx更短或与相应最大位长Lx一样长的代码字,
其中,所述方法还包括:
对于每个熵编码器,将相应熵编码器的相应位串流缓冲在相应单独缓冲器中,
在通用缓冲器中根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留相应位长Nx的份额条目序列;
在由选择器转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留,设定在相应时间处,在通用缓冲器中为相应熵编码器当前保留的位数减去在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx不足以容纳相应熵编码器的另外代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx,
从代码字缓冲器输出位串流的缓冲部分以填充所述通用缓冲器中的相应保留份额条目,并且
按顺序去除所述份额条目中所填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流。
16.一种用来重建符号序列的解码器,所述解码器包括:
多个熵解码器(22),每个熵解码器被配置为将相应位串流(57)转换为符号(21);
分配器(16),被配置为基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列(25)的每个符号;及
选择器(18),被配置为从所述多个熵解码器(22)中的选择的熵解码器检索所述将被重建的符号序列(25)的每个符号,所述选择取决于对所述相应符号所限定的参数数目,
其中,每个熵解码器(22)为可变长度解码器,被配置为将比相应最大位长Lx更短或与相应最大位长Lx一样长的代码字映射至符号序列,
其中,所述解码器还包括通用缓冲器(61),被配置为接收以交插方式散布在单个份额串流(62)中的所述多个位串流的位串流(60)的单个份额串流(62)中,其中,所述通用缓冲器(61)被配置为根据份额请求发生的顺序顺序地将所述份额从所述通用缓冲器分发到所述多个熵解码器,
其中,所述多个熵解码器(22)的每一个被配置为在由选择器(18)从所述多个熵解码器检索的所述将被重建的符号序列(25)的符号中,遇到形成新符号序列开始在相应位串流(57)内通过相应熵解码器从新代码字映射的符号时,从所述通用缓冲器触发相应位串流的相应位长Nx的相应份额请求(56,59),设定在相应时间处,已经通过通用缓冲器(61)分发给相应熵解码器但至今尚未通过熵解码器进行熵解码的包括新代码字的相应位串流(57)的位数Mx小于相应熵解码器的另外的代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx。
17.根据权利要求16所述的解码器,其中,所述解码器被配置为
对于每个熵解码器,记录从所述通用缓冲器分发到所述多个熵解码器的位数,直到从所述通用缓冲器分发到相应熵解码器的最近分发份额的分发为止,
每当相应位长Nx的份额的相应请求被触发时,确定一方面从所述通用缓冲器分发到所述多个熵解码器的直到相应请求为止的通用位数与另一方面最小记录的位数之差是否大于最大缓冲器延迟D,若是,
通过选择器舍弃从所述通用缓冲器分发到最小记录数目已经被记录的熵解码器的最近分发份额,以及尚未从最小记录数目已经被记录的熵解码器中检索的任何符号。
17.根据权利要求15或16所述的解码器,所述解码器还包括去分段器,所述去分段器被配置为将单个份额串流从块序列去分段,其中,每个块伴随有所述多个熵解码器的份额如何分布于相应块上的信息。
18.根据权利要求15至17中任一项所述的解码器,其中,所述分配器被配置为使得分配给每个符号的参数数目包含或为所述各个符号可取得的可能符号值中的概率分布的估计值的测量值。
19.根据权利要求18所述的解码器,其中,所述将被重建的符号序列为二元字母表,及所述分配器被配置为使得所述概率分布的估计值由所述二元字母表的两个可能仓值的较低概率或较高概率仓值的概率估计值的测量值和指定两个可能仓值中哪一个表示表示较低概率仓值或较高概率仓值的估计值的识别符组成。
20.根据权利要求18或19所述的解码器,其中,所述分配器被配置为基于将被重建的符号序列的先前已重建的符号内所包含的信息来内部地将上下文分配给将被重建的所述符号序列的每个符号,每个上下文具有与其相关联的各概率分布估计值,及所述分配器被配置为基于所述各上下文被分配至的先前已重建的符号的符号值来将每个上下文的概率分布估计值调适至实际符号统计值,及所述分配器被配置为基于与分配给所述各符号的上下文相关联的所述概率分布估计值来确定对于每个符号的所述概率分布估计值的所述测量值。
21.根据权利要求20所述的解码器,其中,所述分配器被配置为在确定对于每个符号的所述概率分布估计值的测量值时,将与分配给所述各个符号的上下文相关联的所述概率分布估计值量化为多个概率分布估计值表示中的一个,以获得所述概率分布估计值的测量值,以及其中,所述选择器被配置为使得在所述多个熵编码器与所述多个概率分布估计值表示之间定义双射关联性。
22.根据权利要求21所述的解码器,其中,所述选择器被配置为随着时间根据所述符号序列的先前重建的符号以预定的确定性方式改变从一定范围的所述概率分布估计值至所述多个概率分布估计值表示的量化映射。
23.根据权利要求22所述的解码器,其中,所述多个熵解码器被配置为调适它们的响应于所述量化映射的改变而将符号转换为位串流的方式。
24.根据权利要求22或23所述的解码器,其中,所述选择器被配置为改变所述量化映射使得从所述多个熵解码器恢复所述符号的速率为较少分散。
25.根据权利要求15至24中任一项所述的解码器,其中,至少一个熵解码器具有与其相关联的符号输出缓冲器,其中,所述选择器被配置为经由所述相关联的符号输出缓冲器从所述至少一个熵解码器恢复所述符号。
26.根据权利要求15至25中任一项所述的解码器,其中,所述多个熵解码器及所述选择器被配置为间歇地舍弃符号序列的后缀,以便不参与形成将被重建的符号序列。
27.根据权利要求16所述的解码器,其中,所述多个熵解码器和所述选择器被配置为在各个熵解码器的从份额条目的两次连续的代码字恢复之间的已经通过所述多个熵解码器从所述份额条目恢复的代码字的数量满足预定标准的情况下,执行所述间歇地舍弃。
28.一种用于重建符号序列的方法,包括:
基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列的每个符号;以及
从多个熵解码器中的选择的熵解码器检索将被重建的符号序列的每个符号,所述选择取决于对相应符号所限定的参数数目,并且所述多个熵解码器的每一个被配置为将相应位串流转换为符号,其中每个熵解码器为可变长度解码器,被配置为将比相应最大位长Lx更短或与相应最大位长Lx一样长的代码字映射至符号序列,
其中,所述方法还包括:
接收在通用缓冲器中以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
根据份额请求发生的顺序顺序地将份额从所述通用缓冲器分发到所述多个熵解码器,
对于所述多个熵解码器的每一个,在由选择器从所述多个熵解码器检索的所述将被重建的符号序列的符号中,遇到形成新符号序列开始在相应位串流内通过相应熵解码器从新代码字映射的符号时,从所述通用缓冲器触发相应位串流的相应位长Nx的相应份额请求,设定在相应时间处,已经通过所述通用缓冲器分发给相应熵解码器但至今尚未通过熵解码器进行熵解码的包括新代码字的相应位串流的位数Mx小于相应熵解码器的另外的代码字的预期最小数目Cx加1乘以相应最大位长Lx,即,(Cx+1)·Lx。
29.一种用来对符号序列进行编码的编码器,所述编码器包括
分配器,被配置为基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;
多个熵编码器,每个熵编码器被配置为将转发至相应熵编码器的符号转换为相应位串流;以及
选择器,被配置为将每个符号转发至所述多个熵编码器中的选择的熵编码器,所述选择取决于分配给相应符号的参数数目,
其中,每个熵编码器为可变长度编码器,被配置为将符号序列映射至代码字,
其中,对于每个熵编码器,所述编码器包括用来缓冲相应熵编码器的相应位串流的单独缓冲器和通用缓冲器,其中,所述通用缓冲器被配置为根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留份额条目序列;
其中,在由选择器转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,所述多个熵编码器及相应单独缓冲器协作触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留,设定在相应时间处,在通用缓冲器中为相应熵编码器当前保留的位数与在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx之差不满足预定标准,
其中,所述多个熵编码器的单独缓冲器被配置为输出位串流的缓冲部分以填充通用缓冲器中的相应保留份额条目,并且所述通用缓冲器被配置为按顺序去除所述份额条目中被填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
其中,
所述单独缓冲器被配置为输出位串流的缓冲部分以便以份额条目为单位填充通用缓冲器中的相应保留份额条目;
所述通用缓冲器被配置为当通过所述多个熵编码器中任一个及相应单独缓冲器触发相应保留时,
完成从最近保留、已经填充的份额条目按顺序去除份额条目中的被填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止,然后
检查所述通用缓冲器中由保留份额条目覆盖的位数加上相应保留触发熵编码器的所请求的份额条目的位长Nx是否大于最大缓冲器延迟D,并且
若不是,
保留相应保留触发熵编码器的位长Nx的相应新份额条目,但是
若是,
使最近保留、尚未填充的份额条目被保留的熵编码器将通过选择器转发至其的尚未被熵编码的符号,如果有的话,扩展至有效符号序列,并且将所述有效符号序列映射至代码字,以便通过所述对应单独缓冲器进行缓冲,并且然后
检查当前缓冲在最近保留、尚未填充的份额条目被保留的熵编码器的单独缓冲器中的位数Mx是否小于所述熵编码器的位长Nx,若是,增补Nx-Mx个位至当前缓冲的Mx个位,并且然后
从最近保留、尚未填充的份额条目被保留的熵编码器的单独缓冲器中输出Nx个缓冲位到最近保留、尚未填充的份额条目中,以填充所述最近保留、尚未填充的份额条目,在单独缓冲器中剩下除输出的Nx个缓冲位外可能另外缓冲的位。
30.根据权利要求29所述的编码器,其中,在所述多个熵编码器中,预定熵编码器被预期为更频繁地被选择的熵编码器,所述预定熵编码器被配置为仅支持1位长的代码字,其中,所述编码器被配置为如果相应保留触发熵编码器为预定熵编码器,那么检查所述通用缓冲器中由保留份额条目覆盖的位数加上预定熵编码器的请求份额条目的位长Nx是否大于预定义临界值D2<D,而不是检查所述通用缓冲器中由保留份额条目覆盖的位数加上所述预定熵编码器的请求份额条目的位长Nx是否大于最大缓冲器延迟D,
如果大于预定义临界值D2,
那么确定最近已经触发已保留但尚未完全填充的份额条目中的任一个份额条目的保留的熵编码器;
使所确定的熵编码器将通过选择器转发至其的尚未被熵编码的符号,如果有的话,扩展至有效符号序列,并且将所述有效符号序列映射至代码字,以便通过所确定的熵编码器的单独缓冲器进行缓冲;
将当前缓冲在所确定的熵编码器的所述单独缓冲器中的位移动至所述预定熵编码器的所述单独缓冲器;
改变从所确定的熵编码器到所述预定熵编码器的尚未完全填充的份额条目的保留。
31.一种用来重建符号序列的解码器,所述解码器包括:
多个熵解码器,每个熵解码器被配置为将相应位串流转换为符号;
分配器,被配置为基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列的每个符号;及
选择器,被配置为从所述多个熵解码器中的选择的熵解码器检索将所述被重建的符号序列的每个符号,所述选择取决于对相应符号所限定的参数数目,
其中,每个熵解码器为可变长度解码器,被配置为将代码字映射至符号序列,
其中,所述解码器还包括通用缓冲器,被配置为接收以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流中,其中,所述通用缓冲器被配置为根据份额请求发生的顺序顺序地将所述份额从所述通用缓冲器分发到所述多个熵解码器,
其中,所述多个熵解码器的每一个被配置为在由选择器从所述多个熵解码器检索的所述将被重建的符号序列的符号中,遇到形成新符号序列开始在相应位串流内通过相应熵解码器从新代码字映射的符号时,从所述通用缓冲器触发相应位串流的相应份额请求,设定在相应时间处,已经通过通用缓冲器分发给相应熵解码器但至今尚未通过熵解码器进行熵解码的新代码字的相应位串流的位数Mx小于预定数目,
其中,所述解码器被配置为
对于每个熵解码器,记录从所述通用缓冲器分发到所述多个熵解码器的位数,直到从所述通用缓冲器分发到相应熵解码器的最近分发份额的分发为止,
每当相应位长Nx的份额的相应请求被触发时,确定一方面从所述通用缓冲器分发到所述多个熵解码器的直到相应请求为止的通用位数与另一方面最小记录的位数之差是否大于最大缓冲器延迟D,若是,
通过所述选择器舍弃从所述通用缓冲器分发到最小记录数目已经被记录的熵解码器的最近分发份额,以及尚未从最小记录数目已经被记录的熵解码器中检索的任何符号。
32.根据权利要求31所述的解码器,其中,在所述多个熵解码器中,预定熵解码器被预期为更频繁地被选择的熵解码器,所述预定熵解码器被配置为仅支持1位长的代码字,其中,所述解码器被配置为如果相应请求来自于预定熵解码器,那么检查一方面从所述通用缓冲器分发到所述多个熵解码器的直到相应请求为止的通用位数与另一方面最小记录的位数之差是否大于预定义临界值D2<D,而不是确定一方面从所述通用缓冲器分发到所述多个熵解码器的直到相应请求为止的通用位数与另一方面最小记录的位数之差是否大于最大缓冲器延迟D,
如果大于预定义临界值D2,
通过所述选择器舍弃尚未从最小记录数目已经被记录的熵解码器检索的任何符号,并且
重新定向从所述通用缓冲器分发到最小记录数目已经被记录的熵解码器的份额的任何非解码部分,以便通所述过预定熵解码器进行解码。
33.一种用来对符号序列进行编码的编码器,所述编码器包括:
分配器,被配置为基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;
多个熵编码器,每个熵编码器被配置为将转发至相应熵编码器的符号转换为相应位串流;以及
选择器,被配置为将每个符号转发至所述多个熵编码器中的选择的熵编码器,所述选择取决于分配给相应符号的参数数目,
其中,每个熵编码器为可变长度编码器,被配置为将符号序列映射至代码字,
其中,对于每个熵编码器,所述编码器包括用来缓冲相应熵编码器的相应位串流的单独缓冲器及通用缓冲器,其中,所述通用缓冲器被配置为根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留份额条目序列;
其中,在由选择器转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,所述多个熵编码器及相应单独缓冲器协作触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留,设定在相应时间处,在通用缓冲器中为相应熵编码器当前保留的位数与在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx之差不满足预定标准,
其中,所述多个熵编码器的单独缓冲器被配置为输出位串流的缓冲部分以填充通用缓冲器中的相应保留份额条目,并且所述通用缓冲器被配置为按顺序去除所述份额条目中被填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
所述编码器还包括分段器,所述分段器被配置为将单个份额串流分段成块,每个块伴随有所述多个熵编码器的份额如何分布于相应块上的信息,以获得块序列。
34.根据权利要求33所述的编码器,其中,所述分段器被配置为,在将所述单个份额串流分段成块中,将在所述单个份额串流内相应块的份额的原始顺序置换为希望的顺序,所述希望的顺序由伴随所述相应块的信息表示。
35.一种用来重建符号序列的解码器,所述解码器包括:
多个熵解码器,每个熵解码器被配置为将相应位串流转换为符号;
分配器,被配置为基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列的每个符号;及
选择器,被配置为从所述多个熵解码器中的选择的熵解码器检索将被重建的符号序列的每个符号,所述选择取决于对于相应符号所限定的参数数目,
其中,每个熵解码器为可变长度解码器,被配置为将代码字映射至符号序列,
其中,所述解码器还包括
去分段器,所述去分段器被配置为将位串流份额从块序列去分段且分发给熵解码器,其中,每个块伴随有所述多个熵解码器的位串流份额如何分布于相应块上的信息。
36.一种用于对符号序列进行编码的方法,包括:
基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;
将每个符号转发至多个熵编码器中的选择熵编码器,所述选择取决于分配给相应符号的参数数目,并且所述多个熵编码器的每个被配置为将转发至相应熵编码器的符号转换为相应位串流,
其中,每个熵编码器为可变长度编码器,被配置为将符号序列映射至代码字,
对于每个熵编码器,将所述相应熵编码器的相应位串流缓冲在相应单独缓冲器中,以及
在通用缓冲器中根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留份额条目序列;
在由选择器转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留,设定在相应时间处,在通用缓冲器中为相应熵编码器当前保留的位数与在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx之差不满足预定标准,
从所述多个熵编码器的单独缓冲器输出位串流的缓冲部分以填充通用缓冲器中的相应保留份额条目,
按顺序从所述通用缓冲器去除所述份额条目中的被填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
其中
从单独缓冲器输出位串流的缓冲部分以便以份额条目为单位填充所述通用缓冲器中的相应保留份额条目;
在通过所述多个熵编码器中任一个及相应单独缓冲器来触发相应保留时,
完成从最近保留、已经填充的份额条目按顺序去除份额条目中的被填充的份额条目,若有,特定地包括到最近保留、但尚未填充的份额条目为止,然后
检查所述通用缓冲器中由保留份额条目覆盖的位数加上相应保留触发熵编码器的所请求的份额条目的位长Nx是否大于最大缓冲器延迟D,并且
若不是,
保留相应保留触发熵编码器的位长Nx的相应新份额条目,但是
若是,
使最近保留、尚未填充的份额条目被保留的熵编码器将通过选择器转发至其的尚未被熵编码的符号,如果有的话,扩展至有效符号序列,并且将所述有效符号序列映射至代码字,以便通过所述对应单独缓冲器进行缓冲,并且然后
检查当前缓冲在最近保留、尚未填充的份额条目被保留的熵编码器的单独缓冲器中的位数Mx是否小于所述熵编码器的位长Nx,若是,增补Nx-Mx个位至当前缓冲的Mx个位,并且然后
从最近保留、尚未填充的份额条目被保留的熵编码器的单独缓冲器中输出Nx个缓冲位到最近保留、尚未填充的份额条目中,以填充所述最近保留、尚未填充的份额条目,在单独缓冲器中剩下除输出的Nx个缓冲位外可能另外缓冲的位。
37.一种使用多个熵解码器来重建符号序列的方法,每个熵解码器被配置为将相应位串流转换为符号,所述方法包括以下步骤:
基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列的每个符号;以及
从所述多个熵编码器中的选择的熵编码器检索所述符号序列的每个符号,所述选择取决于对于相应符号所限定的参数数目,
其中,每个熵解码器为可变长度解码器,被配置为将代码字映射至符号序列,
其中,所述方法还包括:
接收在通用缓冲器中以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
根据份额请求发生的顺序顺序地将份额从所述通用缓冲器分发到所述多个熵解码器,
对于所述多个熵解码器的每一个中,在由选择器从所述多个熵解码器检索的所述将被重建的符号序列的符号中,遇到形成新符号序列开始在相应位串流内通过相应熵解码器从新代码字映射的符号时,从所述通用缓冲器触发相应位串流的相应份额请求,设定在相应时间处,已经通过通用缓冲器分发给相应熵解码器但至今尚未通过熵解码器进行熵解码的包括新代码字的相应位串流的位数Mx小于预定数目,
其中,所述方法还包括:
对于每个熵解码器,记录从所述通用缓冲器分发到所述多个熵解码器的位数,直到从所述通用缓冲器分发到相应熵解码器的最近分发份额的分发为止,
每当相应位长Nx的份额的相应请求被触发时,确定一方面从所述通用缓冲器分发到所述多个熵解码器的直到相应请求为止的通用位数与另一方面最小记录的位数之差是否大于最大缓冲器延迟D,并且若是,
通过选择器舍弃从所述通用缓冲器分发到最小记录数目已经被记录的熵解码器的最近分发份额,以及尚未从最小记录数目已经被记录的熵解码器中检索的任何符号。
38.一种用于对符号序列进行编码的方法,所述方法包括以下步骤:
基于所述符号序列的先前符号内所包含的信息将多个参数分配给所述符号序列的每个符号;
将每个符号转发至多个熵编码器中的选择的熵编码器,所述选择取决于分配给相应符号的参数数目,其中,所述多个熵编码器的每个被配置为将转发至相应熵编码器的符号转换为相应位串流;
其中,每个熵编码器为可变长度编码器,被配置为将符号序列映射至代码字,
其中,所述方法包括:
对于每个熵编码器,将相应熵编码器的相应位串流缓冲在单独缓冲器中,并且
在通用缓冲器中根据所述多个熵编码器的份额条目的保留被触发的顺序按顺序为所述多个熵编码器保留份额条目序列;
在由选择器转发至所述多个熵编码器的符号序列的符号导致新符号序列开始映射至相应熵编码器处的代码字时,触发所述熵编码器中相应熵编码器的位长Nx的份额条目的保留,设定在相应时间处,在通用缓冲器中为相应熵编码器当前保留的位数与在相应熵编码器的单独缓冲器或通用缓冲器中为相应熵编码器当前缓冲的位数Mx之差不满足预定标准,
从所述多个熵编码器的单独缓冲器输出位串流的缓冲部分以填充通用缓冲器中的相应保留份额条目,其中,通过按顺序从所述通用缓冲器去除所述份额条目中所填充的份额条目以获得以交插方式散布在单个份额串流中的所述多个位串流的位串流的单个份额串流,
所述方法还包括:
将单个份额串流分段成块,每个块伴随有所述多个熵编码器的份额如何分布于相应块上的信息,以获得块序列。
39.一种通过多个熵解码器来重建符号序列的方法,每个熵解码器被配置为将相应位串流转换为符号,所述方法包括以下步骤:
基于所述符号序列的先前重建符号内所包含的信息将多个参数分配给将被重建的符号序列的每个符号;以及
从所述多个熵解码器中的选择的熵解码器检索将被重建的符号序列的每个符号,所述选择取决于对于相应符号所限定的参数数目,
其中,每个熵解码器为可变长度解码器,被配置为将代码字映射至符号序列,
其中,所述方法还包括:
将位串流份额从块序列去分段且分发给所述熵解码器,其中,每个块伴随有所述多个熵解码器的位串流份额如何分布于相应块上的信息。
40.一种计算机可读数字存储介质,具有存储在其上的计算机程序,所述计算机程序具有程序代码,当所述程序代码在计算机上运行时,用于执行根据权利要求15、28、36、37、38或39所述的方法。
CN201280060042.3A 2011-10-06 2012-10-08 熵编码缓冲器配置 Active CN104081772B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161543942P 2011-10-06 2011-10-06
US61/543,942 2011-10-06
PCT/EP2012/069894 WO2013050612A1 (en) 2011-10-06 2012-10-08 Entropy coding buffer arrangement

Publications (2)

Publication Number Publication Date
CN104081772A true CN104081772A (zh) 2014-10-01
CN104081772B CN104081772B (zh) 2018-04-10

Family

ID=47010591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280060042.3A Active CN104081772B (zh) 2011-10-06 2012-10-08 熵编码缓冲器配置

Country Status (5)

Country Link
US (1) US8947273B2 (zh)
EP (1) EP2764692B1 (zh)
JP (1) JP6130839B2 (zh)
CN (1) CN104081772B (zh)
WO (1) WO2013050612A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106941610A (zh) * 2017-04-25 2017-07-11 西安电子科技大学 基于改进方块编码的二值roi掩模编码方法
CN107040780A (zh) * 2015-12-28 2017-08-11 联发科技股份有限公司 在图像压缩中的熵编码的方法与装置
CN110121577A (zh) * 2016-10-11 2019-08-13 基因组***公司 使用参考序列表示和处理生物信息数据的方法和***
US20210359701A1 (en) * 2020-03-30 2021-11-18 Imagination Technologies Limited Efficient Encoding Methods
WO2022179588A1 (zh) * 2021-02-27 2022-09-01 华为技术有限公司 一种数据编码方法以及相关设备
CN116779114A (zh) * 2023-08-24 2023-09-19 邹城市人民医院 一种抗肿瘤医疗mri图像信息智能管理***

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX337446B (es) 2011-09-29 2016-03-07 Sharp Kk Dispositivo de decodificacion de imagenes, metodo de decodificacion de imagenes y dispositivo de codificacion de imagenes.
BR112014007494B1 (pt) 2011-09-29 2022-05-31 Sharp Kabushiki Kaisha Dispositivo de decodificação de imagem, método de decodificação de imagem, e dispositivo de codificação de imagem
MX346677B (es) * 2011-11-04 2017-03-29 Sharp Kk * Dispositivo de decodificacion aritmetica, dispositivo de decodificacion de imagenes, dispositivo de codificacion aritmetica, dispositivo de codificacion de imagenes y metodo de decodificacion aritmetica.
KR101477621B1 (ko) * 2012-04-15 2015-01-02 삼성전자주식회사 변환 계수 레벨의 엔트로피 부호화 및 복호화를 위한 파라메터 업데이트 방법 및 이를 이용한 비디오 부호화 및 복호화 방법 및 장치
JP6145965B2 (ja) * 2012-04-19 2017-06-14 富士ゼロックス株式会社 画像符号化装置及び画像復号化装置並びにプログラム
WO2013175736A1 (ja) * 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
MX2013015089A (es) 2012-05-25 2014-02-21 Panasonic Corp Metodo de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, aparato de decodificacion de imágenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento.
CN103650500B (zh) 2012-05-25 2018-10-02 威勒斯媒体国际有限公司 图像编码方法、图像编码装置、图像解码方法、图像解码装置及图像编码解码装置
CN107820092B (zh) 2012-06-04 2020-04-21 太阳专利托管公司 运动图像编码方法及装置、运动图像编解码装置
CN104104958B (zh) * 2013-04-08 2017-08-25 联发科技(新加坡)私人有限公司 图像解码方法及其图像解码装置
WO2015089623A1 (en) * 2013-12-16 2015-06-25 Mcafee, Inc. Process efficient preprocessing for an encryption standard
US9455743B2 (en) 2014-05-27 2016-09-27 Qualcomm Incorporated Dedicated arithmetic encoding instruction
WO2015200760A1 (en) * 2014-06-26 2015-12-30 Sviral, Inc. Parllel decompressing of executables for accelerating the launch and performance.
US11018795B2 (en) * 2014-09-29 2021-05-25 The Regents Of The University Of California Methods and apparatus for coding for interference network
JP6194427B2 (ja) * 2014-10-06 2017-09-06 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 量子化パラメータのコーディング及び導出
US9781424B2 (en) * 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
EP3241351B1 (en) * 2015-01-30 2021-04-28 MediaTek Inc. Methods for entropy coding of source samples with large alphabet
CN107567591B (zh) 2015-05-12 2021-06-22 赫尔环球有限公司 关于无线电信号的数据的压缩和解压缩
US10465504B2 (en) 2015-07-28 2019-11-05 Halliburton Energy Services, Inc. Sensor data compression for downhole telemetry applications
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
US10158874B2 (en) * 2015-09-30 2018-12-18 Apple Inc. Parallel bypass and regular bin coding
US10573324B2 (en) 2016-02-24 2020-02-25 Dolby International Ab Method and system for bit reservoir control in case of varying metadata
US20190305927A1 (en) * 2016-03-18 2019-10-03 University Of Florida Research Foundation Incorporated Bitstream security based on node locking
US10432484B2 (en) * 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
FR3058019A1 (fr) * 2016-10-21 2018-04-27 Orange Procede de codage et de decodage de parametres d'image, dispositif de codage et de decodage de parametres d'image et programmes d'ordinateur correspondants
WO2018088975A1 (en) * 2016-11-14 2018-05-17 Istanbul Teknik Universitesi An efficient encryption method to secure data with reduced number of encryption operations
EP3358754A1 (en) * 2017-02-02 2018-08-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Antenna array codebook with beamforming coefficients adapted to an arbitrary antenna response of the antenna array
US10333549B1 (en) * 2017-03-08 2019-06-25 iDensify LLC System and components for encoding integers
US10219005B2 (en) * 2017-06-28 2019-02-26 HCL Technologies Italy S.p.A. System and method for real-time compression of data frames
US10225562B1 (en) * 2017-08-21 2019-03-05 Google Llc Embedding information about EOB positions
US10706492B2 (en) * 2017-09-05 2020-07-07 Texas Instruments Incorporated Image compression/decompression in a computer vision system
US10587284B2 (en) * 2018-04-09 2020-03-10 International Business Machines Corporation Multi-mode compression acceleration
US11398830B2 (en) * 2018-04-27 2022-07-26 University Of Cyprus Methods for compression of multivariate correlated data for multi-channel communication
US20220109455A1 (en) * 2018-06-29 2022-04-07 Zenotta Holding Ag Apparatus and method for providing authentication, non-repudiation, governed access and twin resolution for data utilizing a data control signature
EP3588800A1 (en) 2018-06-29 2020-01-01 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Antenna array codebook with beamforming coefficients adapted to an arbitrary antenna response of the antenna array
TW202304207A (zh) * 2018-07-13 2023-01-16 弗勞恩霍夫爾協會 分區框內寫碼技術
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
US10922026B2 (en) 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10511324B1 (en) * 2018-11-01 2019-12-17 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
CN109788284B (zh) * 2019-02-27 2020-07-28 北京大学深圳研究生院 一种量化块的解码方法、装置及电子设备
US10587286B1 (en) * 2019-03-18 2020-03-10 Blackberry Limited Methods and devices for handling equiprobable symbols in entropy coding
US11212531B2 (en) * 2019-06-07 2021-12-28 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for decoding video using rate sorted entropy coding
WO2021005349A1 (en) * 2019-07-05 2021-01-14 V-Nova International Ltd Quantization of residuals in video coding
EP4024861A4 (en) * 2019-08-31 2023-06-28 LG Electronics Inc. Method for decoding video for residual coding and device therefor
US11398833B2 (en) * 2019-10-02 2022-07-26 Apple Inc. Low-latency encoding using a bypass sub-stream and an entropy encoded sub-stream
TWI741919B (zh) * 2020-01-15 2021-10-01 瑞鼎科技股份有限公司 串流解壓縮電路
US11115050B1 (en) * 2020-08-24 2021-09-07 Innogrit Technologies Co., Ltd. Hardware friendly data decompression
JP2023007760A (ja) * 2021-07-02 2023-01-19 キオクシア株式会社 圧縮装置及び伸張装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JP2007214998A (ja) * 2006-02-10 2007-08-23 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法、復号化方法、及びプログラム
CN101076114A (zh) * 2007-06-15 2007-11-21 上海富瀚微电子有限公司 一种上下文自适应二进制算术编码器及其方法
CN101090503A (zh) * 2007-07-05 2007-12-19 北京中星微电子有限公司 熵编码控制方法及熵编码电路

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3230933B2 (ja) * 1994-08-19 2001-11-19 株式会社リコー データ伸長装置、データ伸長方法、デコーディング装置、デコーディング方法、エンコーディング装置、及びエントロピー・デコーダ
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
CN107517384B (zh) * 2011-06-16 2020-06-30 Ge视频压缩有限责任公司 解码器、编码器、解码方法、编码方法以及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JP2007214998A (ja) * 2006-02-10 2007-08-23 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法、復号化方法、及びプログラム
CN101076114A (zh) * 2007-06-15 2007-11-21 上海富瀚微电子有限公司 一种上下文自适应二进制算术编码器及其方法
CN101090503A (zh) * 2007-07-05 2007-12-19 北京中星微电子有限公司 熵编码控制方法及熵编码电路

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107040780A (zh) * 2015-12-28 2017-08-11 联发科技股份有限公司 在图像压缩中的熵编码的方法与装置
CN107040780B (zh) * 2015-12-28 2019-07-26 联发科技股份有限公司 在图像压缩中的熵编码的方法与装置
CN110121577A (zh) * 2016-10-11 2019-08-13 基因组***公司 使用参考序列表示和处理生物信息数据的方法和***
CN110121577B (zh) * 2016-10-11 2023-09-19 基因组***公司 编码/解码基因组序列数据的方法、基因组编码器/解码器
CN106941610A (zh) * 2017-04-25 2017-07-11 西安电子科技大学 基于改进方块编码的二值roi掩模编码方法
CN106941610B (zh) * 2017-04-25 2019-12-24 西安电子科技大学 基于改进方块编码的二值roi掩模编码方法
US20210359701A1 (en) * 2020-03-30 2021-11-18 Imagination Technologies Limited Efficient Encoding Methods
WO2022179588A1 (zh) * 2021-02-27 2022-09-01 华为技术有限公司 一种数据编码方法以及相关设备
CN116779114A (zh) * 2023-08-24 2023-09-19 邹城市人民医院 一种抗肿瘤医疗mri图像信息智能管理***
CN116779114B (zh) * 2023-08-24 2023-11-03 邹城市人民医院 一种抗肿瘤医疗mri图像信息智能管理***

Also Published As

Publication number Publication date
EP2764692B1 (en) 2020-08-26
CN104081772B (zh) 2018-04-10
JP2014534677A (ja) 2014-12-18
EP2764692A1 (en) 2014-08-13
WO2013050612A1 (en) 2013-04-11
JP6130839B2 (ja) 2017-05-17
US8947273B2 (en) 2015-02-03
US20140210652A1 (en) 2014-07-31

Similar Documents

Publication Publication Date Title
CN104081772A (zh) 熵编码缓冲器配置
CN103119849A (zh) 概率区间分割编码器和译码器
US11706420B2 (en) Method and device for entropy coding/decoding
US7769088B2 (en) Context adaptive binary arithmetic code decoding engine
KR101660605B1 (ko) 변환 계수들에 대한 이진 코드워드들을 결정하는 방법
CN104205831B (zh) 用于对与变换系数相关联的比特流进行编码和解码方法
WO2013100694A1 (ko) 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
KR101627568B1 (ko) 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램
US10284851B2 (en) Method of determining binary codewords for transform coefficients
TW201731224A (zh) 熵編碼及解碼方案
WO2013070974A2 (en) Method of determining binary codewords for transform coefficients
CN109565596A (zh) 用于上下文自适应二进制算术编码表示与视频数据相关的语法元素的二进制符号序列的方法和装置
US8421655B2 (en) Apparatus for parallel entropy encoding and decoding
CN107995496B (zh) 确定用于变换系数的二进制码字的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Munich, Germany

Applicant after: Fraunhofer Application and Research Promotion Association

Address before: Munich, Germany

Applicant before: Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant