[多媒体][视频]压缩 、编码、信息熵

为什么要编码?

图像数据的原始数据量很大,因此在传输和存储之前需要进行压缩,否则占用的带宽开销和存储开销将是巨大的。

因此需要对图像数据进行压缩,而压缩的一种手段就是对原数据进行编码。

编码的一个重要目的是压缩,当然还有其他目的,比如加密。


什么是信息熵?

数据压缩会导致数据失真,或者说信息量丢失,这是显而易见的,但是同时也会带来数据量的缩减,那么如何衡量一个算法是否优秀呢?

我们可以以  “损失的信息量与带来的数据压缩量的比率” 来表示一种信息量对数据量的比率关系。

而用来表示信息量和数据量比率的概念就是信息熵,单位是  bit / 字符。从单位上我们就能理解信息熵的含义,即 “每个字符能携带多少 bit 的信息量” 。

        信息熵的公式:           

信息熵是一种度量概念,表示单位字符携带信息量的  “能力”。

信息熵越高代表单位存储空间携带信息的能力越强。


什么是熵编码?

熵编码不是 一种具体的编码,而是一个指标,所有满足这个指标的编码方式都叫做熵编码。

目前广为流传使用的熵编码有:香农编码、哈弗曼编码、算数编码等等。

比如一副图像的信息熵是  3bit / 字符,那么在经过编码算法A 的处理后,信息熵变成了 2bit / 字符,那么这个过程就导致信息熵变少了,那么这种编码就不是熵编码,相反,如果信息上变成了 4bit / 字符,那么这种编码就是熵编码。

什么情况下会增加信息熵?

编码结果的信息量不变,但是占用的总空间减少了,那么平均下来的信息熵变提高了。那么我们如果在一定的范围内控制住信息量的减少,然后大力压缩总空间,则信息熵自然而然地提高了。

编码一定会导致信息失真,但是我们通过编码也压缩了存储空间,如果能够保证一定的平衡,则可以保证信息熵的提高。

简言之,在可以接受的信息失真范围内,用失真换空间。人眼对于某些信息是不敏感的,因此我们可以把信息的失真转嫁到这些不敏感的地方,以此换取空间的压缩。

举个例子:

有一副图像,存在高频部分和低频部分,由于人眼对高频部分不敏感,因此我们可以通过傅里叶变换获取高频部分,然后通过滤波滤除,这样总体的数据量虽然变少了,但是对于人来说高信息量的低频部分依旧保留着,这样总体的信息熵就提高了,这便是   “用低信息量(高频部分)的数据换取空间压缩”,这个时候信息熵这个度量自然而然地就提高了。


为什么要引入信息熵的概念?

信息熵是一个度量,用来表示单位字符携带信息量的能力。 一定不能把信息量和信息熵混为一谈,信息量代表携带信息的大小,信息熵代表能力,信息量表示总值,信息熵表示平均值

所有压缩都会导致信息量丢失,引入信息熵的概念就是用来衡量哪种压缩在  “相同的压缩空间下能够尽量多地携带信息量”


什么是信息量?

信息量的大小和数据量的大小一点都没有关系,信息量的大小取决于受众的敏感度,比如张三喜欢看新闻,李四喜欢看电视剧,如果此时电视在放电视剧,那么对于张三来说这个时候他获得的信息量很小(因为不喜欢看,所以主观信息摄取量很低,也就是说有可能心不在焉一点没记住剧情),但是对于李四来说,这个时候的电视信息量很大。

Guess you like

Origin blog.csdn.net/ykun089/article/details/121008131