发明内容
本发明的目的意在克服上述现有技术的不足,提出一种更有效率、质量更好的能够以渐进的方式将图象按照多个质量等级的形式有效的存储或是通过计算机网络进行传输的数字图象的压缩方法。
实现上述目的的技术方案:一种数字图象的压缩方法,把一个图象的数字表示压缩成一个一维码流,图象的数字表示包含一个二维象素数组,其中每个象素都和一个主要色带及次要色带相联系,其中:
把图象表示成一系列的质量逐渐递减的质量等级,其中,较高质量等级包含的数据比较低质量等级要多,减少较高的质量等级的色带数目或减少较高的质量等级象素的个数即可得到较低的质量等级;
按照各个质量等级来表示一个图象,所述图象包括一个基本质量等级图象和差分图象;
某一个质量等级的差分图象是由两个图象做差分得到,一个图象是这个等级的真实图象,另一个图象是把在较低质量等级的重建图象进行放大得到;
通过一个过程把基本质量等级图象和差分图象表示成整数值,这个过程包括:先将图象变换成与已知函数相联系的一组系数,然后用量化值对这组系数集合进行量化并圆整到整数值;
编码对应于最低质量等级和差分图象的整数值,用无损排序统计编码方法使整数值的数字表示产生一个一维的码流。
其中,所述的质量等级包括:第一个质量等级,其中每一个象素都包含所有色彩成分;第二个质量等级,其中每一个象素都包含主要色彩成分和一个次要色彩成分;第三个质量等级,其中每个象素都包含一个主要色彩成分,并且其数量是每一个次要色彩成分数量的4倍;第四个质量等级,其中每个象素都只包含一个色彩成分,且主要色彩成分的数量是次要色彩成分数量的两倍;第五个质量等级源自第一个质量等级,通过把两个方向都除以一个整数比例因子,减少其水平方向和垂直方向的象素数目;第六个质量等级源自第四个质量等级,其中每个象素包含主要色彩成分和一个次要色彩成分;第七个质量等级来源于第四个质量等级,其中每个象素都包含一个主要色彩成分,并且其数量是每一个次要色彩成分数量的4倍。
确定重建图象的方法包括:把量化过的系数和量化值相乘进行反量化;进行和已知函数相联系的逆变换产生一个重建表示。
本发明数字图象的压缩方法主要应用于三色图象,图象由主要色彩分量和次要彩色分量表示,每个色彩分量都由一个二维象素数组表示。多色彩空间,如RGB空间和YUV亮度/色度彩色空间都在考虑之列,当处于RGB空间时,主要色彩成分是指绿色,次要色彩成分是指红色和蓝色;当处于YUV空间时,主要色彩成分是指亮度,次要色彩成分是指色度。
基本质量等级图象和差分图象被转化成一组与已知函数相联系的系数。在典型的实现过程中,最低质量等级图象和差分图象在变换前被分块。在传统的JPEG方法中,采用的是离散余弦变换。本发明中,采用的变换方法是离散小波余弦变换(DWCT),这种变换将离散余弦变换的频域特点和空域变换(如哈尔小波变换)的多分辩率特征结合起来的二维变换,二维变换的过程包括:在做变换之前,把最低质量等级的数据及差分图象分解成M×M的方块,M是2的整数幂;若一个大小为J×K的块,J和K都不是2的整数幂,首先要把它补成一个M×M的方块,可通过在J×K的原始块中补充新元素实现,以便变换后,系数集合中至多有J×K个非零值;二维变换包括对二维数组做一个行方向的一维变换,再对这个数组做一个列方向上的一维变换;应用的一维变换是基于离散余弦变换和一个排列函数采用递归方式定义的,变换的输出元素可分为偶数元素和奇数元素,偶数元素包括变换的输入数据中的较低质量等级的表示。DWCT不但比传统的小波变换速度更快,而且和以往使用的变换相比,能产生更紧凑的数据分布。DWCT系数使用量化表中指定的值进行量化,并圆整到整数。
基本质量等级和差分图象的量化系数以一种无损的排列统计编码方法来进行压缩,这种排列统计编码方法包括量化系数的上下文预测、排序以及熵编码,其中:
上下文预测过程中,把每个系数的值由相邻象素系数值来预测,各个色彩分量分别进行预测:对于主要色彩成分,上下文包括一个位置索引和主要色彩象素的相邻系数;对于第一个次要色彩成分,上下文包括一个位置索引、本色带内的相邻系数以及位于相同位置的主要色带内的系数;对于第二个次要色彩成分,上下文包括一个位置索引,本色带内的相邻系数以及位于相同位置上的主要色带系数和第一个次要色带系数。
在上述上下文预测方法中,按照在数组里的位置将量化系数分为四组:第一组包含对应于最低位置索引的第零个系数;第二组包括除去第一组数据之外的第一行的所有数据;第三组包括除去第一组数据外的所有第一列数据;第四组包括所有剩余系数;每一组的上下文都不同。
排序操作是把二维数组排列成一维数组,为了使数据间的相关性达到最大,使用了一种四叉树排序方法,在这种四叉树排序方法中,二维系数数组被分成4个相等的区域,分别是左上、右上、左下和右下,每一个区域又被分成左上、右上、左下和右下四个相同大小的子区域,这种过程不断重复,直至每个子区域都只包含一个象素为止。在量化或上下文预测之前要做好排序,而所有相关数据例如系数,量化表和上下文的映射关系也要被保留。
最后,再对这种经过上下文预测和排序的数据值进行熵编码(如算术编码),熵编码过程是把图象的数字表示压缩成一个码流,数字表示包含一个二维的象素数组,其中每个象素都包含一个主要色彩成分和次要色彩成分,熵编码过程中要用的概率表由上下文预测方法形成。
上述数字图象的解压缩方法,包括如下步骤:
恢复压缩中使用的上下文预测概率表;
对码流进行解码,恢复对应于基本质量等级图象和差分图象的整数值;
调整顺序,把解码完的整数排列成一个二维数组形式;
把对应于基本质量等级和差分图象的每一个解码系数同量化值相乘;
做与已知函数相联系的逆变换重建基本质量等级和差分图象的数字表示;
把位于较低质量等级的图象扩大至下一个较高的质量等级;
在一个给定的质量等级,把差分图象和扩大至这个等级的图象相加得到这个等级的一个重建的数字表示。
解码过程基本是编码的逆过程,产生重建图象。其中关于质量等级的定义与编码过程相同。
上述数字图象的解压缩方法中,与已知函数相联系的逆变换是把频域变换特点和多分辩率变换特征相结合的一个变换,该变换是在一个反离散余弦变换和一个空间多分辨率变换函数采用递归方式定义的,其中,逆变换的输入数据被分成了偶数元素和奇数元素,偶数元素包含此变换的输入数据中的较低级别的表示。
质量等级通过亚采样序列来实现,在一个采样序列中,采样数据的长度是递减的,采样数据表示包括一个二维的象素数组,其中,每一个象素都有主要色彩成分和次要色彩成分,这个序列包括如下特定序列:
第一种采样表示,每个象素都具有所有的色彩成分;
第二种采样表示,每个象素都具有主要色彩成分和一个次要色彩成分;
第三种采样表示,每个象素都有一个主要色彩成分,且主要色彩成分的数量是每一个次要色彩成分数量的4倍;
第四种采样表示源于第一种采样表示,不过它二维数组的维数除以了一个整数比例因子,在水平和垂直方向上相应减少了象素的数目;
第五种采样方法源自第四种采样表示,每一个象素都包含主要色彩成分和一个次要色彩成分;
第六种采样表示源自第四种采样表示,每个象素都包含一个主要色彩成分,且主要色彩成分的数量是每一个次要色彩成分数量的4倍。
质量等级也可通过另一种亚采样序列来实现,在该采样序列中,采样数据的长度是递减的,采样数据表示包括一个二维的象素数组,其中,每一个象素都有主要色彩成分和次要色彩成分,这个序列包括如下特定序列:
第一种采样表示,每个象素都具有所有的色彩成分;
第二种采样表示,每个象素都具有主要色彩成分和一个次要色彩成分;
第三种采样表示,每个象素都有一个主要色彩成分,且主要色彩成分的数量是每一个次要色彩成分数量的4倍;
第四种采样表示,每个象素包含一个色彩分量,且主要色彩分量的数量是次要色彩分量数量的两倍。
采用上述技术方案,本发明突出的技术进步在于:1、把图象表示成一系列的质量逐渐递减的质量等级,采用较高质量等级用对相邻的较低质量等级的差来进行表示,每个差分图象只包含对应于较低质量等级的数据增量,因而,能够以渐进的方式将图象按照多个亚采样质量等级的形式存储。按照本发明压缩的图象能够通过计算机网络或是因特网进行传输,从而实现渐进的观看和下载。更有,一个浏览器能够在某个指定的质量等级观看一幅图象,而对高于此质量等级的数据忽略不管。2、差分图象以相邻较低等级的重建图象为基础得到,避免了误差的积累,图象质量更高。3、采用离散小波余弦变换(DWCT),将离散余弦变换的频域特点和空域变换(如哈尔小波变换)的多分辩率特征结合起来,DWCT不但比传统的小波变换速度更快,而且和以往使用的变换相比,能产生更紧凑的数据分布。4、由于渐进、连续变化是一幅画面的普遍规律,图象要素的前、后、左右具有极强的相关性。本发明抓住这一主要特征,在上下文预测过程中,把每个系数的值由相邻象素系数值来预测和各个色彩分量分别进行预测,以及在排序操作中采用四叉树排序方法,数据间的相关性大大提高。据此,图象数据的压缩比可大大提高,能充分、有效地节省存储空间或传输资源。
具体实施方式
下面结合附图,通过实施例对本发明作进一步详细的说明。
本发明中提出的压缩数字图象的方法以一种渐进的方式把图象表示成多个亚采样质量等级,这样做能够避免误差的积累。在本申请中,只讨论了对静止图象作处理的方法。因为无论何种视频序列里的每帧图象都可以看作是静止图象,所以这种方法也能够对视频图象应用。本方法处理的图象主要为三色图象:一个主要色彩分量(用P表示)以及次要色彩分量(表示为S和Q)。当然,本方法同样也能扩展到对单色图象或是多色图象作处理。P、S和Q分量可以分别对应RGB色彩空间的G(绿色)、R(红色)和B(蓝色)分量,也可以分别对应YUV亮度/色度彩色空间的Y、U和V分量。典型情况下,此数据压缩方法的输入是一个二维象素数组,其中每个象素都包含三种色彩分量元素,而输出是压缩数据的一维码流。
本发明中提出的压缩方法能以软件形式运行于通用的计算机处理单元(CPU)或数字信号处理器(DSP),也能以硬件形式在VLSI芯片上实现,或是在软、硬件的结合环境中实现。在软件中实现时,用于实现压缩方法的计算机指令存储在CPU或是DSP的内存中,这样,此处使用的装置一词或指具有预编指令的专用硬件装置,或指通用计算机和具有存储指令的内存器,或指专用硬件和计算机的结合装置。压缩后的图象可以保存在内存中,或供以后恢复及在监视器上做显示之用,或供在内部网及外部网如因特网做传输之用。
图1给出了使用本发明方法对图象数据进行压缩的一个大致流程。在亚采样阶段110,一个原始图象被分解成为多个质量等级,从最高的质量等级开始,到最低质量等级为止。最高质量等级也称为压缩质量等级(CQS),最低质量等级即基本质量等级也称为亚采样质量等级(SQS)。基本质量等级SQS的图象数据最先输出,接着是下一个质量等级的数据,直至CQS的数据被输出为止。
差分模块120给出了差分形式的亚采样图象,以便每个差分图象都只包含在前一个较低质量等级基础上增加的数据。差分模块包含模块125至170,用来确定一个亚采样图象和一个参考图象之间的差,首先在邻近的较低质量等级上得到一个重建的亚采样图象,然后对此重建图象进行放大得到一个参考图象,接着求得当前亚采样图象和参考图象之间的差。象下面将要详细描述的那样,重建图象是通过下面的流程得到的,首先对亚采样图象进行变换(130)和量化操作(140),这两个过程会造成损失,然后再通过反量化模块(150)和反变换模块(160)来恢复图象。差分模块120的输出是量化后的基本质量等级数据和量化后的差分图象。
量化后的基本图象和差分图象被无损的排序统计编码模块转化成压缩码流。排序统计编码模块包括一个上下文预测模块185,一个排序模块190(它将二维数组转化成一维数组),还有一个无损熵编码模块195,如算术编码。解压方法基本上是如图2所示的压缩过程的逆过程,下面也会详细的讨论到。
在具体实施过程中,亚采样模块110总共定义了7个亚采样等级(也称7种采样表示),不同的亚采样序列都有类似的定义。这7个亚采样等级设为0至6,0代表最高的质量等级,6则是最低质量等级。每一个等级数字表示对图象数据进行一种特定的亚采样操作。
0级亚采样表示(也称第一种采样表示)为4∶4∶4,即原始图象根本就没有进行亚采样。所有的象素都保留有P、S、Q分量元素,如表1所示。
表1:0级亚采样4∶4∶4
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
(P,S,Q) |
1级亚采样表示(也称第二种采样表示)为4∶2∶2,主要分量P没有进行亚采样,只有S和Q分量被亚采样。这种采样等级里共有6种模式,如下表2-7所示。
表2:1级亚采样4∶2∶2模式1
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
4∶2∶2亚采样方式中的第一种模式和在电视标准(如NTSC和PAL)及运动图象传输标准MPEG2中使用的亚采样方法相同。在表中,“x“表示一个去掉的分量元素。在如表3所示的第二种模式中,S和Q分量呈对角排列,以便S分量和Q分量中,无论沿水平方向还是沿垂直方向的间隔都是均匀的。模式2是1级采样中首选的亚采样模式。
表3:1级采样4∶2∶2亚采样模式2
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
模式3和模式2有少许不同,即S和Q的位置进行互换。如表4所示。
表4:1级采样4∶2∶2亚采样模式3
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
第4种模式是模式1的转置,即水平方向间隔。
表5:1级采样4∶2∶2亚采样模式4
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
模式5、模式6和模式1、模式4有少许不同,即S和Q的位置发生了交换。
表6:1级采样4∶2∶2亚采样模式5
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
(P,x,Q) |
(P,S,x) |
表7:1级采样4∶2∶2亚采样模式6
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,x,Q) |
(P,S,x) |
(P,S,x) |
(P,S,x) |
(P,x,Q) |
二级亚采样表示(也称第三种采样表示)为4∶2∶0,主要分量P依然全部保留,只对S和Q进行亚采样。通过在不同的位置对S和Q进行采样,也会产生许多种模式。本文只列举其中5种最有用的模式。
表8:2级采样4∶2∶0亚采样模式1
模式1和MPEG2及JPEG标准中使用的YUV 4∶2∶0格式类似。这种模式中,每4个含有P元素的象素分享一对S和Q元素,它们位于4个P象素的中心。在第二种模式中,S和Q分量是不重合的。它们呈对角排列,分别由不同的P象素拥有,如表9所示:
表9:2级采样4∶2∶0亚采样模式2
(P,S) |
P |
(P,S) |
P |
P |
(P,Q) |
P |
(P,Q) |
(P,S) |
P |
(P,S) |
P |
P |
(P,Q) |
P |
(P,Q) |
其它的三种模式都是模式2的变体,只不过S和Q分布在不同的位置而已。如表10-12所示。
表10:2级采样4∶2∶0亚采样模式3
(P,Q) |
P |
(P,Q) |
P |
P |
(P,S) |
P |
(P,S) |
(P,Q) |
P |
(P,Q) |
P |
P |
(P,S) |
P |
(P,S) |
表11:2级采样4∶2∶0亚采样模式4
P |
(P,Q) |
P |
(P,Q) |
(P,S) |
P |
(P,S) |
P |
P |
(P,Q) |
P |
(P,Q) |
(P,S) |
P |
(P,S) |
P |
表12:2级采样4∶2∶0亚采样模式5
P |
(P,S) |
P |
(P,S) |
(P,Q) |
P |
(P,Q) |
P |
P |
(P,S) |
P |
(P,S) |
(P,Q) |
P |
(P,Q) |
P |
3级亚采样(也称第四种采样表示)称为贝叶模式,它是图象传感器技术中的一种常见采样格式。它包括4种模式,每个模式都定义了一种特定的彩色分量结构。如表13所示,在第一种模式中,每个象素只包含一个色彩分量元素。主要色彩分量元素的数目是次要色彩分量元素数目的两倍。
表13:3级采样贝叶亚采样模式1
P |
S |
P |
S |
Q |
P |
Q |
P |
P |
S |
P |
S |
Q |
P |
Q |
P |
贝叶模式的其它形式仅仅将分量的位置进行了重排。如下表14-16所示。
表14:3级采样贝叶亚采样模式2
P |
Q |
P |
Q |
S |
P |
S |
P |
P |
Q |
P |
Q |
S |
P |
S |
P |
表15:3级采样贝叶亚采样模式3
S |
P |
S |
P |
P |
Q |
P |
Q |
S |
P |
S |
P |
P |
Q |
P |
Q |
表16:3级采样贝叶亚采样模式4
Q |
P |
Q |
P |
P |
S |
P |
S |
Q |
P |
Q |
P |
P |
S |
P |
S |
四级亚采样(也称第五种采样表示)中,象素的数目被减少了。如果每个象素显示的尺寸都保持相同,则四级采样中,图象显示的整个尺寸将较小;相反,如果显示的图象尺寸没有减少,那么说明每个象素在图象中占用的区域将较大。色彩分量在零级采样4∶4∶4模式中进行了表示。在四级亚采样中,一个具有M×N个象素的原始图象IM×N首先分别在水平方向和垂直方向缩小成大小为m×n的图象Im×n,其中
m=(M+L-1)/L,n=(N+L-1)/L.
然后,使用4∶4∶4格式来表示Im×n。大多数情况下,L为2或3。
许多算法都可按照比例因子L对图象IM×N在水平方向和垂直方向分别缩小,包括简单采样、双线性缩放以及双立方缩放,当然不仅仅局限于这些算法。简单采样缩放法在每个L×L个的块中按照均匀间隔保留一个象素,而其它的缩放法则是根据邻域象素计算出一个象素值来代表L×L的象素块。双线性缩放法按照水平、垂直坐标的一个线性函数在一个新位置插入象素值。函数的系数或者事先定好,或者根据邻域的已知象素值估计。同样的,在双立方缩放法中,插值函数是水平坐标和垂直坐标的立方函数。
五级亚采样(也称第六种采样表示)中,一个大小为M×N的图象IM×N根据一个尺度因子在水平和垂直方向分别缩小成一个大小为m×n的图象Im×n,并按4∶2∶2格式进行亚采样。同样的,六级亚采样中,图象根据尺度因子L在水平方向和垂直方向分别缩小,并按照4∶2∶0格式进行亚采样。在一个压缩图象的多尺度表示中,同一个尺度因子L,例如等于2或3,将用于四级至六级亚采样方式中,因此,四至六级采样方式会得到同样的象素数目。
缩小和放大算法经常成对应用,表示为(Lx↓,Lx↑),其中L是尺度因子,Lx则定义了一个缩放算法。如何优化的选择缩放算法取决于图象数据的特征。由于是成对出现的,因此同一个L既用于缩小算法(Lx↓),又用于放大算法(Lx↑)。对一幅图象的某些色带或是全部色带进行缩放操作,一般基于上述的亚采样模式。亚采样模式决定以何种亚采样等级对这幅图象进行亚采样。
为了形成一个亚采样图象序列,首先,原始图象I必须属于以上描述的零级、一级、二级和三级亚采样级别中的一种。对4∶4∶4模式的图象按照比例因子2仅沿水平方向对UV色带或RB色带进行缩小,就得到了4∶2∶2模式的一个图象。这个沿水平方向的缩小操作由2x↓算法来执行。对于4∶4∶4模式和4∶2∶2模式来说,其YUV色带和RGB色带在垂直方向的大小是一样的。同样,对4∶2∶2模式的图象按照比例因子2仅沿垂直方向对UV色带或是RB色带进行缩小即可得到4∶2∶0模式的图象。对一个4∶2∶0模式的图象的P分量图象在水平方向或是垂直方向做缩小可得到贝叶格式图象,这种情况下,不能在两个方向同时做缩小操作。
设G是图象I的原始尺度表示。I可看作在零级亚采样时获得的亚采样图象,表示为IG。对于IG,我们采用Lx↓算法进行亚采样获得IG+1;对于IG+1,我们再次采用算法Lx↓进行亚采样获得IG+2,依次类推,直至我们到达了亚采样质量等级S。按照这种方法我们获得了一个亚采样图象序列IG:{IG,IG+1,...IS}。显然,SQS值S不可能比原始的图象等级G小。
例如,假设G=2,S=4。I2是4∶2∶0格式图象。那么从IG,我们使用简单采样算法把I2降低成一种贝叶模式I3,如表13-16所示。我们也使用给定的算法2x↓将I2的P分量缩小,把I2减少成I4,形成了一个尺寸较小的4∶4∶4格式图象。当然,也可以通过使用给定算法2x↓对I0的所有彩色色带做采样而直接得到I4。贝叶格式中的各彩色分量不在同一位置上。当把一种贝叶格式图象亚采样成一种更低级别的图象格式时,需要认真考虑象素的排列。因此,接下来的两种采样序列特别有用:
序列I:{0,1,2,4,5,6}
序列II:{0,1,2,3}
对于值小于3的SQS来说,序列I和序列II都可以使用。对于SQS值等于3的值来说,应使用序列II。对于SQS值大于3的值来说,应使用序列I。在序列II里,一级采样和二级采样首选简单采样缩放法。在序列I里,3级采样将被跳过以免产生位置空缺问题。对于序列I可以使用更复杂的采样方法。
对于序列I和序列II,差分图象序列有着不同的定义。在序列II的情况下,亚采样序列包括{I0,I1,I2,I3}的一个子集。当使用简单采样缩放法进行亚采样时,IS+1很明显是IS的一个子集,S=0,1,2。IS和IS+1的差图象DS可定义为包含于IS中但不包含于IS+1中的多余象素或是色带元素。因而,DS可以写为
Dk=Ik-Ik+1,k=0,1,2,
为方便起见,令D3=I3。这样,我们就能获得一个差分亚采样图象序列:
{D0,D1,D2,D3}.
在序列I的情况下,亚采样序列包括{I0,I1,I2,I4,I5,I6}的一个子集。为了获得差分图象,我们将图象从较低质量级别放大到较高质量级别。例如,我们使用给定的算法2x↑来放大I4的P分量从而获得一个较高级别的图象J2.。同样,我们使用给定算法2x↑将Ik的S分量和Q分量放大以获得更高级别图象Jk+1,k=6,5,2,1。然后级别k的差分图象可定义为:
Dk=Ik-Jk,k=0,1,2,4,5.
令D6=I6,即可给出差分采样图象序列:
{D0,D1,D2,D4,D5,D6}.
序列I中的差分方法也可应用于序列II中。
根据本发明技术,除了上述的差分采样图象序列外,在图1中120模块里产生的差分图象还采用了另外一种形式。上面描述的差分表示有一个缺点:即会从最低质量等级到较高质量等级的过程中传播误差。为了在当前的差分步骤中避免误差的累积,用来相减的参考图象由重建图象代替,重建图象由较低质量级别的数据恢复。
我们在这里只考虑序列I的情况。序列II的情况更简单,能对它做类似的处理。给定一个SQS S和一个CQS C,首先得到其采样序列{IC,IC+1,...,IS}。基本质量等级图象IS要经过变换模块130和量化模块140做有损处理。变换模块130可以象JPEG或JPEG2000方法那样分别使用离散余弦变换或是小波变换。在本申请中,变换模块130可以使用一个新的离散余弦小波变换,在下面有详细定义。
通过对上述有损过程进行逆操作来重建图象IS,我们可以得到GS。总的来说GS和IS是不同的,因为模块130和模块140都是有损的。使用一个给定的算法Lx↑,我们可将GS放大到一个较高质量级别(S-1)上,并获得HS-1。然后我们能够从下式获得DS-1:
DS-1=IS-1-HS-1 (1)
DS-1经过变换并已被量化。令D’S-1表示经过变换且经过量化的DS-1。
执行模块130和140的逆向过程,重建D’S-1,我们得到GS-1。同样,GS-1和DS-1也不同。基于GS-1和HS-1,我们可以从下式重建IS-1:
FS-1=GS-1+HS-1 (2)
上式中,FS-1是在(S-1)级别上对原始图象IS-1的一个近似。注意FS-1和IS-1之间的差异与DS-1和GS-1之间的差异相同,都能够防止从S级别开始的错误传递。现在,使用给定的2x↑算法,我们把FS-1放大到一个较高级别(S-1)上,并获得HS-2。然后我们从下式获得DS-2:
DS-2=IS-2-HS-2
现在对DS-2做变换以及量化得到D’S-2,由D’S-2得到GS-2。这个过程一直继续直至在最高质量等级C的差分图象DC被确定、被变换、被量化为止。图象Hk和上面定义的Jk不同的地方在于:Hk是用较低级别的变换以及量化之后的有损数据重建出来的,而Jk是用较低质量等级图象Ik+1放大得到的。
以上描述的计算方法在图1中由流程图表示。减法模块125计算亚采样图象和重建的放大图象之间的差异,后者由等式(1)中的(S-1)等级清楚的给出。量化模块140的输出D’既传递给排序统计编码模块180,又传递给反量化模块150以获得差图象。反变换模块160的输出是数值G,它是对D’的重建。如等式(2)中所示,在等级(S-1)下,加法模块165把重建的差图象G和由相邻较低等级放大而成的图象H相加。对于基本质量等级S有:DS=IS和HS=0,流程图描述了整个差分过程,这个过程中产生了一个经过变换和量化的图象序列{D’S,D’S-1,...D’C}。
变换模块130使用标准变换如离散余弦变换(DCT)、小波变换(WT)或其它变换得到变换系数。在本发明中,一种新颖的变换:离散余弦小波变换(DWCT)被使用于变换模块中。DWCT变换把哈尔(小波)变换的空域特点和DCT的频域特点结合了起来。
在下面公式中,粗体字母例如X或Y用来表示一个矢量。脚标用来表示矢量的维数。XN表示一个有N个元素的矢量,它的第n个元素表示为XN[n]。圆括号()用来包含一个函数的变量(如f(x)),方括号[]用来包含一个矢量元素的序号(如X[n])。我们用F(X)表示一种线性变换,它也可以表示成一个矩阵乘法FX,其中F是变换F的矩阵形式。
若XN=[x0,x1,...,xN-1]T和YN=[y0,y1,...,yN-1]T是两个具有N个元素的矢量,那么插入函数:Interleave(XN,YN)会产生一个具有2N个元素的矢量:
Interleave(XN,YN)=[x0,y0,x1,y1,...,xN-1,yN-1]T.
给定一个矢量XN=[x0,x1,...,xN-1]T,一个大小为N的交换函数TN(XN)有如下矩阵形式的定义:
TN(XN)=TNXN,
TN(XN)=TN([x0,x1,...,xN-1]T)=[x0,x2,...,xN-2,xN-1,....,x3,x1]T.
其中,TN为某矩阵,TN(XN)是可逆的。
DWCT是递归定义的,为了说明DWCT和前面使用的DCT及小波变换之间的联系,首先提供一个DCT的递归定义。对于一个2维矢量X2,DCT变换C2(X2)定义为:
N维矢量XN的DCT,其中N是2的整数幂,表示为:
YN=CN(XN)=CNXN,
此处,CN定义了一个尺寸为N的一维DCT,EN/2和ON/2定义为:
EN/2[n]=YN[2n] ON/2[n]=YN[2n+1],n=0,1,...,N/2-1.以及
YN=Interleave(EN/2,ON/2).
维数为N的DCT可基于维数为N/2的DCT形式来递归定义:
EN/2=CN/2(UN/2)=CN/2UN/2,
QN/2=CN/2(VN/2)=CN/2(VN/2),
ON/2[n]=QN/2[n]+QN/2[n+1],n=0,1,...,N/2-1
其中
n=0,1,...,N/2-1,
n=0,1,...,N/2-1.
注意,QN/2是一个只有N/2个元素的矢量。为了简化运算,QN/2可以扩展至N/2+1个元素,且QN/2[N/2]=0。很明显的,EN/2[n]、QN/2[n]及CN都由较低维数N/2的DCTs来定义。
通过上述递归定义得到的DCT核C
N不是标准的。为了获得标准的DCT核,即给定维数N的标准非递归定义的DCT,只要将C
N的第一行乘以
即可。
哈尔变换(HT)也可以递归定义。对于一个二维矢量X2,H2(X2)和DCT是一样的:
一个N维矢量XN的HT表示为:
YN=HN(XN)=HNXN,
此处HN定义了一个尺寸为N的一维HT,EN/2和ON/2的定义为:
EN/2[n]=YN[2n] ON/2[n]=YN[2n+1],n=0,1,...,N/2-1.
其中
YN=Interleave(EN/2,ON/2).
尺寸为N的HT可基于尺寸为N/2的HTs递归定义:
EN/2=HN/2(UN/2)=HN/2UN/2,
ON/2=VN/2
其中
n=0,1,...,N/2-1,
n=0,1,...,N/2-1.
很明显,EN/2和HN由较低阶N/2的HTs定义。
和DCT的递归定义一样,上面得到的HT的核HN也不是标准的,将HN的第一行乘上
即得到给定维数N的标准HT。
本发明提出的一维DWCT也是递归定义的。首先,尺寸为2的DWCT W2(X2)的定义和DCT及HT相同:
下一步,尺寸为N的DWCT可定义为:(N是2的整数幂)
YN=WN(XN)=WNXN (4)
两个矢量EN/2和ON/2定义为:
EN/2[n]=YN[n],ON/2[n]=YN[N+n],n=0,1...,N/2-1.
其中
尽管我们为了方便和DCT、HT比较,仍把EN/2和ON/2称为偶数部分和奇数部分,实际上在DWCT中,偶数部分和奇数部分是分离的,并没有交叉存放。
现在尺寸为N的DWCT可以在尺寸为N/2的DWCTs的基础上
递归定义:
EN/2=WN/2(UN/2)=WN/2UN/2 (6)
QN/2=CN/2(VN/2)=CN/2VN/2 (7)
ON/2[n]=QN/2[n]+QN/2[n+1] n=0,1,...,N/2-1 (8)
其中
ZN=TN(XN)=TN(XN)
同样的,我们仍假设QN/2[N/2]=0。
在DCT和HT的递归定义中,此处定义的DWCT的核W
N是没有标准化的。在W
N的首行乘上
即能得到一个标准的DWCT核。
当然,DWCT变换并不是一定需要标准化。在下面进一步的讨论中,对量化模块150中使用的量化值的选择需要考虑DWCT是否是标准的。
虽然WN(XN)看来有点象复合函数CN(TN(XN)),但实际上是有区别的。TN(XN)仅仅改变在尺寸为N时XN的数据次序,而WN(XN)在每一次递归操作中都改变数据的次序。从另一角度来看,从DWCT基于DCT和一个排列函数进行定义这种意义上来说,DWCT可以看作是DCT的一个变形。排列函数不能改变输入的值,只能改变其次序。
离散小波余弦变换因等式(6)、(7)和(9)而得名。在等式(6)和(9)中定义的DWCT的偶数部分EN/2和哈尔变换的偶数部分是相同的。等式(7)中奇数部分ON/2是基于DCT定义的。因此DWCT和HT不同的地方仅仅在于奇数部分,奇数部分对应于高频信息。矢量YN的元素被作为DWCT系数。实际上,DWCT系数可以来自于HT系数,只是在其奇数部分对应的有一些附加计算。因此DWCT也是数据的一种多分辨率表示,数据的偶数部分包含输入数据的较低质量级别表示。通常意义来说,DWCT是一种小波变换,因为每一次递归中DWCT都被当作一个经过比例操作的哈尔变换。最终的结果是一个紧凑的表示,其中最低级别的系数具有图象的大部分信息。
这里定义的DWCT是针对来自于重建数据的差分图象而言的,DWCT可以在任何数据压缩方法中应用。例如,在不同的数据压缩方法中,如在JPEG或是JPEG2000中,DCT或小波变换分别用DWCT来代替。
显然,WN(XN)的逆变换存在,而且可以证明,对于某大小为M×N的矩阵WN,下式成立:
WN(XN)=WNXN
以等式(3)中的定义为起始点,按照DWCT的递归定义能够获得任何维数N的变换形式WN(XN)(N是2的整数幂),下面讨论N=4时的情形。对一个矢量X4应用等式(9)和(10)可以得到两个长度为2的矢量。按照等式(3)给出的W2定义以及等式(5)-(8),可以得到Y4,根据等式(4),Y4是对原始矢量X4施用理想DWCT后的结果。对于一般的N=2n,等式(9)和(10)不断进行重复估值直至得到长度为2的2n-1个矢量为止。实际上,等式(3)-(10)的递归定义在每次计算DWCT变换矩阵时都需要估计。另外,变换矩阵WN也能按照等式(4)从原始矢量XN开始,按照N值不断算出并将值保存下来以做下一步的计算。递归定义的好处是可以应用于任何N值。DWCT逆变换的递归定义表示为IDWCT,因为所有的等式都是线性的,可由等式(3)-(10)推导出来。另外,在某些实现过程中,逆变换也能够直接从前向变换中计算出来并保存下来。数组XN×M(N=2n,M=2m)的二维DWCT可以定义为:
ZNxM={WM{WN(XNxM)}T}T
首先对这个二维数组的行做变换,即将每一行都当作一个一维矢量;然后对数组的列做变换,把每一列也当作一个一维矢量。对每一个色带分别做DWCT。即每一个彩色分量都被作为一个单色色带被抽取出来,然后对每一个这样的色带分别做DWCT。
当图象的长度不是2的幂时,根据本发明,将使用一种低频扩展算法。首先考虑一维情况。若矢量XL={x0,x1,...,xL-1}T,其中,2n-1<L<2n,那么其后将被增添2n-L个元素xL,xL+1,...,xN-1,扩展成一个新的矢量XN,其尺寸为N=2n。这些新添加的元素可以取任意值,因为它们最后会被解码器丢掉。目前的低频扩展是为了选择xL,xL+1,...,xN-1的值对XN做DWCT变换,实际上只有L个非零系数有用。
考虑XN的DWCT逆变换:
把Z(N-L)置为0,下列等式的结果为:
XL=wLxLZL,或者
在上述等式中,X(N-L)的是对原始数据XL的一个低频扩展。在二维情况时,先考虑变换图象的列矢量,再考虑行矢量(对图象进行转置)。在二维情况下,设一个块大小为J×K,J和K都不是2的整倍数,那么行和列都需要添加元素,使得在变换后的系数块中至多有J×K个非零值。同样的规则也适用于其他的变换如DCT、傅立叶变换或小波变换。
为了减小DWCT的计算量,原始图象应分解成块,对每一个块做DWCT,而不是对整个图象做DWCT。我们先考虑一维情况,首先选择一个块尺寸M=2m,然后把给定的矢量XL分解为(L+M-1)/M个块。最后一个块中可能只有一部分是原始数据,在这种情况下要使用上述的低频扩展方法来填充块的剩余部分。二维情况下的扩展可以直接把图象分为大小为M×M个象素的块。所有的色带都要进行块分解操作,以便于所有的色带图象都能够拥有相同的重叠的块边界。为了获得比较好的结果,典型的块大小至少是8,虽然块的尺寸可以选择的更大一些,但在DWCT的实际操作中,8×8或16×16的块大小才是较为合理的。并且,随着块尺寸的增加,对计算资源的要求也会显著增加。传统的小波变换经常会使用较大的块尺寸,为了得到最好的质量甚至把整个图象作为一个大块。现存的DWCT的一个优点是不需要使用最大的块尺寸,而保持小波变换的优点。
将一个图象分为若干块的过程同样也可应用于130模块选用其它变换算法。根据图1的流程图,图象在进入130模块前需要分块,以便于变换模块130和量化模块140是对块进行操作。在差分模块120的循环过程中,一幅被分块的图象在经过模块160的逆变换后又合并成一幅图象。
在量化模块140中,块的每一个系数都要用量化值进行量化,并将结果圆整到最接近的整数,从而得到定点数据。量化值要根据应用的要求来选择。一个M×M的图象块的DWCT或是其它变换会产生一个M×M的系数块。如上所述,块也可能是整个图象。对一个块做量化的量化值的集合构成了一个量化系数块,称为量化表。表17中是一个量化块的结构。
表17:量化系数
Q0,0 |
Q0,1 |
… | |
Q0,M-1 |
Q1,0 |
Q1,1 | | | |
… | | | | |
| | | | |
QM-1,0 | |
… | |
QM-1,M-1 |
例如,设Q(x,y)是选择的量化表,C(x,y)是一个图象块的DWCT系数,则量化过程可表达如下:
D(x,y)=[C(x,y)/Q(x,y)]
其中[X]表示把数字X圆整到一个整数。
量化系数Q(x,y)的值决定了变换系数的存储精度,最高的精度是变换前的数据精度。随着选择的Q(x,y)的值的提高,每个系数存储的位数变少。一个简便规则是对于一个大小为N×N的变换,Q(x,y)的最小实际值是N。如果使用了一个非标准化的变换,量化表的第一行Q(0,y)的值也要经过相应的调整,以补偿变换的第一行没有标准化带来的影响。在某些情况下,对于一个给定图象会使用一个固定数目的量化表,以便一个不同的系数块可以使用一个不同的量化表。对于和最高频率系数对应的系数块来说,需要有较大的量化值,例如,可以使用500左右的值。
在反量化模块150中,整数值和量化表中的值相乘。反量化模块150逆向使用量化表。
在排序统计编码模块180中,每个块的量化系数按以下三个步骤以无损形式编码:上下文预测185、排序190以及熵编码195。
传统的上下文预测方法可以在模块185中应用。根据本发明,有一种改进的上下文预测方法,它使用了一种每一个色带以及每一个系数都不相同的上下文。对于主要色彩部分P,上下文包括在同一个块中的邻域系数。对于第一个次要色带S,上下文包括同一块内的邻域系数以及对应到主要色带上的相同位置的系数。对于第二个次要色带Q来说,上下文包括在同一块中的邻域系数以及对应到前两个色带块上的具有相同位置的系数。
索引值为0的系数有着不同的预测方法,它的预测值一般是相邻块中索引值为0的系数,以及位于主要色带或是次要色带中的相同位置系数。任何阶数的上下文都可以使用,然而,一般都使用二阶或是三阶。一个三阶上下文由三个系数C1,C2,和C3组成,它们来自同一个块或是不同块。一个二阶上下文只包含C1和C2。下面描述的上下文是三阶的。二阶上下文通过去掉一个系数即可得到,这个系数通常是上下文里相关性最弱的一个。
一个块里的系数可以分为4组,每组的上下文按不同的规则形成:
0组:0组只包含(0,0)位置的系数。
1组:1组包含第一行除了系数(0,0)之外的系数。这组系数可表示为:(0,i),i>0。
2组:2组包含第一列中除了系数(0,0)之外的系数,表示为(j,0),j>0。
3组:3组包含所有剩余的系数,表示为:(i,j),i>0,j>0。
1组中的主要色彩系数P0,i(i>0)的上下文由位于同一行且在P0,i之前的3个系数构成:
Ck=P0,i-k,k=1,2,3.
如果C3或C2处于块外部,那么上下文仅由C1构成。同样的,一个系数Pj,0在2组中的上下文由同一列上的位于Pj,0之前的3个系数构成。如果C3或C2在块的外部,那么上下文也仅由C1构成。一个系数Pj,i在3组的上下文由位于Pj,i的左上方的3个邻域系数构成。
C1=Pj,i-1,C2=Pj-1,i,C3=Pj-1,i-1.
在一个块内,0组、1组、2组和3组的系数位置由图3表示。
系数(0,0)的上下文有不同的构成方法。首先,来自主要色带中不同块的所有系数(0,0)都被集合在一起构成了一个索引图象。这个索引图象可以象一个正常的主要色带图象的一个块那样被处理,对这个索引图象施用DWCT可以得到一个系数块。1组、2组和3组用上述的上下文进行预测。对于一个具有H位精度的图象来说,(0,0)位置的系数用常量2H-1预测。
1组中,次要色带的一个系数S0,i(i>0)的上下文由同一行内位于S0,i之前的2个系数以及对应的主要色带系数P0,i构成。
C1=P0,i,C2=S0,i-1,C3=S0,i-2
如果C3位于块外部,那么上下文仅由C1和C2构成。同样,2组内的系数Sj,0的上下文由同一列内位于Sj,0之前的两个系数和对应的主要色带系数P0,i构成。
C1=Pj,0,C2=S0,i-1,C3=S0,i-2
如果C3位于块外部,那么上下文仅包含C1和C2。3组内系数Sj,i的上下文由位于Sj,i左上方的两个邻域系数和对应的主要色带系数构成Pj,i。
C1=Pj,i,C2=Sj,i-1,C3=Sj-1,i,
次要色带S的系数(0,0)的上下文的构成和主要色带的系数(0,0)的上下文构成类似。首先,来自次要色带各个不同块的所有系数(0,0)集结在一起构成一个索引图象。这个索引图象和一个普通的次要色带块一样处理,对这个索引图象做DWCT产生一个系数块。对于次要色带使用上述上下文对1组、2组和3组进行预测。精度为H的图象使用一个常量2H-1来预测系数(0,0)。
1组中的第三个色带系数Q0,i(i>0)的上下文由同一行内位于S0,i之前的系数以及对应的第一个色带系数P0,i和第二个色带系数S0,i构成。
C1=P0,i,C2=S0,i,C3=Q0,i-1,
同样的,2组中的系数Qj,0的上下文由同一列内位于Qj,0之前的系数以及对应的第一个色带系数Pj,0和第二个色带系数Sj,0构成。
C1=Pj,0,C2=Sj,0,C3=Qj-1,0,
3组里的系数Qj,i的上下文由位于Qj,i左方的邻域系数以及对应的第一个色带系数Pj,i和第二个色带系数Sj,i构成。
C1=Pj,i,C2=Sj,i,C3=Qj,i-1,
第三个色带的系数(0,0)的上下文的形成和上面描述的第一个色带和第二个色带的(0,0)系数的上下文形成类似。
除了由邻域象素的上下文,DWCT块中的每一个系数的位置也能构成一个上下文。位置上下文表示成C0。
注意一个图象的色带在某个质量级别,例如在4级的贝叶采样模式下,是不在同一位置上的。在这种情况下,某种色彩分量的一个象素在其它色彩分量的同一位置找不到一个对应的象素,这可能导致色彩块不统一,甚至可能导致块尺寸不相同。块尺寸问题可以这样处理,即在为次要色彩产生上下文时只使用位于左上角的主要系数的子块。或者,忽略未对准问题。此外,此处描述的上下文预测方法能够应用于任何数据压缩方法。例如,目前的上下文预测方法可以和与JPEG或是JPEG2000等类似的方法中的熵编码模块结合起来使用。
象素上下文和位置上下文一起为概率模型构成一个完整的上下文。这个完整的上下文表示为C3C2C1C0。对某一个系数X,条件概率P(C3C2C1 C0|X)用来在195模块中对系数X进行编码。在实际应用中,出于计算复杂度的考虑,可以将上下文的最大阶数从4降到3或是2。
为了进行有效编码,在排序模块190中,二维的象素数组映射成一个一维序列。在图1的流程图中,排序紧跟着上下文预测。另外,一旦所有相关数据如系数、量化表和上下文的映射关系被保存好,排序就可以在量化和上下文预测之前进行操作了。传统的排序方法包括在JPEG中使用的zig-zag排序。本发明定义了另一种排序方法:四叉数排序,由于DWCT把最重要的系数放置在二维数组的左上角,因此这种排序方法特别适用于变换后的数据。首先,如表18所示,每个块都被分为相等大小的4个区(PRs),每个区都被标上了一个数字以表示其被访问的先后顺序。
4个数据区里,标有0的区域具有最高的优先级,标有3的区域具有最低的优先级。在码流中,首先是0区的数据,其次是1区的数据,接着才是2区数据和3区数据。
运用上述的相同方法,每一个区域都能进一步分成更小的优先顺序子区域。这个过程不断重复直至区域尺寸达到1×1个象素大小。表19中显示了一个大小为16×16的块的排序结果。同样的方法可以用于任意大小的块。
表19:块系数的四叉树排序
0 |
1 |
4 |
5 |
16 |
17 |
20 |
21 |
64 |
65 |
68 |
69 |
80 |
81 |
84 |
85 |
2 |
3 |
6 |
7 |
18 |
19 |
22 |
23 |
66 |
67 |
70 |
71 |
82 |
83 |
86 |
87 |
8 |
9 |
12 |
13 |
24 |
25 |
28 |
29 |
72 |
73 |
76 |
77 |
88 |
89 |
92 |
93 |
10 |
11 |
14 |
15 |
26 |
27 |
30 |
31 |
74 |
75 |
78 |
79 |
90 |
91 |
94 |
95 |
32 |
33 |
36 |
37 |
48 |
49 |
52 |
53 |
96 |
97 |
100 |
101 |
112 |
113 |
116 |
117 |
34 |
35 |
38 |
39 |
50 |
51 |
54 |
55 |
98 |
99 |
102 |
103 |
114 |
115 |
118 |
119 |
40 |
41 |
44 |
45 |
56 |
57 |
60 |
61 |
104 |
105 |
108 |
109 |
120 |
121 |
124 |
125 |
42 |
43 |
46 |
47 |
58 |
59 |
62 |
63 |
106 |
107 |
110 |
111 |
122 |
123 |
126 |
127 |
128 |
129 |
132 |
133 |
144 |
145 |
148 |
149 |
192 |
193 |
196 |
197 |
208 |
209 |
212 |
213 |
130 |
131 |
134 |
135 |
146 |
147 |
150 |
151 |
194 |
195 |
198 |
199 |
210 |
211 |
214 |
215 |
136 |
137 |
140 |
141 |
152 |
153 |
156 |
157 |
200 |
201 |
204 |
205 |
216 |
217 |
220 |
221 |
138 |
139 |
142 |
143 |
154 |
155 |
158 |
159 |
202 |
203 |
206 |
207 |
218 |
219 |
222 |
223 |
160 |
161 |
164 |
165 |
176 |
177 |
180 |
181 |
224 |
225 |
228 |
229 |
240 |
241 |
244 |
245 |
162 |
163 |
166 |
167 |
178 |
179 |
182 |
183 |
226 |
227 |
230 |
231 |
242 |
243 |
246 |
247 |
168 |
169 |
172 |
173 |
184 |
185 |
188 |
189 |
232 |
233 |
236 |
237 |
248 |
249 |
252 |
253 |
170 |
171 |
174 |
175 |
186 |
187 |
190 |
191 |
234 |
235 |
238 |
239 |
250 |
251 |
254 |
255 |
排序模块的输出包括一个表,这个表显示了上面图示中的一维数组里的系数顺序和二维象素位置之间的相互关系。
数据压缩方法的最后一步是熵编码模块195。基于在185模块中确定的上下文产生的条件概率,对经过排序、量化的系数进行熵编码。可以采用任何一种无损编码方法,但优先使用算术编码。标准的算术编码方法在由Mark Nelson和Jean-Loup Gailly合著的参考书籍
The Data Compression Book(M&T Books,1995)中有详细描述。
要编码的系数X的条件概率:P(C3C2C1C0|X)首先由一个先验的常量表进行初始化,然后随特定图象的积累概率统计进行更新。注意C0是由排序模块产生的一维数组的位置索引。若X不在预测表C3C2C1C0中,则预测阶数减为3,预测表C2C1C0被检验。若X在预测表C2C1C0中,那么使用概率P(C2C1C0|X)来编码X。否则,阶次降为2,并检验二阶表C1C0。这个过程一直持续到阶数为1为止。如果X仍然不在预测表C0中,那么为所有不在预测表C3C2C1C0、C2C1C0、C1C0及C0中的值假设一个均匀的概率,并按此概率对X编码。
需要被编码的值称为一个字符。不同阶数的预测表是不相关的,它们不包含共同的字符。例如,如果X不在预测表C3C2C1C0中,那么我们将阶数从4降到3后,在计算它的字符概率时,所有C3C2C1C0中的字符应从预测表C2C1C0中移走。同样,若我们将阶数从3降到2(因为X不在预测表C2C1C0中),在计算它的字符概率时,所有包含于C3C2C1C0和C2C1C0的字符都应从预测表C1C0中移走。在编码过程中,每个条件概率都用出现次数来表示。每次编码某个值时,对应这个值的出现次数都要被更新。
编码模块是一个产生码流的过程,编码后的码流可以进行有效的存储或是在计算机网络上进行有效的传输。码流包括首先是对应于基本质量等级的编码系数,接着是对应于差分图象的编码系数。另外,码流可能包括通用的头信息,例如文件大小、色彩数目、采样数目以及这个文件的排列信息,如一个块序列索引、使用方法的标识,如变换和编码、指定的量化表以及可选的概率表等。
如图2所示,一个解压缩过程基本上是对压缩过程中的每一步进行逆操作,并在最后重建图象。解压缩过程需要能够访问用来熵编码的概率表。 虽然概率表可以作为头信息的一部分存储,可是它们一般都很大。所以,在模块210中概率预测表由模块185中使用的一个类似的上下文预测过程来产生。然而,上下文预测过程使用了邻域象素的信息。循环280表示的解压缩过程的一部分,在不同的象素位置循环操作,逐步建造概率表,循环280是排序统计编码的逆过程。在熵解码模块,码流被恢复成量化后的变换系数。逆排序模块230把一维系数数组映射回二维数组。反量化模块使用一个逆反量化表还原量化数据。逆变换模块260把反量化后的数据变换成象素值。注意模块250和260正好使用和差分模块120的循环中的模块150和160中相同的操作过程。
如图2所示,重新合并过程290去掉了差分模块120的影响。逆变换模块260输出的一个差分图象序列,从基本质量等级图象GS开始,表示为{GS,GS-1,...GC},由于经历了有损变换的缘故,此处的G’s和原始图象IS并不完全相同。GS扩大产生一个更高阶图象HS-1。重建的FS-1,是对IS-1的近似,根据等式(2)FS-1=GS-1+HS-1获得。图象FS-1扩大至下一级图象:HS-2,这个过程不断重复直至最高质量等级图象的数据被恢复出来。根据正常定义HS=0,如图2的流程图中描述的合并过程290,其中,如等式(2)所示,加法模块265将重建的差分图象G和从较低等级扩大得到的图象H相加。
然而,不一定非要将存于压缩数据中的最高质量等级的图象重建出来。如果由应用环境指定的显示质量等级(DQS),是一种比图象存储的质量等级还要低的质量等级,那么只要恢复对应于DQS等级的差值即可。在这种情况下,图2中的流程需要改变,以便于从模块210至260的差分图象G能够一次获得,并在位于下一个质量等级的差分图象进行逆变换前加到前面的扩大图象上。这种方式下,在任何下一个更高质量等级要求的信息被计算前,所有用来在一个给定质量等级上显示的图象要被确定好。
因此,根据以上步骤,一个压缩的图象能够通过计算机网络或是因特网以渐进的方式进行观看、下载或是传输。更有,浏览器能够在一个指定的质量等级进行图象显示,而无须理会对应于更高质量等级的任何数据。
虽然数字图象压缩过程已经按指定的采样定义、变换和排序步骤进行了描述,这个描述仅仅只是本发明申请的一个例子而已。对于本发明技术的各种变形和修正都将认为属于本发明发明的范畴。
本发明方法可以通过软件、专用硬件或是软、硬件结合来实现。