摘 要 jpeg2000作为一种先进的静止图像压缩标准,它的许多特征具有模块性。本文介绍了jpeg2000的压缩原理,描述了压缩系统的实现框架,讨论了其核心编码算法。在jpeg2000的压缩过程中,需要对图像的结构逐级进行划分,还要对码流结构进行分层次组织,以实施图像的渐进性传输。结构的划分作为jpeg2000的理论基础,有必要进行深入和准确的研究。
关键词 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
3.4 块编码
块编码是依位平面由高到低的次序使用三个编码过程而实施的,其流程如图4所示。编码过程p1称为重要性传播通道,对系数本身重要状态为0 但它的8 个邻居系数至少有一个重要状态已经为1 的系数进行编码。编码过程p2称为幅度精炼通道,对在以前已编码位平面变为重要的系数进行编码。编码过程p2称为清除通道,对在p1和p2中没有被编码的系数进行编码。所谓重要状态,就是其值是一个二值变量,初始化时为0,当按从高平面到低平面的顺序编码过程中首次遇到该系数的第一个1 比特时变为1,表示这个系数已经重要。
图4 位平面编码流程图
经过三个通道得到的并不是最终的压缩数据码流,还要使用算术编码器进行编码,jpeg2000使用的是基于上下文的自适应二进制算术编码器,其内容可参考文献1,本文不再赘述。
3.5 码流组织与质量控制
3.5.1 码流组织
在块编码中,把某一个编码通道过程形成的码流,称为过程码流。最终的码流是由包构成的,一个数据包是由相关过程码流组成的,每个包隶属于某个层。分层打包的准则是保证一定码长下的失真度最小。把分层打包之前的码流,也就是第一级编码形成的码流,称为第一级码流;第一级码流经过第二级编码的形成的码流,称为第二级码流,也就是最终的码流。显然,必须确定第一级码流的一系列的截断点,裁剪形成第二级码流。
3.5.2 率分配
率分配(率控制)是一个把量化步长和编码率赋予不同频带的过程。编码率指单位样本的编码位数。编码率越低,压缩率越高,失真越大;编码率越高,压缩率越低,失真越小。在某个码块b
i 中,每个编码通道过程的端点都是候选截断点(z),必须估算每个候选截断点(z)为止的所有编码字节数
,以及在该点处产生的失真 。
失真-长度斜率(distortion-length slope) ,定义为:
可行截断点要求:
按照可行截断点要求,可行截断点恰好在所谓的“凸壳”上。如图5所示。
图5 失真-长度斜率图
3.5.3 质量层控制
把每个码块的具有相似斜率的可行截断点收集到一起,形象地叫“斜率箱”,这就是质量层的本质含义。为此,每个层 有一个相关的截断门限 ,包含在 层中的具有的斜率范围为,如图6所示。
4 结束语
jpeg2000作为静态图像压缩标准,在数字图像领域得到了广泛而成功的应用。jpeg2000采用小波变换和位平面熵编码器,可获得当今最先进的压缩性能。目前诸多文献对jpeg2000的概念原理的认识不够全面,本文从总体上阐述了其基本概念、模型与算法,为jpeg2000的进一步研究和应用提供了依据。
图6 质量层控制图
参考文献
[1 ] david n,michael w.marcellin.jpeg2000图像压缩基础、标准和实践[m].北京:电子工业出版社,2004
[2] 刘正光,刘子晓,申旭刚.jpeg2000算法原理及实现框架[j]. 计算机工程,2004,(20)
[3 ] iso/ iec fcd1544421:jpeg2000 image coding system,2000[ s]
[4 ] david taubman. high performance scalable image compression with ebcot[j ] . ieee trans. image processing. 2000,9 (7):1158-1170
[5 ] armando manduca,amir said. wavelet compression of medical images with set partitioning in hierarchical trees [m] . the spie symposium on medical imaging,cambridge,ma,19961
[6 ] ,,rate-distortion optimized embedding,in:proceedings of the picture coding symposium,berlin,1997,pp.201-206
[7 ] david taubman,erik ordentlich,marcelo weinberger et al . embedded block coding in jpeg[j ] . signal processing:image communication,2002,1 (17):49-72
本文链接:http://www.qk112.com/lwfw/jsjlw/xinxiguanli/259477.html