正文

JPEG2000压缩技术2008-04-19 14:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/34320.html

分享到:


JPEG2000压缩技术  http://i.cn.yahoo.com/jielin/blog/p_28/

一、引言

传统图像编码采用离散余弦变换(DCT)技术,可以较好地去除图像信息的统计冗余,具有良好的实时性和块操作与运动估计的匹配性。目前该技术日臻成熟,形成了JPEG、MPEG等国际标准。但是由于DCT变换过程采用分块技术,在高压缩比条件下容易导致方块效应,严重影响主观质量。而且DCT不适合带宽较宽(拥有较多边缘轮廓信息)的图像信号。于是人们将目光转向小波变换。

传统的卷积小波变换是一种不受带宽约束的图像处理方法,支持多分辨率、多码率传输方案,而且不对图像进行分块,避免了DCT变换的方块效应。但是,采用卷积运算方法,过程复杂,运算量大,实时性不好,不利于硬件的实现。而基于JPEG2000标准推荐的提升小波变换,采用9/7、5 /3滤波器组对分解的图像进行提升运算,不但继承了传统小波变换的优点,而且实时性好、运算简单、易于硬件实现。

JPEG2000具有以下主要特点:

(1)    良好的低比特率压缩性能这是JPEG2000最主要的特征。

目前的JPEG标准,对于细节分量多的灰度图像,当码率低于0.25bpp(0.25bit/piexl)时,视觉失真大。为克服这一点,要求JPEG2000在低比特率下有良好的率失真性能,以适应网络、移动通信等有限带宽的应用需要。

(2)连续色调和二值图像压缩

目前的JPEG标准对于自然图像具有较好的压缩性能,但是当用于计算机图形和二值文本的压缩时,性能变差,不适用于复合文本压缩。为了改进这一点,JPEG2000在统一系统中采用相似的方法,能够对自然图像、复合文本、医学图像、计算机图形等具有不同特征、不同类型的图像进行压缩。

(3)有损和无损压缩

对于目前的JPEG标准,在同一个压缩码流中不能同时提供有损和无损两种压缩,而在JPEG2000系统中,通过选择参数,能够对图像进行有损和无损两种压缩,可满足图像质量要求很高的医学图像、图像库等方面的处理需要。

(4) 按照像素精度或者分辨率进行累进式传输

累进式图像传输允许图像按照所需的分辨率或像素精度进行重构,用户根据需要,对图像传输进行控制,在获得所需的图像分辨率或质量要求后,便可终止解码,而不必接收整个图像压缩码流。

(5)随机存取和处理码流

由于JPEG2000采用小波技术,利用其局部分辨特性,在不解压的情况下,可随机存取某些感兴趣的图像区域ROI (Region of Interest)的压缩码流,对压缩的图像数据进行传输、滤波等操作。

(6)强的抗误码特性

在无线通信信道上,噪声干扰大,这就希望压缩码流具有较强的容错性能。JPEG2000系统通过设计适当的码流格式和相应的编码措施,来减小因解码失败造成的损失。

(7)固定速率、固定大小、有限的存储空间

由于处理的图像越来越大,这为硬件实现以及带宽资源和存储空间有限的应用提出了问题。JPEG2000使用分块技术,对每个小块进行处理,来解决这类问题。

除了上述主要特点外,JPEG2000还采用开放式结构,并对图像安全保护、图像交换等方面做了考虑。

JPEG2000的核心部分是图像编码系统。其编码器和解码器的框图分别如图2.1和图2.2所示。JPEG2000图像编码系统基于David Taubman提出的EBCOT (Embedded Block Coding with Optimized Truncation)算法,使用小波变换,采用两层编码策略,对压缩位流分层组织,不仅获得较好的压缩效率,而且压缩码流具有较大的灵活性。

在编码时,首先对源图像进行离散小波变换,根据变换后的小波系数特点进行量化。将量化后的小波系数划分成小的数据单元—码块,对每个码块进行独立的嵌入式编码。将得到的所有码块的嵌入式位流,按照率失真最优原则分层组织,形成不同质量的层。对每一层,按照一定的码流格式打包,输出压缩码流。

解码过程相对比较简单。根据压缩码流中存储的参数,对应于编码器各部分进行逆向操作,输出重构图像数据。

 

二、JPEG2000的编码过程

JPEG2000的编码过程主要分为以下几个过程:预处理、核心处理和位流组织。预处理部分包括对图像的分片、直流电平(DC)位移和分量变换。核心处理部分由离散小波变换、量化和熵编码组成。位流组织部分则包括区域划分、码块、层和包的组织。

1、预处理

(1)图像分片

分片是指把源图像分割成相互不重叠的矩形块——图像片,每一个图像片作为一个独立的图像进行压缩编码。编码中的所有错作都是针对图像片进行的。图像片是进行变换和编解码的基本单元。图像的分片降低了对存储空间的要求,并且由于他们重构是也是独立进行的,所以可以用来对图像的特定区域而不是整幅图像进行解码。当然,图像分片会影响图像质量。比较小的图像片会比大的图像片产生更大的失真。图像分片在低比特率表示图像的时候所造成的图像失真会更加严重。

(2)DC电平位移

在对每一图像片进行正向离散小波变换之前,都要进行直流电位平移。目的是在解码时,能够从有符号的数值中正确恢复重构的无符号样本值。直流电平位移是对仅有无符号数组成的图像片的像素进行的。电平位移并不影响图像的质量。在解码端,在离散小波反变换之后,对重构的图像进行反向直流电平位移。

(3)分量变换

JPEG2000支持多分量图像,不同的分量不需要有相同的比特深度,也不需要都是无符号或有符号数。对于可恢复(无损)系统,唯一的要求是每一个输出分量图像的比特深度必须跟相应输入分量图像的比特深度保持一致。

2、核心处理

(1)    小波变换

不同于传统的DCT变换,小波变换具有对信号进行多分辨分析和反映信号局部特征的特定。通过对图像片进行离散小波变换,得到小波系数图像,而分解的级数视具体情况而定。小波系数图像由几种子带系数图像组成。这些子带系数图像描述的是图像片水平和垂直方向的空间频率特性。不同子带的小波系数反映图像片不同空间分辨率的特性。通过多级小波分解,小波系数既能表示图像片中局部区域的高频信息(如图像边缘),也能表示图像片中的低频信息(如图像背景)。这样,即使在低比特率的情况下,我们也能保持较多的图像细节(如边缘)。另外,下一级分解得到的系数所表示的图像在水平和垂直方向的分辨率只有上一级小波系数所表示的图像的一半。所以,通过对系数图像的不同级数进行解码,就可以得到具有不同空间分辨率(或清晰,或模糊)的图像。

小波变换因其具有这样的优点被JPEG2000标准所采用。在编码系统中,对每个图像片进行Mallat塔式小波分解。经过大量的测试,JPEG2000选用两种小波滤波器:LeGall 5/3滤波器和Daubechies 9/7滤波器。前者,可用于有损或无损图像压缩,后者只能用于有损压缩。

在JPEG2000标准中,小波滤波器可以有两种实现模式:基于卷积的和基于提升机制的。而具体实现时,对图像边缘都要进行周期对称延伸,这样可以防止滤波器对图像边缘操纵时产生失真。另外,为了减小变换时所需空间的开销,标准中还应用了基于行的小波变换技术。

(2)    量化

由于人类视觉系统对图像的分辨率要求有一定的局限,通过适当的量化减小变换系数的精度,可在不影响图像主观质量的前提下,达到图像压缩的目的。量化的关键是根据变换后图像的特征、重构图像质量要求等因素设计合理的量化补偿。量化操纵是有损的,会产生量化误差,不过一直情况除外,那就是量化步长为1,并且小波系数都是整数,利用可恢复整数5/3小波滤波器进行小波变换得到的结果就符合这种情况。

在JPEG2000标准中,对每一个子带可有不同的量化步长。但是在一个子带中只有一个量化步长。量化以后,每个小波系数由2部分来表示:符合和幅值。对量化后的小波系数进行编码。对于无损压缩,量化步长必须是1。

(3)    熵编码

图像经过变换、量化后,在一定程度上减少了空域和频域上的冗余度,但是这些数据在统计意义上还存在一定的相关性,为此采用熵编码来消除数据间的统计相关。将量化后的子带系数划分成小的矩形单元——码块(code block)。

 


图2.3 JPEG2000 两层编码框图

如图2.3所示,采用两层编码策略,首先使用基于上下文的算术编码器,每个码块进行独立的嵌入式码块编码,得到码块的嵌入式压缩位流。然后,根据率失真优化原则,采用PCRD(Post Compression Rate Distortion)优化算法思想,将所有码块的压缩位流适当截取,组织成具有不同质量的图像。在分层组织压缩位流时,须对每个码块在每一层上的贡献信息进行编码,即对码块位流在该层的截断点信息的编码。由于图像采用小波变换,整个图像压缩位流具有分辨率可分级性,从而,压缩位流可同时具有质量上和分辨率上的可分级性。由于对码块进行独立编码,因此,可根据需要,随机获取并解码相应的码块压缩位流,重构出所需的图像区域。

①    第一层编码算法

与传统的依次对每个系数进行算术熵编码不同,JPEG2000编码系统把码块中的量化系数组织成若干个位平面,从最高有效位平面(MSB)开始,依次对每个位平面上的小波系数位进行算术编码。

第一层编码可以看作两部分:上下文的生成(CF)和算术熵编码(AE)。在上下文的生成中,以一定的顺序扫描码块中的所有位。在码块的每个位平面上,从左上角系数开始,从左到右,从上到下进行扫描,并为每一位生成一个上下文。算术编码器根据生成的上下文,对每一位进行算术编码。

在量化后,小波系数被转化为符号-振幅模式。在从MSB到LSB编码时,当遇到第一个为1的比特时,这个像素被称作是显著的,否则,为不显著的。所有比特的上下文都是由他们的邻域通过以下的4种方法产生:

零编码(Zero Coding,ZC)用来编码非显著像素在当前的位平面中是否将变得显著;

游程编码(Run-length Coding,RLC)用来编码位于同一列中的4个非显著性像素,如果他们的邻域都是非显著的;

符号编码(Sign Coding, SC)当该位变得显著后,编码他的符号位;

幅度编码(Magnitude Refinement, MR)用来编码显著位。

每个位平面都在3个编码通道中进行编码。通道1是重要性传播通道(Significance Propagation Pass),至少有一个重要性邻域的像素,在此通道进行编码,使用ZC和SC。通道2是幅度细化通道(Magnitude Refinement Pass),所以的重要位在此通道进行编码,使用MR。通道3是清除通道(Cleanup Pass),所有没有在上两个通道中进行编码的像素,在此通道中进行编码,使用ZC,LRC,SC。位平面中的每一位在3个通道中进行检查来确定是否应当被编码。

由编码通道得到的上下文和其对应的数据一起,送至算术编码器进行编码。在这里,采用了自适应二进制算术编码,主要是考虑到计算的复杂度及实行的方便性。在进行算术编码后,对每一个码块,得到了一个独立的嵌入式码块压缩位流。

②    第二层编码算法

在第二层编码算法中,采用PCRD率失真优化算法思想,对所有码块的嵌入式压缩位流进行适当的截取,分层组织,形成整个图像的具有质量可分级的压缩码流。第二层编码算法也可以看作两部分:速率控制和分层组织压缩位流。速率控制是指通过一定的编解码措施,获得给定压缩率下的最佳重构图像质量。分层组织压缩位流根据编码参数所规定的分层层数以及每一层的编码速率,估算每一层的率失真门限,然后根据每一层估计出的率失真门限,按照码块率失真算法,找到一个码块嵌入式压缩位流在该层的截断点,将截断的码块压缩位流进行打包,按照规定的格式存储,形成图像压缩码流。将码流分层组织,每一层含有一定的质量信息,在前面的基础上改善图像质量。这样用户可以根据自己的需要,控制图像的传输,在取得满意的图像效果后,中止传输,在某种程度上缓解当前网络带宽有限而图像数据量大而造成的瓶颈问题。

(3)位流编码

为了适应图像交换,更好地应用JPEG2000压缩码流的功能,JPEG2000标准规定了存放压缩位流和解码所需参数的格式,把压缩码流以包为单元进行组织,形成最终的码流。

3、JPEG2000种的关键技术

(1)    离散小波变换

JPEG2000与传统JPEG最大的不同在于它放弃了JPEG所采用的以离散余弦变换(DCT)为主的区块编码方式,转而采用以小波变换(DWT)为主的多解析编码方式。

余弦变换是经典的谱分析工具,它考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,它有很好的效果,但对于非平稳过程,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端的情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。小波变换是现代谱分析工具,它既能考查局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。它能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为它消除了DCT压缩普遍具有的方块效应。

(2)    速率控制算法

JPEG2000通过采用速率控制方法来计算码流的理想截断点,从而获得给定压缩码流下的最佳重构图像质量。速率控制使用了PCRD率失真优化算法。率失真优化,即给定整个压缩码流的最大编码速率,找出每个码块压缩位流的适当截断点,在满足的条件下,使重构图像失真最小。从而使得嵌入式码块编码具有如下特点:生成的压缩位流可根据需要,被截断成不同长度的位流子集;将所有码块的截断位流组织起来,可重构出一定质量的图像。

(3)    渐进性传输

现在网络上的JPEG图像下载时是按“块”传输的,因此只能逐行显示,而采用JPEG2000格式的图像支持渐进传输。JPEG2000中的渐进传输有2种,按照分辨率的渐进传输和按照质量的渐进传输。按照质量的渐进传输就是先传输图像的轮廓数据,然后再逐步传输细节数据来不断提高图像质量,而按照分辨率的渐进传输则先传输分辨率较低的图像,后一幅图像在前一幅图像的基础上提高其分辨率。图像的渐进传输使得用户不需要像以前那样等图像全部下载后才决定是否需要,有助于快速地浏览和选择大量图片,从而有效的解决了网络传输的瓶颈问题。

(4)    感兴趣区域压缩

JPEG2000的一个极其重要的优点就是ROI(Region of interest,感兴趣区域)。用户可以任意指定图片上感兴趣的区域,然后在压缩时对这些区域指定压缩质量,或在恢复时指定某些区域的解压缩要求。这是因为子波在空间和频率上具有局域性,要完全恢复图像中的某个局部,并不需要所有的编码都被精确保留,只要对应它的一部分编码没有误差就可以了。在实际应用中,我们就可以对一幅图像中感兴趣的部分采用低压缩比以获得较好的图像效果,而对其他部分采用高压缩比以节省存储空间。这样就能在保证不丢失重要信息的同时又有效地压缩了数据量,实现了真正的“交互式”压缩。

 

阅读(7261) | 评论(15)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册