摘要——空间数据系统咨询委员会(CCSDS)的数据压缩工作组最近通过了图像数据压缩议案,最终版本预计在2005年发布。议案中采用的算法由两部分组成,先是一个对图像的二维离散小波变换,然后是对变换后的数据的累进的位平面编码。这个算法可以提供无损压缩和有损压缩,并允许用户直接控制压缩数据的量或保真度,根据这些数据可以重建小波变换的数据。该算法发同时适用于基于帧的图像数据和基于扫描的传感数据,并且被应用到近地任务和深空任务中。未来的一个网站上的免费软件源将伴随着这个标准。该压缩机的一个专用集成电路(ASIC)实现目前正在开发中。本文描述了这个压缩算法以及推动选择该算法的要求。给出了一个空间图像测试集的性能测试结果和与其他压缩算法的比较。

目录

1.   绪论

2.   算法描述

3.   性能

4.   状态

5.   结论

致谢

引用文献

传记

1.绪论

对于空间任务,数据压缩的好处包括,提升收集科学数据的能力,以及板载存储和遥测带宽要求的减少。因为这些益处,空间数据系统咨询委员会(CCSDS)一直致力于为空间应用推荐数据压缩标准。

第一个CCSDS数据压缩推荐,于1997年采用,标准化了无损Rice压缩算法的一个版本[1]。从深空探头到近地观测的太空任务都受益于这个推荐标准。

1998年,CCSDS数据压缩工作组开始评估建立一个适用于星载应用的图像压缩推荐标准的可行性。工作组商定了一个压缩机必须满足表1中列出的要求,这些要求旨在反应为航天器上的实时硬件压缩设想的应用。

表1.CCSDS图像压缩要求

1

能处理帧数据和非帧数据

2

提供可调整的编码数据率或者图像质量(直至无损)

3

可处理4位到16位输入像素

4

提供在太空合格电子设备上的实时处理

5

要求最少的地面操作

6

将一个包损失的影响限制到图像的一小块区域

除了表1中列出的要求外,在算法选择过程中最需要考虑的可能就是优化率失真性能。进行累进压缩的能力被看作是一个非常理想的功能,但不是必须的。工作组的希望是,如果该推荐标准中包含了任何专利,

所有的CCSDS成员机构可以获得免版税许可。

工作组也整理了一个20幅测试图像的集合,包括地球观测、星域、星系和太阳图像。测试图像的动态范围包括8位,10位,12位和一幅16位雷达图像。

提议了候选算法, 进行了基于量化失真率评价和图像质量的主观评价两方面的性能评价。另外,进行实现架构研究来评估建议算法的实时处理能力。

在最终的算法选择中,实现复杂度扮演了一个重要的角色。尤其是,一个对专用集成电路(ASIC)实现复杂度的早期分析显示,与其他考虑了的编码选项相比,JPEG2000编码器是至少两个更复杂的因素。对于航天器应用,这回显著影响可获得的处理速度。

2003年达成了共识,当时选择了一个基于小波的压缩算法。选中的算法结合了来自当初建议了的不同的算法的元素,并做了改变以降低复杂度。

在第二节,我们描述了该压缩算法。该算法在测试图像上的压缩性能结果将在第三节给出。第四节描述了该推荐标准的当前状态。

2.算法描述

推荐的算法包括两个功能模块组成,如图1所示:执行区相关性的离散小波变换(DWT)模块,和编码去相关性的数据的位平面编码器(BPE)。这个通用图像压缩方法被广泛应用,例如,见引用[2,3]。

图1 - 该算法的两个功能模块

2.1离散小波变换

推荐标准制定了两种可能用到的离散小波变换。当应用于一维数据时,两种变换有效地使用9个过滤器来计算地通道输出,用7个过滤器来计算高通道输出。根据一般命名惯例,每个过滤器被称为一个“9/7”DWT。两个过滤器的不同在于在是否需要浮点计算。浮点过滤器[2]要求浮点计算并且在低比特率的情况下提升了性能,但是整型过滤器允许无损压缩且不要求浮点操作。在计算整型和浮点9/7DWT的方法中有很多变换,读者可以根据引用[5]以获取本推荐标准用到的正变换和逆变换的详细说明。

图2 - 单级二维离散小波变换的图像分解

图3 – 三级二维离散小波变换的图像分解

一个单级二维DWT的计算过程是,先对图像的行数据应用一维DWT,然后对列应用一维DWT,如图2所示。后续阶段的分解被应用到来自前一级的低通道横向/低通道纵向子带输出,产生引用[6]中描述的金字塔分解。标准要求进行3级DWT分解,将一幅图像分解为10个子带,如图3所示。提高小波分解的级数提供提了高压缩效率的潜力,但由于增加了复杂度而不被推荐标准采用。

2.2节中描述的BPE是用来对二维DWT产生的子带进行斑马的。为了高效的操作,BPE依赖每个子带的同一个位面,在导致整体图像失真方面这子带具有大致相同的相对优先级。对于整型变换,要求对子带进行缩放。缩放因子被选择为2的指数以便缩放可以通过位移操作来实现。对于浮点DWT,不需要执行缩放,但是DWT系数需要四舍五入到最接近的整数。

2.2位平面编码器

BPE按64个系数组成的组来处理小波系数,一个组成为一个块。一个块松散地对应于原始图像中的一个局部区域。一个块包含来自最低的空间频率子带的一个系数,称为DC系数,以及63个AC系数,如图4所示。块是按照光栅扫描顺序来处理的,即,块的行按照从上到下的顺序处理,一行中是横向从左到右来处理的。

因为这些系数表现出显着的统计相关性,这个结构被用来联合对块内相关系数组的信息进行编码。

一幅图像中的块集合被划分为若干组,这个组称为段(segment)。一个段中的块在光栅扫描顺序上是连续的。DWT系数的编码是逐段进行的,并且每一段是独立编码的,与其他段无关。一段中的块的数目分配为介于16到之间的数;这个值是根据可用于存储段的内存来选择的。是用小的段提供了减少实现内存要求和将转换错误的影响控制到图像的更小的区域的潜在益处。但是,当压缩数据的量受控于每个段的压缩大小的限制,小段的使用一般会导致一幅图像的重建数据段具有不同的质量级,并且会导致降低的整体率失真性能。

图4 - 在此原理的小波变换后的图像,64个阴影像素组成一个块

在一个段中,BPE首先通过对成功量化系数的差异应用Rice编码算法来编码该段的DC系数的一个量化了得版本。提供进一步DC系数分解的数据位作为随后的位平面编码过程的一部分而被包含其中。

下一步,BPE成功编码了一个段中的系数值得位平面,从最有意义的位面到最无意义的位面,在合适的点将AC系数的符号插入到编码数据流中。产生的编码位流组成了一个嵌入的数据格式,提供了段内的累进传输;当编码从一个位面到下一个位面的时候,由于2的因素,DWT系数分解有效地提升了。

一个块中的系数被安置到组中,每个组最多有4个系数。概念上,在一个给定的位面,一个二进制字可以被用来描述组中每一个系书的更新,由此,所有的更有意义的位都为0。这些字是被熵编码的,使用少数几个变长二进制编码的一种;具体的代码是自适应选择的。熵编码数据是被安排好的以便段中所有的父系数最先被更新,然后才是子系数,最后才是孙系数。最终,该段包含段中系书的(未压缩)更新位,由此,更有意义的位的值不全是0

每个段的重建图像质量和压缩数据大小之间的权衡可以通过指定每一个压缩段中的最大字节数或是一个限制编码的DWT系数信息量的“质量”限制来控制。每个段的压缩输出一直产生直到字节限制或质量限制达到,无论哪一个先达到。为了进一步降低数据率,每个段的编码位流可以再任意点进一步被截断(或者,等同于,编码可以提前结束),代价是相关段的图像质量的降低。

3.性能

新推荐标准的量化性能已经在表2中列出的测试图像上得到了评估。这些图像可以在CCSDS公开网张上获得。图5给出了两个测试图像的例子。

作为一个压缩性能指标,我们把推荐标准的两种DWT选项与使用9/7浮点DWT时的JPEG2000标准进行比较。对于这个比较,我们模拟“推帚”航天设备的压缩应用的性能。在使用CCSDS推荐标准是,这意味着定义一段块来对应图象宽度,并对每个压缩段施加固定的压缩率限制。通过使用8行专区SAIC和CNES介绍的基于扫描的模式,将相似的限制施加到JPEG2000编码器。我们评估码率在1/4位/像素到2位/像素之间的性能。

表2.测试图象列表

图5 – 测试图象例子:(a) SPOT全色图像和(b) 宽视场行星照相机图像

  表3给出了峰值信号杂讯比(PSNR)的分贝值,和相同动态范围下的图像最大结对误差。从这些结果可以发现,当都遵循在上面描述的“推帚”限制的情况下都使用浮点9/7DWT的时候,新CCSDS推荐标准的性能与JPEG2000的相似。正如预期的那样,在高码率的情况下,使用整型9/7DWT导致了大雨1dB的性能损失。

4.状态

新的图像压缩推荐标准的第一版草案(即CCSDS的红皮书) 已被批准用于机构的评论。数据压缩工作组在考虑不同机构的评论后将发行第二版草案。机构评论完第二版红皮书后,一个正式的推荐标准,蓝皮书,预计将于2005年发布。

压缩工作组也产生了一本绿皮书,它不是推荐标准的一部分,但是可用于直到用户来实现该算法。绿皮书将涵盖以下主题,关于误差传播率控制的系统问题,率控制,使用本地变换的小波变换实现方案,和详细的研究结果。

表3.推帚模式下的性能比较

推荐标准的多个实现正在同步进行中,它们或为了验证该推荐标准,或为了提供一个空间实现的技术展示。软件实现已由喷气推进实验室(JPL)的Mikhail Garvey和戈达德空间飞行中心(GSFC)实现。另外,软件实现在爱达荷大学在Gary Maki教授的领导下正在开发中,以及在内布拉斯加大学在Khalid Sayood教授的领导下正在开发中。这些这些编解码器由C语言实现并且进行了交叉验证。基于早期文档的一个JAVA实现在巴塞罗那大学的Joan Srra教授的指导下开发。一个硬件ASIC实现正在爱荷达大学的先进的微电子技术和生物分子的研究中心(CAMBR)设施中研发,在哪里辐射硬度设计(RHBD)已经开发并应用到能产生高速的太空合格电路的算法中。预计吞吐量超过了20MSample/sec。这个实现将DWT和BPE分别由两块专用集成电路实现。

软件开发和验证预计将在绿皮书出版之前完成,该书将包含一个用户可以下载并执行代码的开源网站。ASIC硬件将由商业企业提供。

5.结论

CCSDS数据压缩工作组已经确定了图像数据压缩的算法,针对星载设备使用。该算法产生接近商业JPEG2000标准的苛刻的率失真性能,但是降低了板载实现复杂度。

推荐标准利用9/7DWT。整型DWT可用于要求无损压缩的应用程序,或是在DWT计算中避免浮点操作的应用程序。浮点DWT用于提升率失真性能。

DWT之后是产生编码位流的位平面编码器,该位流提供了一个编码段中的累进传输。

本算法可应用到广泛的图像处理中,并且适用于要求即时数据处理的推帚传感器。

最终的推荐标准预计将于2005年发布。一个开源的C语言软件实现将很快可用,一个ASIC硬件实现正在开发中。

致谢

本文描述的研究的一部分由Pen-Shu Yeh为美国政府进行。部分由加州理工学院的喷气推进实验室的AaronKiely与美国宇航局签约进行。

[译]新的CCSDS图像压缩推荐标准的更多相关文章

  1. 【PHP系列】PHP推荐标准之PSR-1,PSR-2

    说起码代码,刚上大学那会,老师就教导我们,要严格,规范的,把代码写好.代码如人,工工整整.提起规范化的代码,从一开始用命令行编辑C语言代码就开始控制,强制自己按照相关的标准来,所以,现在写代码,不规范 ...

  2. Atitit 我们的devops战略与规划 规范 推荐标准

    Atitit 我们的devops战略与规划 规范 推荐标准 1. Vm容器化1 2. 热部署tomcat+jrebel 或者resin1 3. 增量更新与差异更新1 4. 补丁提取与应用2 为了方便提 ...

  3. 【PHP系列】PHP推荐标准之PSR-3,日志记录器接口

    上节聊完了PHP官方的相关代码规范,下面给大家带来了PHP系列的PHP推荐标准的另外两个,PSR-3,PSR-4. 首先,我们先来了解下PSR-3是怎么回事. PHP-FIG发布的第三个推荐规范与前两 ...

  4. Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准

    Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准 1. 界面gui方面的前后端分离重大意义1 2. 业务逻辑也适当的迁移js化1 3. 常用分离方法2 3.1. 页面 ...

  5. jdk8新特性(文章推荐)

    文章推荐 jdk9都已经出来了,虽然很多项目都已经使用jdk8,但是很少会用到jdk8中的新特性.本人经常用的到也就是使用Stream,Lambda,但也仅仅是使用,基本不知道什么Function,C ...

  6. 【PHP系列】PHP推荐标准之PSR-4,自动加载器策略

    接上回的继续说,上回说到PSR-3日志记录器接口,这回我们来说说PSR的最后一个标准,PSR-4,自动加载器策略. 缘由 自动加载器策略是指,在运行时按需查找PHP类.接口或性状,并将其载入PHP解释 ...

  7. 即时作图新工具—ProcessOn【推荐】…

    www.processon.com 推荐这个在线作图网站:免费登录,云端存储,面向对象,最重要的是提供了丰富模板! 在线软件的人气会越来越高,这是趋势啊~

  8. 即时作图新工具—ProcessOn【推荐】

    www.processon.com 推荐这个在线作图网站:免费登录,云端存储,面向对象,最重要的是提供了丰富模板! 在线软件的人气会越来越高,这是趋势啊~

  9. 新时代web组件开发标准

    VUE框架,则是遵行了这个标准. 1.html文件 <!DOCTYPE html><html><head lang="en"> <meta ...

随机推荐

  1. BZOJ3672: [Noi2014]购票(dp 斜率优化 点分治 二分 凸包)

    题意 题目链接 Sol 介绍一种神奇的点分治的做法 啥?这都有根树了怎么点分治?? 嘿嘿,这道题的点分治不同于一般的点分治.正常的点分治思路大概是先统计过重心的,再递归下去 实际上一般的点分治与统计顺 ...

  2. Web 开发者学习路线图

      2017 Web 开发者学习路线图(头图源自谷歌) 本文是源自 Github 上 Kamran Ahmed 建立的一个仓库.在文中,作者为他的老教授分享了一组成为前端与后端开发者以及 Devops ...

  3. OpenGL学习--07--模型加载(obj)

    1.tutorial07.cpp // Include standard headers #include <stdio.h> #include <stdlib.h> #inc ...

  4. fuzz系列之libfuzzer

    前言 本文以 libfuzzer-workshop 为基础 介绍 libFuzzer 的使用. libFuzzer简介 libFuzzer 是一个in-process,coverage-guided, ...

  5. linux centos7最小化安装NAT模式网络设置

    1.网络连接设置为NAT模式2.开启CentOS7,以root登陆3.vi /etc/sysconfig/network-scripts/ifcfg-ensXXXX4.设置BOOTPROTO=dhcp ...

  6. zookeeper应用 - 监控

    服务器端:监听zk上父节点的子节点变化 package monitor; import java.util.List; import java.util.concurrent.CountDownLat ...

  7. 【Java】得到当前股票信息

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; ...

  8. Leetcode 回文数字判断

    一.问题描述 判断一个integer 型的数字是否是回文,空间复杂度应该是常数级别的 . 二.问题分析 首先,负数不是回文,10的整数倍不会是回文,个位数一定是回文. 三.代码实现 思路:将一个数字翻 ...

  9. [翻译] FBNetworkReachability

    FBNetworkReachability You can use FBNetworkReachabilty class to get network reachability on iOS devi ...

  10. Java 系统学习梳理_【All】

    Java基础 1. Java学习---JDK的安装和配置 2. Java学习---Java代码编写规范 2. Java学习---HashMap和HashSet的内部工作机制 3. Java学习---J ...