关键词 JPEG2000;图像压缩;嵌入编码;算术编码;小波变换
1 引言
JPEG2000 是新一代静止图像压缩标准,它采用了小波变换、优化截断嵌入块编码和高效的码流组织形式。适用于各种类型的静止图像,如二值图像、灰度图像和彩色图像;支持自然图像、合成图像、医学图像和文本。JPEG2000 具有如下主要特点:
①良好的低比特率压缩性能,以适应网络、移动通信等有限带宽的应用;
②能够根据图像质量、视觉感受和分辨率进行渐进传输;
③既支持无损又支持有损压缩;
④对码流的随机存取和感兴趣区域(ROI)的编码;
⑤具有较强的抗误码能力;
⑥具有开放结构,并向下兼容等。
2 JPEG2000基本编码方案
2.1 基本编码流程方案
JPEG2000的基本编码流程方案主要有以下6个部分组成(如图1):
(1)预处理:主要是将源图像划分为较小的矩形区域,称为拼接块,作为独立的图像用于压缩。目的是为了降低压缩过程所需的内存资源。降低量级可以使样本的动态范围基本关于零对称,使在进行离散小波变换后的系数的动态范围不会过大,有利于编码。
(2)分量变换:指对具有多个分量的图像先经过某种变换来降低各分量之间的相关性。
(3)离散小波变换:针对每个拼接块的每个分量要进行离散小波变换,就是从二维空间到分辨率空间的变换,变换的目的是增加数据的冗余度,因而可以大幅提高压缩效率。
(4)量化:就是降低数据精度,提高压缩效率,实施有损压缩。
(5)第一级编码:按照位平面的次序经过三个通道进行熵编码(算术编码)。
(6)量二级编码:分层打包形成码流。

图1 基本编码方案图
2.2 拼接块图像的结构划分
2.2.1 分辨率、子带和码块
源图像在预处理阶段被划分为各自独立的拼接块,在针对每个拼接块的每个分量进行离散小波变换时,若进行N级小波分解,则可有N个分辨率;每个分辨率的LH、HL和HH子带保留,LL子带继续分解,共得到(3N+1)个子带。如图2是三级变换的子带分布情况。每个子带又要被划分为大小相同的矩形块,称为码块,码块的宽和高都要是2的幂,典型值是32×32或64×64,每个码块将被独立编码。

图2 三级小波变换的子带分布图
2.2.2 质量层、分区和包
分区(Precinct)是一个逻辑结构,是同一分辨率下某空间连续区域所有子带中对应码块的集合(见图3)。图中粗实线为子带分界,细实线为Precinct分界。简单地说,Precinct包含3个具有相同空间位置的相同大小的矩形区域,这3个矩形区域分别在某分辨率的LH、HL、HH之中。Precinct包含整数个码块,最少包含3个码块(分别属于LH、HL、HH)。

图3 分区示意图
按照对图像失真的影响程度,对码流进行裁剪,分类组织,把具有相似失真影响的码流的集合称为一个质量层。每个分区为每个层贡献一个包,包是码流组织的基本单位,它包含该分区中所有码块对该质量层的增量贡献。
3 编码模型与算法
3.1 分量变换模型
JPEG2000标准中定义了两种分量间变换:不可逆分量变换 (ICT)和 可逆分量变换(RCT)。ICT实质上是实数到实数的,RCT实质上是整数到整数的。这两种变换都是从RGB颜色空间变换到YCbCr颜色空间。分量变换之后,各个分量之间可以认为是独立的。
不可逆分量变换的公式为:
Y=0.299R+0.587G+0.114B
U=-0.16875R-0.33126G+0.5B
V=0.5R-0.41869G-0.08131B
可逆分量变换为:
Y=(R+2*G+B)/4
U=R-G
V=B-G
G=Y-(Ur+Vr)/4
R=U+G
B=V+G
3.2 量化模型
JPEG 2000使用的是均匀量化。其量化和反量化模型为:
y=||x/Δ|| * sgn(x)
x=(y+r*sgn(y))* Δ
其中,△称为步长,r称为偏置参数,通常是1/2,对于无损压缩,量化步长为1(也可以说无须量化);对于有损压缩,量化步长与码率控制有关。不同的子带数据的动态范围不一样,因而不同子带使用不同的步长。
3.3 小波变换模型
离散小波变换可以是不可逆的小波变换,也可以是可逆的小波变换。不可逆小波变换默认使用Daubechies 9/7滤波器实现,即是有损编码。可逆变换默认使用Le Gal 5/3滤波器实现,即是无损编码。JPEG2000中使用的是小波的提升算法。
5/3小波提升算法模型:
Y(2n+1) = X(2n+1) - [X(2n)+X(2n+2)] / 2
Y(2n) = X(2n) - [Y(2n-1)+X(2n+1)+2] / 4
9/7小波提升算法模型,包含四个步骤:第一次预测、第一次更新、第二次预测和第二次更新,公式分别为:
Y(2n+1) = X(2n+1) - [X(2n)+X(2n+2)] ×α
Y(2n) = X(2n) - [Y(2n-1)+Y(2n+1)+2] ×β
Y(2n+1) = Y(2n+1) - [Y(2n)+Y(2n+2)] ×γ
Y(2n) = Y(2n) - [Y(2n-1)+Y(2n+1)+2] ×δ
其中:α= -1.586134342,β= -0.052980118,γ= 0.882911075,δ= 0.443506852