图像无损压缩算法JPEG 您所在的位置:网站首页 1211321317_16282537565311n.jpg 图像无损压缩算法JPEG

图像无损压缩算法JPEG

2023-07-06 16:49| 来源: 网络整理| 查看: 265

引 言

按照能否精确重建图像分类,图像压缩有无损压缩和有损压缩两种方式。有损压缩放弃某些人眼容易忽略的信息,达到比较高的压缩比,因而得到广泛应用。无损压缩只是消除了冗余度,而没有任何信息的损失。无损压缩能够达到的压缩比十分有限,因此无损压缩仅应用在相对珍贵或者获取成本高昂的图像保存中,例如珍贵文献的数字资源,医学或遥感图像。但随着电子行业和网络的发展,人们对高品质图像的需求日益增长,日常生活中,人们希望能够完整保存某些有纪念意义的照片。在科学研究中,人们希望把能够记录时代信息的图像完整保存起来,为后世或后来的研究保留完整的资料。但图像资料数据量庞大,存储这些资料给存储设备和网络传输常来很大的压力,只有无损压缩技术的发展才可解决。

无损压缩是没有任何信息损失的压缩,即100%重建原图像,无损压缩极限受其信息熵决定。即对于8位图像,最大压缩比为8/H(x),H(x)为图像信息熵。图像的信息熵不一样,同一种算法对不同的图像压缩比是不一样的。常见的无损压缩方法有预测编码、熵编码和LZW编码等。无损图像压缩算法是上述几种算法的组合,或再辅以某种正交变换。文献[1]系统地评估了以下几种无损压缩算法。但这几种方法都只是针对某一类图像压缩有效,为此联合图像专家组(JPEG)制定了无损压缩标准:JPEG-LS。JPEG-LS综合了预测编码,游程编码以及熵编码,虽然对某一类图像的压缩效果不一定最好,但具有最广泛的实用性。 1 JPEG-LS的编码原理

JPEG-LS依赖于预测编码技术和差值预测环境自适应编码技术,预测编码和环境自适应编码两种技术都涉及到邻域的概念,邻域是当前编码的样本集,用来构建预测结果或者为当前样本值的环境编码。JPEG-LS采用的上下文建模的因果模板(causal template)如图 1所示。图像样本以光栅顺序逐一编码,从图像的左上角开始到右下角[2]。

图 1Fig. 1 图 1 JPEG-LS的因果模板 Fig. 1 Causal template of the JPEG-LS algorithm

对任意给定样本x[n1,n2]≡x[n]编码时,该邻域包括

为方便起见,通常把当前抽样值和其邻近值分别简写为x[n]和xa,xb,xc,xd。

2 JPEG-LS的编码说明

对于当前像素x,首先利用其周围相关的像素a,b,c,d计算其三个梯度,根据梯度决定该局部区域是平滑区域还是规则(Regular)区域,如图 2所示,对于前者采用游程(Run-Length)编码,对于后者采用规则模式处理(Regular model)。JPEG-LS的核心就是对Regular model下的编码进行处理[3]。

图 2Fig. 2图 2 简单编码流程 Fig. 2 The simplified encoding flowchart

当对图像数据的第一行进行编码时,xb,xc,xd不存在,如图 1所示,这三个值设为0;在当前数据位于行头或行尾时,xa,xc,xd不存在,xa,xd取xb得重建值Rb,xb取上一行的xa得重建值Ra。如图 3所示,方框内为待编码的图像数据。

图 3Fig. 3图 3 图像数据边界处理示例 Fig. 3 An example of the image-edge processing

Regular model模式下编码包括固定预测(fixed predictor),自适应校正(adaptive correction)以及对预测残差的 Golomb编码。 固定预测是通过像素x周围的相关像素a,b,c进行预测,预测函数为

式中,表示定义。

通过预测得到像素x的预测值Px,预测误差包括两部分,一部分为其整数部分(bias),一部分为小数部分(shift),通过自适应校正得到没有整数部分的残差。这一步是通过自适应校正(adaptive correction)来实现的,也称去除整数偏差(bias cancellation)。这一步利用上下文参数(context)通过递归反馈的方式实现[4]。

上下文所需要的参数有A,B,C,N,分别用来存储累计的预测误差大小的总和,预测偏差(小数部分)的总和,预测修正误差的正值(整数部分)以及每个对应上下文在编码过程中预测残差发生的次数。A和N用来更新Golomb编码器参数k,N和B用来更新C码中的校验值[3]。上下文A[0,1,…,TOT_CONTEXTS],B[0,1,…,TOT_CONTEXTS],C[0,1,…,TOT_CONTEXTS],N[0,1,…,TOT_CONTEXTS]的索引个数TOT_CONTEXTS 对于A和N中取(93+1)/2=366,B和C中取(93-1)/2=364。上下文参数A,B,C,N需要初始化,之后在对每一像素进行编码过程中不断进行更新和反馈。上下文的索引值选取3个梯度的量化加权和,因此,上下文本质上是反映当前像素点局部区域的活动情况。对3个梯度量化越细,上下文个数越多。根据对称量化区域的概率相等,即

需要合并对称的上下文区间。 对于每梯度9个量化值,则总的上下文个数TOT_CONTEXTS为(93+1)/2=365。开始需要对梯度量化表以及上下文参数A,B,C,N进行初始化配置[5]。

最后对经过固定预测以及自适应校正预测后的残差用Golomb编码,Golomb编码本质上是对单边几何分布的熵编码。Golomb编码首先要选择最佳的编码参数k,其生成编码的平均码长是最短的,在JPEG-LS中k值依赖于上下文并且自适应地改变。对经过固定预测和自适应校正后的预测偏差Errva映射到正整数区间,以便进行Golomb编码。映射函数为

码流分两部分,一部分为预测残差对2k 的商unary,用unary个0再加一个1;另一部分为预测残差对 2k的模,用其二进制表示[6]。

因此,JPEG-LS压缩编码过程主要分三个部分,自适应校正(adaptive correction),平坦区域的游程编码(run-length coding),规则模式下的Golomb编码。其中最主要的还是自适应校正(adaptive correction),具体体现在上下文参数A,B,C,N在编码过程中的自动迭代更新。解码过程和编码相似,根据事先配置的梯度量化表,上下文参数表以及初始化像素值,逐位解码,解码也要根据情况分析是采用游程解码还是规则模式的Golomb解码。对于Golomb解码是边解码边更新上下文参数A,B,C,N。图 4是JPEG-LS的编码流程图。

图 4Fig. 4图 4 JPEG-LS编码流程图Fig. 4 The encoding process of the JPEG-LS algorithm

计算当前像素的梯度值时,需要该像素周围像素值。一般采用扩边方法,即上边扩一行,左扩一列,右扩一列,如图 3所示。

3 实验分析

选用八幅8比特标准灰度图像(512×512)对JEPG-LS进行分析验证。八幅图像如图 5(a)~(h)所示。可以看出图 5中(a)Barbara、(b)Goldhill、(d)Baboon的内容细节信息较为丰富,含有大量的纹理信息,较难获得较高压缩比;(c)Bridge的细节信息较少,图像内容较为简单,一般来说能获得较好的压缩比;(e)Boats和(f)Lena是图像处理人员常用的测试图像,纹理信息和结构信息均较为适中,很具有代表性。

图 5Fig. 5图 5 八幅标准灰度图像 Fig. 5 Eight standard gray images

测试硬件环境为ThinkPad T400,操作系统为Windows XP SP3,软件环境为Visual Studio 6.0,C语言编程。经测试图 5图像JPEG-LS算法的无损压缩比和程序运行时间,得到结果如表 1所示。

表 1(Table 1) 表 1 JPEG-LS算法的压缩比和运行时间 Tab. 1 The compression ratio and running time of the JPEG-LS algorithm BarbaraGoldhillBridgeBaboonBoatsLenaCrowdAirfield 压缩比1.645 3831.698 1322.519 6221.325 3991.882 7181.884 7502.044 0081.437 453 运行时间/ms939378109109939393 表 1 JPEG-LS算法的压缩比和运行时间 Tab. 1 The compression ratio and running time of the JPEG-LS algorithm

从实验结果可以看出,JPEG-LS对各类图像都有良好的压缩性能,图像内容越简单,能够获取的压缩比也越高,压缩解压缩所需运行时间也越少,图像内容越丰富,压缩也比较困难,相应耗费的时间也较多。

表 2中信息熵和压缩极限只是对图像信息熵和图像压缩极限的粗略估计,信息熵是通过整数小波变换所得小波系数的一阶熵,由于小波变换不能完全消除图像像素间的相关性,实际上图像的信息熵要低于我们计算的熵[7]。但从中也可看出JPEG-LS算法在建模和编码两个方面都做得极好,因而JPEG-LS能够达到更高的压缩比。

表 2 图像的信息熵估算 Tab. 2 The estimation of the information entropy of the images 8-1 Barbara8-2 Goldhill8-3 Bridge8-4 Baboon8-5 Boats8-6 Lena8-7 Crowd8-8 Airfield 图像一阶熵7.632 17.477 85.792 27.357 97.123 87.445 56.789 37.120 6 信息熵5.150 84.845 03.870 56.110 84.554 34.354 64.359 35.685 5 压缩极限1.551.652.071.311.761.841.831.41 表 2 图像的信息熵估算 Tab. 2 The estimation of the information entropy of the images 4 结 论

本文对无损压缩算法JPEG-LS的算法原理,实现过程中所需的细节技术做了深入的研究,用C编程语言实现了JPEG-LS压缩算法,并选取大量的标准灰度图像进行实验。实验结果表明:该算法对各类图像均具有良好的压缩性能,压缩比可以达到或超越通过正交变换的各类压缩算法,而且计算的时间消耗低,能够满足人们日常应用的时间需求。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有