一种图像压缩/解压缩方法和系统的制作方法

文档序号:7957298阅读:240来源:国知局
专利名称:一种图像压缩/解压缩方法和系统的制作方法
技术领域
本发明涉及计算,尤其涉及一种图像压缩/解压缩方法和系统。
背景技术
JPEG(Joint Photographic Experts Group)是90年代兴起的采用数字方法对静止图片进行压缩的国际标准,压缩比可高达十倍左右,随着数字设备拍照功能在手机和手持设备上的普及,符合JPEG国际静止图片压缩-解压缩标准的装置或电路已成为这些设备必须的组成部分。
在进行压缩时,需要将原始的图像数据从RGB Color domain转换到YUV或YCbCr domain。整个JPEG压缩标准定义在YUV domain而非RGB domain里。定义在YUV domain里是利用人类的视觉特性的缘故,Y成为亮度(Luminance),而U、V则成为色度(Chrominance),因为人类眼球中感光的细胞与感色的细胞在数目上有相当程度的差别(人眼对亮度的敏感度要远大于对色度的敏感度),因此感受力上的差距,使我们能对U、V信号做再次采样,可以更进一步地提高压缩比。
JPEG编码压缩主要流程一般如下I、图片方块化在进行压缩之前,将原始的图像数据切割成8X8的方块,切成8X8方块的原因是对于绝大部分图片,8X8方块内的64个像素表示的信息是密切相关的,这样通过后续的过程处理过的数据具有更高的压缩度。
II、离散余弦变换离散余弦变换(Discrete Cosine Transform)简称DCT,是一种转换编码的技术,它能将时域中的数据转换到频域,转换到频域后的数据有一种特性,就是能量(表达原始图像的信息)会集中在8x8的方块左上角的位置,越往右下角所代表的就越是高频的数据。如果两个k位像素A和B密切相关,那末我们可以用(k+1)位表示它们的和(A+B),用很小的位数表示它们的差(A-B)。这样总的表示位减少了。
这一概念的推广就是DCT变换Suv=14CuCvΣxΣysxycos[(2x+1)uπ16]cos[(2y+1)vπ16]]]>这里,Cu,Cv=1/2u=0,v=01otherwise]]>密切相关8X8图像方块对应的64个变换参数{Suv,u=0,1,2,…,7;v=0,1,2,…7}表示该方块数据的特性。
如果该方块内的像素比较平稳,那末Suv的低频分量较重,而高频分量较轻,这样总的表示位减少了。在一般的图像数据里,低频的数据占据着较大的能量比例,而高频数据所占据的能量比例则较低,加上人类视觉系统的低通滤波特性,DCT转换近乎完美地将这些高低频的信息依次分类在8x8的方块里。
DCT变换是完全可逆变换,其反变换为sxy=14ΣuΣvCuCvSuvcos[(2x+1)uπ16]cos[(2y+1)vπ16]]]>
III、量化做完DCT转换后,将需要将频域的数据经量化计算,量化计算是经特定的量化表做除法运算。量化表的设计是基于人类视觉系统的特性的,因此在低频的值小,而在高频的值大,这使得高频数据在经过除法量化后变为零得几率大增。
JPEG提供了一套标准的量化矩阵{Quv,u=0,1,2,。。。
7;v=0,1,2,。。。7}。
Quv矩阵也可以由用户根据本图像特点进行优化,在图像质量和产生的码流长度之间进行平衡。
必须注意的是,因为量化过程采取了除法取整的过程,如下式所示Quv×round[SuvQuv]≠Suv]]>Suv为做完DCT后8x8方块内的值;Quv为8x8的量化表。
这样就会产生失真,这也是JPEG唯一会产生失真的步骤。
虽然量化会产生失真,却也是能提高压缩比的关键所在。
JPEG提供的标准量化矩阵如下,一般情况U,V分量精度可以差一些(这在一定程度上也是因为人眼对色度的敏感度要差一些)例如,适用于Y分量的{Quv}矩阵如下表1所示

表1
又如,适用于U,V分量的{Quv}矩阵如下表1所示

表2IV、Zig-Zag扫描经过量化后的数据再通过特定的数据串联法则串联在一起,称为Zig-Zag Scan,以求最终能以最少的位数来表示原始数据信息。
例如,Zig-Zag扫描的顺序如下表3所示

表3经过Zig-Zag扫描后的数据有个特点就是,低频分量在前,高频分量在后,换句话说就是非零系数基本集中在前面,零系数基本集中在后面,这样更有利于提高后面的编码压缩率。
V、HUFFMAN编码(熵编码)经过Zig-Zag扫描串联后的数据进入一种特殊的编码,称为哈夫曼编码(HUFFMAN)或者熵编码(Entropy Coding),它是可变字长编码(VLC)的一种。它完全依据字符出现的概率来构造码表,使得编码后的平均字长最短。
频域上的数据分为两种,一种在左上角00位置,称为直流DC系数,其余的位置皆为交流AC系数。
HUFFMAN编码并不对DC或AC直接编码。因为对DC系数而言,每个方块都存在着类似的DC值,这些类似的DC值(一般称之为冗余Redundancy),如果都拿来重复编码,将会降低编码效率,因此实际上是将目前的DC值减去前一个8x8方块的DC值,以此差值做编码。
而对于AC而言,由于高低频数据分布的特性使得串联数据中有许多零项,这些零项也会在编码时被充分利用,即,交流系数的编码是对一个非零系数和它前面所有的零仅做一次编码,而不是对每个交流系数都做一次编码,这样可以大大提高压缩效率。对哈夫曼压缩效率贡献最大的也就是这种对AC系数的编码方式。
以上所述为数据压缩的主要流程,解压缩则为上述流程的逆过程。
在现有技术中,实现上述控制流程主要采用以下两种方式a) 纯软件方式对于200MHz的嵌入式微处理器每分钟才能处理一幅4百万像素的图像,不能满足实时性的要求。
b)纯硬件方式现有的纯硬件方式缺乏嵌入式微处理器软件的灵活性,过分强调每个周期进行一个HUFFMAN解码,造成硬件开销很大,成本过高。

发明内容
本发明的目的在于提供一种实时性高且成本低的图像压缩/解压缩方法和系统,以克服现有技术中纯软件方式实时性差,纯硬件方式成本高的问题。
本发明所采用的图像压缩/解压缩系统,包括DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块依次相连,其中,所述的DCT模块对数据进行离散余弦变换(Discrete CosineTransform)及反变换;所述的量化模块完成数据的量化或反量化计算;所述的Zig-Zag扫描模块完成数据的串联或解串联;所述的HUFFMAN模块完成数据的HUFFMAN编码或解码;所述的码流整理模块完成数据的打包或分包处理;其特征在于还包括存储器和主控模块,其中,所述的存储器中保存有关表项;所述的主控模块控制DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块的工作状态,对原始图像数据完成方块化处理发送至DCT模块,或提取压缩数据块至码流整理模块,该主控模块根据处理进程对存储器中的表项进行相应的调用,向量化模块或HUFFMAN模块加载信息。
所述的存储器中的表项包括量化表和HUFFMAN编解码表;所述的主控模块调用所述量化表,加载至量化模块;所述的主控模块调用所述HUFFMAN编解码表,并对其进行排序,加载至HUFFMAN模块,解码时向HUFFMAN模块加载解压缩过程中用到的从HUFFMAN码表中提取出来的码字特征信息;所述的码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志。
所述的HUFFMAN编解码表包括直流HUFFMAN编解码表和交流HUFFMAN编解码表,其中,所述的直流HUFFMAN编解码表包括类值SSSS、码字长度Codelength、码字Code word;类值SSSS为表项访问入口;所述的交流HUFFMAN编解码表包括零游长RRRR/类值SSSS、表址Table Address、码字长度Code length、码字Code word;零游长RRRR/类值SSSS为表项访问入口;在解压缩中,主控模块按照码字长度Code length,且对于每个长度的所有码字根据大小顺序对HUFFMAN解码码表排序,排序后的HUFFMAN解码码表的表项对应于按顺序的地址入口。
本发明中的图像压缩方法采用如下步骤A、主控模块向量化模块和HUFFMAN模块分别导入量化表和HUFFMAN编码码表;B、主控模块由原始图像数据取出一个方块化的数据单元发送至DCT模块;C、DCT模块对该数据单元进行离散余弦变换的编码转换,转换后的数据流传递至量化模块;D、量化模块根据量化表对数据流中频域的数据进行量化计算,得到量化后的DCT系数;E、Zig-Zag扫描模块对量化后的DCT系数进行Zig-Zag扫描,完成数据的串联。
F、HUFFMAN模块根据HUFFMAN编码码表对经过Zig-Zag扫描的系数进行相应的HUFFMAN编码。
G、HUFFMAN编码后的数据经码流整理模块打包处理,完成对所述数据单元的压缩。
所述的步骤F包括如下步骤F1、HUFFMAN模块首先获取本数据单元相对于前一个数据单元的相同图像分量的直流差值的幅度magnitude;F2、通过所述幅度magnitude计算出类值SSSS;F3、根据类值SSSS由相应的直流HUFFMAN编码码表取得相应的HUFFMAN码;F4、将所得到的HUFFMAN码字加上直流系数差值的有效数据,完成直流系数的编码;F5、经过统计计算每个非零交流系数前面的“0”交流系数的个数,同时计算这个非零交流系数的有效位宽;F6、根据“0”交流系数的个数值和该非零交流系数的位宽由交流HUFFMAN编码码表中对应表地址Table Address处直接取得相应的HUFFMAN码字;F7、将所得到的HUFFMAN码加上这个非零交流系数的有效数据完成交流系数HUFFMAN编码。
所述的步骤F4中,所述有效数据的位宽即类值SSSS的大小。
本发明中的图像解压缩方法采用如下步骤a、主控模块调用HUFFMAN解码码表,并对其进行排序,加载至HUFFMAN模块,且将量化表导入量化模块;b、主控模块从HUFFMAN表提取码字特征信息,且向HUFFMAN模块加载该信息,所述的码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志;c、主控模块提取压缩数据包至码流整理模块;d、码流整理模块对压缩数据包进行分包处理,将分出的数据码流发送至HUFFMAN模块;e、HUFFMAN模块根据码字特征信息确定HUFFMAN码的长度以及在HUFFMAN编解码表中的位置;f、以所取得的长度、位置信息为检索入口,从HUFFMAN解码码表中取出相应的类值SSSS或零游长RRRR/类值SSSS;g、通过类值SSSS得到数据码流中系数的有效位宽,从码流中取出相应个bit的码流,作为系数的有效数据;如果是交流系数的解码,零游长表示该系数前面所具有“0”系数的个数,这样就完成了一段码流的huffman解码;后续码流的解码过程相同;h、Zig-Zag扫描模块对解码后的数据流进行反Zig-Zag扫描,完成数据流的解串联;i、量化模块根据量化表对数据流进行反量化操作,产生频域数据;j、DCT模块将数据流的频域数据转化为重构图像的时域数据,完成解压缩。
所述的步骤a中所述的主控模块按照码字长度Code length,且对于每个长度的所有码字根据大小顺序对HUFFMAN解码码表排序,排序后的HUFFMAN解码码表的表项对应于按顺序的地址入口。
所述的步骤e包括如下步骤
e1、HUFFMAN模块读取一组数据码流,根据码字特征信息,通过与每个长度的开始码字进行比较,确定该数据码流中HUFFMAN码的码字长度;e2、通过码字长度从数据码流中取出HUFFMAN码字,把取出的码字与相应长度的开始码字相比较,计算出在HUFFMAN码表中该码字相对于开始码字的相对位置;e3、通过开始码字在HUFFMAN表中的位置和计算所得到的相对位置算出该码字在HUFFMAN码表中的绝对位置。
本发明的有益效果为在本发明中,采用主控模块控制各个功能模块(DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块、存储器等),利用主控模块对存储器中保存的表项(量化表和HUFFMAN编解码表)操作,使得压缩和解压缩共享一套表项,并可根据实际需要通过主控模块对表项内容进行修改、排序等,本发明的这种硬件与软控制相结合的方式,处理速度可以得到一定程度的保证,满足了处理实时性要求,而且,避免了纯硬件方式中对于操作周期的限制,可以利用主控模块即时控制硬件状态,使得硬件开销大大减少,降低成本,同时也降低了系统设计难度,因此,本发明实时性高且成本低,克服了现有技术中纯软件方式实时性差,纯硬件方式成本高的问题。
在本发明的压缩处理中,根据零游长RRRR和类值SSSS由交流HUFFMAN编解码表中对应表地址Table Address处直接取得相应的HUFFMAN码,避免了现有技术中通过对零游长RRRR和类值SSSS进一步译码,取得表地址Table Address的操作,使得本发明表项操作简便、直接性强,运行速度快,进一步提高了本发明的实用性。
在本发明的解压缩处理中,HUFFMAN模块根据码字特征信息确定数据码流中HUFFMAN码的码字长度,再将取出的HUFFMAN码字与相应长度的开始码字相比较,计算出在HUFFMAN码表中该码字相对于开始码字的相对位置,然后以开始码字在HUFFMAN表中的位置和计算所得到的相对位置算出该码字在HUFFMAN码表中的绝对位置,这种HUFFMAN码的确定方法操作简便,对于类值SSSS或零游长RRRR/类值SSSS的获取,实际上通过了一种二次查表方式第一次把取出的码字与相应长度的开始码字相比较。
第二次以所取得的长度、位置信息为检索入口,从HUFFMAN解码码表中取出相应的类值SSSS或零游长RRRR/类值SSSS。
这种二次查表方式的检索量小,速度快,进一步提高了本发明的实用性。


图1为本发明基本结构示意图;图2为本发明中数据压缩控制流程示意图;图3为本发明中数据解压缩控制流程示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明根据图1,本发明包括DCT模块1、量化模块2、Zig-Zag扫描模块3、HUFFMAN模块4、码流整理模块5并依次相连,以及存储器6和主控模块7。
如图1所示,DCT模块1对数据进行离散余弦变换转换及反变换,量化模块2完成数据的量化或反量化计算,Zig-Zag扫描模块3完成数据的串联或解串联,HUFFMAN模块4完成数据的HUFFMAN编码或解码,所述的码流整理模块5完成数据的打包或分包处理;
如图1所示,存储器6中保存有关表项,其中的表项包括量化表QT0-DC、QT0-AC、QT1-DC、QT1-AC,和HUFFMAN编解码表,HUFFMAN编解码表中包括直流HUFFMAN编解码表HT0-DC、HT1-DC,和交流HUFFMAN编解码表HT0-AC、HT1-AC。
如下表4所示,直流HUFFMAN编解码表包括类值SSSS、码字长度Code length、码字Code word,其中,类值SSSS为表项访问入口。

表4如下表5所示,交流HUFFMAN编解码表包括零游长RRRR/类值SSSS、表地址Table Address、码字长度Codelength、码字Code word。
零游长RRRR/类值SSSS为表项访问入口,表地址Table Address通过零游长RRRR/类值SSSS直接取得,零游长RRRR是指非零交流系数前面的“0”交流系数的个数。

表5如图1所示,主控模块7控制DCT模块1、量化模块2、Zig-Zag扫描模块3、HUFFMAN模块4、码流整理模块5的工作状态,对原始图像数据完成方块化处理发送至DCT模块1,或提取压缩数据块至码流整理模块5,该主控模块7根据处理进程对存储器6中的表项进行相应的调用,向量化模块2或HUFFMAN模块4加载信息。
在本发明的压缩或解压缩中,主控模块7调用所述量化表QT0-DC、QT0-AC、QT1-DC、QT1-AC,加载至量化模块2。
所述的主控模块7调用所述HUFFMAN编解码表,并对其进行排序,加载至HUFFMAN模块4,解码时向HUFFMAN模块4加载解压缩过程中用到的从HUFFMAN码表中提取出来的码字特征信息,码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志等。
在解压缩中,主控模块7按照码字长度Code length,且对于每个长度的所有码字根据大小顺序对HUFFMAN编解码表排序,排序后的HUFFMAN编解码表的表项对应于按顺序的地址入口。
如图2所示,本发明的具体压缩控制流程如下1、主控模块7向量化模块2和HUFFMAN模块4分别导入量化表和HUFFMAN编码码表。
2、主控模块7由原始图像数据取出一个方块化的8X8数据单元发送至DCT模块1。
3、DCT模块1对该数据单元进行离散余弦变换的编码转换,转换后的数据流传递至量化模块2。
4、量化模块2根据量化表QT0-DC、QT0-AC、QT1-DC、QT1-AC对数据流中频域的数据进行量化计算,得到量化后的DCT系数。
5、Zig-Zag扫描模块3对量化后的DCT系数进行Zig-Zag扫描,完成数据的串联。
6、HUFFMAN模块4首先获取本数据单元相对于前一个数据单元的相同图像分量的直流差值的幅度magnitude。
7、HUFFMAN模块4通过所述幅度magnitude计算出类值SSSS;
在本发明中,通过下式转换得到相应的类值SSSS(下式中的“MAG”即为幅度magnitude)if MAG[DIFF][10]=0;SSSS=11;ELSEif MAG[DIFF][9]=0;SSSS=10; ELSEif MAG[DIFF][8]=0;SSSS=9; ELSEif MAG[DIFF][7]=0;SSSS=8; ELSEif MAG[DIFF][6]=0;SSSS=7; ELSEif MAG[DIFF][5]=0;SSSS=6; ELSEif MAG[DIFF][4]=0;SSSS=5; ELSEif MAG[DIFF][3]=0;SSSS=4; ELSEif MAG[DIFF][2]=0;SSSS=3; ELSEif MAG[DIFF][1]=0;SSSS=2; ELSEif MAG[DIFF]
=0;SSSS=1; ELSESSSS=11;8、HUFFMAN模块4根据类值SSSS由相应的直流HUFFMAN编码码表HT0-DC、HT1-DC(如表4)取得相应的HUFFMAN码字,其中编码表HT0-DC用于Y分量直流系数的编码,HT1-DC用于U、V分量直流系数的编码。
9、HUFFMAN模块4将所得到的HUFFMAN码加上直流系数差值的有效数据,有效数据的位宽即类值SSSS的大小,完成直流系数的编码。
10、HUFFMAN模块4经过统计计算每个非零交流系数前面的“0”交流系数的个数,同时计算这个非零交流系数的位宽。
11、根据“0”交流系数的个数值(即零游长RRRR)和位宽(即类值SSSS)由交流HUFFMAN编码码表HT0-AC、HT1-AC(如表5)中对应表地址Table Address处直接取得相应的HUFFMAN码字。
12、将所得到的HUFFMAN码加上这个非零交流系数的有效数据完成交流系数HUFFMAN编码,通过上述步骤6-步骤12,HUFFMAN模块4根据HUFFMAN编码码表对经过Zig-Zag扫描所产生的64个系数进行相应的HUFFMAN编码,步骤6-步骤9完成第一个系数的直流系数编码,步骤10-步骤12完成后面63个系数的交流系数编码。
13、HUFFMAN编码后的数据经码流整理模块5打包处理,完成对该数据单元的压缩。
如图3所示,本发明的具体解压缩控制流程如下1)主控模块7调用HUFFMAN解码码表,并对其进行排序,加载至HUFFMAN模块4,且将量化表QT0-DC、QT0-AC、QT1-DC、QT1-AC导入量化模块2,在对HUFFMAN解码码表的排序中,主控模块7按照码字长度Code length,且对于每个长度的所有码字根据大小顺序对HUFFMAN解码码表排序,排序后的HUFFMAN解码码表的表项对应于按顺序的地址入口。
直流HUFFMAN解码码表排序如下表6所示

表6
交流HUFFMAN解码码表排序如下表7所示

表72)主控模块7从HUFFMAN表提取码字特征信息,且向HUFFMAN模块4加载该信息,码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志;3)主控模块7提取压缩数据包至码流整理模块5。
4)码流整理模块5对压缩数据包进行分包处理,将分出的数据码流发送至HUFFMAN模块4。
5)HUFFMAN模块4读取其中一组数据码流,根据码字特征信息,通过与每个长度的开始码字进行比较,确定该数据码流中HUFFMAN码的码字长度。
6)通过码字长度从数据码流中取出HUFFMAN码字,把取出的码字与相应长度的开始码字相比较,计算出在HUFFMAN码表中该码字相对于开始码字的相对位置。
7)通过开始码字在HUFFMAN表中的位置和计算所得到的相对位置算出该码字在HUFFMAN码表中的绝对位置,通过上述步骤5)-步骤7),HUFFMAN模块4根据配置信息和提取信号确定HUFFMAN码的长度以及在HUFFMAN编解码表中的位置。
8)HUFFMAN模块4以所取得的长度、位置信息为检索入口,从HUFFMAN解码码表中取出相应的类值SSSS或零游长RRRR/类值SSSS,对于直流信号,由表6中取出相应的类值SSSS,对于交流信号,由表7中取出相应的零游长RRRR/类值SSSS。
9)HUFFMAN模块4通过类值SSSS或位宽SSSS得到数据码流中系数的有效位宽,从码流中取出相应个bit的码流,作为系数的有效数据,对于交流信号,零游长RRRR表示该系数前面所具有“0”系数的个数,对数据码流完成HUFFMAN解码。
10)Zig-Zag扫描模块3对解码后的数据流进行反Zig-Zag扫描,完成数据流的解串联。
11)量化模块2根据量化表对数据流进行反量化操作,产生频域数据。
12)DCT模块1将数据流的频域数据转化为重构图像的时域数据,完成解压缩。
权利要求
1.一种图像压缩/解压缩系统,包括DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块并依次相连,其中,所述的DCT模块对数据进行离散余弦变换及反变换;所述的量化模块完成数据的量化或反量化计算;所述的Zig-Zag扫描模块完成数据的串联或解串联;所述的HUFFMAN模块完成数据的HUFFMAN编码或解码;所述的码流整理模块完成数据的打包或分包处理;其特征在于还包括存储器和主控模块,其中,所述的存储器中保存有关表项;所述的主控模块控制DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块的工作状态,对原始图像数据完成方块化处理发送至DCT模块,或提取压缩数据块至码流整理模块,该主控模块根据处理进程对存储器中的表项进行相应的调用,向量化模块或HUFFMAN模块加载信息。
2.根据权利要求1所述的图像压缩/解压缩系统,其特征在于所述的存储器中的表项包括量化表和HUFFMAN编解码表;所述的主控模块调用所述量化表,加载至量化模块;所述的主控模块调用所述HUFFMAN编解码表,并对其进行排序,加载至HUFFMAN模块,解码时同时向HUFFMAN模块加载解压缩过程中用到的从HUFFMAN码表中提取出来的码字特征信息;所述的码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志。
3.根据权利要求2所述的图像压缩/解压缩系统,其特征在于所述的HUFFMAN编解码表包括直流HUFFMAN编解码表和交流HUFFMAN编解码表,其中,所述的直流HUFFMAN编解码表包括类值、码字长度、码字;类值为表项访问入口;所述的交流HUFFMAN编解码表包括零游长/类值、码字长度、码字;零游长/类值为表项访问入口;在解压缩中,主控模块按照码字长度,且对于每个长度的所有码字根据大小顺序对HUFFMAN解码码表排序,排序后的HUFFMAN解码码表的表项对应于按顺序的地址入口。
4.一种图像压缩方法,其特征在于它采用如下步骤A、主控模块向量化模块和HUFFMAN模块分别导入量化表和HUFFMAN编码码表;B、主控模块由原始图像数据取出一个方块化的数据单元发送至DCT模块;C、DCT模块对该数据单元进行离散余弦变换的编码转换,转换后的数据流传递至量化模块;D、量化模块根据量化表对数据流中频域的数据进行量化计算,得到量化后的DCT系数;E、Zig-Zag扫描模块对量化后的DCT系数进行Zig-Zag扫描,完成数据的串联。F、HUFFMAN模块根据HUFFMAN编码码表对经过Zig-Zag扫描的系数进行相应的HUFFMAN编码。G、HUFFMAN编码后的数据经码流整理模块打包处理,完成对所述数据单元的压缩。
5.根据权利要求4所述的图像压缩方法,其特征在于所述的步骤F包括如下步骤F1、HUFFMAN模块首先获取本数据单元相对于前一个数据单元的相同图像分量的直流差值的幅度;F2、通过所述幅度计算出类值;F3、根据类值由相应的直流HUFFMAN编码码表取得相应的HUFFMAN码字;F4、将所得到的HUFFMAN码字加上直流系数差值的有效数据,完成直流系数的编码;F5、经过统计计算每个非零交流系数前面的“0”交流系数的个数,同时计算这个非零交流系数的有效位宽;F6、根据“0”交流系数的个数值和该非零交流系数的位宽由交流HUFFMAN编码码表中对应表地址处直接取得相应的HUFFMAN码字;F7、将所得到的HUFFMAN码字加上这个非零交流系数的有效数据完成交流系数HUFFMAN编码。
6.根据权利要求5所述的图像压缩方法,其特征在于所述的步骤F4中,所述有效数据的位宽即类值的大小。
7.一种图像解压缩方法,其特征在于它采用如下步骤a、主控模块调用HUFFMAN解码码表,并对其进行排序,加载至HUFFMAN模块,且将量化表导入量化模块;b、主控模块从HUFFMAN表提取码字特征信息,且向HUFFMAN模块加载该信息,所述的码字特征信息包括每个长度HUFFMAN码的开始地址、开始码字、以及表示每个长度的码字是否有效的标志;c、主控模块提取压缩数据包至码流整理模块;d、码流整理模块对压缩数据包进行分包处理,将分出的数据码流发送至HUFFMAN模块;e、HUFFMAN模块根据码字特征信息确定HUFFMAN码的长度以及在HUFFMAN解码码表中的位置;f、以所取得的长度、位置信息为检索入口,从HUFFMAN解码码表中取出相应的类值或零游长/类值;g、通过类值得到数据码流中系数的有效位宽,从码流中取出相应个bit的码流,作为系数的有效数据;如果是交流系数的解码,零游长表示该系数前面所具有“0”系数的个数,这样就完成了一段码流的huffman解码;后续码流的解码过程相同;h、Zig-Zag扫描模块对解码后的数据流进行反Zig-Zag扫描,完成数据流的解串联;i、量化模块根据量化表对数据流进行反量化操作,产生频域数据;j、DCT模块将数据流的频域数据转化为重构图像的时域数据,完成解压缩。
8.根据权利要求7所述的图像解压缩方法,其特征在于所述的步骤a中所述的主控模块按照代码长度,且对于每个长度的所有码字根据大小顺序对HUFFMAN解码码表排序,排序后的HUFFMAN解码码表的表项对应于按顺序的地址入口。
9.根据权利要求7或8所述的图像解压缩方法,其特征在于所述的步骤e包括如下步骤e1、HUFFMAN模块读取一组数据码流,根据码字特征信息,通过与每个长度的开始码字进行比较,确定该数据码流中HUFFMAN码的码字长度;e2、通过码字长度从数据码流中取出HUFFMAN码字,把取出的码字与相应长度的开始码字相比较,计算出在HUFFMAN码表中该码字相对于开始码字的相对位置;e3、通过开始码字在HUFFMAN表中的位置和计算所得到的相对位置算出该码字在HUFFMAN码表中的绝对位置。
全文摘要
一种涉及计算的图像压缩/解压缩方法和系统,该系统包括DCT模块、量化模块、Zig-Zag扫描模块、HUFFMAN模块、码流整理模块依次相连,其特征在于还包括存储器和主控模块,主控模块控制各工作模块的工作状态,对原始图像数据完成方块化处理或提取压缩数据块,该主控模块根据处理进程对存储器中的表项进行相应的调用,向量化模块或HUFFMAN模块加载信息,压缩方法包括A)导入量化表和HUFFMAN编码码表,B)取出数据单元发送至DCT模块,C)DCT模块对进行离散余弦变换,D)量化模块进行量化计算,得到量化系数,E)Zig-Zag扫描模块对系数进行Zig-Zag扫描,F)对系数进行相应的HUFFMAN编码,G)HUFFMAN编码后的数据打包处理,完成压缩,本发明实时性高且成本低。
文档编号H04N1/41GK101094401SQ20061006132
公开日2007年12月26日 申请日期2006年6月23日 优先权日2006年6月23日
发明者倪武学, 李小明 申请人:深圳安凯微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1