1-1:数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的?
答:数据压缩指的是在不丢失信息且失真容许的范围内,利用改变取样率、预测编码、变换编码等方法使表示信号所需的数据量大幅度减少的过程。在传送和存储中,可减少存储空间和通信媒体的带宽,增加传输速度,缩短传输时间,提高保密性和降低造价的过程。数据压缩技术主要有三个主要指标,一是压缩前后所需的信息存储量之比要大;二是实现压缩的算法要简单,压缩,解压缩速度快,尽可能地做到实时压缩和解压缩;三是恢复效果要好,要尽可能地完全恢复原始数据。简单来看,我认为数据压缩主要就是通过一些技术降低数据冗余而使数据大小降低的过程。
1-2:数据压缩的另一个问题是“为什么进行压缩”,对此你又是如何理解的?
答:随着大数据时代的到来,移动通信,购物,社交等活动都产生了许多的数据,而这些数据现在依然呈现指数型增长。但是我们的硬盘存储容量有限。在这种趋势引导下,就使得我们不得不寻找一种能够降低数据存储容量的方法,也就产生了数据压缩这门技术,因此可以说数据压缩具有深远的意义,可以说是大数据时代一个非常重要的辅助工具,他不仅是大数据的产物更是一种趋势。
1-6:数据压缩是如何进行分类的?
答:数据压缩主要分为有损压缩和无损压缩
1:无损压缩
所谓无损压缩格式,是利用数据的统计冗余进行压缩,可完全回复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1.这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。由于压缩比的限制,仅使用无损压缩方法是不可能解决图像和数字视频的存储和传输的所有问题.经常使用的无损压缩方法有 Shannon-Fano 编码,Huffman 编码,游程(Run-length)编码,LZW(Lempel-Ziv-Welch)编码和算术编码等。
所谓无损压缩格式,顾名思义,就是毫无损失地将声音信号进行压缩的音频格式。常见的像MP3、WMA等格式都是有损压缩格式,相比于作为源的WAV文件,它们都有相当大程度的信号丢失,这也是它们能达到10%的压缩率的根本原因。而无损压缩格式,就好比用Zip或RAR这样的压缩软件去压缩音频信号,得到的压缩格式还原成WAV文件,和作为源的WAV文件是一模一样的!但是如果用Zip或RAR来压缩WAV文件的话,必须将压缩包解压后才能播放。而无损压缩格式则能直接通过播放软件实现实时播放,使用起来和MP3等有损格式一模一样。总而言之,无损压缩格式就是能在不牺牲任何音频信号的前提下,减少WAV文件体积的格式。
2:有损压缩
所谓有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全回复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比。有损压缩广泛应用于语音,图像和视频数据的压缩。
常见的声音、图像、视频压缩基本都是有损的。
在多媒体应用中,常见的压缩方法有:PCM(脉冲编码调制),预测编码,变换编码,插值和外推法,统计编码,矢量量化和子带编码等,混合编码是近年来广泛采用的方法。
mp3 divX Xvid jpeg rm rmvb wma wmv等都是有损压缩。
有损数据压缩方法是经过压缩、解压的数据与原始数据不同但是非常接近的压缩方法。有损数据压缩又称破坏型压缩,即将次要的信息数据压缩掉,牺牲一些质量来减少数据量,使压缩比提高。这种方法经常用于因特网尤其是流媒体以及电话领域。
1.4 项目习题
1. 用你的计算机上的压缩工具来压缩不同文件。研究原文件的大小和类型对于压缩文件与原文件大小之比的影响。
答:文件类型不同,压缩比例不同。同样的文件,也可以设置不同的压缩比例。像纯文本文件压缩比例高,如果带有音频(如mp3)、视频、图片等基本上压缩比例很小。
2-2 从一本通俗杂志中摘录几段文字,并删除所有不会影响理解的文字,实现压缩。例如,在“This is the dog that belongs to my friend”中,删除is、the、that和to之后,仍然能传递相同的意思。用被删除的单词数与原文本的总单词数之比来衡量文本中的冗余度。用一本技术期刊中的文字来重复这一试验。对于摘自不同来源的文字,我们能否就其冗余度做出定量论述?
答: 数据的重复存贮称为数据冗余。数据冗余会妨碍数据的完整性,也会造成存贮空间的浪费。对于数据压缩而言,消除数据冗余度是实现数据压缩最为关键的步骤。数据是由信息+冗余度构成的,在上述的英文中,所表示的数据是信息,因此不能那样删除,将压缩的数据信息删除一部分后回导致数据内容发生质的变化。
2.8:项目与习题
3:
答:假设序列为iid 一阶熵:
(a)H=-p(a1)log2p(a1)-p(a2)log2p(a2)-p(a3)log2p(a3)-p(a4)log2p(a4)=-(4*1/4log2(1/4))=2bits/symbol
(b)H=-p(a1)log2p(a1)-p(a2)log2p(a2)-p(a3)log2p(a3)-p(a4)log2p(a4)=-1/2log2(1/2)-1/4log2(1/4)-1/8log2(1/8)-1/8log2(1/8)=1.75bits/symbol
(c)H==-p(a1)log2p(a1)-p(a2)log2p(a2)-p(a3)log2p(a3)-p(a4)log2p(a4)=-0.505log2(0.505)-1/4log2(1/4)-1/8log2(1/8)-0.12log2(0.12)=1.74bits/symbol
5:
答:概率:P(A)=21/84=1/4 P(T)=23/84 P(G)=16/82=16/8=4/21 P(C)=24/82=24/84=6/21
一阶熵:6.834299
(1)二阶熵比一阶熵明显降低,说明图像中相邻像素之间存在着很强的相关性; (2)差分熵与二阶熵略大一点,这是两者都考虑相邻像素之间相关性,所以熵较小;但二阶熵是考虑相邻像素间相关性后熵的下界,比差分熵更小一些。 计算其他图像的熵,可以得到相同的趋势。
做一个实验,看看一个模型能够多么准确地描述一个信源。
(a) 编写一段程序,从包括26个字母的符号集{a,b,…,z}中随机选择字母,组成100个四字母单词,这些单词中有多少是有意义的?
#include<stdio.h> #include<stdlib.h> int main() { int i,j; for(i=1;i<100;i++) { for(j=0;j<4;j++) { putchar(rand()%1?65+rand()%26:60+rand()%26); } putchar(' '); } return 0; }