JPEG2000编码流程

JPEG2000的编码流程包括图像预处理、离散小波变换和量化。预处理涉及瓦片划分、直流平移和色彩分量变换,以减少相关性和提高压缩效率。离散小波变换利用Daubechies9/7或LeGall5/3滤波器将图像信息转化为频域。量化则通过均匀标量量化减少系数精度,便于熵编码和压缩。此过程旨在平衡图像质量和压缩比。
摘要由CSDN通过智能技术生成

JPEG2000的编码流程
在这里插入图片描述
1.预处理
预处理包括瓦片划分、直流电平平移以及分量转换三个部分。
在这里插入图片描述
(1)图像切片的划分
图像的切片就是指将原始图像切割成许多较小的矩形块,其中矩形块是互不重叠大小为任意值的,最大可以是整幅图像如图所示。但是必须合理的划分图像的矩形块,如果划分的太大就达不到减小存储容量的目的,如果划分的太小压縮重建后图像的质量就会较差。因此,需要根据对图像质量的要求和处理设备的内存大小来合理的划分矩形块的大小。
(2)直流平移
原始的图像数据都是无符号的数值,为了去除图像样本值中的直流分量,使样本值在小波变换后均勾分布在零系数的两侧便于进行自适应熵编码,需要对样本值进行平移就是所有样本值减去中间值。假设图像样本的精度为B,I(x,y)为图像样本值i(x,y)为直流平移后的样本值,则直流平移的公式
在这里插入图片描述

(3)色彩分量变换
彩色图像是由多个分量组成,在小波变换之前为了去除分量之间的相关性,提高压缩的效率,就需要对图像进行相应的分量变换。JPEG2000采用的色彩分量变换有种:可逆分量变换和不可逆分量变换。
可逆分量变换适用于无损压缩公式
在这里插入图片描述
不可逆分量变换适用于有损压缩公式
在这里插入图片描述
2.离散小波变换
由于离散小波DWT优异的性能如对图像信号的多分辨率分析,反映图像的
局部特性等,使它成为了JPEG2000编码标准的重要编码算法。图像经过小波变换后图像中的信息从时域变化到频域,通过对各个频带的处理去除了每个图像像素的相关性。使图像的信息集中在少量的系数上,便于量化后大多数系数归于零,方便游程编码。
JPEG2000标准提供了两种小波变换器:一种是用于有损压缩的Daubechies9/7滤波器,一种是既可用于无损压缩又可用于有损压缩的LeGall5/3滤波器。由于提升小波变换具有运算复杂度低速度快和所需内存少的特点,被JPEG2000推荐使用。
3.量化
图像经过小波变换后,需要对子带内系数进行量化减小系数的精度,方便后面的熵编码,从而达到图像压缩的目的。JPEG2000采用的量化方式是均匀标量量化。假设子带小波变换后的系数是a(),量化后的系数值为q(),则量化公式为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出处为
JPEG2000中编码算法的研究与实现

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Changes from version 2.2.2 to version 2.2.3 ------------------------------------------- * Extremely minor changes to avoid mixed use of formatted and unformatted calls to "ostream" objects. These appear to excite a bug in GCC version 3.0. The only file affected is "params.cpp" in "coresys/parameters". Changes from version 2.2.1 to version 2.2.2 ------------------------------------------- Note: none of these have any impact whatsoever on executable code or DLL's. * Renamed the "core" directory as "coresys". A trivial change and my appologies for those whom this might adversely affect. However, the use of the name "core" was causing some people difficulties, since it is identical to the name of a Unix core dump file. * Made the Linux MMX-optimized functions "extern C" instead of "extern", so as to avoid problems caused by different name mangling conventions between various versions of gcc. * Eliminated multi-line comments from assembler files so as to avoid problems created by earlier versions of the gnu assembler. Changes from version 2.2 to version 2.2.1 ----------------------------------------- * Replaced the C++ I/O routines used for image and compressed data transfers with ANSI C I/O functions. This was motivated by the fact that the new-style ANSI C++ I/O package is unbelievably slow, at least as implemented in Microsoft's Visual C++ compiler. The change has no impact whatsoever on the Kakadu core system; it affects only the implementation of a few application level objects -- the core system abstracts all such I/O considerations through interface classes which are implemented by applications. Everything now runs a little faster than it did in version 2.1 and quite a bit faster than it did in the first release of version 2.2. * Made provision for compiling under versions of GCC prior to version 3.0. To use this, you should define GCC_VERSION_LESS_THAN_3. Changes from version 2.1 to version 2.2 --------------------------------------- * Extensive support for ROI (Region of Interest) specification at encode time (see "kakadu.pdf" for more on this). * Migrated from the old-style C++ iostream package to the new standard iostream package -- minimal use of "using namespace std" and never used in common header files, so this should enhance namespace protection and portability. * Added AT&T style versions of the small amount of Pentium assembly code to enable compilation of a high speed version under GCC as well as MSVC. * Some minor bug fixes. Changes from version 2.0.2 to version 2.1 ----------------------------------------- * Extensive support for working with the JP2 file format. The "kdu_show" application demonstrates the capabilities required of a conformant JP2 reader: palette mapping; interpolation of components to a common resolution; application of registration offsets in the CRG marker segment; and colour conversion to an appropriate rendering space (sRGB here). The "kdu_region_decompressor" object provides extensive support for general purpose interactive rendering applications, performing all of the above tasks in a platform independent manner. * It is now possible to directly control rate-distortion slope thresholds used in the construction of quality layers. This capability may also be used to significantly increase compression speed, if a suitable threshold is known, since the encoder then incrementally predicts the point at which there is no point in coding further coding passes. * A number of improvements to the "kdu_show" application, including the ability to arbitrarily zoom into images. * A number of minor bug fixes, including one important bug reported by Aaron Deever of Kodak, and a bug which occasionally manifested itself in the incremental rate prediction heuristic (reported by Jim Andrew of CISRA). * Improved documentation. Changes from version 2.0.1 to version 2.02 ------------------------------------------ * A PDF document (documentation.pdf) has been prepared to guide the new user into some of the more important aspects of the Kakadu system. The first draft is included here. * A very simple compression example and a very simple decompression example have been added to assist developers in familiarizing themselves with the Kakadu system -- the existing demo apps provide perhaps too much functionality to be quickly understood. * A full BIBO (Bounded Input Bounded Output) numerical analysis of the DWT and other processing steps is used to establish the best utilization of limited precision sample data representations. The new version should not be able to fall prey to numerical overflow or underflow difficulties under any circumstances (this could just have been possible with the last version). It also provides slightly higher accuracy. * The automatic heuristic for generating quality layer rate targets has been substantially improved. * A number of minor bugs/limitations were corrected, although these had not manifested themselves in any real examples. Changes from version 2.0 to version 2.01 ---------------------------------------- * One line change in each of "kdu_expand.cpp" and "kdu_compress.cpp" to correct a minor rare bug in these demo applications. * Minor changes in "kdu_show.cpp" to correct a rare bug and improve the user interface in regard to image rotation. * Four lines added to each of "encoder.cpp" and "decoder.cpp" to fix a minor memory leak.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值