技术领域
本专利申请涉及数据压缩。
背景技术
众所周知,用于存储或传输的有效的数据编码仍旧是其中寻求新 方法的领域。例如,如果数据可以诸如通过压缩而被更有效地编码, 则用来存储要被编码的数据的存储器的量可以减小。同样地,在通信 系统中,如果数据可以被有效地编码,则例如,对于给定带宽的通信 信道,在给定的时间单位内可以潜在地发送更多的信息。这些目标和 许多其它目标可以是用于有效的数据压缩的方法的目的。
附图说明
主题在说明书的结论部分中被具体地指出,但请求不同保护。然 而,请求保护的主题,包括它的组织和操作方法以及它的目的、特征 和优点,如果结合附图阅读,可以通过参考以下的详细说明而被最好 地理解,其中:
图1是图示用于数据编码的技术的一个实施例的示意图。
具体实施方式
在以下的详细说明中,许多具体细节被阐述,以便提供对于请求 保护的主题的透彻的了解。然而,本领域技术人员将会看到,请求保 护的主题可被实践而不用这些具体细节。在其它事例中,熟知的方法、 过程、部件和/或电路没有进行详细描述,以免遮蔽请求保护的主题。
随后的详细说明的某些部分通过算法和/或对于数据比特的操作 的符号表示和/或被存储在计算系统内,诸如在计算机和/或计算系统 存储器内的二进制数字信号被提供。这些算术描述和/或表示是由数据 处理领域技术人员使用来把他们的工作输送给本领域其它技术人员 的技术。算法在这里和通常被认为是自身一致的运算序列和/或导致想 要的结果的类似处理。运算和/或处理可包括物理量的物理操作。典型 地,虽然不一定必须,这些量可以取电信号和/或磁信号的形式,这些 信号能够被存储、传送、组合、比较和/或操控。把这些信号称为比特、 数据、数值、单元、符号、字符、术语、编号(number)、数字(numeral) 等等有时证明是方便的,特别是为了通常的用法。然而,应当看到, 所有的这些和类似的术语是与适当的物理量相关联的,以及仅仅是方 便的标签。除非专门阐述,正如从以下讨论看到的那样,将会意识到, 在本说明书讨论中,利用诸如“处理”、“计算”、“算出”、“确定”等等 的术语涉及到诸如计算机或类似的电子计算设备那样的计算平台的 动作和/或处理,在计算平台的处理器、存储器、寄存器和/或其它信 息存储装置、传输和/或显示设备内操控和/或变换被表示为物理的电 子的和/或磁的量和/或其它物理量的数据。
正如以前提到的那样,请求保护的主题的实施例的一个潜在的, 但不是排他的,应用可以属于低比特率音频和/或视频编码的领域。在 这个具体的领域中例如典型地希望相当有效地压缩数据。在这个和类 似的领域中,也希望,如以前提出的那样,在通信信道上,诸如在可 能受到对于可被发送的比特数目或对于比特传输速率的限制的信道 上发送信息。所以,相当有效的编码会导致例如每单位时间发送更多 的信息。另一个应用,也正如以前提出的那样,可以是在电子设备上 的数据压缩,诸如,例如用于数据存储。这例如可以减小所利用的存 储器的量,或作为另一个例子,例如通过减小附着到电子邮件的附件 的大小有助于实行数据传输。当然,请求保护的主题不限于这些简单 的例子。提供这些例子仅仅是为了说明。
Golomb编码是熟知的,它在Golomb,SW:“Run-length encoding”, IEEE Trans.Inf.Theory,1966,7,(12),pp.399-401中被描述。Golomb 码仅仅是数据编码的一个例子。所以,虽然后面描述的许多例子通过 Golomb编码被提供,但应当看到,请求保护的主题不打算把范围仅 仅限于Golomb码(GC)。可以利用编码数据的其它方法,并且提供满 意的结果。无论如何,继续把Golomb编码作为一个例子,GC常常 被使用于行程长度编码,但在原理上,它们是通用码,可被使用来编 码任何码元或码元序列,作为整数或整数的序列。在一个可能的实施 例中,独特的整数可被分配给码元,然后码元可以通过例如Golomb 编码相应的数而被编码。GC具有优点:数字的范围不需要事先知道 或受到约束。
在一个具体的例子中,数字I,模K的Golomb码(其中K在本 例中是‘基’)可通过(S,E,R)被如下定义:
S=数字I的正负号,如果合适的话(如果这些数是全部正的或全 部负的,它可以省略)。
M=I的幅度
E=指数fix(logk(M)),其中fix()在这里表示截断运算,也就是, 舍入到下一个最低的整数。
R=M-KE,在这里被称为“剩余数(residual)”。
所以,I的幅度可以通过M=KE+R而得到。
然而,应当指出,logk(0)可以提供数学诡辩,原因在于K的任何 次方不应当给出零。可被利用来解决这一点的一个方法包括把1加到 所有的非负整数,这样,logk(0)应当不出现,虽然,当然,在这方面 不限制请求保护的主题的范围。
有时,为了方便起见,例如,K=2,这样Golomb码可以提供可 变长度的二进制浮点表示的形式,具有指数E和可变长度E比特的剩 余数R。这种情形例如显示于图1,虽然,当然,在这方面不限制请 求保护的主题的范围。
正如在由Monro在2006年6月5日提交的、标题为“Data Coding”的和转让给本请求保护的主题的受让人的、共同待决的美国 专利申请序列号No.11/422,316中描述的,在一个实施例中,可以利 用编码数据码元的方法,包括Golomb编码。然而,正如前面说明的, 请求保护的主题在范围上不限于Golomb编码。在这样的实施例中, 码元可以通过指数值E和剩余数值R被Golomb编码,指数值基本上 按照可变长度码被编码,再次地,如下面更详细地描述的那样。
在这个具体的实施例中,例如,可变长度码(VLC)可被利用来替 换码元,其中短码可被使用于更经常出现的码元,以及较长的码用于 不太经常出现的码元。这样,码的平均长度可以减小。VLC的一个熟 知的例子包括Huffman编码,虽然还存在许多其它例子。例如, Fano/Shannon编码包括VLC,如Morse码那样,它用短码替代经常 出现的字母,如E(一个点),以及用较长的码替代其它字母,如X(短 划点点短划)。当然,请求保护的主题在范围上不限于这些例子。 提供这些仅仅是为了用于说明。
同样地,另一个实施例可包括一种用相应的正的非零数V编码 码元的方法。可以确定指数E的最大整数值,对于该指数E,bE不超 过V,其中b是整数模数值,以及E=fix(logb(V))。同样地,可以计算 剩余数R=V-bE。所以可以生成码元码,其包括指数的数值,被编码 为可变长度码,以及剩余数值。当然,请求保护的主题在范围上不限 于这个具体实施例。这仅仅是被包括在请求保护的主题的范围内的实 施例的一个例子。
各种修改是可能的,以及所有的修改打算被包括在请求保护的主 题的范围内。例如,在一个替换实施例中,码元可以任选地被包含在 码元字母表中,它按照预期的出现概率排名(rank)码元,V的数值表 示码元排名。
同样地,在一个实施例中,可变长度编码器(VLC),诸如,例如 Huffman编码器,可以编码诸如Golomb码的码的指数,例如用于有 效地编码和压缩码元流。然而,VLC可以是自适应的或静态的,例如 取决于特定的实施例。
虽然在这方面不限制请求保护的主题的范围,但应当指出,这里 描述的编码过程的实施例有时可以在真实的应用中执行Huffman编 码。同样地,虽然请求保护的主题在范围上不限于这方面,但实施例 可以方便地应用到行程长度编和/或用于难对付的概率分布,虽然这些 仅仅是例子,以及在这方面不限制请求保护的主题的范围。
示例实施例,除了数据编码方法的实施例以外,可包括结合这样 的方法的计算机程序;和/或编码器,诸如以硬件、固件、软件或它们 的组合被实施。实施例还可包括体现这样的方法的视频和/或音频编码 译码器;视频和/或音频压缩系统,由此数据可以按照这样的方法被编 码,以及在其中这样的数据可以通过通信信道被传送,用于由在远端 的译码器重建。可替换地,编码的数据可被存储,而不是发送。这些 和许多其它实施例被包括在请求保护的主题的范围内。
图1例如显示使用正负号和幅度表示法的Golomb编码的N比特 固定点二进制数字的实施例。最前面的比特S(它在替换实施例中可以 省略)指示正负号。这后面跟随多个非重要的前面的零。第一个有效位 (FSB)出现在位置E,FSB的位置由此指示指数值。剩余的比特由随 后的E个比特表示,这在本上下文中被称为“剩余数”R。在这个表示 法中,数的幅度M仅仅是由标号为0到N-1的N个比特表示的二进 制数的值。
这里,正负号=1或0,
同样地,幅度=M=∑2nbn
其中bn是比特n的数值,0或1,以及进行从n=0到N的求和。
E=FSB的位置=fix(log2M),对于M≥1
R=剩余数=M-2E
它具有E个比特,对于E≥1和M≥2。
在给定图1的表示后,为了在通信信道上传送数据,在本实施例 中,可以发送S的数值(如果合适的话)并连同位置值E和剩余数R的 数值一起。典型地,剩余数值不被编码,以及比特仅仅按照它们原来 的样子逐个地被发送。然而,当然,在某些实施例中可以利用剩余数 的熵编码。
在某些情形下,E的数值可以是有希望发送的,原因在于要发送 E的比特数目典型地可以是可变的,其是发送剩余数的比特数目。实 施Golomb编码器的通常的方法是不发送E的数值,而代之以E相对 于被发送的最后的数值的改变。例如,第一码元的发送可以指示E的 数值增加1,而第二码元的发送可以指示该数值减小1。第三码元的 发送可以指示E的数值保持为相同的。在E的接连的数值之间的差值, 实际上,可以作为接连的比特被发送,尽管在这方面不限制请求保护 的主题的范围。进一步的细节例如可以在Rice,RF:‘Some practical universal noiseless coding techniques’,Tech.Rep.JPL-79-22,Jet Propulsion Laboratory,Pasadena,CA,March 1979中找到。Huffman 编码也是熟知的编码数据的方法,其细节可以在Huffman,D.:‘A method for the construction of minimum redundancy codes’,Proc. Inst.Radio Eng.,1952,9,(40),pp.1098-1101中找到。
在二进制情形下,如果可以出现的E的最大值是Max_E,则从 0到Max_E的所有数值的未编码的表示利用1+fix(log2Max_E)个比 特。由于Golomb代码的特征在于我们不一定必须知道数值的范围, 从而我们不一定必须知道Max_E的大小。然而,一旦对于特定的数 值,E是已知的,那么就知道,R的数值利用E个比特。
Golomb编码,作为示例实施例,至少部分地很行得通,因为R 的概率密度通常是相当平坦的,即使在M的概率密度是不均匀等或不 对称的情形下。在E的分布中主要表示分布的不对称性,虽然即使它 通常呈现很好的性能。在这个特定的实施例中,对于E有平滑影响, 因为E的大于1的任何数值覆盖2E个不同的M值。对R有变平坦的 影响,因为R数值的数目小于可能的M数值的数目。特定的实施例 的一个方面涉及认识到,编码器的有效的运行至少部分依赖于编码E 的“花费”。所以,这种花费的减小是希望的。例如,如果E的范围受 到约束,比如说,1