书签 分享 收藏 举报 版权申诉 / 20

无乘法的算术编码.pdf

  • 上传人:1**
  • 文档编号:1055279
  • 上传时间:2018-03-28
  • 格式:PDF
  • 页数:20
  • 大小:732.96KB
  • 摘要
    申请专利号:

    CN98124330.4

    申请日:

    1998.09.30

    公开号:

    CN1249473A

    公开日:

    2000.04.05

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回|||实质审查的生效申请日:1998.9.30|||公开

    IPC分类号:

    G06F17/00

    主分类号:

    G06F17/00

    申请人:

    朗迅科技公司;

    发明人:

    赵风光(音译)

    地址:

    美国新泽西

    优先权:

    专利代理机构:

    中国国际贸易促进委员会专利商标事务所

    代理人:

    于静

    PDF完整版下载: PDF下载
    内容摘要

    用于执行编码和解码的一种无乘法算术编码技术。该编码技术包括从编码的流中接收码元和两个频率计数,找到一个最可能的码元和一个最不可能的码元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特流并且用于近似该编码的字符串中的每个码元的上下文概率,根据该上下文概率编码在该编码字符串中的下一个码元。

    权利要求书

    1: 一种产生编码的比特流的无乘法算术编码方法,包括以下步骤: 初始化第一寄存器为1,并且使第二寄存器是一个任意数; 对于一个输入字符串中的每个码元,重复执行下述步骤A-E: A·接收代表概率为0的一个小数值的第一频率计数,代表概率为 1的一个小数值的第二频率计数,以及该码元; B·如果第一频率计数大于第二频率计数,那么,交换第一频率计 数的值和第二频率计数的值并且设置该编码的码元的值为它的逻辑 补码; C·当第一寄存器的值小于或等于第一频率计数时,重复执行下述 步骤C 1 -C3: C 1 、输出第二寄存器的最高有效位, C
    2: 左移第一寄存器的值和第二寄存器的值,并且 C
    3: 如果第一寄存的值大于第二寄存器的值的二进制补码,那么, 设置第一寄存器值为第二寄存器的值的二进制补码加1; D·如果该码元等于零,则设置第一寄存器的值为第一频率计数, 否则从第一寄存器的值中减去第一频率计数并将第一频率计数加到 第二寄存器的值中;和 E·选择输入字符串中的下一个码元;并且 输出第二寄存器的值作为编码的比特流。 2、一种用于执行无乘法算术编码以便产生一个编码的比特流的处 理器,包括: 一个初始化处理单元,用于初始化第一寄存器为1,并使第二寄存 器为一个任意数; 一个用于执行于下述操作的处理单元,对于输入字符串中的每个码 元,重复执行下列操作A-E: A·接收代表概率为0的一个小数值的第一频率计数,代表概率为 1的一个小数值的第二频率计数,以及该码元; B·如果第一频率计数大于第二频率计数,那么,交换第一频率计 数的值和第二频率计数的值并且设置该编码的码元的值为它的逻辑补 码; C·当第一寄存器的值小于或等于第一频率计数时,重复执行下述 步骤C 1 -C3: C 1 、输出第二寄存器的最高有效位, C2、左移第一寄存器的值和第二寄存器的值,并且 C3、如果第一寄存器的值大于第二寄存器的值的二进制补码,那 么,设置第一寄存器的值为第二寄存器的值的二进制补码加1; D·如果该码元等于零,则设置第一寄存器的值为第一频率计数, 否则从第一寄存器的值中减去第一频率计数并将第一频率计数加到 第二寄存器的值中;和 E·选择输入字符串中的下一个码元;和 用于输出第二寄存器的值作为编码的比特流的一个输出处理单元。 3、一种实现在计算机可读的介质上用于执行无乘法算术编码以产 生一个编码的比特流的计算机程序,包括: 一个初始化源代码段,用于初始化第一寄存器为1并且使第二寄存 器的为一个任意数; 一个处理源代码段,用于执行下述操作,对于输入字符串中的每个 码元,重复执行下述操作A-E: A·接收代表概率为0的一个小数值的第一频率计数,代表概率为 1的一个小数值的第二频率计数,以及该码元; B·如果第一频率计数大于第二频率计数,那么交换第一频率计数 的值和第二频率计数的值并且设置该编码的码元的值为它的逻辑补 码; C·当第一寄存器的值小于或等于第一频率计数时,重复执行下述 步骤C 1 -C3: C 1 、输出第二寄存器的最高有效位, C2、左移第一寄存器的值和第二寄存器的值,并且 C3、如果第一寄存器的值大于第二寄存器的值的二进制补码,那 么设置第一寄存器的值为第二寄存器的二进制补码加1; D·如果该码元等于零,则设置第一寄存器的值为第一频率计数, 否则从第一寄存器的值中减去第一频率计数并将和一频率计数加到 第二寄存器的值中;和 E·选择输入字符串中的下一个码元;和 一个输出源代码段,用于输出第二寄存器的值作为编码的比特流。
    4: 一种用于执行无乘法算术编码,以产生一个编码的比特流的计 算机信号,包括: 一个初始化信号段,用于初始化第一寄存器为1并且使第二寄存器 为一个任意数; 一个处理信号段,用于执行下列操作,对输入字符串中的每个码 元,重复执行下列操作A-E: A·接收代表概率为0的一个小数值的第一频率计数,代表概率为 1的一个小数值的第二频率计数,以及该码元; B·如果第一频率计数大于第二频率计数,那么交换第一频率计数 的值和第二频率计数的值并且设置该编码的码元的值为它的逻辑补 码; C·当第一寄存器的值小于或等于第一频率计数时,重复执行下述 步骤C 1 -C3: C 1 、输出第二寄存器的最高有效位, C2、左移第一寄存器的值和第二寄存器的值,并且 C3、如果第一寄存器的值大于第二寄存器的值的二进制补码,那 么设置第一寄存器的值为第二寄存器的二进制补码加1; D·如果该码元等于零,则设置第一寄存器的值为第一频率计数, 否则从第一寄存器中减去第一频率计数并将和一频率计数加到第二寄 存器的值中;和 E·选择输入字符串中的下一个码元;和 一个输出信号段,用于输出第二寄存器的值作为编码的比特流。
    5: 权利要求4的计算机信号,其中所述的计算机信号实现在一个 载波上:
    6: 一种无乘法算术编码以产生一个编码的比特流的方法,包括步 骤: 从一个编码的字符串中接收一个码元和两个频率计数; 找到一个最可能的码元和一个最不可能的码元; 使第一寄存器进行数值移位操作,用于输出比特到编码的比特流并 且用于近似该编码的字符串中的每个码元的上上文概率;和 根据上下文概率,编码在编码字符串中的下一个码元。
    7: 权利要求6的方法,其中不需要数值或比特填充步骤。
    8: 权利要求6的方法,其中所述的编码步骤在所述的进行步骤之 后执行。
    9: 一种用于执行无乘法算术编码以产生一个编码的比特流的处理 器,包括: 一个接收单元,用于从一个编码的字符串中接收一个码元和两个频 率计数;和一个处理单元,用于找出一个最可能的码元和一个最不可能 的码元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特 流和用于近似编码字符串中的每个码元的上下文概率并且根据该上下 文概率编码在编码的字符串中的下一个码元。
    10: 权利要求9的处理器,其中不需要数值或比特填充操作。
    11: 权利要求9的处理器,其中在数值移位操作以后所述处理器执 行编码。
    12: 一种实现在计算机可读的介质上,用于执行无乘法算术编码以 产生一个编码的比特流的计算机程序,包括: 一个接收源程序代码段,用于从一个编码的字符串中接收一个码元 和两个频率计数;和 一个处理源程序代码段,用于找出一个最可能的码元和一个最不可 能的码元,使第一寄存器进行数值移位操作,用于输出比特到编码的比 特流并且用于近似在编码的字符串中的每个码元的上下文概率并且根 据该上下文概率编码在编码的字符串中的下一个码元。
    13: 权利要求12的计算机程序,其中不需要数值或比特填充。
    14: 权利要求12的计算机程序,其中所述处理源程序代码段在数 值移位操作以后执行编码。
    15: 一种用于执行无乘法算术编码以产生一个编码的比特流的计 算机信号,包括: 一个接收信号段,用于从一个编码的字符串中接收一个码元和两个 频率计数;和 一个处理信号段,用于找出一个最可能的码元和一个最不可能的码 元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特流并 且用于近似在编码的字符串中的每个码元的上下文概率并且根据该上 下文概率编码在编码的字符串中的下一个码元。
    16: 权利要求15的计算机信号,其中不需要数值或比特填充信号 段。
    17: 权利要求15的计算机信号,其中所述处理源代码段在数值移 位操作以后执行编码。
    18: 权利要求15的计算机信号,所述的计算机信号实现在一个载 波上。
    19: 一种产生解码的字符串的无乘法算术编码的方法,包括步骤: 初始化第一寄存器为1,并且使第二寄存器是一个任意数; 接收代表概率为0的一个小数值的第一频率计数,代表概率为1的 一个小数值的第二频率计数,以及一个输出比特; 如果第一频率计数大于第二频率计数,那么,交换第一频率计数和 第二频率计数的值并用设置输出比特的值为1,否则设置输出比特的值 为0; 当第一寄存器的值小于或等于第一频率计数时,重复执行下述步骤 A-C: A·左移第一寄存器的值,第二寄存器的值,和包括解码字符串的 第三寄存器的值, B·提供来自比特流的下一比特到第三寄存器,和 C·如果第一寄存器的值大于第二寄存器的值的二进制补码,那么 设置第一寄存器的值为第二寄存器的二进制补码加1;和 如果第一频率计数小于第三寄存器的值,则设置第一寄存器的值为 第一频率计数并且输出该输出比特作为解码字符串的下一比特,否则从 第一寄存器的值中减去第一频率计数并且将第一频率计数加到第二寄 存器的值并且输出该输出比特的逻辑补码作为解码字符串的下一比 特。
    20: 一种用于执行无乘法算术编码以便产生一个解码的字符串的处 理器,包括: 一个初始化处理单元,用于初始化第一寄存器为1并且使第二寄存 器为一个任意数; 一个输入处理单元,用于接收表示概率为0的一个小数值的第一频 率计数,表示概率为1的一个小数值的第二频率计数,和一个输出比 特;和 一个处理单元,用于执行下列操作,如果第一频率计数大于第二频 率计数,那么交换第一频率计数的值和第二频率计数的值并且设置输出 比特的值为1,否则设置输出比特的值为0; 当第一寄存器的值小于或等于第一频率计数时,重复执行下述步骤 A-C: A·左移第一寄存器的值,第二寄存器的值,和包括解码字符串的 三寄存器的值, B·提供来自比特流的下一比特到第三寄存器,和 C如果第一寄存器的值大于第二寄存器的值的二进制补码,那么 设置第一寄存器的值为第二寄存器的二进制补码加1; 如果第一频率计数小于第三寄存器的值,则设置第一寄存器的值为 第一频率计数并且输出该输出比特作为解码字符串的下一比特,否则从 第一寄存器的值中减去第一频率计数并且将第一频率计数加到第二寄 存器的值并且输出该输出比特的逻辑补码作为解码字符串的下一比 特。
    21: 一种实现在计算机可读的介质上用于执行无乘法算术编码以产 生一个解码的字符串的计算机程序,包括 一个初始化源代码段,用于初始化第一寄存器为1并且使第二寄存 器为一个任意数; 一个输入源代码段,用于接收表示概率为0的一个小数值的第一频 率计数,表示概率为1的一个小数值的第二频率计数,和一个输出比 特;和 一个处理源代码段,用于执行下列操作, 如果第一频率计数大于第二频率计数,那么交换第一频率计数值和 第二频率计数的值并且设置输出比特的值为1,否则设置输出比特的值 为0; 当第一寄存器的值小于或等于第一频率计数时,重复执行下述步骤 A-C: A·左移第一寄存器的值,第二寄存器的值,和包括解码字符串的 三寄存器的值, B·提供来自比特流的下一比特到第三寄存器,和 C·如果第一寄存器的值大于第二寄存器的值的二进制补码,那么 设置第一寄存器的值为第二寄存器的二进制补码加1;和 如果第一频率计数小于第三寄存器的值,则设置第一寄存器的值为 第一频率计数并且输出该输出比特作为解码字符串的下一比特,否则从 第一寄存器的值中减去第一频率计数并且将第一频率计数加到第二寄 存器的值并且输出该输出比特的逻辑补码作为解码字符串的下一比 特。
    22: 一种用于执行无乘法算术编码以产生一个解码的字符串的计 算机信号,包括: 一个初始化信号段,用于初始化第一寄存器为1并且使第二寄存 器为一个任意数; 一个接收信号段,用于接收表示概率为0的一个小数值的第一频率 计数,表示概率为1的一个小数值的第二频率计数,和一个输出比特; 和 一个处理信号段,用于执行下列操作, 如果第一频率计数大于第二频率计数,那么,交换第一频率计数的 值和第二频率计数的值并用设置输出比特的值为1,否则设置输出比特 的值为0; 当第一寄存器的值小于或等于第一频率计数时,重复执行下述步骤 A-C: A·左移第一寄存器的值,第二寄存器的值,和包括解码字符串的 三寄存器的值, B提供来自比特流的下一比特到第三寄存器,和 C如果第一寄存器的值大于第二寄存器的值的二进制补码,那么 设置第一寄存器的值为第二寄存器的二进制补码加1;并且 如果第一频率计数小于第三寄存器的值,则设置第一寄存器的值为 第一频率计数并且输出该输出比特作为解码字符串的下一比特,否则从 第一寄存器的值中减去第一频率计数并且将第一频率计数加到第二寄 存器的值并且输出该输出比特的逻辑补码作为解码字符串的下一比 特。
    23: 权利要求22的计算机信号,其中所述的计算机信号实现在一 个载波上。
    24: 一种无乘法算术编码以产生解码的字符串的方法,包括步骤: 从一个解码的字符串中接收一个码元和两个频率计数; 找到一个最可能的码元和一个最不可能的码元; 使第一寄存器进行数值移位操作,用于输出比特到解码的比特流并 且用于近似该解码的字符串中的每个码元的上下文概率;和 根据上下文概率,解码在解码字符串中的下一个码元。
    25: 一种用于执行无乘法算术编码以产生一个解码的字符串的处理 器,包括: 一个接收单元,用于从一个编码的字符串中接收一个码元和两个频 率计数;和 一个处理单元,用于找出一个最可能的码元和一个最不可能的码 元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特流并 且用于近似在编码的字符串中的每个码元的上下文概率并且根据该上 下文概率编码的字符串中的下一个码元。
    26: 一个实现在计算机可读者的介质上,用于执行无乘法算术编码 以产生一个解码的字符串的计算机程序,包括: 一个接收源代码段,用于从一个编码的字符串中接收一个码元和两 个频率计数;和 一个处理源代码段,用于找出一个最可能的码元和一个最不可能的 码元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特流 并且用于近似在编码的字符串中的每个码元的上下文概率并且根据该 上下文概率编码在编码的字符串中的下一个码元。
    27: 一种用于执行无乘法算信编码,以产生一个解码的字符串的计 算机信号,包括: 一个接收信号段,用于从一个编码的字符串中接收一个码元和两 个频率计数;和 一个处理信号段,用于找出一个最可能的码元和一个最好不可能的 码元,使第一寄存器进行数值移位操作,用于输出比特到编码的比特流 并且用于近似在编码的字符串中的每个码元的上下文概率并且根据该 上下文概率编码在编码的字符串中的下一个码元。
    28: 权利要求27的计算机信号,其中所述的计算机信号实现在一 个载波上。

    说明书


    无乘法的算术编码

        本发明涉及一种算术编码技术,并具体涉及具有低的计算复杂度和低成本的硬件配置的一种算术编码技术。

        经常使用将数据压缩为较少比特,以便实现期望的传输数据速率或者在有限的存储器空间存储数据。数据压缩后的一些时间,通过解压原始压缩的数据恢复原始的数据。

        算术编码是实现数据压缩和解压的一种技术。在算术编码中,编码另一次判定之后的一个判定,以便确定沿着编号行的连续较小的,较少包括的间隔。算术编码提供每个判定具有多个可能的排它的结果或事件。每个输出或事件由一个码元表示。

        根据现有技术算术编码技术,概率行具有沿所定义地一个当前间隔。第一当前间隔是0到1。当前间隔被分成段,其中每段对应下一个判定的一个可能的结果。此外对于每个判定只有两个可能的结果,当前的间隔被分为两段。每一段的长度是基于它的各自相关的概率。各自的概率可以保持固定或者适应输入的判定数据。

        算术编码的效力在于它们执行的压缩并且算术编码的灵活性在于它们同样容易地编码由静态和非静态源建模的字符串的能力。算术编码允许在无需字母扩展的情况下编码二进制字符串,并且还利用从包含多于两个字符的字母表中抽出的码元编码字符串。

        算术编码通过乘法P(S)*P(i/s)修改一个目前处理的源字符串S的概率P(s),此处P(i/s)是码元i给出S的条件概率。增加概率所需的乘法相对昂贵并且慢,即使在概率由最多具有固定个数的有效数字的二进制数表示的情况下。

        美国专利4467317实现了递归技术,它通过利用二分之一整数次方,近似最不可能信号(LPS)的概率,简化了二进制码元流的编码操作。但是,这种技术不能容易地推广到非二进制的字母表,因为n进制字母表码元概率不能准确地近似为二分之一幂次方。这种限制就当今处理器在数据结构和操作的并行增长而言是严重的。另外,递归技术依赖能够计算和提供源统计特性的复杂的模型单元的存在。源统计特性的计算的绝对是对模型单元的偏离数计算操作的缺陷,这种操作增加了整体数据压缩问题的复杂性。

        美国专利4652856公开了一种算术编码技术,它能够编码多个字符字母表,没有乘法或除法以便产生一个二进制代码流,响应简化的数据源统计特性,该特性保持代码流和内部代码变量二者同时修改的非常希望的特性。美国专利4652856是根据以二进制形式接受码元出现计算的编码算法,使那些计算进行简单的数值移动操作以便近似码元流中的每个码元的上下文概率,增加编码的流,并且然后同时定位代码流的W个最低有效位并调整下一个编码子间隔为内部编码变量行列式,响应一个移动的出现计数。

        算术编码是一种统计压缩方法并且因此利用估计模型源中的每个可能码元的概率的一种模型。该模型可以是固定的,半固定的或自适应的。固定的模型具有分配概率P1,P2,…,Pn、此处1,2,…n是模型源中的码元。

        算术编码根据间隔变换工作,它将一个间隔[lk,hk]变换为另一个间隔[lk+1,hk+1],假设码元i被编码,其中lk+1=lk+rkΣj=0i-1Pj----(1)]]>hk+1=lk+rkΣj=0iPj----(2)]]>

            rk+1=hk+1-lk+1            (3)

        rk表示间隔[lk,hk)的范围。初始,编码器以单位间隔[0,1)开始。这意味l0=0,h0=1,r0=1。

        算术编码不能在有限精度的计算机上实现,因为在等式(1)-(3)中涉及的所有操作是浮点运算。然而,结果是使用标准16位和32位整数操作可以最好地实现算术编码,浮点运算既不需要也没有帮助。所需要的是增量传输方案。

        作为一个简单的例子,考虑n=2的情况,即采用0序Markov模型的二进制源以便估计P0和P1的概率。在这个例子中,等式(1),(2)和(3)可以简化为

        rk+1=rkP0,对于i=0     (4)

        lk+1=lk+rkP0,rk+1=rkP1,对于i=1    (5)其中i是目前编码的码元。

        关于等式(4)和(5)的实际实现,以频率计数C0和C1替换P0和P1,C0和C1可以在编码过程中自适应调节。

        P0=C0/(C0+C1),P1=C1/(C0+C1)    (6)

        在算术编码的常规设计中,编码器使用大小为16比特的两个寄存器,L和R,以便分别存储lk和rK的小数值。组合(4),(5)和(6)产生L:=L,R:=RC0(C0+C1),i=0        (7)L:=L+RC0/(C0+C1),R:=RC1/(C0+C1),i=1        (8)

        此处涉及m比特整数操作,并且使用m比特整数舍入成整数(此处m是一个典型的硬件寄存器大小,例如8,16或是32)。现在可用的大多数算法是根据等式(7)和(8)或它们的变化。注意等式(7)和(8)包括整数乘法和除法,并且因此不适合于硬件设计,例如数字信号处理器(DSP)和灵巧卡实现,此处没有除法指令是可用的。

        本发明提供用于比特级算信术编码的一种算术编码实现。本发明执行算术编码,无需乘法和除法。特别是,本发明执行的编码和解码接收频率计数,也就是,表示概率为0的小数值的一个频率计数,表示概率为1的小数值的一个频率计数和目前编码的码元,以便编/解码随后的码元。

        本发明还消除了对常规进位技术例如比特填充的需求,幅值确定式是不必要的并且在编码比特之前调整寄存器的值,而在需要幅值确定的常规设计中,在调整寄存器的值之前编码该比特。

        在本发明中,两个寄存器的初始值被置为与2m-1或2m-1和0对照的1和随机数。因此,输出流中的第一字可以用于指定实时传输应用的同步字。

        本发明还提供了一种低计算复杂度和低成本硬件配置,然而仍然获得了与通过基于乘法技术获得的压缩比率可比的压缩比率。

        图1(a)和图1(b)说明在一个实施例中的本发明的方框图;

        图2说明在本发明的一个实施例中编码的流程图;和

        图3说明在本发明的一个实施例中解码的流程图。

        本发明将参照图1-图3全面描述。图1(a)说明在本发明的一个实施例中的硬件图。通过图1(a)所示的系统1执行无乘法的算术编码。系统1至少包括一个处理器10和一个制造项目12。制成品12还包括一个存储介质14和一个可执行的计算机程序16。可执行的计算机程序16包括执行无乘法的算术编码的指令。在另一个实施例中,如图1(b)所示,提供计算机可执行的程序16作为外部提供的传播信号18。

        编码

        首先,将叙述编码操作。初始地,两个寄存器R和L分别置为1和一个任意数。处理器10具有三个输入,表示概率为0的一个小数值的一个第一频率计数C0,表示概率为1的一个小数值的一个第二频率计数C1和一个目前的编码码元i(可以是0或1)。

        由处理器10执行的编码步骤可以总结为伪码如下:

        1  IfC0>C1,则交换C0和C1的值,并且令i=!i。

        2  While R≤C1时,do。

        输出最高有效位L

        L=L<<=1,  R=R<<=1

        If  R>~L,   then  R=~L+1

        3 If i=0,then R=C0;else R=R-C0,L=L+C0。输出L

        注意到在上面的伪码中采用某些C语言注释。!表法逻辑补码,~表示二进制补码,并且<<=表示算术左移。从上面的描述中,本发明工作在下面假设:对于每次迭代,

        R≈C0+C1;于是等式(7)和(8)被简化为:

        L:=L,R:=Co,i=0          (9)

        L:=L+C0,R:=R-C0,i=1  (10)

        在本发明中,分别初始化两个寄存器R和L为1和一个任意数,让输出流中的第一字指定用于实时传输应用的一个同步字。另外,步骤1一般称作一个交换步骤,步骤2称调整步骤,而步骤3称作编码步骤。在常规的无乘法算术编码技术中需要的量值步骤在本发明中不需要。在本发明中,调整步骤在编码步骤前执行。在调整步骤中,当寄存器R的值小于或等于第二频率计数的值,执行“While”循环,并且如果寄存器R的值大于寄存器R的值的二进制补码设置寄存器R的值等于寄存器L的值的二进制补码加1,这样就不需要随后的比特填充步骤。

        总而言之,本发明的无乘法算术编码方法通过从一个编码字符串和两个频率计数中接收一个码元,找到一个最可能的码元和一个最不可能的码元;第一寄存器须经幅值移位操作,用于输出比特到编码的比特流并且用于近似在编码的字符串中的每个码元的一个上下文概率,并且根据该上下文概率在该编码的字符串中编码下一个码元。

        图2包括在编码处理20中由处理器10执行的详细步骤。特别是,在步骤22,分别初始化寄存器R和L为1和同步字。在这个例子中,在步骤24编码的比特流,11011100i与寄存器R和L的初始值一起输入到0阶Markov模型以便产生频率计数C0和C1。在步骤26,比较C0和C1并且如果C0大于C1,则交换C0和C1并且在步骤28设置i为它的逻辑补码。但是,如果C0不大于C1,则处理进入步骤30,此处确定寄存器R中的值是否大于或等于C1。如果是大于等于C1,则处理进入步骤32,此处输出L寄存器的最高有效位,L和R被算术左移,并且如果R大于L的二进制补码,那么R被置为L的二进制补码加1,并且处理返回步骤30。如果寄存器R的值不大于等于C1,那么处理继续到步骤34。在步骤34,确定i是否等于0。如果i等于0,那么在步骤36寄存器R的值被置为等于C0并且如果i不等于0,那么在步骤38寄存器R被置为R的以前值减C0并且L被置为L的以前值加C0,因此编码比特流中的下一个比特。然后通过在步骤24输入下一比特到Markov模型修改,重复该处理。继续该处理直到输入比特流的所有比特被编码。然后,输出寄存器L的值作为编码的比特流。

        尽管使用零阶模型描述了本发明,但是对本领域的普通技术人公知的任意一种模型都可以使用。

        解码

        为解码,再次使R和L寄存器初始化并且使用第三寄存器V以便存储解码比特流的部分,并且i指示输出比特。如果S是解码比特流,由上述的编码算法产生,则由处理器10执行的解码步骤以伪码归纳如下:1·If C0>C1,交换C0和C1的值并且令i=1;elsei=0。2·While R≤C1,do

        L=L<<1,R=R<<1,V=V<<1

        V=V|来自S的下一比特

        If R>~L,then R=~L+13·If  C0<V,then R=C0;else R=R-C0,L=L+C0,and i=!i

        总之,产生解码的字符串的无乘法算术编码方法从解码的流和两个频率计数中接收比特,找出一个最可能的码元和一个最不可能的码元,使第一寄存器经受幅值移位操作,用于从解码的比特流中输入比特并且用于近似在解码的字符串中的每个码元的上下文概率并且根据该上下文概率解码下一个码元到解码的流中。

        图3包括由解码处理40中的处理器10执行的具体步骤。特别是,在步骤42,初始化寄存器R,L和V。在步骤44,输入寄存器R,L和V的值和解码的字符串到0-Markov模型以便产生频率计数C0和C1。在步骤46,比较C0和C1并且如果C0大于C1,则在步骤48交换C0和C1并且设置i为它的逻辑补码。但是,如果C0不大于C1,则处理进入步骤50,此处确定寄存器R的值是否大于或等于C1。如果是,处理进入步骤52,此处将寄存器R,L和V都算术左移,来自解码比特流S的下个比特加到寄存器V,并且如果R大于L的二进制补码,则R被置为L的二进制补码加1。然后处理返回步骤50。

        如果寄存器R的值不大于或等于C1,由处理继续到步骤54。在步骤54,确定C0是否小于V。如果C0小于V,那么在步骤56设置寄存器R的值等于C0并且如果C0不小于V,那么,在步骤58寄存器R被置为R的以前值减C0,L被置为L的以前值加C0,并且i被置为它的逻辑补码,因此解码比特流S中的下一比特。然后通过在步骤44输入下一比特到Markov模型修改,处理重复。继续该处理,直到解码该解码的比特流S所有比特。

        再次,尽管只使用0阶Markov模型,但是对于本领域普通技术人员公知的任意模型,都可以使用。

        下面阐述的表1,说明了在执行乘法的一个编码器和在美国专利4652856中公开的现有技术和本发明的无乘法算术编码之间的用于各种类型文件的压缩比率比较。

        如表1所示的,本发明实现了优于现有技术的各种类型压缩比率的无乘法算术技术。表1还说明由于每个无乘法设计使用一些近似值,而不是实际可能值,所以乘法编码器通常提供最好的压缩,所以在使用无乘法算术技术的压缩比率上通常会有某些退化。但是,如表1所示的本发明,提供低的计算复杂度和低的成本硬件配置,还实现了可与基于乘法的技术相比的压缩比率。

                                表1  源文件    大小乘法编码器本发明美国专利4,652,856 C源程序  27620  37.5%  38.4%    39.9%中文文件  72596  43.3%  43.8%    44.9%标度图像  262330  67.9%  68.8%    69.6%执行文件  54645  74.3%  74.6%    75.6%混和数据  417192  67.2%  68.0%    68.9%

    关 键  词:
    乘法 算术 编码
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:无乘法的算术编码.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1055279.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1