CN101167368B - 一种实现算术编解码的方法及装置 - Google Patents

一种实现算术编解码的方法及装置 Download PDF

Info

Publication number
CN101167368B
CN101167368B CN200680014013.8A CN200680014013A CN101167368B CN 101167368 B CN101167368 B CN 101167368B CN 200680014013 A CN200680014013 A CN 200680014013A CN 101167368 B CN101167368 B CN 101167368B
Authority
CN
China
Prior art keywords
domain
updating
interval
value
symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200680014013.8A
Other languages
English (en)
Other versions
CN101167368A (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.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies Co Ltd
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 Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN200680014013.8A priority Critical patent/CN101167368B/zh
Publication of CN101167368A publication Critical patent/CN101167368A/zh
Application granted granted Critical
Publication of CN101167368B publication Critical patent/CN101167368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

一种在算术编码器中实现算术编解码的方法及装置,包括在算术编解码器进行二元算术编解码过程中,将原数域上进行的算术编解码的区间更新处理映射到对数域上直接通过加减法计算实现;在对数域算术编解码的计算过程中,涉及到原数域和对数域之间的数据转换通过近似计算的方式实现;在编解码一个符号后根据需要对概率值进行更新,该更新过程在对数域通过加减法实现。

Description

一种实现算术编解码的方法及装置
技术领域
本发明涉及图像编码技术领域,尤其涉及一种在算术编码器进行图像编码过程中的算术编解码技术。 
发明背景 
在图像编码过程中涉及的算术编码处理过程。所述算术编码是通过将编码符号序列映射到[0,1)区间的一个整数值来逼近该序列的信息熵,从而取得压缩数据率的效果。在算术编码处理过程中,需要根据编码符号集中各个符号的概率对当前编码的区间进行迭代处理,当编码序列完成时,将得到整个序列对应的一个区间,从该区间中选择一个相应的数值,即可代表整个序列的信息。 
所述的算术码的编码可以分为两部分:第一部分为统计信源符号的概率,以分配符号区间;第二部分是输入符号,对序列编码。其中,第一部分可以根据先验知识得到符号的概率。 
所述的第二部分则是一个迭代过程,主要包括步骤: 
(1)将当前区间定义为[0,1); 
(2)对输入流的每一个符号,重复下面的两个步骤: 
(21)把当前区间分割为长度正比于符号概率的子区间; 
(22)为当前符号s选择一个子区间,并将它定义为当前区间。 
(3)用上述方法处理完所有的符号,最后输出唯一确定当前区间的数字作为编码码字。 
上述算术编码过程主要在于区间的迭代处理,而迭代过程的符号概率可以采用自适应模型。 
如果符号集只有0,1两个符号,则上述过程可以简化。此时,用MPS和 LPS分别表示大概率符号和小概率符号,如果用R表示当前对应的区间,Low表示当前区间的下界,pLPS表示LPS的概率,pMPS表示MPS的概率,pLPS+pMPS=1。那么上述的迭代过程可以用下面公式表示: 
RLPS=R×pLPS,RMPS=R-RLPS; 
如果编码小概率符号:R=RLPS; 
Low=Low+RMPS; 
如果编码大概率符号:R=R×pMPS=R-RLPS; 
上述公式从原理上阐述了算术编码方法,但是在实际应用中由于有限精度、乘法器实现的复杂度等限制,上述算法通常不能直接使用。除此之外,为了提高算术码编码效率,常常还采用自适应的概率估计算法用于计算符号概率。 
在目前实际使用的算术编码器中,均采用了重正化(renormalization)的过程来解决有限精度问题。对于乘法计算问题,也提出了各种解决方案,包括:在JEPG标准中应用的算术编码器Q-Coder中,通过将R限制在[0.75,1.5)之间,利用近似计算的方法避免了乘法计算;而在H.264/AVC标准中应用的算术编码器CABAC中,则是利用查找表的方法避免乘法计算。对于自适应概率更新的问题,通常是采用有限状态机算法来解决,具体为通过制定一张跳转表,根据大概率符号和小概率符号选择不同的跳转方案而实现概率的估计。 
目前,业界也提出过在对数域上实现算术编码的算术编码器,从而可以通过原数域到对数域上的映射避免了乘法运算的问题。但是,在这个编码器中,涉及到的原数域和对数域上的数据转换是通过对数表和反对数表来实现,而且概率更新也是在原数域上通过一个跳转表实现。由于各表的引入,不仅增加了存储要求,而且还将由于繁琐的查表操作使得相应的方法实现过程较为复杂,即不利于在PC(主机)上实现相应的方法。 
发明内容
本发明提供了一种实现算术编解码的方法及装置,从而可以使得算术编解码的实现过程较为简单,进而使得算术编解码更易于实现。 
本发明提供了一种实现算术编码的方法,包括: 
对接收数据进行算术编码; 
当需要在原数域进行算术编码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现; 
在原数域和对数域进行数据转换过程中,采用近似计算法实现; 
根据区间更新后的结果进行算术编码。 
本发明提供了一种实现算术编码的装置,包括: 
符号编码区间更新单元,用于将需要在原数域上进行的算术编码的区间更新计算映射到对数域上直接通过加减法计算实现,并采用近似计算的方法实现原数域和对数域的数据转换; 
编码操作单元,用于利用符号编码区间更新单元计算确定的区间更新后的结果实现算术编码处理。 
本发明提供了一种实现算术解码的方法,包括: 
对接收数据进行算术解码; 
当需要在原数域进行算术解码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现; 
在原数域和对数域进行数据转换过程中,采用近似计算法实现; 
根据区间更新后的结果进行算术解码。 
本发明提供了一种实现算术解码的装置,包括: 
符号解码区间更新单元,用于在算术解码器进行算术解码过程中,将需要在原数域上进行的算术解码的区间更新计算映射到对数域上直接通过加减法计算实现,并采用近似计算的方法实现原数域和对数域的数据转换; 
解码操作单元,用于利用符号解码区间更新单元计算确定的区间更新后的结果实现算术解码处理。 
由上述本发明提供的技术方案可以看出,本发明提供的算术编解码实现方案是将算术编解码过程以及其中涉及的概率估计过程的操作均映射到对数域实现,并通过近似计算公式实现原数域和对数域之间的数据转换,从而有效避免了复杂的计算和查表;在对数域上实现概率更新过程,避免了通过跳转表的概率更新方式而通过简单的计算得到概率更新值。 
总之,本发明的实现不仅保持了算法的精度,同时,还大大简化了算术编解码器的运算的复杂度和概率估计的复杂度,使得相应的算术编解码方案更易于实现。即本发明提供了一种简捷、高效而合理的算术编解码的实现方案。 
附图简要说明 
图1为本发明提供的算术编码过程的具体实施方式示意图; 
图2为本发明提供的算术编码装置的具体实施方式结构示意图; 
图3为本发明提供的算术解码装置的具体实施方式结构示意图。 
实施本发明的方式 
本发明是将算术编码过程以及其中涉及的概率估计的操作映射到对数域上实现。 
也就是说,如果在原数域中,R=R×pMPS,且假设在对数域中: 
LG_Range=log(R),LG_PMPS=-log(pMPS); 
则,可以推导出在对数域中: 
LG_Range=LG_Range-LG_PMPS(1); 
可以看出,根据公式(1)可以在对数域中通过加减法实现MPS情况下 区间R的计算更新。 
为便于理解本发明,首先对算术编码过程进行描述。在算术编码过程中主要是将二元符号序列映射到数域上的区间R,二元符号的其中一个概率值为Q,称为第一概率值,另一个概率值为P,称为第二概率值,分别可以为大概率符号MPS和小概率符号LPS,在区间R计算中根据编码的二元符号将R乘于P或者R乘于Q得到新的R值。 
为实现上述算术编码过程,本发明提供了相应具体实现方法,具体为:在对数域上计算区间R时,通过将R的对数值Log_R加上P的对数值Log_P或者Q的对数值Log_Q,从而实现区间值的更新计算。在对数域和原数域的转换中,可以采用近似计算的方法实现转换过程。 
在进行区间R的计算过程中,还包括针对概率值Q或者概率值P进行的自适应的更新,该更新过程也是在对数域上实现。 
计算更新后的对数域的概率值Log_Q(或者Log_P)具体包括: 
通过将更新前的对数域的概率值加上或者减去某一个预定的数值得到新的对数域的概率值(即更新后的对数域的概率值);或者,将更新前的对数域的概率值加上或者减去更新前的对数域的概率值Log_Q(或者Log_P)移位的数值或者除于2的整数次幂的数值,以得到新的对数域的概率值。 
在所述的从对数域向原数据转换计算时,原数域的值X通过参数B向左或者向右移位A位得到,或者通过将参数B除于2的A次幂得到,其中,所述的参数A,B通过值X在对数域上对应值Log_X计算得到,具体为:通过将对数域上的值Log_X分解为Log_X=-A+B-1,其中,A为一个整数,B-1为一个绝对值小于1的小数。其中,所述的参数B可以使用一个第一修正参数Δ1数对其进行修正,该Δ1数值可以用查表方法得到;所述的原数域的值X可以为原数域的区间值或概率值。 
对于从原数域向对数域转换计算处理,则是通过近似计算的方法得到原数域的值X在对数域的对应值Log_X实现,而且,原数域值X在对数域上的值Log_X等于X-1。同时,在计算Log_X时,还可以选择使用一个第二修正参数Δ2数进行修正,其中,Δ2可以用查表的方法得到,此处的Δ1与对参数B进行修正的Δ2可以使用相同的查找表,即可以通过查找相同的表确定相应的修正参数值。 
下面将结合具体的应用实例对本发明提供的整个算术编码处理过程做详细的说明。在具体编码处理过程中包括初始化处理过程、编码MPS的处理过程和编码LPS的处理过程。其中: 
初始化处理过程主要是进行一些初始参数的设置以便于后续的编码MPS和编码LPS的处理过程; 
所述的编码MPS过程较为简单,相应的编码过程具体见后面的描述; 
所述的编码LPS的处理过程则进一步包括区间值的更新(包括区间和区间的下界的更新)和概率更新处理,以及重化处理过程和根据更新后的区间值进行参数更新的处理。 
下面将分别对各个处理过程进行说明。 
(一)初始化处理 
定义HALF=0x1000,QUARTER=0x0100,且: 
range=HALF-1,range为区间值; 
LG_range=QUARTER-1; 
low=0。 
(二)当编码MPS的时候,新对应的range(区间)值等于原range值乘于MPS的概率新range=原range×pMPS,low值保持不变; 
当对应到对数域时,该乘法可以用对数域上的加减法实现,如图1所示: 
新LG_Range=原LG_Range-LG_PMPS; 
编码后,MPS符号的概率值根据需要进行更新,由于MPS符号概率pMPS增加,对应的LG_PMPS减小,在对数域上对概率更新,可以用简单的移位和加减法实现,在原数域中,由于 
p MPS = 2 - LG _ PMPS = 1 2 ( 2 - LG _ PMPS ) , p LPS = 1 2 LG _ PMPS ;
当编码MPS符号时,可以认为 p LPS = 15 16 p LPS , 根据上面的公式,即  LG _ PMPS = 15 16 LG _ PMPS , 由此可以计算得到:LG_PMPS=LG_PMPS-LG_PMPS>>4,即更新后的对数域的MPS概率值LG_PMPS为:更新前的对数域的MPS的概率值LG_PMPS减去更新前的对数域的MPS的概率值LG_PMPS右移4位后的数值LG_PMPS>>4。 
所述的更新后的对数域的MPS概率值还可以为采用更新前的对数域的MPS的概率值LG_PMPS除于2的整数次幂的数值获得,仍以上例,具体为: 
LG_PMPS=LG_PMPS-LG_PMPS/16。 
(三)当编码LPS的时候,仍如图1所示: 
首先,假设在原数域上当前编码区间为R1,MPS对应的区间R2,在原数域上,range=range×pLPS=range-range_MPS,low值需要上调: 
range_new=R1-R2;(2) 
low_new=low+R2;(3) 
将该算法实现时,R1,R2在对数域上对应的值分别为LG_R1,LG_R2,首先对LG_R1,LG_R2进行分解: 
[0080]  LG_R1=-s1+t1(4) 
LG_R2=-s2+t2(5) 
[0082]  其中s1,s2分别是一个整数,t1,t2分别是一个[0,1)区间内的一个小数。 
因此, 
R 1 = 2 LG _ R 1 = 2 - s 1 + t 1 ≈ 2 - s 1 × ( 1 + t 1 - Δ 1 ) - - - ( 6 )
R 2 = 2 LG _ R 2 = 2 - s 2 + t 2 ≈ 2 - s 2 × ( 1 + t 2 - Δ 2 ) - - - ( 7 )
此处Δi为近似计算的修正值,可以通过查表获得,在上两式中也可以忽略此修正值Δi。 
例如对于256×LG_R1=256lg(R1)=-506,则: 
[0088]  R1=2-1.9765625≈2-2×(1+0.0234375)=2-(2+8)×(1.0234375)×256=2-10×262; 
[0089]  因此,s1=2,t1=0.0234375 
在实际算法实现中,采用8bit的精度,前8bit表示整数部分,后8比特表示小数部分,则相应的处理过程为: 
[0091]  LG_R1=-506=-0x01fa=-0x0200+0x0006 
[0092]  R1=2-0x0200×(0x0106),对于8bit精度寄存器,1≤t<2,用8bit保存t的小数部分,比如上面例子中的0x06,对于s仅需要保存整数部分(小数部分为0)0x02。 
将(6)、(7)代入(2),(3)计算,并且注意到由于R1>R2≥R1/2,因此s1=s2或者s1=s2-1; 
可以得到: 
range _ new = R 1 - R 2 = 2 - s 2 × t 3 - - - ( 8 )
low_new=low+R2    (9) 
其中, t 3 = t 1 - t 2 if ( s 1 = s 2 ) 2 t 1 - t 2 if ( s 1 ≠ s 2 ) , R2通过(7)计算得到。 
根据式(8)、(9)可以实现range和low的更新。 
对LPS符号编码后,相应的符号概率LG_PMPS也需要进行更新,下面将描述该更新过程。 
 在概率更新过程中,由于小概率符号的概率增加,对应大概率符号的概率减小,LG_PMPS增大,在此处可以用加减法实现,实现方法为: 
在原数域上,当增加一个小概率符号时,可以认为大概率符号的概率降低为原来的 
Figure G82068994150141000D000091
因此 p MPS = p MPS × 15 16 , 对应到对数域上实现时,由于: 
LG_PMPS=-256×log(pMPS)=-256×(log(pMPS)+log(15)-log(16))≈LG_PMPS+23; 
因此,在概率预测时,可以采用下面的公式: 
LG_PMPS=LG_PMPS+23        (10)。 
在编码小概率符号后,还需要对计算获得的新的区间值进行重正化处理过程。 
具体为:根据计算得到的range_new判断,如果range_new<QUARTER,则对range_new左移位直到range_new≥QUARTER,同时对low_new左移位相同的比特位,输出比特到码流中。 
例如,计算得到 range _ new = R 1 - R 2 = 2 - s 2 × t 3 , s2=0x02,t3=0x001e,low_new=100100001由于QUARTER=0x0100,所以t3需要左移4位,加上s2的影响,一共左移4+2=6位,此时对low需要相应的左移6位,移出比特输出到比特流中。但在此处需要分三类情况,假设bit9表示low_new的第9位,它是将要移出的bit,bit8表示low_new的第8位,根据分类: 
(1)如果bit9为1, 
将bit9输出,进行下一次输出,上面例子第一个中输出比特“1”,low_new=001000010; 
(2)如果bit9为0并且bit8为0, 
将bit9输出,进行下一次输出,上面例子中第二个比特输出“0”,low_new=010000100; 
(3)如果bit9为0并且bit8为1, 
采用比特跟随的方法记录下该位bit9,并且翻转bit8为“0”,进行下一 次判断。用bits_to_follow记录比特跟随的位数,每记录一位bits_to_follow增加1,当记录结果可以输出的时候,如果bits_to_follow不为零,则连同比特跟随位一起输出,例如bits_to_follow=2,当前位输出比特“0”,则输出“011”,当前位输出“1”则输出“100”。上例中输出首先用比特跟随记录bits_to_follow=1,接下来bit9=0,bit8=0,则当前位输出“0”,最终连同比特跟随位一起输出为“01”,low左移两位后为low_new=000010000。 
最后两个比特输出是第二种情况,均输出“0”,low_new=000100000;一共输出的5位bit为“10010”,low_new=000100000。 
最后,完成上述计算处理后则接着需要进行参数更新处理,包括: 
将新的区间值作为当前区间值:range=range_new; 
将新的区间的下界值作为当前区间的下界值:low=low_new; 
更新后的区间值的对应的对数域中的值LG_range为: 
LG_range=log(range)≈range-1+Δ=range[7:0],即LG_range值为更新前的原数域的区间值range减去1获得。具体还可以采用一个修正参数Δ进行修正处理。Δ为近似计算修正值,通过查表得到,查找该Δ值可以和前面描述的修正表相同;或者,也可以忽略该修正参数Δ值,直接采用range减去1作为更新后的对数域的区间值LG_range。 
(四)编码循环处理 
根据前面(二)、(三)描述的编码方法,所述的编码循环是指连续编码零个或者多个大概率符号之后,再编码一个小概率符号,整个编码过程为由多个编码循环组成。而且,在每一个编码循环中,编码大概率符号时,区间更新在对数域上完成;编码小概率符号时,首先将数据从对数域转换到原数域,然后用减法在原数域上实现区间的更新。 
本发明还提供了一种算术编码器,其具体实施结构如图2所示,主要包括初始化处理单元、符号编码区间更新单元及编码操作单元,其中符号编 码区间更新单元进一步包括MPS编码区间更新单元和LSP编码区间更新单元;编码操作单元则用于利用符号编码区间更新单元计算确定的区间更新后的结果。下面将分别对该装置包含的各单元进行说明: 
(1)初始化处理单元 
该单元用于初始化算术编码器编码过程中所用到的各个变量的处置。具体包括实数域上区间Range初值,赋值为HALF-1;对数域上的区间LG_Range初值,赋值为QUARTER-1;区间下界Low,赋值为0;此处HALF为整个编码区间范围的一半,QUARTER为整个编码区间范围的1/4。 
(2)MPS编码区间更新单元 
该单元用于编码MPS符号,包括区间更新和概率更新两个部分;假设输入MPS符号的对数域概率为LG_PMPS,当前区间对数域值为LG_Range,区间更新为一次减法:新LG_Range=原LG_Range-LG_PMPS;概率更新为一个减法器加上一个移位或者除法操作:LG_PMPS=LG_PMPS-LG_PMPS>>4。 
(3)LPS编码区间更新单元 
该单元用于LPS符号编码,将对数域上的数据转换到原数域,在原数域用减法实现区间的更新。该单元包括数域转换单元,区间更新单元,概率更新单元和编码后的重正化处理单元;其中,数域转换单元为实现从对数域到实数域上数据的转换,具体区间和MPS对应的范围值为R1,R2,其转换通过公式(6),(7)实现;区间更新单元分别计算Range和Low的数值,区间更新为一个移位,通过(8)实现;区间的下界Low更新为一次加法,通过(9)实现;概率更新单元为一步加法通过(10)式实现;重正化处理单元为移位处理单元,具体操作为根据计算得到的range_new判断,如果range_new<QUARTER,则对range_new左移位直到range_new≥QUARTER,同时对low_new左移位相同的比特位,输出比特到码流中。 
本发明还提供了一种实现算术解码的方法,在解码过程中,当前区间大小更新、概率更新和编码过程完全一样,但解码过程维护的不是当前区间底端点Low,而是码流指针相对于当前区间底端点的偏移量offset。 
假设LG_R1(range在对数域上的相应值)和LG_offset(offset在对数域上的相应值)可以分解为如下整数、小数部分的差,s1、value_s分别是不小于LG_R1和LG_offset的最小整数,以方便后面的计算。 
LG _ R 1 = s 1 - t 1 , ( 0 &le; t 1 < 1 ) LG _ offset = offset _ s - offset _ t , ( 0 &le; offset _ t < 1 ) - - - ( 11 )
解码过程维护的变量包括range、offset、LG_R1(小数部分t1)和LG_offset(小数部分offset_t)。 
基于上述假设,相应的解码过程的实施例具体可以包括: 
(1)初始化range、LG_R和LG_offset的小数部分和整数部分。range初始化为HALF-1;offset的初始化过程则是不断读入码流直至读到第一个为’1’的bit,offset初始化为从这个bit起的连续9个btis。伪代码描述如下,readbits(n)表示从码流中连续读入n个bits: 
range=HALF-1. 
s1=0 
t1=0xFF 
offset_s=0 
while(!readbits(1))offset_s++; 
offset_t=readbits(8); 
(2)根据当前解码符号的概率模型计算MPS对应的子区间;LG_R1是解码此符号前的子区间,则MPS对应的子区间在对数域上值LG_R2满足: 
LG_R2=LG_R1-LG_MPS    (12) 
(3)判定当前解码的结果,如果MPS对应的子区间小于或等于码流指针的偏移值offset,即 
LG_R2≥LG_offset    (13) 
则此符号解码为LPS;否则解码为MPS。 
(4)如果解码为MPS,区间更新过程很简单,直接把解码过程当前区间LG_R1更新为LG_R2,然后跳至第(6)步进行概率模型的更新处理;否则继续至第(5)步。 
(5)如果解码得binVal是LPS,则需要将LG_R1、LG_offset切换回原数域,将解码过程当前区间range更新为LPS对应的子区间,把offset更新为相对对新子区间的偏移量;并且左移range、offset使得它们的最高比特位是’1’并且在移位过程中读入部分码流比特为后续解码过程做准备。 
LPS对应的子区间rLPS大小为R1-R2,在编码过程中推导过: 
rLPS &ap; 2 - s 2 g t 1 - t 2 ( if s 2 = s 1 ) 1 + ( t 1 < < 1 ) - t 2 ( if s 2 = s 1 + 1 )
由于s2=s1时,t1-t2=LG_PMPS, 
s2=s1+1时,1+t1-t2=LG_PMPS. 
因此,rLPS的更新可以改写为 
rLPS &ap; 2 - s 2 LG _ PMPS , if ( s 1 = s 2 ) t 1 + LG _ PMPS , if ( s 1 + 1 = s 2 )
offset的更新过程为 
offset &ap; 2 - s 2 g offset _ t - t 2 ( if s 2 = offset _ s ) 1 + ( offset _ t < < 1 ) | readbit s ( 1 ) - t 2 ( if s 2 = offset _ s + 1 ) 由于rLPS和offsset同时左移,相同的因子 
Figure G82068994150141000D000134
可不计。 
首先左移使得range的最高比特位是’1’,伪代码描述如下: 
while(rLPS<0x100){ 
    rLPS=rLPS<<1; 
    offset=(offset<<1)|read_bits(1); 
完成后更新LG_R1的整数和小数部分: 
s1=0; 
r1=rLPS[7:0]; 
然后左移offset使其最高比特位是’1’: 
offset_s=0; 
while(offset<0x100){ 
    offset_s++; 
    offset=(offset<<1)|read_bits(1); 
完成后更新LG_offset的小数部分: 
offset_t=offset[7:0]; 
(6)概率估计更新,此过程和编码端完全相同。即 
LG _ p MPS &LeftArrow; LG _ p MPS + C ( ifLPSoccurs ) LG _ p MPS = LG _ p MPS - ( LG _ p MPS > > cw ) ( ifMPSoccurs ) - - - ( 14 )
此处C和cw都是预先设置的固定数值。 
本发明还提供了一种在算术解码器,相应的算术解码器的实施例结构如图3所示,具体包括初始化处理单元、符号解码区间更新单元及解码操作单元,其中,符号解码区间更新单元用于在算术解码器进行算术解码过程中,将需要在原数域上进行的算术解码的区间更新计算映射到对数域上直接通过加减法计算实现,并采用近似计算的方法实现原数域和对数域的数据转换,以实现算术解码处理;而且,该符号解码区间更新单元具体可以包括符号判定单元、区间更新单元及概率更新单元;解码操作单元,用于利用符号解码区间更新单元计算确定的区间更新后的结果。 
下面将对该装置包含的各单元分别进行说明: 
(1)初始化处理单元 
该单元完成解码过程的初始化操作,为解码过程使用的变量赋值。具 体的是初始化range、LG_R和LG_offset的小数部分和整数部分。range初始化为HALF-1;offset的初始化过程则是不断读入码流直至读到第一个为’1’的bit,offset初始化为从这个bit起的连续9个btis 
(2)符号判定单元 
该单元包括一次减法计算和一次比较。首先计算MPS的区间范围,公式为(12),然后根据公式(13)的结果判定当前解码输出符号为MPS或者LPS。 
(3)区间更新单元 
如果符号判定单元的结果为MPS,偏移值不必更新,区间值更新为MPS对应的区间,LG_R1=LG_R2;如果符号判定为LPS,则需要进行区间更新和偏移值更新。该单元执行的均为移位操作,其具体的移位方法见上述解码过程(5)中所述。 
(4)概率更新单元 
根据当前解码的符号重新估计MPS的概率,对应的操作如解码过程(6)中所述。 
综上所述,本发明提供的算术编码过程,是根据MPS和LPS选择不同的计算方法。在该过程中,将算术编码中的乘法通过对数域上的加减法和原数域上的移位实现。在每编码一个符号后,对MPS概率值进行更新,该更新过程通过对数域上的加减法实现。因此,本发明不仅保持了算法的精度,同时,还大大简化了算术编码器的运算的复杂度和概率估计的复杂度,从而提供了一种简捷、高效而合理的算术编码方法。 
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。 

Claims (10)

1.一种实现算术编码的方法,其特征在于,包括:
对接收数据进行算术编码;
当需要在原数域进行算术编码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现;
在原数域和对数域进行数据转换过程中,采用近似计算法实现;
根据区间更新后的结果进行算术编码,
其中,所述当需要在原数域进行算术编码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现包括:
在一个编码循环内,在编码大概率符号时在对数域实现区间的更新,在编码小概率符号时,将对数域上的数据转换到原数域,在原数域用减法实现区间的更新。
2.根据权利要求1所述的方法,其特征在于,所述的在原数域和对数域的数据转换过程中,对于从对数域向原数域的数据转换计算,相应的原数域的值X是通过参数B向左或者向右移位A位得到或者通过将参数B除以2的A次幂得到,其中,所述的参数A,B的计算方法为:
将对数域上的值Log_X分解为Log_X=-A+B-1,以计算确定参数A和B,其中,参数A为一个整数,参数B减去1后的绝对值小于1。
3.根据权利要求2所述的方法,其特征在于,对于所述的参数B值的获得方式还包括:
利用一个近似计算的第一修正参数Δ1对所述参数B进行修正,所述的第一修正参数Δ1数值通过查找预先保存的表得到。
4.根据权利要求1所述的方法,其特征在于,所述的在原数域和对数域的数据转换过程中,对于从原数域向对数域的数据转换,原数域值X在对数域上的值Log_X等于原数域值X减去1,而且,在计算所述的Log_X时,利用一个第二参数修正值Δ2对其进行修正,Δ2采用查找预先保存的表得到。
5.根据权利要求1所述的方法,其特征在于,在进行区间的更新计算过程中,所述的方法还包括:
对待编码符号的概率值进行自适应的更新处理,且所述的更新处理在对数域上实现。
6.根据权利要求5所述的方法,其特征在于,在计算概率值在对数域上对应的更新处理时,包括:
通过将更新前的对数域上的概率值加上或者减去一个预定的数值得到新的概率值;
或者,
通过将更新前的对数域上的概率值加上或者减去该数值移位或者除以二的整数次幂得到。
7.一种实现算术编码的装置,其特征在于,包括:
符号编码区间更新单元,用于将需要在原数域上进行的算术编码的区间更新计算映射到对数域上通过加减法计算实现,并采用近似计算的方法实现原数域和对数域的数据转换;
编码操作单元,用于利用符号编码区间更新单元计算确定的区间更新后的结果实现算术编码处理,
其中,所述的符号编码区间更新单元包括:
大概率符号编码区间更新单元,用于在编码大概率符号时选择在对数域实现区间的更新;
小概率符号编码区间更新单元,用于在编码小概率符号时,将对数域上的数据转换到原数域,在原数域用减法实现区间的更新。
8.根据权利要求7所述的装置,其特征在于,所述的小概率符号编码区间更新单元具体包括:
数域转换单元,用于实现针对小概率符号从对数域到原数域的转换处理,相应的原数域的值X是通过对数域的参数B向左或者向右移位A位得到或者通过将参数B除以2的A次幂得到,所述的参数A,B的计算方法为:将对数域上的值Log_X分解为Log_X=-A+B-1,以计算确定参数A和B,其中,参数A为一个整数,参数B减去1后的绝对值小于1;
区间更新单元,用于实现区间的更新处理;
概率更新单元,用于对符号概率进行更新处理;
重正化处理单元,用于对区间更新单元获得的更新后的区间参数进行重正化处理。
9.根据权利要求7或8所述的装置,其特征在于,所述的装置还包括初始化处理单元,用于初始化编码器在编码过程中需要应用的备变量,以提供给符号编码区间更新单元使用。
10.一种实现算术解码的方法,其特征在于,包括:
对接收数据进行算术解码;
当需要在原数域进行算术解码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现;
在原数域和对数域进行数据转换过程中,采用近似计算法实现;
根据区间更新后的结果进行算术解码,
其中,所述当需要在原数域进行算术解码过程的区间更新计算时,将所述区间更新计算映射到对数域上并通过加减法计算实现包括:
根据当前解码符号的概率模型计算大概率符号对应的子区间,判断该子区间是否小于或等于码流指针的偏移值,如果是,则该解码符号为小概率符号,并进行区间及偏移值的更新,否则,该解码符号为大概率符号,且仅进行区间值的更新处理。
CN200680014013.8A 2005-12-05 2006-12-05 一种实现算术编解码的方法及装置 Active CN101167368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200680014013.8A CN101167368B (zh) 2005-12-05 2006-12-05 一种实现算术编解码的方法及装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN200510127532 2005-12-05
CN200510127532.2 2005-12-05
CN200680014013.8A CN101167368B (zh) 2005-12-05 2006-12-05 一种实现算术编解码的方法及装置
PCT/CN2006/003292 WO2007065352A1 (en) 2005-12-05 2006-12-05 Method and apparatus for realizing arithmetic coding/ decoding

Publications (2)

Publication Number Publication Date
CN101167368A CN101167368A (zh) 2008-04-23
CN101167368B true CN101167368B (zh) 2012-03-28

Family

ID=38122481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680014013.8A Active CN101167368B (zh) 2005-12-05 2006-12-05 一种实现算术编解码的方法及装置

Country Status (4)

Country Link
US (1) US7808406B2 (zh)
EP (1) EP1995974B1 (zh)
CN (1) CN101167368B (zh)
WO (1) WO2007065352A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2315358A1 (en) 2009-10-09 2011-04-27 Thomson Licensing Method and device for arithmetic encoding or arithmetic decoding
WO2011048099A1 (en) 2009-10-20 2011-04-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a region-dependent arithmetic coding mapping rule
CN102055483B (zh) * 2009-10-29 2013-05-08 鸿富锦精密工业(深圳)有限公司 熵解码装置
BR122021008583B1 (pt) 2010-01-12 2022-03-22 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Codificador de áudio, decodificador de áudio, método de codificação e informação de áudio, e método de decodificação de uma informação de áudio que utiliza uma tabela hash que descreve tanto valores de estado significativos como limites de intervalo
EP2734942A4 (en) 2011-08-23 2014-06-04 Huawei Tech Co Ltd ESTIMATOR FOR ESTIMATING PROBABILITY DISTRIBUTION OF A QUANTIFICATION INDEX
US9871537B2 (en) 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
TWI517681B (zh) * 2013-06-19 2016-01-11 晨星半導體股份有限公司 應用於數位音視頻編解碼技術標準系統之解碼方法及解碼裝置
WO2015102432A1 (en) * 2014-01-01 2015-07-09 Lg Electronics Inc. Method and apparatus for performing an arithmetic coding for data symbols
US9558109B2 (en) 2014-04-04 2017-01-31 Samsung Israel Research Corporation Method and apparatus for flash memory arithmetic encoding and decoding
CN104394418B (zh) 2014-09-23 2018-06-05 清华大学 一种视频数据编码、解码的方法及装置
CN104579360B (zh) * 2015-02-04 2018-07-31 华为技术有限公司 一种数据处理的方法和设备
CN107801033B (zh) * 2016-09-06 2021-05-11 联发科技股份有限公司 应用于数字音视频编解码技术标准系统的解码方法及解码装置
CN112106363A (zh) * 2018-05-10 2020-12-18 夏普株式会社 在视频编码中用于执行二进制算术编码的系统和方法
CN112689960A (zh) * 2018-07-06 2021-04-20 弗劳恩霍夫应用研究促进协会 算术编码器、算术解码器、视频编码器、视频解码器、编码方法、解码方法和计算机程序
CN108989825B (zh) * 2018-07-18 2021-05-07 北京奇艺世纪科技有限公司 一种算术编码方法、装置及电子设备
CN113905233B (zh) * 2021-09-30 2024-04-30 安谋科技(中国)有限公司 基于音频视频编码标准的熵解码方法、可读介质及其电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049630A (en) * 1996-03-19 2000-04-11 America Online, Inc. Data compression using adaptive bit allocation and hybrid lossless entropy encoding
CN1696975A (zh) * 2004-05-14 2005-11-16 蒲恬 一种数字图像增强方法
CN1703089A (zh) * 2005-06-09 2005-11-30 清华大学 一种数字信号的二值算术编码方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4286256A (en) * 1979-11-28 1981-08-25 International Business Machines Corporation Method and means for arithmetic coding utilizing a reduced number of operations
US4933883A (en) * 1985-12-04 1990-06-12 International Business Machines Corporation Probability adaptation for arithmetic coders
US4791403A (en) * 1985-12-04 1988-12-13 International Business Machines Corporation Log encoder/decorder system
US4652856A (en) * 1986-02-04 1987-03-24 International Business Machines Corporation Multiplication-free multi-alphabet arithmetic code
IL86993A (en) * 1988-07-05 1991-07-18 Ibm Israel Method of generating a compressed representation of a source data string
EP1062636A1 (en) * 1998-03-13 2000-12-27 Applied Science Fiction, Inc. Image defect correction method
US6289367B1 (en) * 1998-11-16 2001-09-11 Texas Instruments Incorporated Digital signal processing circuits, systems, and method implementing approximations for logarithm and inverse logarithm
CN1561056A (zh) * 2004-02-27 2005-01-05 清华大学 多电平调制方式数字化解调的比特流软信息提取方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049630A (en) * 1996-03-19 2000-04-11 America Online, Inc. Data compression using adaptive bit allocation and hybrid lossless entropy encoding
CN1696975A (zh) * 2004-05-14 2005-11-16 蒲恬 一种数字图像增强方法
CN1703089A (zh) * 2005-06-09 2005-11-30 清华大学 一种数字信号的二值算术编码方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘宁芳等.Turbo码MAP译码算法及其对数域中的改进算法.《电讯技术》.1999,(第3期),13-17. *

Also Published As

Publication number Publication date
US20080240597A1 (en) 2008-10-02
CN101167368A (zh) 2008-04-23
EP1995974B1 (en) 2015-05-20
EP1995974A4 (en) 2011-05-18
US7808406B2 (en) 2010-10-05
WO2007065352A1 (en) 2007-06-14
EP1995974A1 (en) 2008-11-26

Similar Documents

Publication Publication Date Title
CN101167368B (zh) 一种实现算术编解码的方法及装置
JP4981174B2 (ja) 確率テーブルの動的な計算によるシンボルプレーン符号化/復号化
US5546080A (en) Order-preserving, fast-decoding arithmetic coding arithmetic coding and compression method and apparatus
JP5736032B2 (ja) 算術符号化のための適応型2値化
CN1983334A (zh) 一种实现算术编解码的方法及装置
JP6681383B2 (ja) エンコーダ、デコーダ、および方法
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
JP2008118307A (ja) 符号化装置及びその制御方法
WO1998033322A1 (fr) Procede de codage et de decodage, et dispositif de codage et de decodage
JP4179640B2 (ja) 情報信号の算術符号化及び復号
TWI416959B (zh) 編碼視訊壓縮的方法與系統
KR20120096541A (ko) 디지털 신호의 압축 또는 압축해제를 위한 방법, 시스템 및 장치
CN106537914B (zh) 通过限制的进位运算来执行算术编译的方法和设备
KR20040075944A (ko) 디지털 정보신호의 데이터 압축 및 압축해제
Jou et al. A fast and efficient lossless data-compression method
JP3620506B2 (ja) Mq−coder方式の算術符号化/復号装置及び再正規化方法
KR100462789B1 (ko) 이진 산술 부호화를 이용한 다중 부호 데이터 압축 방법및 장치
JP2794842B2 (ja) 符号化方法とその復号化方法
JP2015511443A5 (zh)
CN108282662B (zh) 一种连续色调静态图像压缩的优化方法及装置
JP4936574B2 (ja) 符号化装置及びその制御方法
Tilki et al. Image data compression using multiple bases representation
JPH0645945A (ja) 算術符号化方法及びその復号化方法
JP2006060553A (ja) 量子化器及び逆量子化器
KR100512174B1 (ko) 갈로아 필드에서 파워 형태로 표현된 원소들을 다항식의형태로 변환하는 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant