与JPEG相比,JPEG2000算法的显著特点是用DWT取代了DCT,用EBCOT取代了哈夫曼编码(Huffman)。
JPEG2000可以分为三个关键步骤:先是小波变换,把图像分解为空间频域子带;然后把每个子带分为较小的块,独立编码成为嵌入式比特流;最后,嵌入式比特流被包装成分层码流。这三部分,简单来说就可以分为DWT、EBCOT第一层编码(Tier-1)和第二层编码(Tier-2)三个模块。再加上预处理阶段,以及量化阶段,组成完整的编码器。
在编码器中,首先对源图像进行前期预处理,对处理的结果进行离散小波变换,得到小波系数。然后对小波系数进行量化和熵编码,最后组成标准的输出码流。具体过程如下:
(1) 将有多个颜色分量组成的图像分解成单一颜色分量的图像。分量之间存在一定的相关性,通过分解相关的分量变换,可减少数据之间的冗余度,提高压缩效率;
(2) 分量图像被分解成大小统一的矩形片----图像片(Tile)。图像片是进行变换和编解码的基本单元;
(3) 对每个图像片进行小波变换。产生多级系数图像。这些不同级数的系数图像可以重构出不同分辨率的图像;
(4) 多级分解的结果是由小波系数组成的多个子带。它们表示图像片中局部区域的频率特性;
(5) 对系数子带进行量化,并且组成矩形数组的“码块”(Code Block);
(6) 对一个码块中的系数位平面(也就是一个码块中整个系数中具有相同权值的那些位)进行熵编码;
(7) 将所有码块的压缩位流适当的截取,组织成具有不同质量级的压缩位流层;
(8) 将压缩码流以包为单元进行组织,产生JPEG2000文件格式的码流