数据压缩的制作方法

文档序号:6493908阅读:179来源:国知局
专利名称:数据压缩的制作方法
技术领域
本发明涉及用于数据压缩的方法和设备,尤其是但并非专指地涉及压缩静止或视频图像、和/或音频数据的方法和设备。
已知有许多压缩图像和音频数据的方法。例子包括著名的用于静止图像编码和解码的联合图像专家组(JPEG)算法,和用于编码和解码视频数据的运动图像专家组(MPEG)算法。这些和许多其它编码和解码系统一起使用诸如离散余弦变换(DCT)的空间变换以把原始的图像数据转变为压缩格式。其它算法使用替换的变换诸如小波变换。
通常,从所选变换的输出是一系列变换系数,它们整体地定义原始数据的编码压缩格式。当需要跨越通信媒介诸如因特网或低带宽的无线连接传递数据时,这些系数转变为二进制形式(位),其随后能根据任何优选的通信协议传输,或者以任何适合方便的形式(例如,磁盘或存储器上)存储。
在“嵌入式”系统(使用一种“嵌入式量化器”)中,变换系数按顺序地进入有效层(位平面),一般首先传输的是最高有效位。用这种“嵌入式”编码方案,接收者最初收到低分辨率的图像,随着传输进行它逐渐改进成高分辨率的图像。这给了接收者一旦已经收到的图像有足够分辨率满足其的需要时在任何时候终止传输可能性。
大多数嵌入式系统使用有效转换(switching)的概念,换言之它们提供一些机制,以告知解码器每个系数最高有效位的位置。如果没有有效转换,相当数量的可用带宽将会在第一个有效位还没有到达的情况下由重复地发送系数的非有效位而浪费。对正的系数,这意味着在第一个有效位(即,a1)还没有到达时重复地发送零。一些系统诸如Shapiro的系统由一次扫描一个位平面而完成这个参见Shapiro,IEEE Transactions on SignalProcessing,41(12);3445-3462,十二月,1993(进一步描述于US-A-5321776和US-A-5315670)。其它系统通过明确地发送最高有效位而告知解码器它的位置。几种系统,诸如描述于文档WO-A-99/08449和WO-A-98/37700的系统,使用掩蔽技术以改善位传输效率。
有不同的记法系统以表示数字系统中负数,其中最重要的是“符号和大小记法(sign and magnitude notation)”和“二次补码记法(twoscomplement notation)”。尽管信息通常以二次补码记法存储在计算机里,然而为了描述压缩算法,通常使用符号和大小记法。根据符号和大小记法给出这个发明的描述,其中正数的第一有效位(FSB)和其负版本在数据字中在同一位置上。
对以上所有技术,首先发送每个单独系数的第一有效位,然后是相继地较低有效位,一个位平面接着一个位平面。当到达一特定的截止(cut-off)位平面时,系统可能认为,不值得对系数进行进一步精化,因此不发送可存在于低于截止位平面的进一步的位。
近来提议的是,在FSB之后已经发送了一定数量的位之后,发送更多的可能是不值得的(参见Monro等人的Proceedings of the IEEEInternational Conference on Image Processing 2000,Vancouver,进一步描述于WO 02/13538)。这意味着,FSB之后的位模式的数量是有限的。例如,如果已知在一特定系数的FSB之后将要定义另外两个位,那么该模式能够采用仅四个可能的组合-11、10、01或00(以下降的数量级列出)。
所有这些技术以及其它类似它们的技术的目的是通过使用尽可能少的位,来传输或存储变换系数的值以及它们在变换数据集里的位置,而达到有效的压缩。为了最小化发送数据所需位的理论数量(熵),在进行设计用于传输机制的系数的排序和打包中已引入了大的创造性。标准方法的目的是,以最少量的位表示位置信息,从而允许尽量多的可用带宽专用于定义数据的值的位中。
在本发明中,完全丢弃了这种方法,并通过更多地集中在数据的位置方面而不是它的值的方面而改善熵。尤其是,本发明预期完全地通过位置信息来描述数据集,并根本不发送值信息。
根据本发明的第一方面,提供了一种数据压缩方法,包括对数据施加变换,以得到多个变换系数;把系数分为多个组;以及将所述组作为压缩数据顺序地存储或传送。所述这些组优选地是不等概率的。
本发明进一步延伸为一种实现这种方法的计算机程序,和载有这种计算机程序的一种机器可读数据载体(如CD),以及代表这种计算机程序的一种位流(如,通过因特网下载)。本发明进一步延伸为一种实现这种方法的编码器(coder),以及包括这种编码器的编解码器(codec)。
通过根据系数值的特征(或根据一些辅助信息)对系数完全或部分地分组,并着重于确切发送位置信息而不是与值相关的信息,申请人已经发现可进一步提高效率。即使在组的数量大(例如与系数的数量相同)的情况下也惊讶地适用。在数据值比可能的组少的情况下,一些组将是空的,然后通过对传送的组进行游程编码而进一步提高效率。
通过分组而减少熵可起因于几种原因,并与数据的不平稳性有关。例如,系数值或码本条目(codebook entry)可具有稍微不同的发生频率,并也可依赖于位置。通过把系数分成组,可以显现各组的统计学差异,其将比这些组的组合导致较低的总熵。
即使每组的值平均数小于1,如果编码器布置为告知解码器存在空组的运转,那么所描述的方法仍然提供了有效的增加,。
本发明可以以多种方式付诸实施,现在通过示例并参考附图来描述一些特定实施例,其中

图1表示4×4图像的2-尺度小波变换的例子;图2表示把图1的系数分成位平面;图3表示根据本发明的一个实施例的第一次系数分组;图4表示第二次分组。
首先参照图1,其表示一种类型的小波变换的输出,从而我们期望按位编码以存储或跨过通信介质向前传输。在这个例子中,图1所示的输出表示4×4图像的2-尺度小波变换,但在实际的实施方式中,系数值和图像尺寸的范围通常较大,小波尺度的数量也可较大。将按位编码的数据集不必是小波变换(尽管是优选的)的系数,而且本发明同等地适用于由任何其它类型的变换系数组成的输出集,其它类型的变换包括FFT、DCT、重叠正交变换等等。以上描述的方法也能用于有效的按位压缩的其它数据集,即为不必代表图像或音频的数据集。描述的方法将同样地适用于例如电子制表数据(spread sheet data)或文字处理数据的有效的按位压缩。相关的任何特征诸如颜色、字体、语言或甚至气味也能形成系数分组的基础。
此方法通常通过把系数值转换为二进制位并一个一个单独地考虑位平面而开始,如图2所示。为了简化,图2只显示了两个系数1、2。其中第一个在位平面17具有第一有效位(FSB)21,而第二个在位平面16具有FSB 22。在该附图中,实的方块代表1,空的方块代表0。
图2中考虑的数据集25可以是图1所示数据集的整体,或者可以仅是其一部分。在正压缩的数据集包括小波变换的系数的情况下,图2的数据集25可以表示图1所示的各子带11之一。
在一种类型的传统“嵌入式”系统中,诸如Shapiro系统中,变换系数的位通常是逐层地发送的,首先传输最高有效位。因此在这样的系统中,通常首先传输位21,然后按顺序传输位平面16、15和14的有效位。在这个系统里不会发送低于预定的阈值位平面(这个例子中的14)的位。对发送的每个位也必须识别出唯一的位置,以使解码器能够做出该位在该位平面上的那一位置。这可以用多种方式完成,其中之一是沿着适当位平面上的Z字形扫描路径27确定位的位置。已知许多其它扫描方案。
相反,在本发明中,系数的位不是粗略地位平面接着位平面地发送,而是在发送或存储前分组。这可以用多种方式完成。在优选的实施例中,系数首先以它们的第一有效位分组,如图3所示。这里,我们假定总共有8个系数要被发送,其被分成2组第一组的FSB在位平面17上,第二组的FSB在位平面16上。系数1和2对应于图2中已经表示的系数;为了清楚起系数3至8没有在图2中示出。
在把系数分成2组之后,我们进一步子划分,如图4所示。在这个例子中,系数进一步根据位值划分。总共有4个位值(V1、V2、V3、V4),与两个可能的FSB值组合,一共8个组,其中3个是空的。然后逐个地发送(或存储)这些组,由一个位平面接一个位平面地发送每个单个组中的系数。因此在这个例子里,首先发送系数1;然后一个位平面接一个位平面地发送系数3和5;然后是系数4;然后一个位平面接一个位平面地发送系数2和7;最后一个位平面接一个位平面地发送系数6和8。
“位值”我们是指位的顺序,所以例如,如果系数已经以FSB划分,并且已经确定将只发送2个另外的位,那么8个可能的系数或者数据值101xxx,即101000、101001、101010等的任何之一将放置在同一组中,这是因为对每种情况FSB之后的位的顺序都是01。由于数字数据仅采用许多离散的值,所以组的数量将受到限制,尽管如果要发送大数量的位时组的数量可是大的。
甚至即使位值是同等概率的,通过以位值分组,我们仍然改进了数据的嵌入。在这个例子中,能够发生4种可能的位值,11、10、01和00(以下降的数量级)。以这个次序发送组促进了嵌入,因为给所解码的图像或信号增加最大作用的位值首先发送。
将要使用可变深度编码(variable-depth encoding)也是可能的,换言之,对不同系数将发送不同数量的位。如果我们仅发送位置信息,那么解码器不需要知道一些系数需要比其它系数以较高的精度发送,这是因为它需要的所有信息都完全由分组描述。将以很高精确度发送的几个系数可能具有独特的位值,并因此将在其自己的组中终止,然而将要以很低精确度发送的系数可能具有非独特的位值,并从而在同一组中全部终止。
另一种可能性(其可能单独使用,或者与一种或多种以上讨论的方法一起使用)是一个位平面接一个位平面地发送系数,但在每种情况中根据下一个未发送的位的值分组。因此,例如,系数可以分为2组,其下一个位是1,和下一个位是0。然后发送(或存储)第一组,接着是第二组。因此,有效地,仅发送组内的每个系数的位置,而不是系数本身的值。甚至当存在大量要发送的位时,这种方法也起作用。这种技术能被看作为将此处描述的本发明应用在这样的情况由正在扫描的位平面中的FSB的位置来表示FSB,并且仅另外的一位将被定义。然而,它能用于改进的标准位平面扫描技术,这是因为首先,如果在0位之前发了1位信号那么它改善了嵌入,并且第二,使用者注意到,在精化中的0和1位不以同样的概率发生。
在进一步的实施例(未示出)中可以使用替换的分组。例如,当系数定义一码本数或原子(atom)时,或除了FSB以外或代替FSB,可基于它分组。通常,各分组是由以下之一单独地或以任何组合组成FSB、幅度、位值、原子/码本、或任意其它与系数相关的信息(“辅助信息”)。以符号分组也是可能的,但是在许多情况中不是尤其有帮助的,这是因为+符号组与-符号组通常是相等概率。
不排除其它的分组参数,并根据将要压缩的数据集的性质,除了这里描述的参数以外的参数是合适的。例如,在已经使用变换诸如小波变换来把数据分成依赖频率的子带的情况下,这些子带本身会形成一次或二次分组的基础。当本方法与一种常规算法组合使用时,这样一种方法是适合的,常规算法诸如Shapiro的Zerotree Wavelet Algorithm(EZW),描述于以上提到的他的论文“Embedded Image Coding Using Zerotrees of WaveletCoefficients”。相关的任何特征诸如颜色、字体、语言或甚至气味也能形成系数分组的基础。
根据手头上的本申请,分组的顺序可以用任何适合的方式规定。因此,尽管首先以FSB分组再以原子分组通常是适合的,这将提供好的嵌入,然而如果需要的话先以原子分组再以FSB分组也是同样可能的。
在一些实施例中,可选择分组,这样一个组结束于一独特的系数或数据项,其所有特征由它的组定义。在这种情况下,一特定系数的所有特征独特地由它的组定义的,这意味着无论什么不再需要发送任何的系数信息。而,系统仅必须发送数据集内的系数的位置信息。尽管完全不发送任何明确的系数大小似乎是违反直觉的,然而信息实际上是不再需要的,这是因为解码器需要重建数据集的一切都包含在位置信息内并(几乎整个地由分组本身包含。通常,这样一种方法将需要以符号及其它特征分组。
这些组本身可以用任何合适的方式编码以传输。当然应该理解的是,在实际上,游程编码、Huffman、算术编码技术或其它无损压缩算法可以应用于正发送的系数的序列,以进一步降低熵。与标准方法一起,每个系数的值通常将一个位接一个位地发送,以FSB开始,在某一预定的截止点结束。这可是一固定的位平面(如平面14)或者是到低于每个系数的FSB的一些预定的深度(如,如图2字母P所示,在每种情况下低于msp的3个位)。
通过这种方式对数据分组,解码器(知道编码器使用的算法)能够仅从所收到的数据流中的FSB的位置来确定FSB的位平面,而FSB的值不必要单独地传输。
当然,解码器需要能够知道它在所收到的数据串中的位置。这可以通过发送在每个组的末端的组末端(EOG)记号而达到,或者替换地通过在传输每组之前发将跟随多少值的信号而达到。在一些情况下编码者也可方便的传输一掩码,其告诉编码器增加了哪些组。替换地,这些组本身可游程编码,这样不发送长行程的同样组(尤其是空组)。
在优选的实施例中,我们游程编码了组的位置,同时发送任何其它不用于分组的特征。替换地,在发送由游程编码的组的位置的信号之后,其它特征能够在扫描组时发送。
在这种技术的目前实施例中,分组的级别由使用者可选的转换定义,如下0.只以FSB分组1.以FSB和位值分组2.(对合适的数据集)以FSB、位值、原子/码本数、以及可能的符号分组。
下述是4种伪码列表,表示了各种传送可能性。在每种情况,需要假定的是数据已经分成需要的许多组了。
列表1*对每个组*发送组的位置信息和任何未分组的数据。
*发组的末端的信号。
列表2
*对每个组*发有多少值的信号*发送组的位置信息和任何未分组的数据列表3(如果存在许多空组)*重复*发有多少空组先于下一个非=空组的信号。
*对每个非=空组*发送组的位置信息和任何未分组的数据*发组的末端的信号*直到扫描了所有组列表4(如果存在许多空组)*重复*发有多少空组先于下一个非空组的信号*对每个非空组*发有多少值的信号*发送组的位置信息和任何未分组的数据*直到扫描了所有组。
如果系数是相关的,那么所描述的方法在可适用的情况下可与预计算法(用于预计系数的位置)一起使用。这可以更进一步降低熵。
尽管图1至图4表示使用本方法来压缩一种2维数据集,然而应该理解的是,本方法同等地适用于1维数据集诸如变换的音频信号的压缩。所描述的方法将同等地适用于文本信息包括例如文字处理和电子制表文件以及宽范围的其它数据的压缩。事实上,所描述的方法能够用于压缩任何(可压缩的)数据,无论是否应用了变换。
权利要求
1.一种数据压缩方法,包括对数据实施变换以得到多个变换系数;把所述系数分成多个组;以及将所述组作为压缩数据顺序地存储或传送。
2.根据权利要求1所述的数据压缩方法,其中所述系数按系数值的特征分组。
3.根据权利要求2所述的数据压缩方法,其中所述系数按它们的第一有效位分组。
4.根据权利要求2所述的数据压缩方法,其中所述系数按它们的位值分组。
5.根据权利要求2所述的数据压缩方法,其中所述系数按还没有存储或传送的下一位的值分组。
6.根据权利要求2所述的数据压缩方法,其中所述系数按符号分组。
7.根据权利要求2所述的数据压缩方法,其中所述系数按振幅分组。
8.根据权利要求1所述的数据压缩方法,其中每一变换系数与其相关的辅助信息关联,根据所述辅助信息的特征对所述系数分组。
9.根据前述权利要求任何一项所述的数据压缩方法,其中所述变换依赖于一码本,所述系数由码本参考组成或包括码本参考,根据其相关的码本参考对所述系数分组。
10.一种数据压缩方法,其中,按权利要求2至9中任何两个或多个所述以任何期望的次序将所述系数分组成多个组。
11.根据权利要求1所述的数据压缩方法,其中,待编码的关于给定系数的所有信息由其所在的组确定。
12.根据权利要求1所述的数据压缩方法,对每一系数的位置信息进行存储或传送,但是不包括除了其所在组标识外的任何与值相关的信息。
13.根据权利要求1所述的数据压缩方法,其中每一系数的位置信息与所有余下的与值相关的信息一起被存储或传送,但不包括可从其所在的组确定的信息。
14.根据权利要求1至12任何一项所述的数据压缩方法,其中所述组在存储或传送之前进行游程编码。
15.根据权利要求1所述的数据压缩方法,其中所述变换是小波变换。
16.根据权利要求1所述的数据压缩方法,其中所述变换是快速傅里叶变换。
17.根据权利要求1所述的数据压缩方法,其中所述变换是离散余弦变换。
18.根据权利要求1所述的数据压缩方法,其中所述变换是重叠正交变换。
19.根据权利要求1所述的数据压缩方法,其中所述数据代表静止图像或视频。
20.根据权利要求1所述的数据压缩方法,其中所述数据代表音频流。
21.根据权利要求1所述的数据压缩方法,其中所述数据代表文本。
22.一种实现前述权利要求任何一项所述方法的计算机程序。
23.一种载有权利要求22所述的计算机程序的机器可读数据载体。
24.一种代表权利要求22所述的计算机程序的位流。
25.一种实现权利要求1至21任何一项所述方法的编码器。
26.一种包括权利要求25所述的编码器的编解码器。
全文摘要
一种用于例如图像或音频信号的数据压缩方法,包括使用诸如小波变换或DCT的变换编码数据,通过最高有效位和/或位值对变换系数分组,以及一个组接一个组地传送它们。在这种变换使用诸如匹配追踪的码本的情况下,系数可以进一步以码本值分组。在一个实施例中,此方法允许数据完全地由系数的位置和分组描述,而无论什么不需要存储或传送任何系数值信息。
文档编号G06T9/00GK1853198SQ200480026857
公开日2006年10月25日 申请日期2004年8月13日 优先权日2003年9月18日
发明者唐纳德·马丁·蒙罗 申请人:艾斯科夫视频有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1