多媒体数据处理中几种无损压缩算法的比较概要

合集下载

几个常用快速无损压缩算法性能比较

几个常用快速无损压缩算法性能比较

⼏个常⽤快速⽆损压缩算法性能⽐较⼏个常⽤快速⽆损压缩算法性能⽐较SnappySnappy是在⾕歌内部⽣产环境中被许多项⽬使⽤的压缩库,包括BigTable,MapReduce和RPC等。

⾕歌表⽰算法库针对性能做了调整,⽽不是针对压缩⽐或与其他类似⼯具的兼容性。

在Intel酷睿i7处理器上,其单核处理数据流的能⼒达到250M/s-500M/s。

Snappy同时针对64位x86处理器进⾏了优化,在英特尔酷睿i7处理器单⼀核⼼实现了⾄少250MB/s的压缩性能和500MB/ s的解压缩性能。

Snappy对于纯⽂本的压缩率为1.5-1.7,对于HTML是2-4,当然了对于JPEG、PNG和其他已经压缩过的数据压缩率为1.0。

⾕歌强劲吹捧Snappy的鲁棒性,称其是“即使⾯对损坏或恶意输⼊也不会崩溃的设计”,并且在⾕歌的⽣产环境中经过了PB级数据压缩的考验⽽稳定的。

官⽅⽹站:FastLZFastLZ是⼀个⾼效的轻量级压缩解压库,其官⽅测试数据如下表:1GB⽂本数据测试:官⽅⽹站:LZO/miniLZOLZO是⼀个开源的⽆损压缩C语⾔库,其优点是压缩和解压缩⽐较迅速占⽤内存⼩等特点(⽹络传输希望的是压缩和解压缩速度⽐较快,压缩率不⽤很⾼),其提供了⽐较全的LZO库和⼀个精简版的miniLZO库,如下:测试的时候使⽤bmp和⽂本⽂件,在X86的Linux虚拟机(单核256M内存,Debian 6.0 OS)上测试。

测试⽂件原始⼤⼩压缩后⼤⼩压缩率压缩时间解压时间1.bmp 5292054 159395 3.01%9.174ms23.037ms2.bmp 6912056 33806 0.489%8.33ms36.17ms3.bmp 6220856 5101891 82%25.78ms28.43mslzo.tar6645760 2457890 36.98%34.68ms38.62mskdoc.tar16660480698740241.93%102.86ms108.2mskinc.tar182579205684927 31.13% 106.87ms113.86ms官⽅⽹站:来⾃《HBase: The Definitive Guide》中的⼀个对⽐:Algorithm% remaining Encoding DecodingGZIP13.4%21 MB/s118 MB/sLZO20.5%135 MB/s410 MB/sZippy/Snappy22.2%172 MB/s409 MB/s。

无损压缩算法的比较和分析

无损压缩算法的比较和分析

无损压缩算法的比较和分析无损压缩算法是一种将文件或数据压缩成较小体积,而又能保持原始数据完整性的技术。

在实际应用中,有多种无损压缩算法可供选择,每种算法都有其独特的优点和适用场景。

以下是对三种常见的无损压缩算法,LZ77、LZ78和LZW算法,的比较和分析。

1.LZ77算法LZ77算法是一种基于滑动窗口的算法,通过将数据中的重复片段替换为指向该片段的指针,来实现数据压缩。

该算法具有简单高效的特点,适用于具有较多重复片段的数据。

LZ77算法在处理图片、视频等文件时表现出色,能够对重复的像素块进行有效压缩,但对于无重复的文件压缩效果较差。

2.LZ78算法LZ78算法是一种基于前缀编码的算法,通过构建一个字典来记录文件中的重复字串,并用索引指向字典中的相应位置,从而实现数据压缩。

与LZ77算法相比,LZ78算法在处理无重复文件时表现更好,由于引入了字典的概念,能够较好地处理无重复字串的情况。

然而,LZ78算法的压缩率相对较低,在对具有大量重复片段的文件进行压缩时,效果不如LZ77算法。

3.LZW算法LZW算法是一种基于字典的算法,与LZ78算法类似,通过构建字典来实现数据压缩。

LZW算法利用一个初始字典来存储单个字符,并逐渐增加字典的大小,以适应不同长度的字串。

该算法具有较好的压缩率和广泛的应用领域,可适用于文本、图像、音频等各类型文件的压缩。

然而,LZW算法的缺点是需要事先构建和传递字典,增加了存储和传输的复杂性。

综上所述,无损压缩算法的选择应考虑文件的特点和需求。

对于具有大量重复片段的文件,LZ77算法能够实现较好的压缩效果;对于无重复文件,LZ78算法表现更佳;而LZW算法则具有较好的通用性,适用于各类型文件的压缩。

当然,还有其他无损压缩算法可供选择,如Huffman编码、Arithmetic编码等,根据实际情况选用最适合的算法能够达到更好的压缩效果。

无损压缩的方法

无损压缩的方法

无损压缩的方法随着数字化时代的到来,电子音乐逐渐成为广大音乐爱好者的音乐选择,而在收听电子音乐的过程中,无损压缩也变得越来越重要。

无损压缩其实就是一种不会丢失质量的压缩方式,可以将音频文件的体积缩小,而不会对原始音频质量造成影响。

本文将介绍无损压缩的几种方法以及其优缺点。

一、无损压缩的方法1. FLAC压缩FLAC是一种无损音频压缩编码,它可以将原始音频数据无损压缩到原始文件大小的60%-70%,而不会降低音频的质量。

FLAC的主要优点是支持多个平台,如Windows、Mac和Linux,以及大多数便携式音频设备。

2. APE压缩APE是一种高度压缩的音频文件格式,它可以将原始文件压缩到70%到50%以内的大小,而不会失去音频质量。

APE的主要优点是良好的音频性能,它是一种高质量的音频压缩格式。

3. TTA压缩TTA是一种免费的无损音频压缩编码,它可以将音频数据效率高效地压缩,压缩比如FLAC,但是它的编码速度非常快,适合于一些需要快速编码的音频数据。

二、无损压缩的优缺点1.优点(1)无损压缩可以压缩大文件,并且能够保留原始音频文件的高质量,这次可以节省硬盘存储空间。

(2)无损压缩不会使原始文件改变,因此你可以在包含压缩文件的任何位置播放音频文件。

(3)压缩音频数据的过程是完全透明的,不会引入任何新的噪声或变形。

(4)无损压缩的音质几乎和原始文件一致,并且可以压缩的更优秀。

2.缺点(1)无损压缩的文件不能作为相同格式的压缩文件的代替。

(2)压缩速度较慢,占用处理器资源较大。

三、无损压缩的应用1.无损压缩被广泛应用于存储和传输音频文件,以节省存储空间并提高音频文件的传输效率。

2.无损压缩音频数据在专业录音和设计领域也常用于存档和传输出口,以保证录音质量并节省存储空间。

3.无损压缩音频还广泛应用于在线音乐和广播领域,以保证在线音乐和广播品质,使用户可更好地享受音乐。

综上所述,无损压缩是一种很好的技术,在音乐制作、音乐消费、互联网传输等领域都有着广泛的应用。

压缩的方法

压缩的方法

压缩的方法随着互联网的发展和数据量的不断增加,压缩数据已经成为一种必要的手段。

压缩可以减少数据的存储空间,提高数据的传输速度,节省网络带宽和存储成本。

本文将介绍几种常见的压缩方法,包括无损压缩和有损压缩。

一、无损压缩方法无损压缩是一种压缩数据的方法,可以保证压缩后的数据与原始数据完全一致。

常见的无损压缩方法有以下几种:1. 霍夫曼编码:霍夫曼编码是一种基于频率的编码方法,通过将出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,从而减少数据的存储空间。

霍夫曼编码广泛应用于无损压缩算法中。

2. LZW压缩算法:LZW压缩算法是一种基于字典的压缩算法,通过将连续出现的字符序列映射为固定长度的编码,从而减少数据的存储空间。

LZW压缩算法被广泛应用于GIF图像的压缩中。

3. DEFLATE压缩算法:DEFLATE压缩算法是一种综合了霍夫曼编码和LZ77算法的压缩算法,通过使用动态生成的霍夫曼编码表和滑动窗口的方式,实现了较高的压缩比。

DEFLATE压缩算法被广泛应用于ZIP文件的压缩中。

二、有损压缩方法有损压缩是一种压缩数据的方法,压缩后的数据与原始数据存在一定的差异,但在实际应用中往往可以接受。

有损压缩方法主要用于压缩音频、视频等多媒体数据。

常见的有损压缩方法有以下几种:1. MPEG压缩算法:MPEG压缩算法是一种基于人眼和耳朵感知特性的压缩算法,通过删除人眼或耳朵无法察觉的细节信息,从而减少数据的存储空间。

MPEG压缩算法广泛应用于音频和视频的压缩中。

2. JPEG压缩算法:JPEG压缩算法是一种基于人眼对颜色和细节敏感程度的压缩算法,通过减少图像的颜色深度和降低图像的细节信息,从而减小图像的存储空间。

JPEG压缩算法广泛应用于图像的压缩中。

3. H.264压缩算法:H.264压缩算法是一种高效的视频压缩算法,通过使用运动补偿、变换编码和熵编码等技术,实现了较高的压缩比和较好的图像质量。

四种压缩算法原理介绍

四种压缩算法原理介绍

四种压缩算法原理介绍压缩算法是将数据经过特定的编码或转换方式,以减少数据占用空间的方式进行压缩。

常见的压缩算法可以分为四种:无损压缩算法、有损压缩算法、字典压缩算法和算术编码压缩算法。

一、无损压缩算法是指在数据压缩的过程中不丢失任何信息,压缩前后的数据完全相同,通过对数据进行编码或转换,以减少数据的存储空间。

常见的无损压缩算法有:1. 霍夫曼编码(Huffman Coding):霍夫曼编码是一种可变长度编码方式,通过根据数据出现频率给予高频率数据较低的编码长度,低频率数据较高的编码长度,从而达到减少数据存储空间的目的。

2.雷霍尔曼编码(LZ77/LZ78):雷霍尔曼编码是一种字典压缩算法,它通过在数据中并替换相同的字节序列,从而实现数据的压缩。

LZ77算法是将数据划分为窗口和查找缓冲区,通过在查找缓冲区中查找与窗口中相匹配的字节序列来进行压缩。

LZ78算法主要通过建立一个字典,将数据中的字节序列与字典中的序列进行匹配并进行替换,实现数据的压缩。

3.哈夫曼-雷霍尔曼编码(LZW):哈夫曼-雷霍尔曼编码是一种常见的字典压缩算法,它综合了霍夫曼编码和雷霍尔曼编码的特点。

它通过维护一个字典,将数据中的字节序列与字典中的序列进行匹配并进行替换,实现数据的压缩。

二、有损压缩算法是指在数据压缩的过程中会丢失一部分信息,压缩后的数据无法完全还原为原始数据。

常见的有损压缩算法有:1. JPEG(Joint Photographic Experts Group):JPEG 是一种常用的图像压缩算法,它主要通过对图像的颜色和亮度的变化进行压缩。

JPEG算法将图像分成8x8的块,对每个块进行离散余弦变换(DCT),并通过量化系数来削减数据,进而实现压缩。

2. MP3(MPEG Audio Layer-3):MP3 是一种常用的音频压缩算法,它通过分析音频中的声音频率以及人耳对声音的敏感程度,对音频数据进行丢弃或砍切,以减少数据的占用空间。

如何进行多媒体数据的压缩和解压缩

如何进行多媒体数据的压缩和解压缩

如何进行多媒体数据的压缩和解压缩随着互联网技术的不断发展,越来越多的多媒体数据被广泛应用于我们的生活和工作中,如音频、视频、图像等。

然而,多媒体数据在传输和存储中会面临一个共同的问题——数据量庞大,传输速度慢,占用存储空间大,难以实现高效传输和存储。

因此,多媒体数据的压缩和解压缩技术逐渐成为了一个热门的技术领域,本文将从多媒体数据的压缩和解压缩方法、应用场景等角度进行介绍和探讨。

一、多媒体数据的压缩和解压缩方法1. 有损压缩方法有损压缩方法是指在压缩过程中通过舍弃部分信息来达到减小数据体积的目的。

常见的有损压缩方法包括JPEG、MPEG、MP3等。

JPEG是一种用于图像数据的有损压缩方法,通过减少图像信号的细节来压缩数据,但在大多数情况下可以得到令人满意的图像质量。

MPEG是一种用于视频、音频数据的有损压缩方法,其中MPEG-1和MPEG-2用于广播和储存,MPEG-4用于网络和移动设备等。

2. 无损压缩方法无损压缩方法是指在压缩数据时不删除或改变任何原始数据的信息,通过利用一些算法和编码来压缩数据,从而实现减小数据体积的目的。

常见的无损压缩方法包括PNG、GIF等。

PNG是一种无损压缩图像格式,它对比JPEG格式有更好的压缩比率以及更好的图像质量,但它的压缩时间比JPEG更长;GIF是一种广泛应用于动画制作的无损压缩格式,它适用于一些图像层数较少且颜色比较少的动画制作。

二、多媒体数据的应用场景1. 视频监控视频监控技术在现代社会中的应用广泛,如安全监控、交通监控等。

但视频数据量往往很大,如果不进行压缩就难以进行高效的存储和传输,因此在视频监控中采用了MPEG、H.264等视频压缩标准。

2. 医学影像医学影像在医疗诊断中起着至关重要的作用,例如CT、MRI、X光等影像数据。

这些数据通常非常大,使用压缩技术可以减少数据存储空间,提高数据传输效率,有助于快速进行医疗影像分析,优化医疗诊断流程。

3. 音频娱乐音频娱乐是现代社会中不可或缺的一部分,如音乐、广播、电视等。

几种常用无损数据压缩算法研究

几种常用无损数据压缩算法研究

几种常用无损数据压缩算法研究无损数据压缩算法在许多领域都有着广泛的应用,如存储、传输和处理大数据等。

本文将介绍几种常用的无损数据压缩算法,包括其原理、优缺点及在实践中的应用。

Huffman编码是一种经典的编码算法,其原理在于利用数据间的频率分布来构建一个最优的前缀编码表,从而实现压缩。

具体来说,对于出现频率高的字符,其编码长度较短;反之,对于出现频率低的字符,其编码长度较长。

Huffman编码的优点在于实现简单、压缩比高,但缺点在于需要记录编码表,增加了额外的存储开销。

Lempel-Ziv压缩算法(LZ77和LZ78)是一种基于滑动窗口的压缩算法。

它将数据中的重复序列替换为指向先前出现过的相同序列的指针,从而减小了数据的大小。

LZ77和LZ78的优点在于无需预知数据的上下文,具有很高的压缩比,适用于大多数数据类型。

然而,由于需要记录先前出现过的序列,因此相对于Huffman编码来说,需要更多的内存。

Burrows-Wheeler变换(BWT)是一种基于字符块的数据压缩算法。

它将数据块中的字符按照出现频率进行排序,并仅保留一个字符块中的最后一个字符。

通过在数据中重复这一过程,可以实现对数据的压缩。

BWT的优点在于具有很高的压缩比,且可以与多种其他算法(如游程编码和算术编码)结合使用。

然而,由于需要对数据进行排序,因此相对于其他算法来说,需要更多的计算资源。

算术编码是一种将数据表示为连续实数范围的编码方法。

它将输入数据看作是由随机变量产生的结果,并利用概率模型来表示这些结果。

通过将输入数据映射到一个连续的实数范围,算术编码可以实现高压缩比。

随着实时数据处理需求的增长,实时数据库系统的性能和效率变得越来越重要。

数据压缩作为一种能够减少存储空间和提高数据传输效率的技术,在实时数据库系统中发挥着重要作用。

本文主要探讨了实时数据库中的数据压缩算法的研究。

实时数据库是一种用于处理和存储实时数据的信息系统。

由于实时数据具有产生速度快、数据量大、实时性要求高的特点,因此对实时数据库的性能和效率提出了很高的要求。

多媒体数据压缩编码技术概述

多媒体数据压缩编码技术概述

多媒体数据压缩编码技术概述多媒体数据压缩编码技术是一种通过减少或去除冗余数据来减小多媒体文件的存储空间或传输带宽的过程。

这些技术广泛应用于图像、音频和视频等各种形式的多媒体数据。

下面将对多媒体数据压缩编码技术的主要方法进行概述。

1. 无损压缩编码:无损压缩编码技术可以将多媒体数据压缩到较小的大小,而不会丢失原始数据。

该技术通过利用多媒体数据中的冗余和统计特性来实现压缩效果。

其中,哈夫曼编码、算术编码和Lempel-Ziv编码等是常用的无损压缩编码方法。

2. 有损压缩编码:有损压缩编码技术可以在一定程度上丢失原始数据,并将其转换为较小的文件大小。

这种压缩方法适用于某些多媒体数据,如音频和视频等,因为人类的感知系统对这些数据中的一些细微变化不太敏感。

有损压缩编码方法包括离散余弦变换(DCT)、小波变换、运动补偿和预测编码等。

3. 基于上下文的压缩编码:这种压缩编码技术利用多媒体数据内部的上下文信息来实现更高的压缩效果。

上下文信息包括像素点的位置、颜色和周围像素点的关系等。

基于上下文的编码方法有助于提高压缩比,并减少信号的失真。

包括了一些流行的基于上下文的压缩编码算法,如JPEG(图像)、MP3(音频)和H.264/AVC(视频)。

4. 神经网络压缩编码:近年来,神经网络技术在多媒体数据压缩编码领域取得了显著的进展。

这些技术利用深度学习的方法来学习多媒体数据中的复杂模式,并使用这些模式进行压缩编码。

神经网络压缩编码方法通常能够在保持较高视觉和听觉质量的同时,实现更高的压缩比。

综上所述,多媒体数据压缩编码技术是一种通过减少或去除冗余数据来减小多媒体文件的存储空间或传输带宽的过程。

该技术涵盖了无损压缩编码、有损压缩编码、基于上下文的压缩编码和神经网络压缩编码等方法。

这些技术在多媒体数据领域发挥着重要的作用,帮助人们有效地处理和传输大量的多媒体数据。

5. 图像压缩编码技术:图像压缩编码技术是多媒体数据压缩编码中的一个重要领域。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

119摘要:为了使大容量的多媒体数据在网络上有效的传输,必须对多媒体数据进行压缩。

对多媒体数据压缩中的几种无损压缩方法进行了比较,并对每种方法用一个例子说明。

关键词:数据压缩;霍夫曼树;LZW;二叉树引言随着网络发展的速度越来越快,视频,音频的广泛应用使得大数据量的传输显得尤为重要,如何更快、更多、更好地传输与存储数据成为数据信息处理的首要问题。

在压缩算法中分为无损压缩和有损压缩。

相对于有损压缩来说,无损压缩的占用空间大,压缩比不高,但是它100%的保存了原始信息,没有任何信号丢失并且音质高,不受信号源的影响,这点是有损压缩不可比拟的。

而且随着时间的推移,限制无损格式的种种因素将逐渐被消除,比如说硬盘容量的急剧增长以及低廉的价格使得无损压缩格式的前景无比光明。

1、无损压缩的原理以及几种常见算法本质上压缩数据是因为数据自身具有冗余性。

数据压缩是利用各种算法将数据冗余压缩到最小,并尽可能地减少失真,从而提高传输效率和节约存储空间。

常见的无损压缩算法有,游长编码;香浓-凡诺算法;霍夫曼算法;LZW算法;下面详细介绍这些算法或编码步骤,并比较其优缺点。

2、游长编码也叫行程编码,它是数据压缩中最简单的一种方法。

它的思想是:将图像一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。

例如:aabbbccccdddddeeeeee对其进行游长编码可得2a3b4c5d6e,可见其效率很高。

但它有两个致命缺点。

一:如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量会增加,例如对abcdeabcde进行编码得1a2b3c4d5e1a2b3c4d5e,可见数据量反而增加了1倍。

二:容错性差。

还是以aabbbccccdddddeeeeee为例,如果在第二位a出错,例如丢失了a,那么编码后结果为1a3b4c5d6e,虽然只有一位发生了错误,但是在恢复数据时,将和原始数据完全不同。

所以说游长编码在要压缩信息源中的符号形成连续出现片段时才有效,并且它不是一种自适应的编码方式。

3、香浓-凡诺算法香浓-凡诺算法由贝尔实验室的Shannon 和MIT的Robert Fano开发的。

它的编码步骤如下:一:根据符号出现的频率对符号进行排序二:递归的把符号分成两部分,每一部分中的符号具有相似的频率,直到所有的部分只有一个符号为止。

这样,就得到一颗二叉树,我们把树中的左支赋为0,把树中的右支赋为1。

那么从根节点到节点的路径即为它的编码。

例如:对字符串abcccd编码。

进行排序后为cabd。

递归过程图1-图3。

应当指出香浓-凡诺算法的编码结果并不是唯一的,例如在图1的时候可以交换左右子树的位置,在图3的时候也可以交换b,d的位置。

香浓-凡诺算法是一种自顶向下的,非自适应的编码算法。

4、霍夫曼编码霍夫曼编码主要是一个构造霍夫曼树的过程,算法见参考文献[6],它是一种自下向上的,非自适应的编码算法,其编码过程主要有读取字符串,统计各字符出现次数并排序,构造霍夫曼树以及赋值这3个步骤。

例如对字符串aabccbb进行编码,先进行统计字符出现次数并排序得,a2,c2,b3构造霍夫曼树过程见图5和图6,赋值见图7。

通过霍夫曼树的构造可见,编码的结果多媒体数据处理中几种无损压缩算法的比较文◎毕永成(苏州科技学院网络与教育技术中心江苏苏州也不是唯一的。

另外因为符号的出现频率不能预知,需要统计和编码两次处理,所以速度较慢,无法实用。

继而推出了自适应霍夫曼编码算法。

5、自适应霍夫曼编码在自适应霍夫曼编码算法中,统计字符是随着数据流的到达而动态收集和更新的, 字符出现的次数是基于到目前为止实际收到的字符数。

在这种方式下,随着数据流的不断变化,符号的编码也会不停的改变,直到完全接收完为止,我们把这种方式叫做自适应。

其编码过程主要经过初始化,读取字符和构造自适应霍夫曼树三个部分。

初始化主要是分配一些开始时候的编解码双方达成的共同的码字,比如所ACSII码。

在构造自适应霍夫曼树的时候,最采用的是自顶向下的方式。

构造自适应霍夫曼树主要是将字符出现的次数+1,然后更新树。

更新树要保持一原则,即“兄弟特性”。

它指的是:树所有节点都要按照以字符出现次数的多少,从左到右,从下到上的顺序排列。

如果违反了“兄弟特性”就要进行交换。

交换的原则是:具有计数N 的最远的节点将会和计数刚刚增加到N+1的节点交换。

如果 N不是节点,是根节点的话,那么将整个子树进行交换。

我们还是以上述字符串aabccbb为例按照自顶向下的构树方式,进行自适应霍夫曼树的构建,图7给出了在构树过程中需要交换的过程。

6、LZW编码120LZW的是一种基于字典的编码方法。

它是自适应的,压缩率高,花费时间少。

LZW编码过程如下:一:初始化编译表并定义前缀current prefix为[c],初始时为null,定义当前字符串current string为[c]k,k为当前读取字符二 :读第一个字符 p , 则 c u r r e n t string=[c]p,因为[c]=null,所以current string=p三 :在编译表中查找有没有 c u r r e n t sting值,因为p为根字符,所以可以找到四:把p设为current prefix的值,继续读取下一字符,设为q,current string为[c]q,此时current sting==pq,查看编译表中有没有,当然没有,这时候要把current string(pq加到编译表的末项,并把current prefix也就是p在编译表中的索引值输出。

并修改current prefix为当前读取字符,即q, 继续五:如果在编译表中可以查到current string的值([c]k,则把current string的值([c]k赋予current prefix,如果找不到,则添加current string的值([c]k到编译表,把current prefix的值([c]在编译表中对应的索引值输出,同时修改current prefix为k,继续,不断的重复,直到接收完字符为止。

用一个例子说明LZW的编码过程。

例如:一个字符流有四种类型的数据a,b,c,d, 现字符流为abacaba,对其进行LZW编码如下:初始化编译表为:0a,1b,2c,3d读第一个字符a,则[c]p=a,可以在编译表中找到读第二个字符b,则[c]b=ab,在编译表中找不到,则加ab到表中,此时编译表为0a,1b,2c,3d,4ab,并且输出a 的索引值0,修改[c]=b读第三个字符a,则[c]a=ba,在编译表中找不到,则加ba到表中,此时编译表为0a,1b,2c,3d,4ab,5ba,并且输出b的索引值1,修改[c]=a读第四个字符c,则[c]c=ac,在编译表中找不到,则加ac到表中,此时编译表为0a,1b,2c,3d,4ab,5ba,6ac, 并且输出a的索引值0,修改[c]=c读第五个字符a,则[c]a=ca,在编译表中找不到,则加ca到表中,此时编译表为0a,1b,2c,3d,4ab,5ba,6ac, 7ca,并且输出c的索引值2,修改[c]=a读第六个字符b,则[c]b=ab,在编译表中找到,此时[c]=ab读第七个字符a,则[c]a=aba,在编译表中找不到,则加aba到表中,此时编译表为0a,1b,2c,3d,4ab,5ba,6ac,7ca, 8aba,并且输出ab的索引值4,修改[c]=a接收结束。

编码结果为,0,1,0,2,4通过列子可见LZW 算法与其他算法相比具有自适应的特点,即可以根据压缩内容不同来建立不同字典,以减少冗余度,提高压缩比。

并且解压时这个字典无需与压缩代码同时传送,而是在解压过程中逐步建立与压缩时完全相同的字典,从而完整、准确地恢复被压缩内容。

因此,LZW算法是一种解码速度与压缩性能较好的压缩算法。

但是LZW 应用的时候应注意字典越大,代替的子串越多。

但应用中字典容量则受一定限制,要权衡利弊选择合适的字典。

当字典满时,字典的维护和更新对压缩率也是至关重要。

7、结束语需要注意的是,每种算法都有各自的优缺点,都有自己的适用范围。

在当今高要求的压缩条件下,通常的需要集成两种或者两种以上压缩算法。

例如,在winrar就应用了 LZW和霍夫曼混合编码的方法进行数据压缩。

因此,根据需要,选择合适的压缩算法至关重要。

研究在保持高压缩比,提高压缩及解压缩速度的同时保持原始数据的完整性还是一个重要的研究课题。

参考文献 [1] 许霞,马光思,鱼涛. LZW 无损压缩算法的研究与改进[J].计算机技术与发展,2009,19(4:127-127[2] Nelson M.数据压缩技术原理与范例[M].贾启东译.北京:希望出版社,1995[3] 李雷定,马铁华,尤文斌.常用数据无损压缩算法分析[J].电子设计工程, 2009,17(1:49-53[4] 闰阳,张正炳.浅谈数据压缩技术 [J].长江大学学报(自科版,2004,1(4:120-121. [5] 杨雄,李凌.数据压缩技术及其常用算法[J].软件世界,1996(9:8一l1. [6] 张广学.最优二叉树的生成及应用[J].软件技术,2008,273(10:112-114。

相关文档
最新文档