ELT.ZIP
团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英。6个地方
的同学,我们在OpenHarmony成长计划啃论文俱乐部
里,与华为、软通动力、润和软件、拓维信息、深开鸿
等公司一起,学习和研究操作系统技术
… ① 2月23日 《老子到此一游系列》之 老子为什么是老子 —— 综述视角解读压缩编码
② 3月11日 《老子到此一游系列》之 老子带你看懂这些风景 —— 多维探秘通用无损压缩
主题:《老子到此一游系列》之 老子见证的沧海桑田
塞缪尔·莫尔斯发明摩斯密码开创编码领域先河
香农提出信息熵,用数学语言阐明了概率与信息冗余度的关系
用生活中的烹饪视角解析Huffman编码过程
小波系数的各类编码方案大比拼
计算机视觉中的女神 —— Lenna
当代无线传感器型网络数据压缩
信号代码
,通过不同的排列顺序
来表达不同的英文字母、数字和标点符号,从而最小化消息的大小和传输时间
。由电报之父塞缪尔·莫尔斯于1837年发明,1838年正式用于压缩电报中的信件
。信息论的创始人
,他提出了信息熵的概念,为信息论和数字通信的发展奠定了基础。从本质上讲,数据压缩的目的就是要消除信息中的冗余
,而信息熵及相关的定理恰恰用数学手段精确地描述了信息冗余的程度。利用信息熵公式,人们可以计算出信息编码的极限,即在一定的概率模型下,无损压缩的编码长度不可能小于信息熵公式给出的结果
。当时是一个新领域
,人们对其能做的事情以及能应用的方向还没有一个确切的认识
,渐渐地,人们对其的关注度愈发降低
,相关课程的教授也随之减少。数学背景在一开始远没有信息理论那么复杂
,而且在很长一段时间里,它也没有得到理论界的重视。但是,随着时间的推移,各种数学工具如群论、有限域理论等慢慢被应用到编码理论中。现在,编码理论已成为数学研究中一个活跃的部分
。从逻辑上讲,编码理论引出了信息论,信息论提供了对信息进行适当编码所能做的操作的界限。因此,这两种理论是密切相关的。
Shannon 编码
,为压缩算法领域的发展奠定了专属基调。 1952 年, R. M. Fano 又进一步提出了 Fano 编码
。这些早期的编码方法揭示了变长编码的基本规律
,也确实可以取得一定的压缩效果,但离真正实用的压缩算法还相去甚远
。第一个实用的编码方法
是由 D. A. Huffman 在 1952 年的论文《最小冗余度代码的构造方法( A Method for the Construction of Minimum Redundancy Codes )》中提出的。直到今天,许多《数据结构》教材在讨论二叉树时仍要提及这种被后人称为 Huffman 编码的方法。 Huffman 编码在计算机界是如此著名,以至于连编码的发明过程本身也成了人们津津乐道的话题。据说, 1952 年时,年轻的 Huffman 还是麻省理工学院的一名学生,他为了向老师证明自己可以不参加某门功课的期末考试,才设计了这个看似简单,但却影响深远
的编码方法。早期 UNIX 系统上一个不太为现代人熟知的压缩程序 COMPACT 实际就是 Huffman 0 阶自适应编码的具体实现。 20 世纪 80 年代初, Huffman 编码又出现在 CP/M 和 DOS 系统中,其代表程序叫 SQ
。今天,在许多知名的压缩工具和压缩算法(如 WinRAR 、 gzip 和 JPEG )里,都有 Huffman 编码的身影。不过, Huffman 编码所得的编码长度只是对信息熵计算结果的一种近似,还无法真正逼近信息熵的极限。正因为如此,现代压缩技术通常只将 Huffman 视作最终的编码手段,而非数据压缩算法的全部。烹饪
来举个例子,大家或许做过,或者看别人做过饭,做饭首先就得明确目标,就是我要做什么菜,对于霍夫曼编码来说就是目标压缩文本
是什么,然后你就得列个清单看看做这道菜需要哪些原材料,各种要多少;对于霍夫曼编码来说就是一个统计构成文本的元素的种类和出现频率
的过程;料备齐了就要掌握如何搭配,以及掌握火候,这就是考验一个人的厨艺的时候了;对于霍夫曼编码来说就是建立一个高效的字典树
的过程。这一套流程下来我们可以获得一个菜的菜谱,这就是一个成品菜的压缩成果;对于霍夫曼来说我们就获得了一个文本的字典树:在线体验霍夫曼编码生成过程:
huffman.ooz.ie - Online Huffman Tree Generator (with frequency!)
笔划
再按照一定笔顺写成的,那么这时笔划也就是我们前面所说的原材料模板:而笔顺就是我们建立字典的依据,我们的汉字通过这样的处理就可以通过霍夫曼编码进行压缩编码了。
那么如何让这些精美的3D作品高效的压缩存储呢?霍夫曼编码大显身手的时侯
到了,下面介绍相关场景并补充一项3D网格几何压缩
的强大算法。
【征服三角形】
【kD-tree分解(强大的3D图像处理算法)】
每次将一个单元格细分为两个小单元格,对顶点数量进行编码
。这种细
分被重复地应用
,直到每个单元格足够小,可以只包含一个顶点,并能够足够精确地重建顶点位置。
自适应编码技术
。它允许在符号正在传输时构建代码,允许一次编码并适应数据中变化的条件,即随着数据流的到达,动态地收集和更新符号的概率(频率)
。一遍扫描的好处是使得源程序可以实时编码
,但由于单个丢失会损坏整个代码,因此它对传输错误更加敏感
。动态Huffman码
的单遍算法
,同时还分析了由 Faller、Gallager和Knuth 三位学者得到的单遍算法。在每个算法中,发送器和接收器都保持等效的动态变化 Huffman 树
,并对其进行实时编码
。他们证明了新算法编码包含 t 个字母的消息所占用的bit数小于t,远远优于传统的两遍 Huffman 方案
,并且与字母表的大小没有关系。对于任何一种单遍 Huffman 算法来说,这是在最坏状态下能做到的最佳可能情况。实验表明,新算法生成的编码长度比其他单遍算法的短,除了长消息外,也比两遍算法的短。最后明确了该算法适用于数据网络的在线编/解码和文件压缩场景
。用于网络通信的通用编码方案
,也可以作为基于文字的压缩算法中的一种高效子例程
。算法A的优点:
减轻了块效应(马赛克被放大的场景)
;而小波分解的多分辨率特性又使解压后的图像具有更好的感知质量
。前期相关文章已经涉及到小波变换的部分内容,这里再继续对其展开详细描述。相邻像素是相关的
,所以便包含了很多冗余信息。然后,最重要的任务是找到图像中不太相关的表示
。压缩的两个基本组件就是冗余和无关性的减少
:
因此,图像压缩的目标就是希望尽可能地去除空间和光谱冗余以减少表示图像所需的比特位数。其次,图像压缩还需保证一个基本目标:降低传输或存储比特率的同时保持可接受的保真度或图像质量。
平滑的颜色变化
,在平滑变化之间,精细的细节被表示为尖锐边缘
。从技术上讲,颜色的平滑变化被称为低频变化
,尖锐变化被称为高频变化
。低频成分构成了图像的基础,高频成分则是为了细化图像。因此,基础比细节相对更重要。类似的,我们在声乐领域也能找到相对应的概念 —— 基音与泛音
,基音是波形里振幅最大,频率最小的组成波,它决定了音高;而泛音频率是基音的整数倍,跟基音叠加在一起后整体波形仍是基音的频率,但加入泛音组成后波形的形态不再单纯,可以理解为对基音作了一定的修饰,即决定了音色。金字塔型
的操作。基于小波的编码在传输和解码错误下具有更强的鲁棒性,有利于图像的渐进传输。此外,它们也更符合人类视觉系统的特点。有限的、较小的值集
来逼近
图像数据中连续的值集
的过程。有两种类型的量化,分别是标量量化和矢量量化
。均方误差(MSE)和峰值信噪比(PSNR)
,MSE值越小,误差越小;PSNR值越大,信噪比越高,其中,“信号”是原始图像,“噪声”是重建时的误差。因此,具有较低MSE和较高PSNR的压缩方案可被认为是较好的压缩方案。下一个方案称为 SPIHT,是 EZW 的一种改进形式,比 EZW 有着更好的压缩性能。
SPIHT可以通过对输出信息进行熵编码来提高效率,但代价是增加了编/解码的时间。同时为了减少此方案中使用的列表数量,需要形成下一个算法,称为 SPECK。
EBCOT 将每个子带划分为相对较小的样本块,并生成一个独立的高度可伸缩的比特流来表示每个所谓的代码块。该算法展示了最先进的压缩性能,同时产生一个前所未有的特征集的比特流,包括分辨率和信噪比可伸缩性以及随机访问属性
。该算法具有适度的复杂性
,非常适合于涉及远程浏览大型压缩图像的应用。
可见,在最先进的压缩算法方面,EBCOT显著优于SPIHT。
小波差约简(WDR)、自适应扫描小波差约简(ASWDR)、空频量化(SFQ)、嵌入式预测小波图像(EPWIC)、可逆嵌入小波压缩(CREW)、堆栈运行(SR)
等,这里不再一一赘述,各种编码技术的优缺点详见下表:类型 | 特性 | 不足 |
---|---|---|
EZW | 采用渐进和嵌入式传输 / 使用零树概念 / 用单个符号编码树 / 使用预定义的扫描顺序 / 良好的结果反馈 | 系数位置的传输丢失 / 没有真正压缩 / 依赖于算数编码器 |
SPIHT | 广泛使用 —— 对于各类图像都有较高PSNR值 / 四叉树或层次树被设置为分区树 / 采用空间定向树状结构 / 通过三个列表跟踪索引集的状态:LSP、LIS、LIP / 采用渐进和嵌入式传输 / 在感知图像质量和PSNR值上优于JPEG | 仅隐式定位有效系数的位置 / 由于三个列表致使内存需求更多 / 传输信息只由单个bit组成 / 适合各种自然图像 / 感知质量不是最优的 |
SPECK | 不使用树 / 使用矩形块区域 / 利用频率和空间的能量聚集 / 采用渐进和嵌入式传输 / 低计算复杂度 / 采用四叉树和倍频带划分 / 由于两个列表致使内存需求低 / PSNR值优于SPIHT | |
EBCOT | 支持数据包分解 / 基于块的方案 / 适度复杂性 / 比特流由质量层集合组成 / 信噪比具备可伸缩性 / 出色的纹理表现 / 保留SPIHT中丢失的边 | 性能随层数的增加而降低 / 适合远程浏览大型压缩图像 |
WDR | 采用ROI概念 / 对重要小波变换值的位置进行编码 / 感知图像质量相比SPIHT更好 / 不用像SPIHT那样在四叉树中搜索 / 适合低比特率的低分辨率医学图像 / 低复杂度 / 高边缘相关性 / 高边缘保护性 | PSNR值没有SPIHT高 |
ASWDR | 与WDR相比更改了扫描顺序 / 可预测新关键值的位置 / 动态适应边缘细节的位置 / 相比WDR能编码更多关键值 / PSNR值优于SPIHT和WDR / 感知图像质量优于SPIHT、略优于WDR / 边缘相关性略优于WDR / 保留更多细节 / 适合如侦察或医疗类的高压缩率图像 | |
SFQ | 其量化模式直接利用了高频系数的空间聚类 / 均匀量化+熵编码提供了几乎最优的效率 | |
CREW | 适合于需要高质量的灵活性应用如医疗图像、固定速率大小的程序(ATM)、印前图像、连续色调传真、图像档案、万维网图像、卫星图像等 | |
SR | 通过光栅扫描工作从而寻址复杂度相比其他算法较低 |
实现图像处理引擎
一直是无线多媒体传感器网络发展的主要关注点。文章对8种常用的图像压缩技术进行了综述。综合评估后发现,基于层次树集分块(Set-Partitioning in Hierarchical tree, SPIHT)小波的图像压缩算法压缩效率高,编码过程简单,是无线传感器网络中最适合硬件实现的图像压缩算法。可靠、高效的无线多媒体传感器网络
(Wireless multimedia sensor network, WMSN)研究和开发越来越感兴趣。从摄像机节点收集的图像和视频帧等多媒体数据需要大量的处理,这使得WMSN的实现非常困难,特别是在硬件受限的环境中。高功耗、有限带宽和内存限制
是影响高效灵活WMSN开发的挑战和制约因素。高分辨率的图像
需要广泛的带宽传输。由于可用带宽有限,传感器节点捕获的图像在传输前需要进行处理和压缩。通过图像压缩去除原始数据中的冗余信息,可以获得一种更高效的传输方法。片上内存
受到限制,并成为处理大型图像的另一个主要约束。因此,需要开发一种更简单、更经济的系统,以满足图像处理中的高内存存储需求。寻找相关度较低的图像
表示来丢弃这些冗余的信息,这是图像压缩算法背后的基本理论。下图展示图像编码过程的基本组成,图像编码过程分为两个阶段,图像变换阶段和熵编码阶段
。图像编码可分为第一代和第二代:
第一代图像编码更强调如何有效地编码转换后的图像所包含的信息
第二代图像编码更重视如何从图像中挖掘和提取有用的信息
文章在第一代编码中介绍了四种最流行的基于变换的图像压缩算法——JPEG、EZW、SPIHT和EBCOT,其中EZW、SPIHT和EBCOT在上一部分“小波系数图像压缩编码”中已经做了详细的介绍,在此不再展开。
著名的图像压缩标准JPEG使用了基于离散余弦变换(DCT)的图像压缩技术,将图像分为多个8 x 8像素的子图像块,并对每个图像块独立编码。DCT不对原始数据造成损失,经过离散余弦变换后,每个64DCT系数被均匀量化。然后在8 x 8图像块中采用锯齿状扫描重新排列系数
。下图显示了锯齿状扫描的过程:
基于DCT的图像压缩提供了令人满意的压缩效率,并且由于编码是在小的单个图像块上完成的,实现时所需的内存很低。然而,图像块的平铺会导致阻塞工件,从而导致性能下降。
图像变小,平滑度增加
,但空间采样密度降低(即图像分辨率降低)。如果以图形方式进行说明,则整个多尺度表示将看起来像一个金字塔,原始图像位于底部,每个周期生成的较小图像将一个堆叠在另一个之上:
上图为金字塔编码的实例,其中各图分别表示:
强调边缘检测
,以实现高压缩比。它基于人眼是由对方向敏感的神经元组成的事实,一个方向滤波器用于利用边缘之间的关系及其对图像光谱的贡献。该滤波器被定义为“沿主方向进行高通滤波,沿正交方向进行低通滤波的滤波器”
。低通图像不包含边缘信息,可以采用变换编码,而高通图像采用边缘检测和编码
。基于区域增长
的编码方法,每个像素和它的相邻像素根据灰度级别来判断它们是否共享相同的属性。重复这个区域增长过程,直到所有的像素都被分配某个区域,这样会得到很多子区域。为了减少区域数,降低编码复杂度
,会将弱对比即相比差距不大的相邻区域和小区域进行合并
。矢量量化,顾名思义就是利用矢量表示图像。利用矢量量化对图像编码时,首先将高度相关的像素分组为样本集的块,每一个块都可以找到一个最佳的近似向量
来表示给定区域中的每个像素。对这些像素块进行量化,然后每个块独立编码,基于这个过程,矢量量化又被称为块量化或者模式匹配量化。下图为矢量量化编码的框图:
编码
Characteristic | First Generation Image Compression Algorithm | Second Generation Image Compression Algorithm | ||||||
---|---|---|---|---|---|---|---|---|
JPEG | EZW | SPIHT | EBCOT | Pyramidal | Directional Decomposition | Segmentation | Vector Quantization | |
Preprocessing(Transformation) | DCT | DWT | DWT | DWT | Laplacian Pyramid | Directional filtering | Region rowing | Region clustering |
Coding Table/Codebook | no | no | no | yes | Depends on entropy Coding used | yes | yes | |
Post processing(Entropy Coding) | Arithmetic Coding | Arithmetic Coding | Not needed | Arithmetic Coding | Entropy Coding | Entropy Coding | Entropy Coding | Entropy Coding |
Memory Requirement | Low | Average | Average | High | Average | Average | High | High |
Computation Load | Low | Low | Low | High | Average | Average | Extensive | Extensive |
System Complexity | Low | Average | Average | High | Low | Average | High | High |
Coding Speed | High | High | Average | High | Average | Low | Low | |
Compression Quality | Low | Average | High | High | Low | Average | High | High |
Most sutiable for WSN | √ |
快速高效的图像处理能力、低内存需求、高压缩质量、低系统复杂度和低计算负载
。在数字图像处理中,Lena(Lenna)是一张被广泛使用的标准图片,特别在图像压缩的算法研究中。
被广泛使用的测试图像
。今天,Lenna图像的使用被认为是数字图像历史上最重要的事件之一。然而,很少有人看过原始的图像并知道完整的关于Lenna的故事。第一次得知她的照片在计算机领域被使用
。包含了各种细节、平滑区域、阴影和纹理
,这些对测试各种图像处理算法很有用。它是一副很好的测试图像!第二,Lena图像里是一个很迷人的女子
。所以不必奇怪图像处理领域里的人(大部分为男性)被一副迷人的图像吸引。智能电子设备,智慧农业,智慧交通
等也不断地发展,应用到相应地场景中;有关无线传感器网络的研究也越来越多,越来越多的人也逐渐意识到无线传感器网络的无限适用性。例如,传感器网络
可用于环境监测、生境检测、结构检测、设备诊断、灾害管理和应急响应
等情况下收集数据。对传感器的数据进行数据压缩
。传感、处理和传输
三部分。在这三种操作中,已知能耗最大的任务是数据传输。++每个传感器节点约 80% 的功耗用于数据传输。++为了减少的总功耗,必须减少传输和处理的总功耗
。将 “a” 位的数据字符串压缩为 “b” 位的数据字符串所消耗的功耗,其中 a>b 。结论:
作为数据漏斗路由的一部分,引入了按顺序编码的数据压缩方案。压缩方案如下:
作为数据汇聚节点
工作。将聚合后的数据发送给其父节点
。在图 3 的节点 D 处,节点 E 收集的数据与节点 D 本身收集的数据相结合。结论:
压缩比比较低,算法简单
,有可能应用在无线传感器网络上。这里讨论了流水线式网络压缩方案。其基本思想是用高数据传输延迟换取低传输能耗。收集到的传感器数据在聚合节点的缓冲区中存储一段时间。在此期间,将数据包合并成一个数据包
,消除数据包中的冗余,使数据传输最小化
。
结论:
节点 id 和时间戳
。通过这样做,可以实现更多的数据压缩。共享前缀的长度
。如果我们可以设置一个很长的共享前缀,并且测量值具有共性,压缩比就会增加。这里引入了低复杂度的视频压缩方案。由于目前的视频编码技术大多是利用运动估计和补偿来设计
的,因此需要较高的计算能力,而传感器节点通常不具备这种能力。因此,该方法是基于块变化检测算法和 JPEG 数据压缩的。
上图给出了图像数据处理流程的框图。该算法是专门针对无线视频监控系统而设计的。该方法将每个视频帧划分为小块,每个块包含 8 个 8(64)像素。为了降低计算复杂度,在每一帧中只考虑块的子集(本例中为所有的白色块)。此外,在每个块中,将检查像素子集(分配的像素数目)的变化,如图 7 所示。分配给像素的数字表示像素的重要性(1 =最重要,3 =最不重要)。
结论:
分布式压缩方案背后的基本思想是使用一个边信息来编码一个源信息
。然后,解码器在陪集中选择一个与 Y 发送的码向量值最接近的码向量。
结论:
离散源
,也可以应用于连续源
。此外,它可以用于无损和有损压缩方案。排序编码、流水线网络压缩、JPEG200、低复杂度视频压缩和分布式压缩
。尽管这些压缩方案仍处于开发阶段,但实验结果表明,它们的压缩率和功率降低方式相当令人深刻。它们是无线传感器节点资源约束的一种可行方法。[1] Vitter, Scott J . Design and analysis of dynamic Huffman codes[J]. Journal of the Acm, 1987, 34(4):825-845.
[2] Peng J , Kim C S , Kuo C C J . Technologies for 3D mesh compression: A survey[J]. Journal of Visual Communication & Image Representation, 2005, 16(6):688-733.
[3] Holtz K . The evolution of lossless data compression techniques[C]// Wescon/93 Conference Record. IEEE, 1993.
[4] Kimura N , Latifi S . A survey on data compression in wireless sensor networks[C]// International Conference on Information Technology: Coding and Computing (ITCC’05) - Volume II. IEEE, 2005.
[5] Sudhakar R , Karthiga M R , Jayaraman S . Image compression using coding of wavelet coefficients–a survey[J]. A Survey”, ICGST-GVIP Journal, Volume (5), Issue, 2005(6):25-38.
[6] Li W C , Ang L M , Seng K P . Survey of image compression algorithms in wireless sensor networks[C]// International Symposium on Information Technology. 2008.
[7] Hamming R W . Coding and information theory (2. ed.)[M]. DBLP, 1986.
[8] 高锐智, 华成英. 汉字字形结构式压缩方法的研究和实现[J]. 计算机科学, 2003, 30(005):78-81.
[9] Zhang C N , Wu X . A hybrid approach of wavelet packet and directional decomposition for image compression[J]. Wiley Subscription Services, Inc. A Wiley Company, 2002, 12(2):51-55.
[10] Kunt, M, Ikonomopoulos, et al. Second-generation image-coding techniques[J]. Proceedings of the IEEE, 1985.