JPEG_LS算法分析

算法概括

简介

  • JPEG-LS(JPEG Lossless Compression)是一种无损图像压缩算法,旨在有效地减小图像文件大小而不损失图像质量。相比于传统的JPEG压缩(有损压缩),JPEG-LS保留了图像的每一个像素,因此适用于需要完整保存图像信息的场景
  • JPEG-LS算法基于一系列的预测和差值编码技术。首先,它通过预测每个像素的值来寻找局部像素值之间的相关性。然后,通过计算每个像素与其预测值之间的差值,将这些差值进行编码。

应用

  • 医学图像:在医学领域,图像的准确性和完整性至关重要。
  • 航空航天图像:在航空航天领域,图像的准确性和清晰度对于任务的成功至关重要。利用航空摄影、卫星遥感等技术获取的地球表面信息的图像。在遥感领域,图像数据的准确性、完整性和高效的传输都是非常重要的,而JPEG-LS算法恰好能够满足这些需求,因此在处理和传输遥感图像时常常会使用JPEG-LS算法。
  • 科学图像:在科学研究领域,图像通常包含大量的数据和细节,因此需要高效的压缩算法来保存这些信息。
  • 笔者刚好是在做遥感方面的项目接触到了JPEG_LS算法,遥感图像数据通常具有大容量和高分辨率的特点,因此需要快速的编码和解码算法来处理这些数据。JPEG-LS算法具有较快的编码和解码速度,能够在实时或近实时的场景下对遥感图像进行高效处理。
局限性
  • 对于包含大量高频细节的图像,其压缩效果可能不如有损压缩算法。此外,JPEG-LS并不支持透明度和动画等高级图像特性。

算法详解

整体算法思想

在这里插入图片描述

  • JPEG_LS算法本身从大类分为像素预测和误差编码
  • 总结来看分为以下步骤
    • 上下文参数(为实现像素预测做参数准备)
    • 像素预测
    • 计算预测误差
    • 更新上下文参数
    • 残差编码

算法参数分析

  • a\b\c\d均为与当前像素具有特定位置关系的像素点的像素
  • x为当前像素
  • D1\D2\D3为两两像素之间的梯度(即为做差值)
  • Q1\Q2\Q3为梯度量化后值
  • T1\T2\T3为梯度量化门限值参数
  • Q为根据Q1\Q2\Q3所得到的上下文索引值,用于对A\B\C\D数组进行检索
  • A数组为量化残差的绝对值之和,该数组主要用来计算k值
  • k值用于编码阶段使用,其决定了如何划分商和余数的关系
  • B数组为重建残差的累加,用于计算预测偏差值C
  • C数组为上下文平均偏差值(残差修正值)对像素预测值进行修正
  • N数组为保存对应上下文出现的次数
  • Px为当前像素的预测值,同时也表示Px依据C数据继续宁修正后的修正值
  • near为量化失真参数其和位宽有关
  • maxval为像素点的上限值
  • errval为图像实际值与预测值的差值(残差)
  • merrval是对残差分布进行几何变换后的数值
  • sign

算法步骤分析

一、建模
  • 目的:得到索引参数Q用于数组的查询和更新
  • 实现:梯度计算、量化及索引值求解
  • 梯度计算
    在这里插入图片描述
  • 梯度量化

在这里插入图片描述

  • 门限参数与量化失真参数near和像素位宽n的关系
    在这里插入图片描述
    在这里插入图片描述
  • 生成索引
    • 通过索引我们就可以访问ABCN
      在这里插入图片描述
二、预测
  • 对当前像素进行预测
    • 上图xMED为Px,就是预测值
      在这里插入图片描述
  • 预测值进行修正
    • 利用Q的符号sign和残差修正值C[Q]和参数maxval对Px进行预测值修正。修正公式为
      在这里插入图片描述
  • 残差计算
    • 由于笔者所接触的项目是无损压缩,因此,后续工作仅仅对errval进行编码即可,若是近无损则还需要量化模减。但在进行最后的编码之前还需要对上下文参数进行更新
      在这里插入图片描述
  • 上下文参数更新
    • 这个更新操作每一个像素点编完后都需要进行更新。
      在这里插入图片描述
三、编码
  • 编码转换
    • Golomb编码由于只能编码非负数所以需要使用Golomb-Rice进行编码。首先需要进行如下映射
      在这里插入图片描述
  • Golomb-Rice编码规则
    • 先确定k,k是由A数组对应数据计算的。计算k的目的是使得编码后的平均码长最短。对于k的确定我们遵循以下逻辑。

    在这里插入图片描述

    • 对于一个数N,采用这种编码则具备以下格式特征用一个二元码和一个二进制编码中间间隔1即可。
      在这里插入图片描述
    • 所谓二元码就是是多少就用多少个0来表示

参考文献

[1] Weinberger M J, Seroussi G, Sapiro G. The LOCO-I lossless image compression algorithm: Principles and standardization into JPEG-LS[J]. IEEE Transactions on Image processing, 2000, 9(8): 1309-1324.

注:

  • 本文更多从算法实现的角度解析算法,具体论证
  • 文章中的图片均来自参考文献,博主无版权,任何转载请注明相关论文
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值