双向图像压缩方法

文档序号:7578266阅读:397来源:国知局
专利名称:双向图像压缩方法
技术领域
本发明涉及一种可适用于任何颜色及复杂度的图像压缩方法,其是根据所构成被压缩图形的图元的有序方向分布特性,采用动态最优压缩判断模式,使最后的压缩结果更大限度地利用图形的分布特性,进一步减少图像的冗余度。
习知的图像压缩方法,由于其通常需要快速的解压缩还原,所以其主体框架的压缩算法多半是采用LZW(Lempel-Ziv-Welch)或LZSS等类似依据指针字典的LZ系列的压缩算法。
所谓的LZW压缩算法,举例而言,在编码开始时,假设字典中的内容为P、Q、R,等待编码的数据块如图1a所示,其中,Pos表示输入数据的当前位置,Char表示数据块,则在进行LZW编码时,其编码程序如图1b所示,也就是说,若字串中的内容已存在于字典中,则增加下一字元至字串中,若字串中的内容未见于字典中,则将字串输出为Output,同时将此字串加入至字典中。
一般相对于一个图形,进行数据压缩处理时,要经过图2所示的流程,方可实施图形压缩,也就是首先需将图形的构成像素基于一种数据包构成原则,排列成一队列数据包;接着,针对该队列数据包的数据,按照某一纯数据压缩算法加以处理。
对于所有的LZ压缩算法,包括LZ77、LZ78、LZR、LZW、LZMY、LZC、LZJ、LZSS、LZB、LZH、LZT、LZFG等压缩算法,其主要的技术特点为其压缩处理方式以字节为其准的压缩处理,而其据以压缩的原则为(1)字节重复,或是(2)两组数据块匹配相同。因此,欲提高压缩率,必须确实符合上述的压缩原则。然而,因为LZ算法只是针对一个队列数据包的纯压缩算法,所以对于一个固定唯一的数据包,运用上述压缩原则的使用效率也是固定唯一的。
在一般的压缩方法中,大多使用预设的方式,也就是根据字节的水平方向,将图形中的多个像素构成数据包。例如,对于一个6×7的16色图形而言,如图3a所示,其中P1、P2、P3、…、BP42均为该图形的像素,其6×7=42个。因为对16色的图形而言,每个像素占用4个字节,所以两个像素可以构成一个字节,如此则依照预设的方式,所构成的数据包为{P1、P2},{P3、P4}、{P5、P6}、{P7、P8}、{P9、P10}、{P11、P12}、{P13、P14}、{P15、P16}、{P27、P18}、{P19、P20}、{P21、P22}、{P23、P24}、{P25、P26}、{P27、P28}、{P29、P20}、{P31、P32}、{P33、P34}、{P35、P36}、{P37、P38}、{P39、P40}、{P41、P42}。
可是此种运用预设方式构成的队列数据包,却无法使得前述压缩原则在LZ算法中的使用效率得到一个较佳的结果。以此一6×7大小的图形为例,若将P1~P42各赋予颜色点值0~2,则像素阵列如图3b所示。当以不同的排列方式构成不同的队列数据包时,由下表很明显地可看出,其压缩效果并不相同。<
很明显地,对于同一个图形,当采用两种不同的方式构成队列数据包时,即使采用同一种纯压缩算法,所得到的压缩结果也可能完全不同。这也说明了仅使用传统的预设方式构成队列数据包,并不能使得前述的压缩原则,在LZ算法中始终保持最佳的压缩效率。
如上所述,以往普通的压缩方法,欲提高压缩效率,通常只注意到如何提高压缩编码的利用率,但忽略了一个重要的压缩处理环节,即如何构成队列数据包。因此,在先前技术中对所构成像素的方向排列有序性做了若干假设,其假设有序像素在水平方向上分布更加规则。然而,事实证明在前述的假设下,仅依靠提高编码利用率,要提高1%的压缩率也很困难。
另一方面,所有的LZ压缩算法的实现有一个主要的特征其将一个固定大小的空间(例如为4K字节)作为压缩窗口,每次压缩一个压缩窗口内的数据包中的数据,待压缩结束后,再移动到下一个压缩窗口进行压缩,直到整个数据包处理结束。显然在该算法中,LZ算法中压缩途径(1)或(2)的效能的发挥只能在一个压缩窗口(例如为4K字节)内实现。以一个标准压缩窗口4字节的大小,其对于图形文件占用空间相比而言有时会显得太小了,例如对16色640×480的图形而言,约可包含640×480、2、4096=38个压缩窗口。这样,对一个图形而言,大量的压缩窗口与压缩窗口间的数据相关性(如字节重复性、数据块匹配性)可能被白白忽略浪费掉。因此,对图形压缩而言,充分利用压缩窗口间的数据相关性,是进一步提高压缩率的积极手段。但是欲快速地实现全域字节重复及全域数据块的匹配,则尚存在有一些困难。
有鉴于此,为了改进先前技术的缺点,提高图像压缩率,本发明的目的即在于提供一种双向图像压缩方法,其针对传统压缩流程忽略了图形中像素有序方向分布的内在图形特性,在方法上强调要充分考虑和利用图形的内在有序像素分布特性;在算法上改善了传统压缩算法,使其效能得以充分发挥。
传统的压缩方法主要是将重点放在改善纯数据压缩算法上,而本发明的方法则是具有很不同的思维方式,利用本发明的压缩方法,可更完整地利用图形有内在分布特性,同时进一步发挥各压缩原则在LZ算法中的效能,进而减小了图形的分布,藉以得到更好的压缩率。
当压缩图形时,将实际图形的存储数据,按照图形的长、宽构成像素阵列,然后将像素依照水平和垂直方向构成队列数据包,亦即以字节为基本构成队列单元,对单色图而言,1个字节包含8个像素;对于16色图而言,1个字节包含2个像素;对于256色图而言,1个字节包含1个像素,依此类推。然后,再针对队列数据包进行LZ数据压缩,最后比较分别沿着两个压缩方向(即水平方向和垂直方向)上的压缩结果,取压缩结果的最小值,从而动态地产生最优的压缩结果,并将实际取得的最优压缩结果所对应的像素阵列的队列数据包方向记录下,以做为解压还原之用。
本发明的压缩算法主要是在数据包压缩方面,针对在各种LZ算法中,忽略处理压缩窗口间数据相关性的问题,依据压缩窗口的浮动特性,相对于习知的LZ压缩算法,提出一种可实现的、较快速的全域LZ算法,以下将其称为LZZ压缩算法。本发明的LZZ压缩算法的主要特征为(1)在字节重复处理方面,突破了压缩窗口(例如4K)的限制,压缩编码最大可包含64K个重复字节。(2)在数据块匹配区间方面,突破压缩窗口区间(例如4K)的限制,最大数据块匹配向前试探空间可达256×4的大小。(3)在数据块匹配长度方面,可突破压缩窗口(例如4K)的限制,压缩编码最大可包容64K个匹配字节。下面结合


较佳实施例,藉以更清楚地揭示本发明的技术、方法与特征。其中图1a与图1b为用以说明习知的LZW压缩算法的编码流程图。
图2为先前技术中图像数据压缩的流程图。
图3a为在一图形中的多个像素的排列方式的视图。
图3b为对一图形中的多个像素赋予颜色点值后的像素阵列的视图。
图4为本发明的双向图像压缩算法的流程图。
图5a及图5b为本发明的LZZ算法的流程图。
图6和图7为一幅图形构成水平和垂直方向的16色640×480的图像。
图8为在本发明所使用的LZZ压缩算法内的无重复字节编码的字节段中的编码定义图。
图9为在本发明所使用的LZZ压缩算法内的重复字节编码的字节段中的编码定义图。
图10为在本发明所使用的LZZ压缩算法内的数据块重复编码的字节段中的编码定义图。
本发明为一双向图像压缩方法,由于每幅图都是由许多图元组成,图元可以是一个像点,也可以是一个任意大小的像点矩阵。依据每幅图的像点结构,可能在水平方向上规则有序的图元较多,也可能在垂直方向上规则有序的图元较多。而规则有序的图元为影响压缩率的重要因素,因此,在本发明的双向压缩方法中,当压缩某一图形文件时,将实际图形的存储数据依照图形的长、宽构成F[X,Y]阵列,然后将图形数据分别沿水平及垂直方向,构成不同的队列数据包。然后,针对该数据包进行本发明的压缩处理,最后在比较两个方向上的压缩数据结果,取其最小值,而动态产生最佳的压缩结果,并将实际中能产生最佳压缩结果所对应的F[X,Y]阵列的队列数据包排列方向记录下来,以作为解压还原之用。如此,对应于不同的图形,可以针对其像素阵列不同的有序方向性,而做出不同的压缩选择。换言之,本发明也就是利用一种压缩方法,分别对两个不同方向排列的数据包进行压缩,比较结果并取其最佳的压缩值,从而达成更理想的压缩率。
请参阅图4,本发明的双向压缩算法包括下列步骤(1)步骤100,先以字节为图元单位,分别沿着水平方向及垂直方向构成队列数据包;(2)步骤102,接着再利用本发明的压缩算法,分别压缩前述沿着水平方向及垂直方向所构成的队列数据外;(3)步骤104,再比较沿着水平方向及垂直方向的阵列压缩率,若水平方向大于垂直方向,则进行至步骤106,选定水平方向压缩结果为本压缩算法的压缩结果,同时记录压缩数据大小,并记录压缩方向为水平方向,然后结束;(5)步骤108,选定垂直方向压缩结果为本压缩算法的压缩结果,同时记录压缩数据大小,并记录压缩方向为垂直方向,然后结束。
前述本发明的压缩算法,主要是以LZW压缩算法为基础,再加入扩展编码技术,使得本发明对数据的压缩可以突破压缩窗口的限制,以下将本发明的压缩算法简称为LZZ压缩算法,其是先设定一个数据包的长度为DataBlockSize,压缩窗口的大小设定为WindowSize(例如4K),当前搜索字节偏移设定为CurrentPoint。
在处理重复字节时,于其他的LZ算法中,其结束条件为CurrentPoint+RepeatLength<WindowSize,及CurrentPoint+RepeatLength<DataBlockSize。
而在LZZ算法中,其结束条件为CurrentPoint+RepeatLength<64K,及CurrentPoint+RepeatLength<DataBlockSize,在处理数据块匹配时,首先先对整个数据包,依据一固定长度FIXED_LENGTH,例如可为30~50个字节为间隔大小,对整个数据包的所有数据划分为若干段,利用CRC(循环冗余校验码)具有唯一表征一定长度字串的特性,为每段分别计算其CRC值(例如为16位的CRC),产生一幅由各段CRC值组成的值域。这样利用CRC值至少可以观察到214个数据字节的特性。根据判断CRC值是否相等,作为FIXED_LENGTH为基础的各段CRC最大匹配长度统计,即可以得到由段号和各段最大匹配长度所组成的段匹配表。则相对于一已知指针Point,在数据包内指针Poing所对应的段号为Point/FIXED_LENGTH。
当压缩扫描指针为CurrentPoint时,首先扫描从偏移CurrentPoing-WindowSize(如CurrentPoint<WindowSize,则取值为0)开始到CurrentPoint为止的一个“浮动的压缩窗口”和从CurrentPoint开始的数据块匹配数MatchLengthInWindow,然后再进行向前的全域搜索,搜索区间为从数据包开始偏移0处到CurrentPoint-WindowSize(如CurrentPoint<WindowSize,则取值为0)处。所以当以FIXED_LENGTH为段大小来划分时,相对应的区间段号为0~(CurrentPoint-WindowSize)/FIXED_LENGTH,如此直接根据段号查段匹配表,即可得出全域数据块匹配长度MatchLengthInPastRange。
接着,比较MatchLengthInWindow和MatchLengthInPastRange的大小,可得出最大的数据块匹配长度。
在此应注意,若考虑到编码效率的因素,当MatchLengthInWindow<MatchLengthInPassRange≥8时,将取MatchLengthInWindow为当前最大的匹配长度,因为此时采用MatchLengthInWindow的编码(LZ编码)的长度小于采用MatchLengthInPastRange的编码(扩展编码)的长度。如此,经由引入段匹配(根据CRC值表进行计算),可较为快速地实现大容量的数据块匹配计算。
请参阅图5a、5b,本发明的LZZ压缩算法包括下列步骤(1)步骤110,取得当前重复字节数据RepeatLength;(2)步骤112,取得当前压缩窗口内的数据块匹配长度MatchLengthInWindow;(3)步骤114,取得从数据包开始到当前扫描字节的上一个压缩窗口内的数据块匹配长度MatchLengthInPastRange;(4)步骤116,若当前重复字节数RepeatLength小于2,则行进至步骤118,否则进行至A;(5)步骤118,若当前压缩窗口内的数据块匹配长度MatchLengthInWindow小于上一个压缩窗口内的数据块匹配长度MatchlengthInPastRange,则进行至步骤120,否则进行至步骤122;(6)步骤120,设定最大数据块匹配长度MatchLengthInPastRange,然后进行至B;(7)步骤122,设定最大数据块匹配长度为当前压缩窗口内的数据块匹配长度MatchLengthInWindow,然后进行至B。
其中,如图5b所示,A为进行至步骤130,执行普通的字节编码,然后再行进至D。而B则行进至步骤140,决定当前重复字节数RepeatLength是否大于最大数据块匹配长度,若是则进行至步骤142,否则进行至步骤144;步骤142,执行字节重复编码,然后经由D进行至步骤146;步骤144,执行数据块匹配编码,然后经由D进行至步骤146;步骤146,若数据包扫描结束,则结束流程,否则进行至C,由C进行至步骤110。
请参阅图6,其为一幅16色640×480的图像,此图像的结构大致可分为I、J、K三个区块,对此图而言,由于I与J两个区块的图形特性几乎完全相同,所以根据LZZ算法,可实现I、J区块跨压缩窗口区间的匹配压缩。同时,区块K中则含有较大幅度的白色块,如前所述,以传统的压缩算法,其压缩窗口小于4K字节,则这样一幅16色640×480的图像至少必须分成38个压缩窗口,因此,在区块K中大约会有10个大小为4K字节且仅包含白争像素的压缩窗口,严重地影响压缩效率。相对地,利用本发明的LZZ算法,可以实现跨压缩窗口长度的字节重复压缩,也就是说,字节重复压缩的长度可大于4K字节,因此,在图形中具有大量重复字节时,其压缩效率极佳。另外,因为图形为水平构图,所以沿水平方向看,区块I及J可实施大区域匹配压缩,区块K则可实施大区域重复压缩。由图中显示可以看出,若沿着垂直方向来看,则由于像素重复率较低,所以压缩特性将较差。将其按水平方向和垂直方向分别构成数据包,然后因为习知的LZ压缩算法只能应用于水平方向的压缩,而本发明的LZZ压缩算法可应用于水平和垂直两个方向,所以分别利用LZZ压缩算法压缩其水平方向和垂直方向的数据包,再利用LZW压缩算法压缩其水平方向的数据包,其压缩结果比较如下表1表1<
>相对地,当此一16色640×480的图像如图7所示,同样地分别利用LZZ压缩算法压缩其水平方向和垂直方向的数据包,再利用LZW压缩算法压缩其水平方向的数据包,其压缩结果比较如下表2表2<
很明显,由上表可看出本发明的LZZ压缩算法对于左右对称或上下对称的构图,压缩效率较传统压缩算法高,因为其实现了远端数据匹配。依据上表1中的数据而言,沿着水平方向,利用LZZ压缩算法压缩后,图形的大小为2294个字节,仅为运用LZW压缩算法压缩的结果的一半大小。不过由于其仍大于水平方向的2294个字节,所以根据本发明的方法,还是输出水平方向的压缩结果作为运用本发明的方法进行压缩的输出。而根据表2的数据,沿着水平方向,利用LZZ压缩算法压缩后,图形有大小为5026个字节,不到运用LZW压缩算法压缩的结果的一半,也就是说,在图形构图对称性较差的情况下,LZZ压缩算法的压缩效率更是显示比习知压缩算法好。当然,比较表1与表2的数据,可知对于构图对称性较佳的图形,利用LZZ压缩算法可以获得极佳的压缩效率。
接下来再以一实施例说明LZZ压缩算法的详细流程,其中,此实施例是以单色图为例加以说明。
对于如图3a所示的像素阵列,该单色图形的宽为M×8、高为n,其为沿着水平方向相邻8个像素为1个字节存储单元的像素阵列。P11、P12、P13、P14、…、P21、P22、P23、……均为阵列元素,其分别对应单色图形中8个水平相邻的像素,其大小均为1个字节,且令M为所对应的图元阵列的行值,N为所对应的图元阵列的列值。其与图像的对应公式为M=单色图像宽/8N=单色图像高再者,以下所述图元如未经特别指定,均指单色图形中8×1像素大小的图块。
首先分别沿着水平方向和垂直方向,将图像阵列中的图元区分成队列数据包。亦即,沿着水平方向构成队列数据包后,得到一个长度为N×M大小的数组序列,如下所示ArrayX[N×M]={P11、P12、P13、P14、…、P1m、P21、P22、P23、P24、…、P2m、P31、P32、P33、P34、…、P3m、P41、P42、P43、P44、…、P4m、…、Pn1、Pn2、Pn3、Pn4、…、Pnm};另外,沿着垂直方向构成队列数据包后,得到一个长度为M×N大小的数组序列,如下所示ArrayY[N×M]={P11、P12、P13、P14、…、P1n、P21、P22、P23、P24、…、P2n、P31、P32、P33、P34、…、P3n、P41、P42、P43、P44、…、P4n、…、Pm1、Pm2、Pm3、Pm4、…、Pmn}。
针对上述两个数据队列,均采用前述LZZ压缩算法进行压缩,如图4所示,数组ArrayX经LZZ压缩算法压缩后得到的压缩码长度为SizeX,数组ArrayY经LZZ压缩算法压缩后得到的压缩码长度为SizeY。则若SizeX<SizeY,则取水平方向数据包的压缩结果为压缩的结果,同时记录压缩方向为水平方向。又若SizeX>SizeY,则取垂直方向数据包的压缩结果为压缩的结果,同时记录压缩方向为垂直方向。
最后,再对本发明的LZZ压缩算法的编码定义加以说明。基本上,本发明的LZZ压缩算法是以习知的LZ压缩算法为基础,加上扩展编码的部分以及匹配重复地址的运用。
在无重复字节编码的字节段中,第一个字节为标记字节,其后的字节为数据中的无重复特征字节,如图8所示,其中标记字节第7位及第6位无为0,其余6位表示后面的无重复特征字节的个数N。
在重复字节编码中,第一个字节为标记字节,第二个字节为重复字节的ASCII码,如图9所示,标记字节的第七位与第六位分别为0和1,以作为编码识别。后面的6位表示字节重复个数N,其最大值NMAX为64。另外,相对于一般的LZ压缩算法中,字节重复个数N≥2(由重复编码的定义决定)。当N=0或N=1时,即成为冗余编码。在本发明中,特别设定N=0和N=1时,采用LZZ编码,其中,当N=0时,以第三个字节表示重复字节个数,其中表示64至256个重复字节;当N=1时,以第三个字节与第四个字节表示重复字节个数,其可表示256至64K个重复字节。
在数据块重复编码中,第一字节仍为标记字节,第二字节为地址字节,如图10所示,第一个字节的第7位为1,以做为编码的标记,而第一字节的第0~3位与第二字节的第0~07位,共12位用以表示当前匹配数据块的数据块重复地址,因为212=4096,故可表示的匹配重复数据块的最大范围为4096个字节。也就是说,将来源数据以最大尺寸4096字节放入缓冲区内,当找到两个相同的数据块时,便将第一个数据块相对于缓冲区首地址的编移称之为地址。因此,12位恰可表示一个缓冲区的地址,如此当后一数据块和前一数据块匹配成功后,若其匹配数目小于8时,则放置于第一字节的第4~6位,此时压缩编码为2字节长度;否则第一字节的4~6位为111(二进制表示),此时当匹配数目小于256时,则匹配数目放置在第三字节,此时压缩编码为3字节长度;若匹配长度超过256但小于64K,则将第三字节设置为1(作特征标示),而将真实匹配长度放置在第5和第6字节中。而当匹配地址小于4K时,采用2~3位压缩编码,即如图10所示,为[第一位、第二位]或[第一位、第二位、第三位]。当匹配地址大于4K时,采用4或5或6位编码,匹配地址等于第四字节(表示整4K个数)*4096+第一位及第二位中地址值ADDR。至于组号则可存储一组编码,用以指示匹配的数据块,因此,8位的组号可以表示的最大数据块匹配向前试探空间为256×4K。
权利要求
1.一种双向图像压缩方法,其特征在于,包括下列步骤(i)先以字节为图元单位,分别沿着水平方向及垂直方向构成队列数据包;(ii)接者再利用一压缩算法,分别压缩前述沿着水平方向及垂直方向所构成的队列数据包;(iii)再比较沿着水平方向及垂直方向的阵列压缩率,若水平方向大于垂直方向,则进行至下一步骤;(iv)选定水平方向压缩结果为本压缩算法的压缩结果,同时记录压缩数据大小,并记录压缩方向为水平方向,然后结束;(v)前述步骤(iii)中,比较沿着水平方向及垂直方向的阵列压缩率,若水平方向小于垂直方向,则进行至下一步骤;及(vi)选定垂直方向压缩结果为本压缩算法的压缩结果,同时记录压缩数据大小,并记录压缩方向为垂直方向,然后结束。
2.如权利要求1所述的双向图像压缩方法,其特征在于,前述压缩算法包括下表步骤(1)取得当前重复字节数;(2)取得当前压缩窗口内的数据块匹配长度;(3)取得从数据包开始到当前扫描字节的上一个压缩窗口内的数据块匹配长度;(4)若当前重复字节数小于2,则行进至下一步骤,否则进行至步骤(9);(5)若当前压缩窗口内的数据块匹配长度小于上个压缩窗口内的数据块匹配长度,则进行至下一步骤;(6)设定最大数据块匹配长度为上一个压缩窗口内的数据块匹配长度,然后进行至步骤(10);(7)若当前压缩窗口内的数据块长度大于上个压缩窗口内的数据块匹配长度,则进行至下一步骤;(8)设定最大数据块匹配长度为当前压缩窗口内的数据块匹配长度,然后进行至步骤(10);(9)执行普通的字节编码,然后再行进至步骤(14);(10)决定当前重复字节数是否大于最大数据块匹配长度,若是则进行至下一步骤;(11)执行字节重复编码,然后进行至步骤(14);(12)若当前重复字节数小于最大数据块匹配长度,若是则进行至下一步骤;(13)执行数据块匹配编码,然后进行至下一步骤;(14)若数据包扫描结束则结束流程,否则进行至步骤(1)。
3.如权利要求2所述的双向图像压缩方法,其特征在于,当前述当前压缩窗口内的数据块匹配长度<上一个压缩窗口内的数据块匹配长度≤8时,取当前压缩窗口内的数据块匹配长度为当前最大的匹配长度。
4.如权利要求2所述的双向图像压缩方法,其特征在于,当前搜索字节的偏移+当前重复字节数<64K,及当前搜索字节的偏移+当前重复字节数<数据包的长度。
5.如权利要求2所述的双向图像压缩方法,其特征在于,前述压缩方法的编码定义为在无重复字节编码的字节段中,第一个字节为标记字节,其后的字节为数据中的无重复特征字节。
6.如权利要求2所述的双向图像压缩方法,其特征在于,前述压缩方法的编码定义为重复字节编码中,第一个字节为标记字节,第二个字节为重复字节的ASCII码。
7.如权利要求2所述的双向图像压缩方法,其特征在于,前述压缩方法的编码定义为在数据块重复编码中,第一字节仍为标记字节,第二字节为地址字节。
8.如权利要求5所述的双向图像压缩方法,其特征在于,前述标记字节第7位及第6位均为0,其余6个位表示后面的无重复特征字节的个数。
9.如权利要求6所述的双向图像压缩方法,其特征在于,前述标记字节的第七位与第六位分别为0和1,以做为编码识别,后面的6位表示字节重复个数N,且N的最大值为64。
10.如权利要求7所述的双向图像压缩方法,其特征在于,前述第一个字节的第7位为1,以做为编友码的标记,而第一字节的第0~3位与第二字节的0~7位,共12位用以表示当前匹配数据块的数据块重复地址。
11.如权利要求9所述的双向图像压缩方法,其特征在于,当N=0时,第三字节为重复字节个数,其可表示64至256个字节;当N=1时,第三字节与第四字节为重复字节个数,其可表示256至64K个字节。
12.如权利要求10所述的双向图像压缩方法,其特征在于,当后一数据块和前一数据块匹配成功后,若其匹配数目小于8时,则放置于第一字节的第4~6位,此时压缩编码为2字节长度;否则第一字节的4~6位为二进制数表示的111,此时当匹配数目小于256时,则匹配数目放置在第三字节中,此时压缩编码为3字节长度;若匹配长度超过256但小于64K,则将第三字节置为1,以做为特征标示,而将真实匹配长度放置在第5和第6字节中;而当匹配地址小于4K时,采用2~3位压缩编码,为[第一位、第二位]或[第一位、第二位、第三位];当匹配地址大于4K时,采用4或5或6位编码匹配地址等于第四字节×4096+第一位及第二位中的地址值。
13.一种双向图像压缩方法,其特征在于,包括下列步骤(i)当压缩某一图形文件时,将实际图形的存储数据依照图形有长、宽构成一阵列,然后将图形数据的阵列分别沿水平及垂直方向,构成不同的队列数据包;(ii)首先,对沿水平方向构成的队列数据包进行压缩处理,在处理重复字节时,设定其结束条件为当前搜索字节的偏移+当前重复字节数<64K,及当前搜索字节的偏移+当前重复字节数<数据包的长度,在处理数据块匹配时,首先对整个数据包,以一固定长度的字节为间隔,对整个数据包分段计算其循环冗余校验码值,产生一张循环冗余校验码值域表,然后,根据循环冗余校验码值是否相等,可以得到以该固定长度为基础的段匹配表,则相对于一已知的指针,在数据包内指针所对应的段号为指针/固定长度;(iii)当压缩扫描指针为当前搜索字节的偏移时,首先扫描从偏移当前搜索字节的偏-压缩窗口的大小开始到当前搜索字节的偏移为止的一个浮动的压缩窗口和从当前搜索字节的偏移开始的数据块匹配数据当前压缩窗口内的数据块匹配长度,然后再进行向前的全域搜索,搜索区间为从数据包开始偏移0处到当前搜索字节的偏移-压缩窗口的大小处,所以当以固定长度为段大小来划分时,相对应的区间段号为0至(当前搜索字节的偏移-压缩窗口的大小)/固定长度,如此直接根据段号查段匹配表,即可得出全域数据块匹配长度上一个压缩窗口内的数据块匹配长度;(iv)接着,比较当前压缩窗口内的数据块匹配长度和上一个压缩窗口内的数据块匹配长度的大小,可得出最大的数据块匹配长度;(v)接下来,再对沿垂直方向构成的队列数据包进行如前述步骤(ii)至步骤(iv)的压缩处理;(vi)最后再比较两个方向上的压缩数据结果,取其最小值,而动态产生最佳的压缩结果,并将实际中能产生最佳压缩结果所对应的图形数据的阵列的队列数据包排列方向记录下来,以作为解压还用之用。
14.如权利要求13所述的双向图像压缩方法,其特征在于,前述循环冗余校验码值为16位。
全文摘要
本发明涉及一种双向图像压缩方法,包括:(i)以字节为图元单位,分别沿着水平及垂直方向构成队列数据包;(ii)利用一压缩算法,分别压缩前述沿着水平及垂直方向所构成的队列数据包;(iii)比较沿着水平及垂直方向的阵列压缩率,若水平方向大于垂直方向,则(iv)选定水平方向压缩结果为本压缩算法的压缩结果;(v)若水平方向小于垂直方向,则(vi)选定垂直方向压缩结果为本压缩算法的压缩结果,同时记录压缩数据大小,并记录压缩方向,然后结束。
文档编号H04N7/26GK1259829SQ98122950
公开日2000年7月12日 申请日期1998年11月27日 优先权日1998年11月27日
发明者陈淮琰, 郑建锋 申请人:英业达集团(西安)电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1