摘 要:随着计算机多媒体技术的不断发展,及其在网络上越来越广泛的应用,图像压缩技术不仅单一的要求优异的压缩性能,还对多种传输、无损有损压缩、随机访问处理等多个方面提出需求,在这种情况下,“联合图片专家组(JPEG) ”推出了新一代的静态图像压缩系统——JPEG2000。本文将简要的介绍 JPEG2000 的特征和实现方式,并比照早先的 JPEG标准来阐述新一代压缩标准的优越性。
关键词:JPEG2000;离散小波变换;算术编码
1. 引言
JPEG2000是关于静态图像压缩的国际标准。 JPEG是Joint Photographic Experts Group (国际图片专家组)的缩写,它是一个在国际标准组织(ISO)下专门从事静态图像压缩标准制定的委员会。由它制定的图像压缩标准:ISO 10918-1 就是大家熟知的 JPEG标准。而所谓“联合”是指 JPEG2000 既作为 ISO/IEC 标准,又作为 ITU-T 建议被发布。ISO/IEC 是International Organiztion for Standardization / International Electrotechnical Commission (国际标准化组织/国际电工技术委员会)的缩写,ITU-T 是 International Telecommunications Union – Terminal Sector(国际电信联盟-终端部门)的缩写。
由于 JPEG 标准优异的压缩性能和良好的画面质量,使其在短短的几年内就获得了巨大成功,目前网络上绝大多数的图像都使用这种压缩标准。然而随着多媒体领域的快速发展,JPEG 标准已经无法满足用户的需要,在这种情况下,JPEG2000 图像压缩标准就诞生了。它的出现正是为了满足由于多媒体领域快速发展所催生出的对图像压缩技术的新需求,同时也在某些方面弥补了 JPEG压缩标准中表现出来的不足。
自 1997 年3月起,JPEG图像压缩标准委员会开始酝酿制定新一代的图像压缩标准——JPEG2000,并发起“技术征稿”。同年 11 月,在悉尼对所收集到的压缩技术进行了评估,一个关于 JPEG2000 需求的特别组织成立,任务是创建并维护 JPEG2000的需求文档。经过多次的会议讨论、改进,在 2000 年 3 月的东京会议,确定了彩色静态图像的新一代编码方式——JPEG2000 图像压缩标准的编码算法。国际标准化组织的 WG1 小组在同年 8 月制定出了最终的国际标准化草案(The Final Draft International Standard,简称 FDIS)。JPEG2000将采用离散小波变换、EBCOT 编码和算术熵编码等构成新标准的算法主体。
2. JPEG2000 的需求及标准
作为新一代图像压缩技术标准,JPEG2000 标准在制定过程中成立了特别的组织专门整理需求文档,新标准的制定基本上都是为了解决这些需求文档提出的问题。主要的需求有如下几个方面:
1) 超低比特率性能:因为希望在所有的位率下都具有优异的性能,因为具有针对性的对 JPEG 在低比特率下的性能改进被认为是 JPEG2000 的一个重要需求。在JPEG2000 中,高比特率具有比 JPEG高出约 20%的平均压缩优势;而在低比特率下,JPEG2000 也已经能明显的看出相对于 JPEG的性能优势。
2) 连续色调和两极压缩:希望从一个统一的压缩结构对图像分量(如 R,G或 B)进行无缝压缩,每个分量可为 1 到16 位的深度。JPEG2000 可以对连续色调灰度级和颜色图像可提供技术领域中最先进的压缩性能。
3) 按像素精度和分辨率渐进传输:当在较差的通信环境中进行数据传输时,图像的渐进传输就显得尤为重要。当按照“像素精度”(“质量”或“信噪比”)渐进传输来组织码流时,随着接收到更多的数据,会逐渐改善解码图像的质量。当按照“分辨率”渐进传输来组织码流的时候,随着接收到更多的数据,会逐渐提高解码图像的分辨率和尺寸。JPEG2000 已经实现了这个需求,同时还达到了更高的要求。
4) 无损压缩和有损压缩:希望能够从单一压缩结构中既可实现无损压缩,又可实现有损压缩。希望在渐进解码的过程中实现无损压缩。 JPEG2000 通过包含一个可逆(整数)小波变换可以实现该目的。JPEG2000 无损压缩技术的实现,在该先进领域中只占极少数。
5) 随机码流访问和处理: 空间随机访问以及压缩域处理也是 JPEG2000 的一个重要特征。JPEG2000 码流提供几种不同的机制支持不同粒度的空间随机访问(感兴趣区域的访问),还支持“兴趣度”,对感兴趣区域中解压缩图像的质量进行调整。同时还支持剪切、旋转、翻转、平移和缩放这些压缩域处理。
6) 比特误差的鲁棒性:希望 JPEG2000对由噪声通信信道引入的误码是鲁棒的。
根据特别小组征集来的关于 JPEG2000 的需求,联合图像专家组(JPEG)开始着手制定新的图像压缩编码标准——JPEG2000 标准。经过多年的努力和不断完善,截至到本文
定稿时,JPEG2000 的标准已经包含了 12 个部分:
(1) 核心编码系统(规定了实现 JPEG2000 功能的基本内容)
(2) 扩展(给核心部分添加了很多新的特性和)
(3) 运动 JPEG2000
(4) 一致性测试
(5) 参考软件(目前包括 C和 JAVA)
(6) 混合图像文件格式
(7) 对核心编码系统的最小支持(这一部分已经被舍弃了)
(8) JPSEC(安全方面的内容)
(9) JPIP(交互式协议与 API)
(10) JP3D(仍处于草拟阶段)
(11) JPWL(无线应用)
(12) ISO基准的媒体文件格式
本文所介绍的内容基本上仅涉及到标准的第一部分。
3. JPEG2000 的特征、优势及应用
JPEG2000 的出现从某种意义上讲是为了弥补 JPEG标准的不足,那么在介绍 JPEG2000的特征之前,我们就有必要介绍一下 JPEG标准,介绍 JPEG与 JPEG2000的区别。 也许很多用户都知道,在使用 JPEG 压缩图像的时候经常会遇到一个很突出的问题,就是在低比特率编码时,块状失真很明显。主要原因是在压缩过程中使用了离散余弦变换(DCT),将图像分割成 8X8 的矩形块,在各块内的边缘处出现了不连续的现象,导致了失真的出现。JPEG2000 不再使用以离散余弦变换为主的区域编码方式,改用以离散小波变换(DWT)为主的多解析编码方式。而块状失真也转化为图像的“迟钝”形式表现出来。这样,使得效果有了很大的提高。
从压缩性能上来看,JPEG2000 能够在 JPEG 基础上再提高 10%~30%,而且压缩后的图像效果更加细腻平滑。从压缩的方式上看,JPEG2000 支持有损压缩和无损压缩,而 JPEG标准中虽然也涉及到无损压缩,但是其无损压缩却没有得到广泛的接受,因此在绝大多数的应用中,也就只支持有损压缩
了,但是无损压缩在很多应用领域(如医疗)是非常重要的。
从传输方式上来看,JPEG2000 支持按照像素精度和分辨率两种模式的渐进传输,而最初的JPEG 是不支持渐进传输的,采用顺序模式传输的图像就只能够从上到下一行一行的显示图片,直到图片全部传完,用户才能看到完整的图像。当然,JPEG 标准也增加了关于渐进传输的内容,这一点会在后面介绍 JPEG2000 渐进实现时提到。另外,JPEG2000 具有“感兴趣区域”(ROI)特性,可以指定图像中的某个区域使用任意的压缩质量,这是JPEG 所不具有的。
以上是粗略的介绍一下 JPEG2000 的需求和与 JPEG 的区别,下面的部分会详细的介绍JPEG2000 的特征以及实现方法,其中仍然会比照 JPEG进行说明。
JPEG2000 作为将要接替 JPEG 的新标准,首先继承了 JPEG 模式的诸多优点,JPEG 具有的“顺序”、“渐进”、“分级”和“无损”模式在JPEG2000中得到了更好的实现,并克服很多 JPEG 固有的局限性。在前一段介绍 JPEG2000 与 JPEG 的区别的时候,已经提到了很多 JPEG2000具备的特征,以下便详细的介绍一下它的重要特征及优势。
1) 高效高质量压缩:作为图像的压缩编码标准,压缩率自然是衡量其性能的最重要指标之一。使用了离散子波变换的 JPEG2000 可以在 JPEG 的基础上高出 10%~30%,而且压缩后的图像更加细腻平滑。在低比特率时,如前所述,它将 JPEG固有的块状编码失真转化为图像的 “迟钝”形式表现,使得图像的效果有了很大的提高。可以说,JPEG2000 具有了更好的压缩率和更高的压缩质量。
2) 更先进的压缩解压缩模式
从压缩方式来说,JPEG2000 直接支持有损和无损压缩,比起 JPEG 的无损压缩未能得到广泛接受相比,JPEG2000 的无损压缩有着重要的意义,在很多应用领域中,无损压缩是必须的。对于那些具有较高重要性,或需要存档的图像信息,无损压缩既能保证图像信息毫无损失,又可以节省资源。例如在医学方面的应用,由于对图像质量要求较高,有损压缩往往是不能够被容忍的。
从解压缩方面来说,JPEG2000 采用的是嵌入式码流,支持压缩一次,多种解压缩方式。JPEG2000 压缩器决定最佳的图像质量,直到并包括无损质量,同时还要选择最大的分辨率或尺寸。任何图像质量或尺寸都可以从结果码流中解压缩出来,向上直到并包括编码时所选择的最大值。比如,假设对一幅图像进行全尺寸无损压缩,得到的结果文件大小为 B 个字节。然后从这个文件中抽出 A个字节(A JPEG2000 的码流支持空间随机访问,有几种机制可以从对应于图像选定空间区域的码流中获取并解压缩数据。不同的机制产生不同的访问粒度,也有变化的难度级别。这种方式的访问可以使得每一个被访问区域都能以多种不同的分辨率和质量解码。随机访问也可以对分量进行。例如,从一幅彩色的图像中抽取出灰度分量。类似地,包含有文本或图像的重叠分量(如果存在)可被抽取出来。也可以逐个区域地以不同的质量和分辨率来实现这一点。
3) 压缩域图像处理/编辑:
对于任何一幅被解压缩并显示出来的图像,都可以被再次的压缩并存储,这是显而易见的。但是,使用 JPEG2000压缩的图像,对应的被压缩的字节都可以被抽取出来,并重新组合到新的兼容码流中,而不需要重新解压缩。也就是说,对于降低了分辨率、降低了质量,或者两个兼有之的图像,并不需要通过“解压缩-再压缩”这个过程来实现。这个特性不仅节省了计算,还避免了因为反复进行“解压缩-再压缩”过程带来的噪声“累积”。当然,JPEG2000也有可能进行“解压缩-再压缩”过程,也依然能够避免噪声“累积”,原因是 JPEG2000
支持无损压缩。
JPEG2000 还支持对压缩图像进行剪切以及简单的几何变换(如旋转 90、180和 270 度)。可以通过访问与给定区域相关的压缩数据,并将其写成新的码流来实现剪切,剪切的边界需要做一些特殊处理,不过这样可以尽量避免进行“解压缩-再压缩”过程。
4) 渐进传输:渐进传输是 JPEG2000 的一个重要特性,JPEG2000 也支持多种类型的渐进传输,这一特性对于在较差的通信环境中传输图像数据具有重要意义。正在被接收并解压的图像,将会随着数据逐渐的增加而以某种形式改善图像的效果,最终达到完整图像的效果。JPEG2000 支持四维渐进传输:质量、分辨率、空间位置和分量。
质量渐进:被压缩的图像将按照质量渐进性来排列码流,当数据不断增多时,解压图像的质量将不断提高。这种渐进方式大致与 JPEG渐进模式相对应。值得一提的是,JPEG2000质量渐进中图像质量的改善明显较快。
分辨率渐进:压缩图像码流的前部分是一个原图像的缩小图,随着数据的不断增多,图像将以宽和高乘 2 倍的速度扩大,直到显示出完整的图像。这种渐进模式大致与 JPEG的分级渐进模式对应。
空间位置渐进:被压缩的图像将以至上而下的顺序解压缩图像,这种渐进模式大家应该不陌生。与之类似,JPEG 最基本的顺序模式正是这种至上而下的方式,而在网络上应用及其广泛的 JPEG图像,绝大多数也都采取顺序模式。
分量渐进:我们常见的图像分量一般为 1 分量(灰度)、3 分量(RGB、YUV等)或者四分量(CMYK),JPEG2000 支持多大16384 分量的图像。分量渐进性就是控制不同分量数据的解码顺序。例如,利用该性质,图像的灰度级部分可以先被解码,然后解码彩色部分,接下来是文本等等。
JPEG2000 具有的这四维渐进性可以说是功能强大,不过还不仅仅如此,这四维渐进性可以在单一码流中混和匹配。例如,首先接收到的图像信息是一个低质量、灰度、低分辨率的缩小图像;随后跟进的数据是彩色信息,使得分量信息提高;接下来接收到的数据可能会使分辨率提高,使得图像尺寸变大;然后可能继续提高图像质量。如此进行,直到得到全部的图像数据,解压出最佳(或无损)的图像。
5) 低位深度图像:二进制值分量(或者具有二进制值的分量拼接块)能够使用JPEG2000 压缩。这种二进制数据的无损压缩可以通过将比特深度设置成 1,小波变换设置为 0 级来实现。这样的设置就是不执行小波变换,二进制图像被当作单一分辨率下的单一位平面处理。该方法牺牲了质量和分辨率上的可伸缩性,保留了空间随机访问的能力。
6) 感兴趣编码区域:由于 JPEG2000 拥有了前面所述的随机访问码
流的特性,使得用户可以任意定义图像的感兴趣区域,在压缩的时候,可以单独指定这个区域的形状和压缩质量。解压缩时,也可以对该区域单独指定解压缩质量。JPEG2000 具有这样的特性来自于编码块的独立性。这方面的详细内容,将会在后面实现与核心算法部分中,从技术的角度更加明确的阐述。
7) 较强的容错性:对于一个先进、复杂、高效的图像压缩系统,具有相当的容错性是
非常必要的。比如在无线通信中,传输错误数据的可能性是很高的,如果没有一定的容错性,结果将很难被用户接受。
JPEG2000 在很多领域具有很高的应用价值,包括互联网、打印、传真、扫描、通信、医疗等等。例如,JPEG2000 具有无损压缩能力,使得它在一些对图像质量要求极高的医疗领域的应用变为可能,而 JPEG则受到其压缩图像质量的影响,无法在这些领域得到应用。不过,JPEG2000 较高的复杂度也使得它不适合某些领域的应用。粗略的估计,JPEG2000的复杂度要比 JPEG高出 5~6 倍。
4. JPEG2000 的基本框架实现以及核心算法
我们首先介绍一下 JPEG2000 系统的基本结构框架,如图:
JPEG2000 的编码器首先对图像数据进行正向的离散小波变换,得到的小波变换系数将进行量化处理,得到的数据再进行熵编码,就得到了压缩图像数据。解码过程则是执行编码器的逆过程, 首先进行熵解码, 然后逆量化, 接下来通过逆向离散小波变换得到重构的图像。以下将按照顺序逐一介绍基本框架中每个模块及其核心算法。
预处理:对于原始的图像数据,并不是直接进行小波变换,而是首先将图形分成若干个图形片,然后再进行两个变换——“前向 DC 电平位移”和“前向分量变换” 。有的资料称这个过程为“预处理”过程。那么我们详细介绍一下这个过程:
图像分片:这个过程是将图像分成不重叠的若干个矩形块,称为图形片或拼接块(image tiles)。每个图形块都将是一个独立的压缩编码区域,它是进行变换、逆变换、编码和解码的基本单位。由于在重构图像的过程中,对于每个图形片是独立解压的,这样就可以在不解压全部图像的情况下,对特定的区域进行解压,提高了灵活性。当然,在低比特率显示图像的时候,容易看出块状的失真效果,这也是图像分块所带来的人工产物,选择较小的图像片会比选择较大的图像片产生更明显的失真。
DC电平位移: 或许我们称之为水平偏移更易理解一些,它是一个可选的过程。如果原始图像数据是无符号的量,那么经过水平偏移过程,将成为带有符号的量,或者说将这些数据映射到一个以 0 为中心的区间上。例如,对于每个分量8 比特输入的 RGB 格式图像信息,一般都使用 0~255 的无符号数据来表示,那么它将被进行水平偏移处理,被映射到-128~127 上。其目的是为后面有效的进行小波变换作准备。
分量变换:在有些资料中也称之为彩色变换,这种叫法也比较直观,因为这个变换是在图像具有三个或者更多的彩色分量,并且前三个的分量都有相同的大小和相同的位深度的时候才需要进行。以 RGB 为例,当图像数据以 RGB 为输入格式时,该变换将会通过线性变换手法将数据变换成表示亮度和色差的YCbCr 格式。这一过程能够利用原始彩色分量之间的冗余,以降低比特率。 当解压过程进行完逆离散小波变换之后,还要进行预处理的逆过程,就是上面两个变换的逆变换,这样就可以得到需要的重构图像了。
2) 离散小波变换(DWT):小波变换是 JPEG2000 系统中核心的处理之一。与传统的离散余弦变换(DCT)不同,小波变换具有对信号进行多分辨率分析和反映信号局部特征的特性。经过预处理之后的图像数据,通过小波变换被划分为多个分解层(decomposition level)。各个分解层由子带构成,这些子带的系数表示了每个分割块分量内适合采用小波变换的局部区域中水平和垂直方向的频率特性。子带的分裂是对低频进行均匀折半递减,也就是说每进行一次分裂分解层的子带,水平分辨率和垂直分辨率被均匀分成原来的一半。这种性质使得 JPEG2000 文件具有了分辨率渐进的特性。小波变换分为可逆与不可逆两种。可逆变换采用带整数值系数的小波变换,使得过程中不会出现运算误差,在逆变换时可以完全恢复原始数据;而不可逆变换采用带实数值系数的小波变换,过程中会出现误差,那么在逆变换时,恢复的数据也是有误差的。下面是进行了三次小波变换的示意图:
3) 量化: 简单的说,量化就是减少子带系数的精度,在不影响图像主观效果的前提下,达到压缩的目的。子带数据要依靠量化过程来映射到量化索引中,然后才能进行编码。因此,量化是一个有损过程,会产生误差,只有不可逆的有损压缩过程才需要量化,可逆过程不需要量化。量化过程的关键是利用变换后图像的特征、质量等因素得到一个合理的量化步长,在可逆过程中,量化的步长就是 1。在 JPEG2000 标准的第一部分中,要求实现的量化方法是恒域(deadzone)标量量化。
4) EBCOT 编码及质量层:EBCOT 编码是 JPEG2000 中又一个核心的处理模块。它的作用是将小波变换后生成的 N 层子带继续分割,并将这些细分后的块数据各自按照其对图像质量的影响,截断成若干段,并将这些段依据其影响的程度,排列成若干层,这些层被称为“质量层” ,第 0 层里的数据块被认为是对图像质量影响最大的数据,其后的层对图像质量的影响依次降低。质量层概念的引入使得 JPEG2000编码时若按照质量层的顺序进行,那么码流就将具有质量渐进的特性。下面是子带分割以及质量层的示意图:
5) 算术编码:简单的说,算术编码就是利用实数的密度,即 0和 1 之间有无穷个实数这一性质,将所有的字符串都对应于这个区域,那么一个字符串在这个区间上所对应的位置就是所谓该字符串的代码。这种编码的思想是基于 Elias 编码方法,依据人们所熟悉的划分递归概率区间的设想。可惜的是,目前的情况,该算法是不可能实现的,因为它需要无限精度的算术运算,不过,它却称为了一类高效可行的编码方法的基础,这一类方法被统称为算术编码。JPEG2000 中使用的是自适应算术编码。
5. 总结
JPEG2000 作为新一代的静态图像压缩标准,目的在于推出功能更加强大,更能适应当前用户需求的新图形压缩系统标准。它大胆的吸取了诸多新技术革新成果,针对目前的广泛需求,设计出一个
具有良好适应性和扩展性的框架。它很好的改进了 JPEG的许多固有缺陷,使其应用领域更加广泛。目前,JPEG2000 尚未得到广泛应用,多数了解它的人,还是那些专家和图像技术人员。不过有人估计,JPEG2000 在今后的几十年里,会逐步的像 JPEG 现在这样,得到广泛应用(JPEG 一词被誉为与 IP 一词一样普及)。其强大的功能与特性势必为使用它的用户们带来更多的方便。
参考文献 :
丁贵广 郭宝龙, “新一代静止图像压缩编码标准:JPEG2000概述”