从信息熵的角度来看,数据压缩是一种怎样的过程?
网络上,在遇到很有内涵的内容的时候,人们往往会说“这条微博信息量真大”。从古至今,人们一直在试图找到一种衡量消息中“信息浓度”的方法。例如,我们很容易得出结论,对于一名NBA球迷来说“总冠军是小牛队”所蕴含的信息量比“总冠军是一支西部球队”大,但是要比较“本文作者是男生”和“本文作者是单身”这两条信息所蕴含的内容多少可就有点强人所难。在大多数语言中,“信息”一词往往以不可数的形式出现,这也从另一方面印证了这一问题的困难程度。到了信息时代,对信号的处理与分析又需要一个适当的对信息量的衡量标准,所以数学家们也被这一问题困扰着。直到1948年,这个问题被香农在论文《通信的数学理论》中首次解决,这才让数学家们松了一口气。香农公理和信息熵信息就是使我们了解到的事物未知的性质,如果换成物理学家惯用的说法就是信息是对事件进行观测的结果。对于未知的事物,我们的观测存在着很多种可能的结果,而得到这些结果的可能性是不同的。换句话说,信息的作用就体现在使得某事件发生的概率从之前的某个概率变为1。所以信息量是与概率有关的。基于此,香农提出了他的第一条假设:信息量是关于事件发生概率的函数。同时为了方便起见,香农还规定这一函数连续。除此之外,香农还提出其他3条假设,综合起来就是有名香农公理:信息量是关于事件发生概率的连续函数;如果两事件A与B,B是A的必要条件,那么获知事件A要发生所对应的信息所含的信息量要大于或等于获知事件B要发生所对应的信息所含的信息量;获知独立事件将同时发生的信息量应为单独获知两事件发生的信息量之和;任何信息的信息量都是有界的。
压缩的唯一驱动力就是利用了概率分布。这个前提是假设单个信息源的每次抽样(重现)是独立的。如果说是相关的,诸如“the”这个单词一样,字母的组合是有一定前后联系的,那么这种联系的统计规律也能成为另外一种很重要的压缩的驱动力。很多图片压缩技术就是利用了这种相关性,当然这个可能已经跳出了信息熵的范畴。信息熵是用来分析单个信息源,根据大数定律,它也能反映单个信息源无数次独立重复抽样后的统计规律。当然,如果把“单词”而不是“字母”作为信息源,也可以用信息熵分析。甚至还能以“句子”、“文章”为信息源。只是这样的编码思路会限制我们用“字母”创造新的“单词”。所以,浪漫的说:信息冗余为创造力留下了空间。有的时候冗余是一种文化,比如说:的、地、得。既然能够根据上下文推出该用哪个,那么地和得并没有增加额外信息。更重要的,冗余就是加密!
压缩的理论基础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。这个本质的东西就是信息量(即不确定因素)。压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。选择哪一类压缩,要折衷考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。压缩编码的方法有很多,主要分成以下四大类:(1)象素编码;(2)预测编码;(3)变换编码;(4)其它方法。所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。在象素编码中常用的几种方法有:(1)脉冲编码调制(PulseCodeModulation,简称PCM);(2)熵编码(EntropyCoding);(3)行程编码(RunLengthCoding);(4)位平面编码(BitPlaneCoding)。其中我们要介绍的是熵编码中的哈夫曼(Huffman)编码和行程编码(以读取.PCX文件为例)。所谓预测编码是指,去除相邻象素之间的相关性和冗余性,只对新的信息进行编码。举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。如248,2,1,0,1,3,实际上这6个象素的灰度是248,250,251,251,252,255。表示250需要8个比特,而表示2只需要两个比特,这样就实现了压缩。常用的预测编码有Δ调制(DeltaModulation,简称DM);微分预测编码(DifferentialPulseCodeModulation,DPCM),具体的细节在此就不详述了。所谓变换编码是指,将给定的图象变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如(1)离散傅立叶变换(DiscreteFourierTransform,简称DFT);(2)离散余弦变换(DiscreteCosineTransform,简称DCT);(3)离散哈达玛变换(DiscreteHadamardTransform,简称DHT)。其它的编码方法也有很多,如混合编码(HybirdCoding)、矢量量化(VectorQuantize,VQ)、LZW算法。在这里,我们只介绍LZW算法的大体思想。值得注意的是,近些年来出现了很多新的压缩编码方法,如使用人工神经元网络(ArtificialNeuralNetwork,简称ANN)的压缩编码算法、分形(Fractl)、小波(Wavelet)、基于对象(ObjectBased)的压缩编码算法、基于模型(Model–Based)的压缩编码算法(应用在MPEG4及未来的视频压缩编码标准中)。这些都超出了本书的范围。本章的最后,我们将以JPEG压缩编码标准为例,看看上面的几种编码方法在实际的压缩编码中是怎样应用的。
刚才之前在学习图像处理入门的时候看到过相关的类容...我转载过来...,...........这里是以图像压缩为例子的,文字压缩的算法应该相似吧.......................................图象的压缩编码,JPEG压缩编码标准在介绍图象的压缩编码之前,先考虑一个问题:为什么要压缩?其实这个问题不用我回答,你也能想得到。因为图象信息的数据量实在是太惊人了。举一个例子就明白:一张A4(210mm×297mm)幅面的照片,若用中等分辨率(300dpi)的扫描仪按真彩色扫描,其数据量为多少?让我们来计算一下:共有(300×210/25.4)×(300×297/25.4)个象素,每个象素占3个字节,其数据量为26M字节,其数据量之大可见一斑了。如今在Internet上,传统基于字符界面的应用逐渐被能够浏览图象信息的WWW(WorldWideWeb)方式所取代。WWW尽管漂亮,但是也带来了一个问题:图象信息的数据量太大了,本来就已经非常紧张的网络带宽变得更加不堪重负,使得WorldWideWeb变成了WorldWideWait。总之,大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。
回答请先登录