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)。
分裂过程,将给定数据集 c 0 c_0 c0。分解成为两个小的子集,一般按照数据的奇偶序列号对数据进行间隔采样,即下面所示。这种小波变换称为惰性小波分解。
预测过程,预测的方法是用 c 1 c_1 c1预测 d 1 d_1 d1,,预测误差形成新的 d 1 d1 d1。设一个与数据无关的预测算子 P P P,使得d1
≈ \approx ≈ P(c1)
,则用d,和它的预测差值 d 1 d_1 d1- P ( c 1 ) P(c1)