第十四章 图象压缩

目录

1.   引言

2.   无损压缩

2.1 行程编码(RLE)

2.2 LZW编码

2.3 Huffman编码

3.   有损压缩

3.1 量化

3.2 预测编码

3.3DCT编码

3.4 其它变换编码

作业


1.  引言

图象压缩是通过删除图象数据中冗余的或者不必要的部分来减小图象数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。压缩技术分为无损压缩和有损压缩,前者在解码时可以精确地恢复原图象,没有任何损失;后者在解码时只能近似原图象,不能无失真地恢复原图象。

按照信息论,设有一个无记忆的信源,它产生消息的概率是已知的,记为,则信息量定义为:

可见越是不可能出现的消息,它的出现对信息的贡献量越大:

·        一个消息出现的可能性越小,其信息量就越多;

·        而消息出现的可能性越大,其信息量就越少。

:信源的平均信息量称为“熵”(entropy),即

上式取以2为底的对数时,单位为比特(bits):

根据Shannon(香农)无噪声编码定理,对于熵为H的信号源,对其进行无失真编码所可能达到的最低比特数为,这里为一任意小的正数,因此可能达到的最大压缩比为:

其中B是原始图象的平均比特率,且定义压缩比为:

2.无损压缩

无损压缩是一般的数据压缩方法,适用于普通的数据文件(不必是图象),有基于码表的技术和基于统计的技术两类。基于码表的技术生成的文件包含的是定长码(通常是12至16位),每个码代表原文件中数据的一个特定序列。基于统计的技术通过用较短的代码代表频繁出现的字符,用较长的代码代表不常出现的字符,从而实现数据压缩。无损的图象压缩方法通常只能获得1~5倍的压缩率。

2.1 行程编码(RLE)

在一个逐行存储的图象中,具有相同灰度值的一些象素组成的序列称为一个行程。在编码时,对于每个行程只存储一个灰度值的码,再紧跟着存储这个行程的长度。这种按照行程进行的编码被称为行程编码(Run Length Encoding)。

行程编码对于仅包含很少几个灰度级的图像,特别是二值图象,比较有效。

参见:Design of Utach RLE Format

2.2 LZW编码

LZW编码是由Lemple和Ziv提出并经Welch扩充而形成的无损压缩专利技术。在对文件进行编码时,需要生成特定字符序列的表以及对应的代码。每当表中没有的字符串出现时,就把它与其代码一道存储起来。这以后当该串再次出现时,只存储其代码。实际上,字符串表是在压缩过程中动态生成的,而且由于解压缩算法可以从压缩文件中重构字符串表,因而字符串表也不必存储。

参见:LZW compression(..\Readings\chapter14\lzw.htm)

LZW expression(..\Readings\chapter14\lzwexp.htm)

2.3 Huffman编码

Huffman编码是50年代提出的一种基于统计的无损编码方法,它利用变长的码来使冗余量达到最小。通过一个二叉树来编码,使常出现的字符用较短的码代表,不常出现的字符用较长的码代表。静态Huffman编码使用一棵依据字符出现的概率事先生成好的编码树进行编码。而动态Huffman编码需要在编码的过程中建立编码树。

由于Huffman编码所得到的平均码字长度可以接近信源的熵,因此在变长编码中是最佳的编码方法,故也称为熵编码。

`Huffman算法

1.   对L个符号按其概率值P递减顺序排列,并作为一棵树的叶结点

2.   如果没有到根结点则

(1) 把两个概率值最小的结点合并成一个新结点并赋予其概率为两子结点概率之和;

(2) 对新结点到两个子结点的树枝分别赋值1和0

3.   从根结点开始到叶结点,将树枝上的值按顺序组成二进制值,则为该叶结点上符号的Huffman码字。

例如,

·        这种编码方法形成的码字是可辨别的,即一个码字不能成为另一码字的前缀

·        Huffman编码对不同的信源其编码效率不同,适合于对概率分布不均匀的信源编码。

3. 有损压缩

为了获得较高的压缩比,常见的图象压缩算法,如变换编码压缩算法,涉及量化过程,因而都是有损的压缩算法,通常的压缩率范围为3~50。

3.1量化

将图象用较少的灰度级别来表示是最简单的减小数据量的方法,这种方法就是标量量化方法。更一般的情况是,针对连续量的采样过程,量化是用有限个状态来表示连续值。标量量化器Q(.)是一个函数,用有限个判决层和重构层定义而成:

 
 

当采样值s在范围 内时,量化器的输出就是重构层

矢量量化可定义成用有限个矢量状态表示一组矢量,每个矢量是一些连续值的采样。在图象压缩中,标量量化和矢量量化通常用于变换域内的图象表示。

3.2预测编码

预测编码根据数据在时间和空间上的相关性,根据统计模型利用已有样本对新样本进行预测,将样本的实际值与其预测值相减得到误差值,再对误差值进行编码。由于通常误差值比样本值小得多,因而可以达到数据压缩的效果。

模拟量到数字量的转换过程是脉冲编码调制过程PCM (pulsecode modulation),也称PCM编码。对于图象而言,直接以PCM编码,存储量很大。预测编码可以利用相邻象素之间的相关性,用前面已出现的象素值估计当前象素值,对实际值与估计值的差值进行编码。常用的一种线性预测编码方法是差分脉冲编码调制DPCM (differential pulse code modulation)。

线性预测形式如下:

 
 

最佳线性预测选择系数使均方误差最小:

 
 

最优解是如下方程的解:

 
 

3.3 DCT编码

由于DCT变换与KL变换(KL变换完全消除了数据的相关性,是最佳的正交变换,因而也是理论上最优的压缩变换方法)最为接近(参见第十一章),DCT变换是图象压缩标准中常用的变换方法,如JPEG标准中将图象按照8x8分块利用DCT变换编码实现压缩。

详见:The JPEG Still Picture CompressionStandard(..\Readings\chapter14\jpg.pdf)

Lena.bmp(原图)

 Lenna.jpg (压缩率9.2)

 Lenna.jpg (压缩率18.4)

 Lenna.jpg (压缩率51.6)

 3.4 其它变换编码

变换方法是实现图象数据压缩的主要手段,其基本原理是首先通过变换将图象数据投影到另一特征空间,降低数据的相关性,使有效数据集中分布;再采用量化方法离散化,最后通过Huffman等无损压缩编码进一步压缩数据的存储量。3.3节的DCT是一种常用的变换域压缩方法,是JPEG,MPEGI-II等图象及视频信号压缩标准的算法基础。在实际采用DCT编码时,需要分块处理,各块单独变换编码,整体图象编码后再解压会出现块状人工效应,特别是当压缩比较大时非常明显,使图象失真。因此,为了获得更高的图象压缩比,人们提出了一些其它方法,如基于小波变换的图象压缩算法和基于分形的图象压缩算法等。

基于小波变换的图象压缩算法首先使用某种小波基函数将图象做小波变换,再根据四个通道的不同情况,分别量化编码,比如对低频频段(LL)采用较多的量化级别,而对中间频段(LH,RH)采用较少量化级别,对高频频段(HH)采用很少几个量化级别,这样根据重构时对复原信号的重要程度分别对待的方式可以有效地提高压缩比而又不产生明显的失真。由于小波变换不使用DCT变换方法中的固定大小的块分别编码的处理方法,而是通过整体的多级(通常用3-5个级别)变换方法实现,没有块状效应。小波变换可以获得10-50倍的压缩比而没有明显的失真。小波变换在静态图象压缩中的作用已经得到公认,为JPEG2000标准所采纳。

 基于分形的图象压缩算法利用图象中的自相似性根据分形算法压缩图象,对一些典型图象如自然景物等在理论上可以获得非常高的压缩比,在实践中,由于存在着如何定义及度量自相似性等困难,目前还很难自动地获得不同分辨率下的有效的自相似性描述,一般需要针对具体图片进行人工干预,以便获得最佳的效果。因而作为一种通用图象压缩工具还有待研究。现在的分形压缩算法,需要按块为单位处理,通过迭代优化方法实现,比较复杂。目前有些系统性的研究[5],但还缺乏稳定的性能保障,没有被广泛采用。

参考文献

1.   钟玉琢,多媒体技术,(高级),清华大学出版社,1999。

2.   P.K. Andleigh, K. Thakrar (徐光佑、史元春译), 多媒体系统设计,Prentice Hall, 1998.

3.   Borko Furht, Stephen W.Smoliar, HongJiang Zhang, Video and image processing in multimedia systems,Kluwer Academic Publishers, Boston ,1995.

4.   Vasudev Bhaskaran, KonstantinosKonstantinides, Image and video compression standards: algorithms andarchitectures, Kluwer Academic Publishers, Boston, 1995.

5.   Ning Lu, Fractal imaging,Academic Press, San Diego,1997

6.   张春田,苏育挺,张静,数字图象压缩编码,清华大学出版社, 2006.1

作业

1.   阅读有关Jpeg压缩标准的相关文献,利用Jpeg的C源码在MS-VC6环境下实现图象的压缩存储(bmp转成jpeg)。

2.   编制利用小波变换实现图象压缩的程序。


返回主目录 返回本章目录

清华大学计算机系 艾海舟

最近修改时间:2001年7月19日

出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html

数字图像处理 图象压缩相关推荐

  1. 数字图像处理:边缘检测(Edge detection)

    转载自:https://zhuanlan.zhihu.com/p/59640437 觉得写得通俗易懂,要是每个人的博客都这么人性化.... 写在前面: 本文篇幅较长,用了大量图与公式帮助大家深入理解各 ...

  2. C语言数字图像处理编程

    C语言数字图像处理 读取bmp图像并做简单显示 bmp图像几何变换(移动,旋转,镜像,转置,缩放) 彩色图像转灰度图,灰度图反色 图像中值滤波与平均滤波 bmp图像锐化 图像的半影调和抖动技术 bmp ...

  3. 数字图像处理——第十章 图像分割

    数字图像处理--第十章 图像分割 文章目录 数字图像处理--第十章 图像分割 写在前面 1 点.线和边缘检测 1.1 孤立点的检测 1.2 线检测 1.3 边缘检测 2 阈值处理 2.1 单一全局阈值 ...

  4. 数字图像处理——第九章 形态学图像处理

    数字图像处理--第9章 形态学图像处理 文章目录 数字图像处理--第9章 形态学图像处理 1 基础知识 1.1 形态学图像 1.2 二值图像 2 腐蚀和膨胀 2.1 腐蚀 2.2 膨胀 3 开操作与闭 ...

  5. 数字图像处理——第七章 小波和多分辨处理

    数字图像处理--第七章 小波和多分辨率处理 文章目录 数字图像处理--第七章 小波和多分辨率处理 写在前面 1 多分辨率处理 1.1 图像金字塔 1.2 多尺度和多分辨率的区别 2 小波 2.1 连续 ...

  6. 数字图像处理——第六章 彩色图像处理

    数字图像处理--第六章 彩色图像处理 文章目录 数字图像处理--第六章 彩色图像处理 1 彩色模型 1.1 RGB彩色模型 1.2 CMY 和CMYK彩色模型 1.3 HSI彩色模型 2 伪彩色图像处 ...

  7. 数字图像处理——第五章 图像复原与重建

    数字图像处理--第五章 图像复原与重建 文章目录 数字图像处理--第五章 图像复原与重建 写在前面 1 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...

  8. 数字图像处理——第四章 频率域滤波

    数字图像处理--第4章 频率域滤波 文章目录 数字图像处理--第4章 频率域滤波 频率域 1.傅里叶级数原理 1.1.一维傅里叶变换 1.2.二维傅里叶变换 2.python×傅里叶级数 2.1.傅里 ...

  9. 数字图像处理必备基本知识

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 基础知识 1.数字图像: 数字图像,又称为数码 ...

最新文章

  1. 使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)
  2. jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
  3. 怎么解决深入学习PHP的瓶颈
  4. 第六十八期:做中台找死,不做中台等死?
  5. Java啤酒生产系统描述_Java描述设计模式(03):工厂方法模式
  6. 这是一项颠覆性技术 - 容器
  7. jquery自定义一个放大镜
  8. ART、JIT、AOT、Dalvik之间有什么关系?
  9. 《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
  10. 驱动,包括很多软件,并不是最新的就是最好的
  11. R语言中的机器学习包
  12. 灰鸽子***猛增五百多变种 网民生活受***监控
  13. ThinkPHP多语言包功能使用
  14. 各大互联网公司开放平台一览
  15. 精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比
  16. 限制网络带宽的软件Netlimiter
  17. html的progress 怎么改变默认样式
  18. Linux之端口映射
  19. php开启sockets模块,linux下开启php的sockets扩展支持实例
  20. 加粉推广全能助手 推广辅助工具 好多粉微信号加粉复制统计工具加强版,加粉推广神器,持续完善升级,新增统计点击转化,页面插件功能,完美支持ocpc接口

热门文章

  1. 读书笔记-Java程序员面试笔试宝典--持续更新中
  2. Linux 提示 Resource temporarily unavailable
  3. 【老孟Flutter】Flutter 2.0 重磅更新
  4. 计算机二级用户名找回,计算机二级证书丢了怎么办如何找回
  5. android 滚轮刻度尺的实现
  6. 车载雷达典型信号处理流程及距离FFT
  7. Maven使用ActiveMQ
  8. Linux系统下实现图片切换的方法
  9. 安全智能分析 定义内涵
  10. 炫舞滑板机器人_qq炫舞时尚永久滑板鞋怎么得 炫舞时尚永久滑板鞋获取方法