分层无损压缩的制作方法

文档序号:6349275阅读:256来源:国知局
专利名称:分层无损压缩的制作方法
技术领域
本发明涉及数据压缩,更特别的是,本发明涉及适合硬件实现的无损数据压缩。
背景技术
数据压缩是转换数据以便使用较少位(bit)存储的过程。数据压缩的两种类型是有损的和无损的。有损数据压缩将数据压缩到较大程度,但在处理中丢失数据。因此,在解压过程中,数据是其原始格式的近似的而不是精确的复制品。无损数据压缩将数据压缩到较小程度,但在处理中不丢失任何的数据。因此,在解压过程中,数据是其在压缩前的精确重建。数据压缩的目的是减小传输需要的带宽量和/或存储需要的存储器量。常用的无损压缩技术的示例是哈夫曼编码(Huffman coding)。哈夫曼编码是基于数据项目出现的次数。该技术使用了较短位数编码出现次数多的数据。不幸的是,哈夫曼编码的限制是其具有固定的序列长度程序并且不能压缩超过序列长度的数据中的冗余。因此,哈夫曼编码是复杂的并且需要大量有效存储器。哈夫曼编码包含在提取文件任何部分之前实施整体文件的分析。进一步,哈夫曼技术本质上是不对称的,意思是解码过程比编码过程慢的多。这个特征对于某些硬件实现是不能接受的,因为计算机通常设计为在一个时钟周期内近似地读取和写入相同的数据量。另一个常用的无损技术是Lempel-Ziv-Welch算法(LZW)。LZW在被压缩的数据文件中自动建立之前看到的字符串的字典。该字典从256个条目开始,每个条目用于一个可能的字符。每当看到字符串还不在字典中,就添加包括该字符串的更长的字符串。输出包括到字典中的整数(integer)目录。不幸的是,LZW由于其产生的字符串表而变遭。字典能在短时间内变得很大。此外,因为所需的存储器量取决于所有字符串的总长度,所以所需的存储量是不确定的。同样,与哈夫曼编码一样,必须在将文件的任何部分压缩和/或解压之前将整体文件编码和/或解码。进一步,整个过程本质上是不对称的,并且相对于解压, 压缩需要相当长的时间。除了上述压缩技术强加的限制,另一个主要问题是对于数据的不同格式的统一压缩方法的缺乏。例如,由像素组成的计算机图形能用Z缓冲表示。通过测试像素深度和比较当前Z坐标位置和存储在Z缓冲的数据使得Z缓冲工作。Z缓冲存储关于每个像素最后位置的信息。在接近观察者位置的像素是将要显示的一个。其他用于表示由像素组成图形的常用数据格式是颜色缓冲和常用映射(normal maps)。目前,对于常用映射数据没有无损压缩技术,并且颜色缓冲数据需要面向软件的不同的压缩方法。需要的是本质上对称的数据压缩/解压方法,从而适合硬件实现。进一步,需要的是能压缩和解压一些包括常用映射数据的不同数据格式的数据压缩/解压方法。另外,需要的是适应各种图形硬件设备的数据压缩/解压方法。

发明内容
本发明一方面提供了分层数据压缩方法,该方法包括以下的计算机实施步骤布置数据成主阵列;将该主阵列划分为多个主子阵列;将每个主子阵列压缩成压缩的子阵列使得形成多个压缩的子阵列;布置该压缩的子阵列成第二阵列;并且重复该划分、压缩和安排步骤直到剩余单一子阵列,其中该第二阵列变成主阵列用于重复这些步骤。来自压缩的子阵列的数据能被嵌入到输出流。本发明另一方面提供了数据压缩方法,该方法包括以下的计算机实施步骤提供正方形数据(square of data);将该正方形数据变换为平铺数据(tile of data);将该平铺数据划分为四边形数据(quads of data);每个四边形有左上像素,右上像素,左下像素, 和右下像素;将每个四边形转换为代表性元素,第一代尔塔(delta element)元素,第二代尔塔元素,第三代尔塔元素,和控制字;形成具代表性元素的新的平铺数据;重复该划分、 该转换以及该形成直到剩余单一代表性元素,其中该新的平铺数据变成平铺数据用于重复该划分、转换和形成步骤;以及将该单一代表性元素,该控制字和该代尔塔元素嵌入到输出流。本发明另一方面提供了机器可读程序存储设备。该设备明确(tangibly)包含机器可执行命令程序以实施数据压缩方法,该方法包括提供正方形数据;将该正方形数据变换为平铺数据;将该平铺数据划分为四边形数据;每个四边形有左上像素,右上像素,左下像素,和右下像素;将每个四边形转换为代表性元素,第一代尔塔元素,第二代尔塔元素, 第三代尔塔元素,和控制字;形成具代表性元素的新的平铺数据;重复该划分、该转换以及该形成直到剩余单一代表性元素,其中该新的平铺数据变成平铺数据用于重复该划分、该转换和该形成步骤;以及将该单一代表性元素、该控制字和该代尔塔元素嵌入到输出流。本发明包含其他实施方式,配置该实施方式为上述和下述方式,以及其他特征和替换。


本发明通过下面的详细描述结合所附附图将易于理解。为了帮助描述,类似的参考数指定了类似的元素。图1A-1C为根据本发明实施方式所示的含有像素位的数据的2维表面。图2A-2B为根据本发明实施方式所示的正方形到平铺的变换。图3A-3D为根据本发明实施方式所示的平铺的划分,四边形的转化,以及新的平铺的形成。图4为根据本发明实施方式所示的平铺数据的分层。图5为根据本发明实施方式所示的在图形形式中的数据压缩方法。图6为根据本发明实施方式所示的优选地用于编码以及将分层数据嵌入到输出流的子平铺模式。图7为根据本发明实施方式所示的分层数据的位分配输出流。图8为根据本发明实施方式所示的在图形形式中的位分配。
具体实施例方式本发明披露了分层无损数据压缩方法。陈述了许多特定细节以便提供对本发明实施方式的完全理解。应明白,然而,对本领域技术人员来说,本发明的实施方式可用其他特定细节实行。在一个实施方式中,二维表面数据概念性地划分为正方形数据。应明白此处没有物理的正方形。然而,把该正方形看做有尺寸(长和宽)的物理实体和表面能帮助理解本发明的概念。该二维表面数据包括代表图形图像的像素位。将该二维表面数据划分为大小为16X16正方形的正方形数据。在可替换的实施方式中,该二维表面数据能根据所需的压缩或底层(underlying)数据格式划分为任意数量的更大或更小的正方形数据。例如,能将该数据的二维表面划分为8X8正方形的像素数据。然后,将每个正方形数据变换成平铺数据。使用整数(integer)加上或减去适合硬件实现的操作实施该变换。用来将该正方形数据变换为平铺数据的技术能依赖于用于代表图形图像的数据格式。例如,如果数据是Z缓冲格式,那么平铺数据的第二列(column) 设置为等于正方形数据的第二列减去第一列;平铺数据的第三列设置为等于正方形数据的第三列减去正方形数据的第二列;平铺数据的第四列设置为等于正方形数据的第四列减去正方形数据的第三列;并且重复该模式直到每个数据值减去邻近数据值并且将所得差值存储在平铺数据中。在可替换的实施方式中,使用不同技术将不同的数据格式变换为平铺。例如,为变换正方形颜色缓冲数据,对于每个像素,正方形数据的第一通道(channel)减去正方形数据的第二通道。所得到的值存储在平铺数据的第一通道。正方形数据的第二通道存储在平铺数据的第二通道。正方形数据的第三通道减去正方形数据的第一通道并且将该值存储在平铺数据的第三通道。重复该模式直到在每个像素上实施去相关(decorrelation)变化。在另一个实施方式中,为变换常用映射数据,对每个像素,正方形数据的第一通道下降,并且代表其符号的位存储在平铺数据的第一通道。正方形数据的第二和第三通道分别存储在平铺数据的第二和第三通道。在将正方形数据变换为平铺数据后,该平铺被划分成四边形。该四边形优选地为 2X2,具有左上像素,右上像素,左下像素,和右下像素。一旦将该平铺划分为四边形,该四边形转换为代表性元素,三个代尔塔元素,以及控制字。该转换优选地包括适合硬件实施的整数加上或减去操作。根据数据的格式,能使用不同技术将四边形数据转换为代表性元素,3 代尔塔元素,和控制字。将在下面进一步讨论不同转换技术的示例。在四边形被转换后,形成由产生的代表性元素组成的新平铺。然后,将该新的平铺划分为四边形,并且将这些四边形转换为代表性元素,3代尔塔元素和控制字。再一次,该产生的代表性元素形成另一新平铺,并且将该平铺划分为四边形,该四边形将转换为代表性元素,3代尔塔元素和控制字。重复该模式直到剩余单一的代表性元素。该结果是数据层次 (hierarchy of data)具有顶端和底部,该顶端是单一代表性元素,该底部是代表变换正方形数据的转换的四边形数据。从该底部向上穿过该顶端,每个该层次的等级有4倍以下的四边形。应注意,如果多个正方形数据代表图形图像,那么这个设计使得整个过程能容易地被并行化(parallelized)。—旦剩余单一代表性元素,开始将像素嵌入到压缩数据紧密排列的像素流中的过程。优选地将控制信息首先嵌入到该流中,该流能根据数据格式略微变化。例如,如果使用 Z缓冲或常用映射数据,对于每个像素该控制信息包括256个像素映射符号。然后,将该单一代表性元素嵌入到具有适当数量像素的输出流。
将该层次中的每个平铺数据划分为4等分正方形,产生4个子平铺数据。例如, 平铺数据将被划分使得顶端左子平铺是子平铺零,顶端右子平铺是子平铺1,底部左子平铺是子平铺2,以及底部右子平铺是子平铺3。例如,如果该平铺是16X16,那么每个子平铺是 8X8。随着单一代表性元素的嵌入,优选的子平铺目录(directory)是由位移(offset)组成的嵌入。例如,如果该平铺数据是16乂16,根据子平铺0(0,70,71),子平铺1的位移应该是(8,150,7]),同时,根据子平铺1的起始,子平铺2的位移应该是(0,78, 15),以及根据子平铺2的起始,子平铺3的位移应该是(8,158,15)。在将单一代表性元素和优选的子平铺目录嵌入到输出流之后,编码来自于每个四边形的代尔塔元素。该编码开始于层次顶端并且向下继续进行到底部。根据四边形相应的控制字编码该四边形。优选地,该编码遵循子平铺模式。例如,应该首先编码从上到下的子平铺0的所有代尔塔,接着编码从上到下的子平铺1的代尔塔。然后,从上到下编码子平铺 2的代尔塔,接着是子平铺3代尔塔的编码。应注意,如果该层次的较低等级能从较高等级完全解码,那么,避免了较低等级的编码并且压缩增加。然后,将已编码的像素嵌入到输出流,优选地遵循子平铺模式。该已编码像素的嵌入将优选地从代表子平铺0顶端四边形的像素开始。接下来,将在子平铺0层次的较低等级上的该已编码像素从上到下嵌入到输出流中。然后,代表子平铺1顶端四边形的像素将被嵌入。接下来,子平铺1的目录优选地嵌入到输出流中。例如,如果正方形数据是16X16, 子平铺1的目录应该是位移(4,70,31)。遵循目录,将在子平铺1层次较低等级上的已编码像素从上到下嵌入到输出流。接着,代表子平铺2顶端四边形的像素将被嵌入。然后,子平铺2的目录优选地嵌入到输出流。例如,如果正方形数据是16X16,子平铺2的目录应是位移(0,34,7)。遵循目录,然后,将在子平铺2层次的较低等级上的已编码像素从上到下嵌入到输出流。接着,代表子平铺3顶端四边形的像素将被嵌入。然后,将子平铺3的目录嵌入到输出流。例如,如果正方形数据是16X16,子平铺3的目录应该是位移 (4,74,71)。遵循目录,然后,将在子平铺3层次的较低等级上的已编码像素从上到下嵌入到输出流。如前所述,根据数据格式,能使用不同技术将四边形数据转换为代表性元素,3代尔塔元素,和控制字。例如,为转换颜色缓冲或常用映射数据,设置该代表性元素等于该四边形的左上像素。第一代尔塔元素等于右上像素减去左上像素。第二代尔塔元素等于左下像素减去左上像素。第三代尔塔元素等于右下像素减去左下像素。根据代尔塔元素间的相互关系设置控制字。如果所有的代尔塔元素等于零,那么设置该控制字为零。在像素分配期间,这是像素分配器中止对四边形像素的任何进一步分配的信号。如果代尔塔元素不等于零,那么根据3个代尔塔中的最大绝对值设置该控制字。如果代尔塔中的最大绝对值小于或等于一,那么设置该控制字为1。如果代尔塔中的最大绝对值小于或等于3,那么设置该控制字为2。如果代尔塔中的最大绝对值小于或等于7,那么设置该控制字为3。如果代尔塔中的最大绝对值大于7,那么使用不同的策略。假设代尔塔中的最大绝对值大于7,计算左上像素、右上像素、左下像素和右下像素的平均值。重置该代表性元素等于四边形像素的平均数。重置第一代尔塔元素等于左上像素减去该平均数。重置第二代尔塔元素等于右上像素减去该平均数。重置第三代尔塔元素等于左下像素减去该平均数。如果该重置代尔塔元素间的最大绝对值小于或等于7,设置控制字为4。如果该重置代尔塔元素间的最大绝对值小于或等于15,设置控制字为5。如果该重置代尔塔元素间的最大绝对值大于15,那么设置控制字为6并且将代表性元素和代尔塔元素设置为原始四边形像素。因此,假定该重置代尔塔元素间的最大绝对值大于15,代表性元素等于左上像素,第一代尔塔元素等于右上像素,第二代尔塔元素等于左下像素,以及第三代尔塔元素等于右下像素。代尔塔的编码和嵌入可能是不同的,这取决于数据格式。根据优选的实施方式,有定义了如何编码数据的6位前缀(prefix)。每个缓冲有2位。每2位控制字可以是00,01, 10 或 11。
权利要求
1.分层数据压缩方法,该方法包括计算机执行步骤压缩多个主子阵列成压缩的子阵列使得形成多个压缩的子阵列,其中,该多个主子阵列形成主阵列;安排该压缩的子阵列为第二阵列;以及重复该压缩和安排直到剩余单一子阵列,其中该第二阵列变成主阵列用于重复所述压缩和安排。
2.根据权利要求1所述的方法,其进一步包括将来自该压缩的子阵列的数据嵌入到输出流的步骤。
3.数据压缩方法,该方法包括计算机执行步骤 提供正方形数据;将该正方形数据变换为平铺数据;将该平铺数据划分为四边形数据,每个四边形有左上像素,右上像素,左下像素,和右下像素;将每个四边形转换为代表性元素,第一代尔塔元素,第二代尔塔元素,第三代尔塔元素,和控制字;形成具该代表性元素的新的平铺数据;重复该划分,该转换,以及该形成直到剩余单一代表性元素,其中该新的平铺数据变成平铺数据用于重复该划分,该转换和该形成步骤;以及将该单一代表性元素,该控制字和该代尔塔元素嵌入到输出流。
4.根据权利要求3所述的方法,其中该正方形数据是二维表面数据的部分。
5.根据权利要求3所述的方法,其中该数据至少是Z缓冲数据、颜色缓冲数据和常用映射数据中的一个。
6.根据权利要求5所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替换每个数据值为新的数据值,该新的数据值等于该数据值减去邻近数据值。
7.根据权利要求3所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替代每个数据值为去相关数据值。
8.根据权利要求3所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替代每个数据值为具有一个较少组件的新的数据值。
9.根据权利要求3所述的方法,其中转换每个四边形的步骤包括 设置左上像素为代表性元素;右上像素减去左上像素从而形成第一代尔塔元素; 左下像素减去左上像素从而形成第二代尔塔元素; 右下像素减去左下像素从而形成第三代尔塔元素;以及根据该些代尔塔元素间的相互关系设置控制字。
10.根据权利要求3所述的方法,其中控制信息被嵌入到该输出流中。
11.根据权利要求3所述的方法,其中子平铺目录被嵌入到该输出流中,该子平铺目录形成自该划分,该转化和该形成步骤的结果。
12.根据权利要求3所述的方法,其中该嵌入遵循子平铺模式。
13.根据权利要求3所述的方法,其进一步包括根据与该代尔塔元素的相关的控制字编码该代尔塔元素的步骤。
14.机器可读程序存储设备,其明确包含可执行命令程序以实施数据压缩方法,该方法包括提供正方形数据;将该正方形数据变换为平铺数据;将该平铺数据划分为四边形数据,每个四边形有左上像素,右上像素,左下像素,和右下像素;将每个四边形转换为代表性元素,第一代尔塔元素,第二代尔塔元素,第三代尔塔元素,和控制字;形成具该代表性元素的新的平铺数据;重复该划分,该转换,以及该形成直到剩余单一代表性元素,其中该新的平铺数据变成平铺数据用于重复该划分,转换和形成步骤;以及将该单一代表性元素,该控制字和该代尔塔元素嵌入到输出流。
15.根据权利要求14所述的方法,其中该正方形数据是二维表面数据的部分。
16.根据权利要求14所述的方法,其中该数据至少是Z缓冲数据,颜色缓冲数据和常用映射数据中的一个。
17.根据权利要求16所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替换每个数据值为新的数据值,该新的数据值等于该数据值减去邻近数据值。
18.根据权利要求14所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替代每个数据值为去相关数据值。
19.根据权利要求14所述的方法,其中将该正方形数据变换为平铺数据的步骤包括替代每个数据值为具有一个较少组件的新的数据值。
20.根据权利要求14所述的方法,其中转换每个四边形的所述步骤包括 设置该左上像素为该代表性元素;该右上像素减去该左上像素从而形成该第一代尔塔元素; 该左下像素减去该左上像素从而形成该第二代尔塔元素; 该右下像素减去该左下像素从而形成该第三代尔塔元素;以及根据该些代尔塔元素间的相互关系设置该控制字。
21.根据权利要求14所述的方法,其中控制信息被嵌入到该输出流中。
22.根据权利要求14所述的方法,其中子平铺目录被嵌入到该输出流中,该子平铺目录形成自该划分,该转化和该形成步骤的结果。
23.根据权利要求14所述的方法,其中该嵌入遵循子平铺模式。
24.根据权利要求14所述的方法,其进一步包括根据该代尔塔元素的相关的控制字编码该代尔塔元素的步骤。
全文摘要
提供了用于数据压缩的方法。该数据压缩方法变换正方形数据成平铺数据。然后,将该平铺数据划分为四边形数据,该四边形数数据转换成代表性元素、第一代尔塔元素、第二代尔塔元素、第三代尔塔元素和控制字。然后形成具代表性元素的新的平铺数据,并且重复该过程直到剩余单一代表性元素。然后将该单一代表性元素与该控制字和相对应的代尔塔元素嵌入到输出流中。一旦该位流被解析,该数据解压相对编码是对称的。
文档编号G06T9/40GK102428499SQ201080021924
公开日2012年4月25日 申请日期2010年5月18日 优先权日2009年5月19日
发明者亚历山大·M·洛希夫斯基 申请人:超威半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1