【图像处理】图像压缩导言
2016-07-18 20:18
155 查看
图像压缩可以节约数据传输时间和数据存储空间。压缩技术是现代IT产业重要的研究领域。
图像之所以能压缩,是因为存在冗余,冗余主要分为以下几种:
编码冗余。可以用8bit编码的图像,用16bit来编码,就会造成巨大浪费。有些图像可以用小于8bit的信源编码来表示,但是计算机最小存储单元是1byte=8bit,这里有一些特殊做法,让平均编码长度小于8bit。还有一类是变长编码。
空间和时间冗余。图像中各个像素之间有一定关联,可以用巧妙的方法,用很少的信号来表示,因此原图像存在空间冗余。视频图像,由于帧之间有关联,同样可以用较少的信号来表示连续时间下的帧图像,因此存在时间冗余。
不相关冗余。这个冗余的内容就比较广,主要是指不必需的信息冗余,比如人眼对某一类信号不敏感,看起来是一样的,在没有其他需求的情况下,这类信号可以用一种信号表示,即量化。
图像平均每个像素需要表示的比特数为Lavg=∑M×N−10l(rk)pr(rk).
信号度量。一个随机事件E承载的信号定义为I(E)=−logn(P(E)),其中概率总是小于1的,所以加上负号以使信号量为正数;对数底n是信号度量单位,当n为2,表示使用bit来承载信号。
可能发生的独立随机事件集合为a1,a2,...an,概率为P(ai),编码中随机事件可以看做码字出现的过程,发生随机事件的信号来源是信源,信源输出的平均信号称为熵,定义为H=−∑ni=1P(ai)log(P(ai))。注意这里要求随机事件是独立的,是零记忆信源,否则实际信号输出会减小。如果前后事件发生的情况符合马尔科夫转移,即后面的信号输出情况和前一个信号有关,该信源称为马尔科夫信源。
图像误差。像素误差表示为e(x,y)=f′(x,y)−f(x,y),但是图像误差不能表示为像素误差之和,差异很大的图像之间像素误差加起来有可能为0,常理来说应该用绝对值,绝对值在数学上一般用平方来代替,平方有很好用的数学运算性质。图像误差为e=∑∑[f′(x,y)−f(x,y)]2。信噪比为信号与噪声之比,SNR=∑∑f′2(x,y)∑∑[f′2′(x,y)−f(x,y)]2,有些时候SNR的分子也用原图的信号来计算,尽量按照标准来吧。
映射器可以去除图像的空间和时间冗余。量化器将一类信号用一种信号表示,该过程是有损的、不可逆的,使得解压缩图像在可接受范围内损失信号。符号编码器可用合适的编码系统来编码信号。解压缩是逆过程。
图像之所以能压缩,是因为存在冗余,冗余主要分为以下几种:
编码冗余。可以用8bit编码的图像,用16bit来编码,就会造成巨大浪费。有些图像可以用小于8bit的信源编码来表示,但是计算机最小存储单元是1byte=8bit,这里有一些特殊做法,让平均编码长度小于8bit。还有一类是变长编码。
空间和时间冗余。图像中各个像素之间有一定关联,可以用巧妙的方法,用很少的信号来表示,因此原图像存在空间冗余。视频图像,由于帧之间有关联,同样可以用较少的信号来表示连续时间下的帧图像,因此存在时间冗余。
不相关冗余。这个冗余的内容就比较广,主要是指不必需的信息冗余,比如人眼对某一类信号不敏感,看起来是一样的,在没有其他需求的情况下,这类信号可以用一种信号表示,即量化。
公式
rk是[Llow,Lhigh]像素值范围的随机变量,nk是rk出现的次数。在M×N的图像中,其发生概率为pr(rk)=nkM×N,表示rk的比特数为l(rk).图像平均每个像素需要表示的比特数为Lavg=∑M×N−10l(rk)pr(rk).
信号度量。一个随机事件E承载的信号定义为I(E)=−logn(P(E)),其中概率总是小于1的,所以加上负号以使信号量为正数;对数底n是信号度量单位,当n为2,表示使用bit来承载信号。
可能发生的独立随机事件集合为a1,a2,...an,概率为P(ai),编码中随机事件可以看做码字出现的过程,发生随机事件的信号来源是信源,信源输出的平均信号称为熵,定义为H=−∑ni=1P(ai)log(P(ai))。注意这里要求随机事件是独立的,是零记忆信源,否则实际信号输出会减小。如果前后事件发生的情况符合马尔科夫转移,即后面的信号输出情况和前一个信号有关,该信源称为马尔科夫信源。
图像误差。像素误差表示为e(x,y)=f′(x,y)−f(x,y),但是图像误差不能表示为像素误差之和,差异很大的图像之间像素误差加起来有可能为0,常理来说应该用绝对值,绝对值在数学上一般用平方来代替,平方有很好用的数学运算性质。图像误差为e=∑∑[f′(x,y)−f(x,y)]2。信噪比为信号与噪声之比,SNR=∑∑f′2(x,y)∑∑[f′2′(x,y)−f(x,y)]2,有些时候SNR的分子也用原图的信号来计算,尽量按照标准来吧。
无噪声编码
我们可以使用变长编码来压缩表示信号,也可以用编码扩展方式,比如组合编码,来压缩信号。香农证明,能用等于或者很接近与编码长度为H编码系统,来编码信号。一般情况下,长度短于H的压缩编码是无法找到的。编解码
映射器可以去除图像的空间和时间冗余。量化器将一类信号用一种信号表示,该过程是有损的、不可逆的,使得解压缩图像在可接受范围内损失信号。符号编码器可用合适的编码系统来编码信号。解压缩是逆过程。
相关文章推荐
- 如何在 Ubuntu Linux 中使用 RAR 文件
- ASP编码必备的8条原则
- C#使用DeflateStream解压缩数据文件的方法
- C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩
- C#使用WinRar命令进行压缩和解压缩操作的实现方法
- XML指南——XML编码
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- C#调用WinRar执行rar、zip压缩的方法
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- C语言二进制思想以及数据的存储
- C语言压缩文件和用MD5算法校验文件完整性的实例教程
- C语言安全编码之数值中的sizeof操作符
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- 一些关于数据存储和查询优化的想法
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解
- C#实现页面GZip或Deflate压缩的方法
- C#使用iCSharpcode进行文件压缩实现方法