jpeg2000算法详解(1)
JPEG2000标准主要由12部分组成,PART 1为其核心部分,其它每部分在该核心部分的基础上增加一些额外的特性和功能。每部分的内容和特征如下所示:
PART 1:JPEG2000核心编码系统,标准号为ISO/IEC 15444-1,其规定了JPEG2000的基本特征和码流语法;
PART 2:扩展系统,在核心系统上增加了许多特征;
PART 3 : Motion JPEG2000 ( MJP2,针对运动图像提出的解决方案,最终希望实现JPEG2000文件格式和MPEPG-4格式协同工作;
PART 4:适应性测试,现在已经公布为国际标准,标准号为ISO/IEC15444-4,详细说明了使用PART 1进行编码/解码的适应性的测试程序;
PART 5:参考软件,这部分中两个用C和Java语言编写的软件包(Jasper和JJ2000用于测试和验证由开发者设计实现的JPEG2000系统;
PART 6:混合图像文件格式,主要针对印刷和传真应用;
PART 7:技术报告,未通过JPEG组织的认可;
PART 8:安全性(Secure JPEG2000, JPSEC),用于处理JPEG2000在安全性方面的应用,如水印和加密技术等;
PART 9:交互式工具、协议以及API(JPIP) ;
PART10:三维图像和浮点数据(JP3D),主要用于三维医疗图像重建等;
PART 11:无线应用(JPWL),主要针对JPEG2000在无线传输中的差错保护,检测和矫正。
PART 12:以ISO为基础的媒体文件格式(和MPEG-4第12部分相一致)。
JPEG2000基本模块组成
JPEG2000由五个基本模块组成,下图是其基本组成模块流程图,其中包括预处理、小波变换((DWT)、量化、自适应算术编码(Tier1)以及码流组织(Tier2)五个模块,下面将对此分别进行简要介绍。
图像输入及预处理
预处理为不同类型的图像提供了一个统一的接口,便于后续使用同样的编码器进行处理,这一步骤是将多种类型的图像压缩加入到统一框架中的关键。它主要包括三个步骤:图像分片、直流平移和分量变换。
各部分功能如下:
(1)图像分片:“分片”是指将大图像分割成互不重叠的矩形块,矩形块的尺寸不受限制,其上界直至整幅图像。把每一块看作一幅完全独立的图像,以“块”为单位独立进行编码。采用分片处理能够减少存储器容量并且易于并行处理,而且在解码端可以只对部分图像进行解码。
(2)直流平移:图像进行分片之后,如果图像分量的样本值是无符号的数值,则分片中的所有分量都要进行直流平移,目的是去除图像中的直流分量,使小波变换后系数的正负取值的概率基本相等,以提高后续的自适应编码效率。当样本值有符号时则无需处理。
(3)分量变换:对于彩色图像或多分量图像,在小波变换之前还必须逐点进行分量变换,目的是去除分量间的相关性。分量变换yo]可以采取不可逆分量变换(ICT)或可逆分量变换((RCT)。这里的可逆和不可逆不是指逆变换存在不存在,而是针对有无精度损失。不可逆分量变换把图像数据从RGB空间变换到YCbCr空间,是实数到实数的变换,运算中有精度损失,将((8: 8: 8)彩色信号转换为((4:2:2)灰度信号,只能与9/7不可逆小波变换一起使用,适于有损压缩。正向和反向不可逆变换分别通过下面的公式实现。
正变换
反变换
可逆分量变换把图像数据从RGB空间变换到YLJV空间,这种变换只能和5/3小波一起使用,适于无损压缩。正向和反向可逆变换分别通过下面公式实现。
正变换
反变换分量变换和直流平移后,开始对每个分片的数据进行前向离散小波变换。
离散小波变换
与JPEG相比,JPEG2000的最大改进是以离散小波变换(DWT)代替了离散余弦变换(DCT)编码。DCT变换作为准最优变换,在图像处理中占据非常重要的位置,但是它有个明显的缺点是不具有时一频局部性,它考查的是整个时域过程的频域特性,或者整个频域过程的时域特性。因此对于平稳过程,它有很好的效果,但对于非平稳过程,就有明显的不足。对于细节丰富、频率变化大的图像,压缩效果差(图像有块效应),而且,也无法实现ROI编码。离散小波变换是近十年来兴起的现代谱分析工具,它的一个最大特点就是具有良好的时一频局部性,既能考察局部时域过程的频域性,也能考察局部频域过程的时域特性,并且可以在
高频时考察窄的时域窗,而在低频时考察宽的时域窗,因此不论是对于平稳过程还是非平稳过程,它都是强有力的分析工具。
JPEG2000中使用的离散小波变换(DWT)可以是不可逆的,也可以是可逆的。不可逆离散小波变换采用浮点((9,7)小波变换,适于有损压缩:可逆离散小波变换采用整数((5,3)小波变换,适于图像的无损压缩,也可以应用于有损压缩。在有损压缩应用领域,前者比后者表现优异。
传统的小波计算采用卷积运算,构造和傅立叶变换相似,是通过对小波母函数进行平移和缩放得到的,我们称这样的小波为第一代小波,通过提升构造的小波为第二代小波。提升方案是一种简单的小波变换方法,它不需要傅立叶分析的背景知识,与第一代小波变换方法相比提升算法具有如下几个优点:
(1)可以实现更快速的小波变换算法,一般通过提升方法可以达到比Malllat算法快2倍的离散小波分解。
(2)提升算法可以实现完全的同址计算,即经过提升变换后得到的小波系数和尺度系数可以覆盖掉原来的输入信号而不影响变换结果。
(3)利用提升算法,正向小波变换和反向小波变换结构是非常一致的,只有正负号区别。
(4)提升小波变换的描述非常简单,可以避开傅里叶变换。
小波变换的三个步骤
本文章的压缩算法中采用整数提升的CDF9/7小波。提升小波变换的提升过程可分为三个步骤:分裂(split),预测(predict)和更新(update)。
分裂过程,将给定数据集。分解成为两个小的子集,一般按照数据的奇偶***对数据进行间隔采样,即下面所示。这种小波变换称为惰性小波分解。
预测过程,预测的方法是用预测,,预测误差形成新的。设一个与数据无关的预测算子,使得d1
P(c1)
,则用d,和它的预测差值 - 来代替,那么我们就可以用表示原始的图像数据,称为尺度小波系数,称为小波系数。由于原始数据和,有较强的相关性,通过预测使试具有低的能量分布。
更新过程,更新过程的目的是保障某一全局性质。更新过程是通过寻找, ,从而使得对于某一个度量标准,例如平均值,使和具有相同的值,则更新过程要求=,也就变换前后是能量保持不变。
综上所述,提升小波变换的每一级提升都由分裂、预测和更新这三个步骤构成,设提升小波级数.的取值从1~n,将三个过程用公式表示,则每一级分解过程可表示为
正变换
得到了正变换,很容易就可得到反变换,需要做的只是改变加减的符号,反变换如下:
小波变换通过特定滤波器组结构来实现,下图为一维双子带DWT分析综合滤波器组框图。分析滤波器组(,)中的是一个低通滤波器,它的输出保留了信号的低频成分而去除或降低了高频成分;是一个高通滤波器,它的输出保留了信号中的边缘、纹理、细节等高频成分而去除或降低了低频成分。在JPEG2000中,分析滤波器的阶数为奇数。与之相对应,综合滤波器组(,)中(和分别为低通和高通滤波器。为了实现信号的完全重建,即,要求分析综合滤波器组满足一定的关系:
其中,,,分别是,,,的变换
当一维信号被分解为两个子带后,低子带信号仍然有很高的相关性,可以对它再进行双子带分解,降低其相关性;与之相反,高子带信号的相关性较弱,因此不再进行分解。
对图像进行二维DWT是用一维DWT以可分离的方式进行的,每一次分解中先用一维分析滤波器组对图像进行水平(行)方向的滤波,然后对得到的每个输出再用同样的滤波器组进行垂直(列)方向的滤波,所得到的图像被称为一次分解的四个子带。
由于滤波是线性的,因此采用先行后列或先列后行的次序所得到的结果是相同的。在二维二元小波分解中,对每次分解得到最低子带可以继续分解,直到分解到不再能得到显著的编码增益。下图为三次小波变换的过程。
DWT分解的图像提供了JPEG2000的多分辨率解决方案。可以重建的最低分辨率称为零分辨率。对于次DWT分解,他可以提供个分辨率等级。零分辨率仅包含子带,分辨率图像由分辨率图像和三个第次高子带组成。例如上图中,2分辨率图像可以由1分辨率图像和三个子带得到。图像经过小波变换后,生成小波系数,编码前需要对小波系数进行量化。