背景技术
在现代图像和视频编码器中使用算术编码来提高编码效率。例如,国际标准化组织/国际电工委员会(ISO/IEC)运动图像专家组4(MPEG-4)第10部分高级视频编码(AVC)标准/国际电信联盟,电信部门(ITU-T)H.264建议书(下文可互换地简称为“MPEG-4AVC标准或“H.264”)、和联合图像专家组(JPEG)2000标准(下文简称为“JPEG 2000标准)都应用在编码了码元之后更新码元的概率的自适应二进制算术编码。概率更新步骤使编码过程自适应于视频内容。在这些标准中将这些更新函数制成表格。
通常,二进制算术编码器中码元的概率的自适应是通过查阅表实现的。就存储器使用而言这可能是昂贵的。此外,概率的数量是有限的。
显性更新函数解决了这些问题的一些,但也存在其自身的局限性。首先,快速和有效实现方式必须是整数实现方式,但在这种情况下,自适应程度是非常有限的。也就是说,自适应速率是非常粗略的。其次,概率可能非常接近“0”或“1”,这是一个问题,因为如果码元的概率非常接近“0”并出现该码元,则它的编码成本非常高。
MPEG-4AVC标准取决于简档(profile)地使用如下两种熵编解码器之一:背景自适应变长编码(CAVLC);或背景自适应二进制算术编码(CABAC)。CABAC基于将非整数个位指定给字母表的每个码元的算术编码,这对于大于0.5的码元概率是极其有利的。在CAVLC中这是不可能的。另一方面,自适应代码的使用允许自适应于非静态码元统计。CABAC的另一种性质是背景建模。将已经编码语法元素的统计用于估计条件概率。这些条件概率用于切换几种已估计概率模型。
在MPEG-4AVC标准中,将算术编码核心引擎及其相关概率估计规定成只使用移位和表查阅的无乘法低复杂性方法。MPEG-4AVC标准依靠每种背景模型的估计概率可以通过一组有效限制代表性值来表示的假设。CABAC将0.01875与0.5之间的64个代表性概率值用于最不可能码元(LPS)。这些值从如下递归方程中推导出来:
pn=αpn-1,n=1,…,63
其中p0=0.5,和α=0.9492。
作为这种设计的结果,CABAC中的每种背景模型通过如下两个参数确定:其又通过0到63之间的索引n表征的LPS概率的当前估计值;及其0或1的最可能码元(MPS)的值。因此,使用其中每一种用7位整数值表示的总共128种状态进行概率估计。查阅表保存状态以及给定输入码元如何从一种状态跳跃到另一种状态的信息。注意,表格中的转换更新函数是指数函数的近似式。
在JPEG 2000标准中,使用自适应二进制算术编码器。将更新函数制成表格。该表格含有划分成两个部分的47个条目。前14个条目对应于观察到少数几个码元的转换表的“启动”部分。其余条目代表表格的非瞬态部分。每个条目包括算术编码器要使用的LPS的概率、表格中在当前码元是LPS或MPS的情况下要跳跃的下一个条目、和如果要交换与LPS和MPS相联系的码元保持1的第四个值。
JPEG 2000标准中的表格反映了概率的比例计数估计器的限制形式。这种概率估计就是如下形式:
其中p是估计概率,C0是码元0的计数,C1是码元1的计数,并且Δ反映在观察到大量结果之前避免高度偏斜分布的保守政策(conservative policy)。
CABAC和JPEG 2000依靠有限状态机(FSM)来估计二进制源的输出的概率。有限状态机的转换通过存储在存储器中的表格来定义。这种途径的一个缺点包括频繁引用这个表格(每次每个二进制码元编码都引用一次),这对于数字信号处理(DSP)实现方式是至关重要的。这种途径的另一个缺点是由于存储器局限性使表格较小,因此可能概率的数量受到限制。此外,这种途径的另一个缺点是所有码元必须利用相同函数/表格编码,但不同码元的统计和可变性可能不同,因此需要单个表格不能提供的不同自适应速率。存在使用不止一个表格的选项,但每个附加表格带来额外复杂性,并需要附加存储器。
第一种现有技术的途径提出使用显性概率更新函数来避免表格的使用。更详细地说,第一种现有技术的途径提出显性使用指数更新函数的自适应过程。该函数像下式那样利用新码元加权前观察:
pn=αpn-1+(1-α)sn (1)
其中sn是新码元。
这个函数是“滑动窗口”,因为较新观察具有比较旧观察大的权重,因此适应较新统计。参数α在0与1之间,并且控制系统的存储器。参数α的值越接近0,需要的存储器就越小,即,将更大的权重赋予较新码元。
方程(1)中的更新可以利用整数算术有效地实现。整数算术实现方式的可行性是相当重要的。例如,当使用16-位算术时,假设概率(未归一化并且)是0到216-1之间的概率。然后,可以像下式那样实现方程(1):
pn=pn-1-(pn-1-sn216)>>m (2)
其中参数m控制系统的存储器(像方程(1)中的参数α那样)。码元“>>”指的是将位右移。将位右移m个位置。这种操作类似于除以2m。
参数m和α分别在方程(1)和方程(2)中起相同作用。它们是更新函数的存储速率,也就是说,它们在概率估计中控制赋予过去概率估计和当前码元的权重。参数α的值越接近0,估计需要的存储器就越小,即,将更大的权重赋予较新码元。类似地,m越小,就将更大的权重赋予较新码元,并且m越大,就将更大权重的赋予前估计(和较老码元)。通常,m具有3到7的值。在这种情况下,pn指示在观察数n上码元1的概率。注意,这是任意的(本文使用惯例):pn也可以指示码元0的概率。
这种途径解决了现有技术的一些问题,但也存在其自身的局限性。第一种现有技术途径的一种局限性是自适应程度非常受参数m限制,这基本上考虑了2的幂数形式的极粗略自适应因子。第一种现有技术途径的另一种局限性是概率可能非常接近0或1,这是一个问题,因为如果码元的概率非常接近0并出现该码元,则编码该码元的成本非常高。
具体实施方式
本原理针对显性更新熵编码器或解码器的码元概率的方法和装置。
本描述说明本原理。因此,将认识到:本领域技术人员将能够设计出实施本原理并被包括在本原理的精神和范围内的各种布置,尽管在这里没有明确地描述或示出所述布置。
在此叙述的所有示例和条件性语言意欲用于教导的目的以便帮助读者理解本原理以及由本发明人贡献以促进现有技术的构思,并且应该被解释为不限制这种具体叙述的示例和条件。
另外,在这里叙述本原理的原理、方面和实施例及其特定示例的所有陈述意欲包括其结构和功能等效物。另外,意图是:这样的等效物包括当前已知的等效物以及将来开发的等效物二者,即所开发的执行相同功能的任何元件,而不论其结构如何。
因此,例如,本领域技术人员将认识到:在此呈现的框图表示实施本原理的说明性电路的概念性视图。类似地,将认识到:任何流程图示(flow chart)、流程图(flow diagram)、状态转换图、伪代码等表示实质上可以表示在计算机可读介质中并因此由计算机或处理器执行的各种处理,而不管是否明确地示出这样的计算机或处理器。
可以通过使用专用硬件以及与适当的软件相关联的能够执行软件的硬件来提供图中示出的各种元件的功能。当利用处理器来提供所述功能时,可以利用单个专用处理器、利用单个共享处理器、或者利用其中一些可被共享的多个独立处理器来提供所述功能。另外,术语“处理器”或“控制器”的明确使用不应该被解释为排他性地指代能够执行软件的硬件,而是可以隐含地无限制地包括数字信号处理器(“DSP”)硬件、用于存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、和非易失性存储器。
还可以包括其它传统的和/或定制的硬件。类似地,图中示出的任何开关只是概念性的。它们的功能可以通过程序逻辑的运行、通过专用逻辑、通过程序控制和专用逻辑的交互、或者甚至手动地来执行,如从上下文更具体地理解的那样,可以由实施者选择具体技术。
在其权利要求中,被表示为用于执行指定功能的部件的任何元件意欲包含执行那个功能的任何方式,例如包括:a)执行那个功能的电路元件的组合或者b)与适当电路相组合的任何形式的软件,所述软件因此包括固件或微代码等,所述适当电路用于执行该软件以执行所述功能。由这种权利要求限定的本原理在于如下事实,即,以权利要求所要求的方式将由各种所叙述的部件提供的功能组合和集合到一起。因此认为可以提供那些功能的任何部件与在此示出的那些部件等效。
在本说明书中提到的本原理的“一个实施例”或“实施例”以及其它变种是指结合所述实施例描述的特定特征、结构、特性等被包括在本原理的至少一个实施例中。因此,在说明书各处出现的短语“在一个实施例中”和“在实施例中”以及其它变种的出现不一定都指代相同的实施例。
应当认识到,例如在“A/B”、“A和/或B”和“A和B的至少一个”的情况中对于术语“/”、“和/或”和“至少一个”的使用意欲包括只对于第一个列出的选项(A)的选择、只对于第二个列出的选项(B)的选择、或者对于两个选项(A和B)的选择。作为另一示例,在“A、B和/或C”和“A、B和C的至少一个”的情况中,这种措辞意欲包括只对于第一个列出的选项(A)的选择、只对于第二个列出的选项(B)的选择、只对于第三个列出的选项(C)的选择、只对于第一个和第二个列出的选项(A和B)的选择、只对于第一个和第三个列出的选项(A和C)的选择、只对于第二个和第三个列出的选项(B和C)的选择、或者对于全部三个选项(A和B和C)的选择。如本领域和相关领域普通技术人员容易认识到的,这可以被扩展用于很多列出的项目。
还应当认识到,尽管在这里针对MPEG-4AVC标准描述本原理的一个或多个实施例,但是本原理不仅仅限于该标准,因此可以对于包括MPEG-4AVC标准的扩展在内的其它视频或图像编码标准、建议及其扩展使用本原理,同时保持本原理的精神。
此外,如这里所使用,词汇“画面”和“图像”可互换使用,并且都指代来自视频序列的静止图像或画面。众所周知,一个画面可以是一个帧或一个半帧。
另外,如这里所使用,短语“极端概率值”在概率被归一化时指0和1,或者指0和1的相应未归一化值。例如,如果使用8位来指示未归一化概率,则极端值是0和255。
转到图1,用标号100总体表示可以应用本原理的示例视频编码器。视频编码器100包括具有与组合器185的非反相输入端信号通信的输出端的帧排序缓冲器110。组合器185的输出端被连接成与变换器和量化器125的第一输入端信号通信。变换器和量化器125的输出端被连接成与熵编码器145的第一输入端和逆变换器和逆量化器150的第一输入端信号通信。熵编码器145的输出端被连接成与组合器190的第一非反相输入端信号通信。组合器190的输出端被连接成与输出缓冲器135的第一输入端信号通信。
编码器控制器105的第一输出端被连接成与帧排序缓冲器110的第二输入端、逆变换器和逆量化器150的第二输入端、画面类型判定模块115的输入端、宏块类型(MB类型)判定模块120的第一输入端、帧内预测模块160的第二输入端、去块滤波器165的第二输入端、运动补偿器170的第一输入端、运动估计器175的第一输入端、以及参考画面缓冲器180的第二输入端信号通信。
编码器控制器105的第二输出端被连接成与补充增强信息(SEI)插入器130的第一输入端、变换器和量化器125的第二输入端、熵编码器145的第二输入端、输出缓冲器135的第二输入端、和序列参数集(SPS)和画面参数集(PPS)插入器140的输入端信号通信。
SEI插入器130的输出端被连接成与组合器190的第二非反相输入端信号通信。
画面类型判定模块115的第一输出端被连接成与帧排序缓冲器110的第三输入端信号通信。画面类型判定模块115的第二输出端被连接成与宏块类型判定模块120的第二输入端信号通信。
序列参数集(SPS)和画面参数集(PPS)插入器140的输出端被连接成与组合器190的第三非反相输入端信号通信。
逆变换器和逆量化器150的输出端被连接成与组合器119的第一非反相输入端信号通信。组合器119的输出端被连接成与帧内预测模块160的第一输入端和去块滤波器165的第一输入端信号通信。去块滤波器165的输出端被连接成与参考画面缓冲器180的第一输入端信号通信。参考画面缓冲器180的输出端被连接成与运动估计器175的第二输入端和运动补偿器170的第三输入端信号通信。运动估计器175的第一输出端被连接成与运动补偿170的第二输入端信号通信。运动估计器175的第二输出端被连接成与熵编码器145的第三输入端信号通信。
运动补偿器170的输出端被连接成与开关197的第一输入端信号通信。帧内预测模块160的输出端被连接成与开关197的第二输入端信号通信。宏块类型判定模块120的输出端被连接成与开关197的第三输入端信号通信。开关197的第三输入端确定开关的“数据”输入(如与控制输入,即,第三输入相比)是由运动补偿170提供还是由帧内预测模块160提供。开关197的输出端被连接成与组合器119的第二非反相输入端和组合器185的反相输入端信号通信。
帧排序缓冲器110的第一输入端和编码器控制器105的输入端可作为编码器100的输入端用于接收输入画面。此外,补充增强信息(SEI)插入器130的第二输入端可作为编码器100的输入端用于接收元数据。输出缓冲器135的输出端可作为编码器100的输出端用于输出位流。
转到图2,用标号200总体表示可以应用本原理的示例视频解码器。视频解码器200包括具有连接成与熵解码器245的第一输入端信号通信的输出端的输入缓冲器210。熵解码器245的第一输出端被连接成与逆变换器和逆量化器250的第一输入端信号通信。逆变换器和逆量化器250的输出端被连接成与组合器225的第二非反相输入端信号通信。组合器225的输出端被连接成与去块滤波器265的第二输入端和帧内预测模块260的第一输入端信号通信。去块滤波器265的第二输出端被连接成与参考画面缓冲器280的第一输入端信号通信。参考画面缓冲器280的输出端被连接成与运动补偿器270的第二输入端信号通信。
熵解码器245的第二输出端被连接成与运动补偿器270的第三输入端、去块滤波器265的第一输入端、以及帧内预测器260的第三输入端信号通信。熵解码器245的第三输出端被连接成与解码器控制器205的输入端信号通信。解码器控制器205的第一输出端被连接成与熵解码器245的第二输入端信号通信。解码器控制器205的第二输出端被连接成与逆变换器和逆量化器250的第二输入端信号通信。解码器控制器205的第三输出端被连接成与去块滤波器265的第三输入端信号通信。解码器控制器205的第四输出端被连接成与帧内预测模块260的第二输入端、运动补偿器270的第一输入端、以及参考画面缓冲器280的第二输入端信号通信。
运动补偿器270的输出端被连接成与开关297的第一输入端信号通信。帧内预测模块260的输出端被连接成与开关297的第二输入端信号通信。开关297的输出端被连接成与组合器225的第一非反相输入端信号通信。
输入缓冲器210的输入端可作为解码器200的输入端用于接收输入位流。去块滤波器265的第一输出端可作为解码器200的输出端用于输出输出画面。
如上所述,本原理针对显性更新熵编码器或解码器的码元概率的方法和装置。
至少一个实施例涉及显性更新函数的新使用,其中显性更新函数具有可变自适应速率和/或在一个或多个阈值上截断,以便提高编码效率。这些新概率更新函数具有如下优点,因此避免了现有技术的上述问题:(1)避免了查阅表的使用;(2)避免了与概率太接近0或1的效率有关的问题;以及(3)达到更精细的自适应速率。此外,有利的是,本原理的各种实现方式的整数算术形式是高效的,计算简单的,并且还避免了现有技术的上述问题。
在MPEG-4AVC标准中,算术编码器概率更新是通过给定当前状态/概率和输入码元指示下一个状态/概率的查阅表进行的。有利的是以及依照本原理,通过使用显性函数避免了查阅表的使用。这些函数之一可以是可以具有方程(1)的形式的指数函数。
转到图3,用标号300总体指示码元概率对码元数的一个示例曲线图。曲线图300的X轴与编码或解码的码元的数量有关,曲线图300的Y轴与码元概率(归一化成1)有关。对于相同输入位,曲线图300包括MPEG-4AVC标准概率更新函数的曲线(在图3中表示成“h264”)、和方程(2)中的指数概率更新函数的曲线(在图3中表示成“指数”)。可以认为曲线图300示出了假定输入总是那个码元时码元概率的演化。此外,曲线图300示出了MPEG-4AVC标准(H.264)更新和指数(方程(2)中)的演化。可以观察到,指数函数非常接近等于1的概率,如果出现相对位并且要编码它,则可能会出问题。这种问题不会出现在概率在接近1的某个点上达到饱和的MPEG-4AVC标准中。原因是表格是有限的,存在表格可以达到的最大值。
另一个问题是指数的自适应速率。转到图4,用标号400总体指示码元概率对码元数的另一个示例曲线图。曲线图400的X轴与码元的数量有关,曲线图400的Y轴与码元概率有关。对于相同输入位,曲线图400包括MPEG-4AVC标准概率更新函数的曲线(在图4中表示成“h264”)、第一指数概率更新函数的曲线(在图4中表示成“指数1”)、和第二指数概率更新函数的曲线(在图4中表示成“指数2”)。关于整数算术途径(方程(2)),存储因子只能是2的幂数,因此速率调整是粗略的。例如,曲线图400示出了存储速率(方程(2)中的m)为4和5的指数。H.264(MPEG-4AVC标准)曲线在这两种指数曲线之间。以更精细(更不粗略)方式选择存储速率是有利的。如这里所使用,变量“m”指的是存储速率。
在本原理的一个实施例中,我们提出了使用具有以下特性的至少一种的显性更新函数(以便不需要表格):(1)避免太接近0或1的概率;以及(2)达到更精细的自适应速率。
另外,提出了可以用整数算术实现的解决方案。
在一个实施例中,提出了使用分段线性函数(linear function by parts)。该函数是线性的,并且在函数的不同部分中具有不同斜率,以及具有两个阈值,一个在底部,另一个在顶部,以避免太接近极端概率。转到图5,用标号500总体指示码元概率对码元数的又一个示例曲线图。曲线图500的X轴与码元的数量有关,曲线图500的Y轴与码元概率有关。对于相同输入位,曲线图500包括MPEG-4AVC标准概率更新函数的曲线(在图5中表示成“h264”)、和分段线性概率更新函数的曲线(在图5中表示成“线性”)。可以容易地用整数算术调整斜率,以便在每个部分中具有所希望自适应速率。另外,不同语法元素可以具有不同斜率。因此将它们的特定特性考虑进来。
注意,图5中的概率被归一化成1。在16位整数算术中,概率在[0-65355]范围中。给定的示例使用了如下阈值和斜率:
Pone=65356(未归一化最大概率:通常概率从0到1,在这种情况下,未归一化到概率1,65536相当于概率1)。
Threshold_t1=45056
Threshold_t2=57344
Threshold_t3=64512
Slope_s1=1280
Slope_s2=640
Slope_s3=128
在另一个实施例中,我们使用了具有两个阈值(即,截断或阈指数)的指数函数,一个在底部,另一个在顶部,以避免太接近极端概率。
在另一个实施例中,我们使用了将指数的极限设置成不同于0和1的指数函数。这样,渐近值不会太接近0或1。更新函数类似于方程(1)中的更新函数,但作了一些修改:
其中将码元s
n的值(0或1)映射成接近它的值
我们拥有如下值:
使得极限或极端值不同于0或1。函数不再收敛到0或1,而是分别收敛到δ和1-δ。要认识到的是,码元δ在这里可交换地称为“德尔塔(delta)”。通常,δ的值非常小。例如,δ=0.001呈现出良好的性能。对于这个实施例,德尔塔值的范围是0到1。给出良好结果的值在0到0.005的范围内,但最佳值取决于要估计的概率的统计。通过这种改变,我们保证了概率不会过度偏斜。
在另一个实施例中,我们使用了具有两个阈值(即,截断或阈指数)的指数函数,一个在底部,另一个在顶部,以避免太接近极端概率,并且将指数的极限设置成不同于0或1。在这种情况下,由于应用了阈值,所以德尔塔的值在一些范围内可以是负的,因此具有更精细的收敛调整。
在另一个实施例中,我们用整数算术实现前函数。假设pn指示观察数n上码元0的概率。然后,如果码元是0,则可以使用如下更新:
pn=pn-1-(pn-1-(216-δ)>>m (3)
如果码元1,则可以使用如下更新:
pn=pn-1-(pn-1-δ)>>m (4)
要认识到,如上所述,pn指示码元0的概率的惯例是任意的,因此,在另一个实施例中,pn可以指示码元1的概率。
在这种状况下,δ的值也小。这个“小”值(δ)是与非归一化概率的范围相比较而言的,即,在前一种情况中,δ=0.001是建议值,它与等于1的最大归一化概率相比较小。在整数算术中,最大概率由用于表示概率的位数决定。如果位数是16,则最大概率是65536,并且δ的值(现在是整数)与这个最大概率相比较小或较大。如果假设前述16-位算术以及m=5,则δ的合理范围是16到2048。注意,在这种情况下,德尔塔取整数值。256的值在本实验中给出极好的结果。但最佳值取决于码元概率的统计,以及是否是静态的。在普通静态状况下发现452的值在理论上是最佳的。
转到图6,用标号600总体表示执行像具有阈值的分段线性函数那样的概率更新函数的一种示例方法。方法600包括将控制交给功能块607的开始块605。功能块607输入码元和与之相对应的概率(也可交换地称为“Prob”),并将控制交给判定块610。判定块610确定码元是否等于0。如果是,则将控制交给判定块615。否则,将控制交给判定块650。判定块615确定Prob<Threshold_t1是否成立。如果是,则将控制交给功能块620。否则,将控制交给判定块625。功能块620设置Prob=Prob+Slope_s1,并将控制交给功能块685。判定块625确定Prob<Threshold_t2是否成立。如果是,则将控制交给功能块630。否则,将控制交给判定块635。功能块630设置Prob=Prob+Slope_s2,并将控制交给功能块685。判定块635确定Prob<Threshold_t3是否成立。如果是,则将控制交给功能块640。否则,将控制交给判定块645。功能块640设置Prob=Prob+Slope_s3,并将控制交给功能块685。功能块645设置Prob=Prob,并将控制交给功能块685。判定块650确定Prob>Pone-Threshold_t1是否成立。如果是,则将控制交给功能块655。否则,将控制交给判定块660。功能块655设置Prob=Prob-Slope_s1,并将控制交给功能块685。判定块660确定Prob>Pone-Threshold_t2是否成立。Pone是最大概率,即,归一化概率1的非归一化值。如果是,则将控制交给功能块665。否则,将控制交给判定块670。功能块665设置Prob=Prob-Slope_s2,并将控制交给功能块685。判定块670确定Prob>Pone-Threshold_t3是否成立。如果是,则将控制交给功能块675。否则,将控制交给判定块680。功能块675设置Prob=Prob-Slope_s3,并将控制交给功能块685。功能块680设置Prob=Prob,并将控制交给功能块685。功能块685输出概率(Prob),并将控制交给结束块699。
转到图7,用标号700总体表示利用极限由变量德尔塔决定的整数算术指数函数进行概率更新的一种示例方法。方法700包括将控制交给功能块710的开始块705。功能块710输入码元和与之相对应的概率,并将控制交给判定块715。判定块715确定码元是否等于0。如果是,则将控制交给功能块720。否则,将控制交给功能块725。功能块720设置Prob=Prob-(Prob-(Probmax-delta)>>m,并将控制交给功能块730。功能块730输出概率(Prob),并将控制交给结束块799。功能块725设置Prob=Prob-(Prob-delta)>>m,并将控制交给功能块730。
转到图8,用标号800总体表示码元概率对码元数的再一个示例曲线图。曲线图800的X轴与码元的数量有关,曲线图800的Y轴与码元概率有关。对于相同输入位,该曲线图包括未使用δ设置极限的整数算术指数函数的曲线(在图8中表示成“指数”)、和使用δ设置极限的整数算术指数函数的曲线(在图8中表示成“带有delta的指数”)。图8对应于将图7的实施例与未利用δ设置极限的情况相比较的示例。应该注意到,函数的速率和极限是如何不同的。
此外,注意到δ也调节自适应速率。较大的δ意味着较低的速率。当δ是0时,拥有由参数m决定的自适应速率。当δ低于0时,则自适应速率更快。这种观察导致如下实施例。
在这个实施例中,使用阈值决定具有不同参数值的函数不同部分的分段指数函数。每个部分对于δ和对于m可以具有不同值。然后这两个参数可以以精细方式为每个部分调节合适速率。另外,不同背景也可以具有不同值。
在另一个实施例中,我们分段组合指数函数和线性函数。
转到图9,用标号900总体表示利用函数参数取决于要编码的语法元素和码元的当前概率的整数算术指数函数进行概率更新的一种示例方法。方法900包括将控制交给功能块910的开始块905。功能块910输入语法元素、码元、和概率(Prob),并将控制交给判定块915。判定块915确定语法元素(的值)是否等于运动矢量(的值)。如果是,则将控制交给功能块920。否则,将控制交给功能块965。功能块920设置(变量)m=4,并将控制交给判定块925。判定块925确定码元的值是否等于0。如果是,则将控制交给功能块930。否则,将控制交给功能块950。功能块930设置Prob=Prob-(Prob-(Prob_max-delta)>>m,并将控制交给判定块935。判定块935确定Prob>Prob_max是否成立。如果是,则将控制交给功能块940。否则,将控制交给功能块945。功能块945输出概率Prob,并将控制交给结束块999。
功能块950设置Prob=Prob-(Prob-delta)>>m,并将控制交给判定块955。判定块955确定Prob<Prob_min是否成立。如果是,则将控制交给功能块960。否则,将控制交给功能块945。功能块960设置概率Prob=Prob_min,并将控制交给功能块945。
功能块965设置m=5,m2=6,delta=10,delta2=128,其中m、m2、delta和delta2是变量,并将控制交给判定块970。判定块970确定T1<Prob<T2是否成立,其中T1是下阈,并且T2是上阈。如果是,则将控制交给功能块975。否则,将控制交给功能块980。功能块975使用带有m和delta的指数函数更新概率Prob,并将控制交给功能块985。功能块985输出概率Prob,并将控制交给结束块999。功能块980使用带有m2和delt2的指数函数更新概率Prob,并将控制交给功能块985。
现在对其中一些上面已经提及的本发明的许多附带优点/特征的一些加以描述。例如,一个优点/特征是含有视频编码器的装置。该视频编码器含有编码至少一部分画面的画面数据的码元的熵编码器。将显性更新函数用于更新熵编码器处理的码元的概率。该显性更新函数在阈值上截断和/或具有可变自适应速率。
另一个优点/特征是如上所述的含有编码器的装置,其中针对大于阈上限和/或小于阈下限的概率值截断显性更新函数。
又一个优点/特征是如上所述的含有编码器的装置,其中显性更新函数是具有阈值的分段线性函数。
再一个优点/特征是如上所述的含有编码器的装置,其中显性更新函数是具有阈值的指数函数。
一个进一步优点/特征是如上所述的含有编码器的装置,其中显性更新函数是渐近极限不同于概率上限值和概率下限值的至少一个的指数函数。
此外,另一个优点/特征是如上所述的显性更新函数是渐近极限不同于概率上限值和概率下限值的至少一个的指数函数的含有编码器的装置,其中显性更新函数使用整数算术。
并且,另一个优点/特征是其中如上所述的显性更新函数使用整数算术的含有编码器的装置,其中码元是二进制码元,和Pn能够指示在观察数n上具有0值或1值的特定一个码元的概率,以及:
如果概率Pn指示具有0值的特定一个码元的概率和特定一个码元在观察数n上具有0值,或如果概率Pn指示具有1值的特定一个码元的概率和特定一个码元在观察数n上具有1值,则pn=pn-1-(pn-1-(2b-δ))>>m;以及
如果概率Pn指示具有0值的特定一个码元的概率和特定一个码元在观察数n上具有1值,或如果概率Pn指示具有1值的特定一个码元的概率和特定一个码元在观察数n上具有0值,则pn=pn-1-(pn-1-δ)>>m,
其中m代表与显性更新函数有关的存储速率,b代表用在整数算术中表示概率Pn的位数,并且δ代表用于更新概率Pn的指数函数的渐近极限的偏移。
此外,另一个优点/特征是如上所述的含有编码器的装置,其中显性更新函数是根据当前针对部分画面编码的语法元素从多种可用显性更新函数中选择的。
另外,另一个优点/特征是如上所述的含有编码器的装置,其中显性更新函数是分段指数函数。
此外,另一个优点/特征是其中如上所述的显性更新函数是分段指数函数的含有编码器的装置,其中调整显性更新函数的参数以获取不同自适应速率和概率值极限。
并且,另一个优点/特征是如上所述的调整显性更新函数的参数以获取不同自适应速率和概率值极限的含有编码器的装置,其中参数依赖于当前针对部分画面编码的语法元素。
基于这里的教导,相关领域的普通技术人员可以容易地确定本原理的这些和其它特征及优点。应当理解,可以以硬件、软件、固件、专用处理器或它们的组合的各种形式来实现本原理的教导。
最优选地,作为硬件和软件的组合来实现本原理的教导。此外,可以作为在程序存储单元上有形地包含的应用程序来实现所述软件。所述应用程序可以被上载到包括任何适当架构的机器并由其执行。优选地,在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现所述机器。该计算机平台还可以包括操作系统和微指令代码。在此描述的各种处理和功能可以是可由CPU执行的微指令代码的一部分或应用程序一部分或者它们的任何组合。此外,诸如附加的数据存储单元和打印单元之类的各种其它外围单元可以连接到该计算机平台。
还应当理解,因为优选地用软件来实现在附图中示出的一些组成系统组件和方法,所以这些系统组件或处理功能块之间的实际连接可以根据本原理被编程的方式而不同。给出这里的教导,相关领域的普通技术人员将能够想到本原理的这些和类似的实现或配置。
尽管在这里参照附图描述了说明性实施例,但是应当理解,本原理不限于那些精确的实施例,并且相关领域的普通技术人员可以在其中进行各种改变和修改,而不背离本原理的范围或精神。所有这样的改变和修改都意欲被包括在如所附权利要求阐述的本原理的范围内。