压缩算法——JPEG2000 编解码原理

编解码过程

编解码过程,参看如下两图。接下来是,每个部分的详细介绍。


1. 预处理和后处理


a. 图像分块与拼接

与JPEG不同,JPEG 2000算法并不需要将图像强制分成8×8的小块。但为了降低对内存的需求和方便压缩域中可能的分块处理,可以将图像分割成若干互不重叠的矩形块(tile)。分块的大小任意,可以整个图像是一个块,也可以一个像素是一个块。一般分成2 ^6~12×2 ^6~12(即64~1024像素宽)的等大方块,不过边缘部分的块可能小一些,而且不一定是方的。 
图像分块的大小会影响重构图像的质量。一般来说,分块大比分块小的质量要好一些。 在解码过程的后处理中,需要将分块的图像数据,重新无缝地拼接在一起.

b. 数据偏移和归一化处理


c. 图像数据划分和分片(可选)

参见简述JPEG2000中网格划分

d. 分量变换(可选)

指对具有多个分量的图像先经过某种变换来降低各分量之间的相关性。将传统的RGB(红绿蓝)色域转换至其他色彩空间。Cr和Cb是差值图像,直方图在零点附近有很高的峰值。

2. 小波变换

无损压缩,采用整数小波变换,初始数值范围 

有损压缩,采用实数型小波变换,初始数值范围
 

小波变换作用:生成大量0或者接近0的的小波变换系数。
JEPG2000中小波变换采用了两种实现方式:基于卷积和提升机制。还采用了基于行的变换。基于卷积的小波变换,得到的图像小波系数是浮点数,是有损编码。基于提升机制的小波变换,是整数到整数的小波变换,第二代小波。
流程:小波变换——阈值处理——逆小波变换。 阈值处理:小波细节系数低于一个阈值,当做0处理。




3 量化

嵌入式恒域标量量化。有损压缩时,进行。

4 EBCOT(核心)

最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在1999年发表的一种编码算法。

JPEG2000的小波系数量化编码采用EBCOT编码,EBCOT量化编码是JPEG2000标准的核心,是一种小波系数的嵌入式比特层编码方法。

EBCOT编码分为两部分:第1部分tierl,将每个子带划分为独立的编码块,然后对每个编码块独立进行嵌入式编码扫描,每个编码块的比特层编码,最后对编码扫描结果进行MQ算术编码,得到嵌入式码流;第2部分tier2,根据输出码率的要求,组合每个编码块的嵌入式码流,对所有编码块的编码流进行优化截断排序、打包等处理,得到JPEG2000的码流。

EBCOT嵌人式比特层编码主要包括嵌入式比特层编码、优化截断位流排序和MQ算术熵编码。MQ编码 MQ(Multiple Quantization多路量化)编码是一种用于二进制数据的自适应算术编码。

简述JPEG2000中网格划分

JPEG2000中,Component, Tile, Layer, Packet, Tile-part, Sub-band, Code-block, Precinct, Bit-plane之间的关系如下图所示:

关系图

每个图像由不同的分量(component)组成。

        每个分量又可以划分为若干个分量片(tile-component)。对于每个分量片进行小波变换,进行不同层次的分解,从而得到不同分辨率级别的子带(sub-band)(一般分解层次D=5就足够获得对于全分辨率图像的近于理想的压缩性能),如下图所示。

         n级小波变换后就有n+1个分辨率,每个分辨率有3个子带(除去最低分辨率只有1个子带)。


区(precinct)的划分是对特定的片、分量和分辨率进行的。比如说我们定义的区大小为(2PPx,2PPy),将分辨率r划分如图3所示,其中分辨率r的原点是(trx0,try0),右下角是(trx1-1,try1-1)。实际上,可以在分辨率级别上直接进行区的划分,而码块(code-block)则是在区上进行划分的。如下图所示。


区的划分


区的实际划分

注意:虽然我们说得分辨率r划分为3个子带(最低分辨率为1个子带),但实际上我们的分辨率是一个矩形,对于r不是最低分辨率时,实际包含了nHHnHLnLHnLL这四个子带,但由于nLL是分配给下一分辨率的,所以实际上只处理nHHnHLnLH这三个子带。

       在JPEG2000标准中,数据是以数据包为单位记录在码流中。每个数据包就包含了特定的切片、层、分量、分辨率和区的数据。对于给定的切片、层、分量和分辨率r,这个分辨率r中的每个HL、LH、HH都相应分成区。每个区独立划分编码块和独立编码、打包。这样,万一在传输中一个数据包发生了误码,也不至于影响了其它包的数据。

参考:

introduction ondata compression,fourth edition.David Taubman和MichaelMarcellin 都非常参与JPEG 2000开发,写了JPEG2000:Image Compression Fundamentals,Practice andStandards,Kluwer Academic Publishers,2001,它都是一本关于图像压缩的教科书,并且是标准的解释。不仅,但它附带了早期版本的kakadu软件,包括源代码。






 





  • 23
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JPEG2000是一种高效的图像压缩算法,常用于数字图像压缩和传输。与传统的JPEG压缩算法相比,JPEG2000能够提供更好的图像质量和更高的压缩比。 JPEG2000压缩算法采用了基于小波变换的方法,它将图像分解成多个空间频率子带,然后对每个子带进行小波变换。在小波变换的过程中,JPEG2000使用了多分辨率表示的思想,将图像分解成多个分辨率层次,从低频到高频逐渐细化图像细节。 在小波变换之后,JPEG2000通过对每个子带进行量化和熵编码来实现压缩。量化将子带中的频率系数映射为离散的整数值,从而减少数据的表示位数。而熵编码则通过统计分析频率系数的出现概率,用较短的码字表示出现概率高的系数,用较长的码字表示出现概率低的系数,从而进一步减少数据的存储空间。 与传统JPEG相比,JPEG2000还引入了一些新的特性,如无损压缩、可逐渐解码和可任意访问等。无损压缩使得JPEG2000能够在压缩图像的同时保持原始图像的完整性。可逐渐解码能够根据需求逐步解码图像,从而实现渐进传输。可任意访问则允许用户根据需要随机访问图像的任意部分。 总的来说,JPEG2000是一种高效的图像压缩算法,它通过小波变换、量化和熵编码等技术实现图像压缩。它具有较高的压缩比和较好的图像质量,并且支持无损压缩、可逐渐解码和可任意访问等特性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值