logo资料库

JPEG压缩过程、算法详解.pdf

第1页 / 共73页
第2页 / 共73页
第3页 / 共73页
第4页 / 共73页
第5页 / 共73页
第6页 / 共73页
第7页 / 共73页
第8页 / 共73页
资料共73页,剩余部分请下载后查看
JPEG 和 PDCM 对图像压缩的研究 前言 我对图像处理并不精通,只是为了拿到一个学位,看了一阵子图像压缩 方面的资料,花费了很多时间和精力。非常遗憾的,整个过程都是自己在孤 军奋战,没有和别人交流,这也是最终结果不尽如人意的主要原因吧,但说 老实话,这是我的“第三只小板凳”。 最应该感谢的应该是 Linux,由于其开放源代码,我得以参考 IJG 组 织的 JPEG 压缩程序的源代码(ftp://ftp.uu.net/graphics/jpeg/jpegsrc. v6b.tar.gz)和,其中受益很大,IJG 的程序编写的很棒,但个人感觉不太 容易看懂,这里的 JPEG 压缩程序仅限于灰度图像的压缩,比较简单。文中 的算术编码的程序实现参考了 Guido Vollbeding (guido@jpegclub.org) 为 JPEG 压缩编写的算术编码程序。 我深感刚开始搞图像压缩时的茫然和无助,我希望我所做的一些工作能 有些用处,尤其对于那些刚刚开始搞图像压缩或处理的人来说。 另外,我觉得我所接触的很多人都缺乏一种团队精神,或许他们知道很 多东西,但不愿意与人分享,反而希望从别人身上汲取技巧或知识,对这种 人我是不屑与之交流的。Linux 的成功之处就是其开放性,中国的科技要想 发展单靠投资是不会解决问题的,有人说“一个中国人是一条龙,三个中国 人是一条虫”,中国科技的发展有赖于一个好的机制和中国人团队精神的培 养。我愿意将自己在做图像压缩方面的一些经验和大家分享,这是我写作本 文的一个重要动机。 - I -
JPEG 和 PDCM 对图像压缩的研究 摘要 JPEG 压缩方法由于其较高的压缩比和理想的压缩效果,是目前应用最 广泛的图像压缩方法。文中对 JPEG 压缩方法中基准模式下的压缩过程进行 了分析。JPEG-LS 压缩方法中,通过像素值预测有效的减小了信源熵,提高 了压缩比,文中对 JPEG-LS 中的预测模型进行了分析。算术编码同常用的 Huffman 编码相比,有更高的压缩效率,论文中对图像压缩中应用的二进制 算术编码方法进行了分析。 关键词 JPEG;预测差值编码(PDCM);图像压缩;算术编码; - II -
JPEG 和 PDCM 对图像压缩的研究 目 录 第 4 章 预测差值编码对图像的无损 和准无损压缩 4.3.1 二进制算术编码中背景的确定和编码事件 - III - 前言 摘要 第 1 章 绪论 第 2 章 哈夫曼编码和算术编码的原理及在 图像压缩中的应用 2.1 哈夫曼编码 2.2 算术编码 2.3 本章小节 2.2.1 算术编码的原理 2.2.2 算术编码在图像压缩中的应用 第 3 章 JPEG 方法对图像的有损压缩 3.1 JPEG 图像压缩过程分析 1.1 图像压缩原理 1.2 图像压缩的国际标准 1.3 本论文的研究内容 2.1.1 哈夫曼编码的原理 2.1.2 哈夫曼编码在图像压缩中的实现 ······························································································································ ···························································································································· ················································································································ ································································································· ······················································································ ·························································································· ·························· ····································································································· ·················································································· ··························································· ······································································································· ···················································································· ····························································· ······································································································· ····································································· ·············································································· ······················································································ ········································································································ ···························································································· ···················································································· ···················································································· ················································································ ············································· ·················································································· ···························································································· ······································································································· ············································ ···························································· ··································································································· ············································································ ········································· 3.2 试验图像数据的获取 3.2.1 BMP 图像的格式 3.2.2 BMP 图像的灰度化 3.2.3 BMP 图像的翻转和精简图像文件的存储 4.1 像素值的预测和修正及背景的确定 4.2 差值的量化 4.3 算术编码器对差值的编码 3.3 JPEG 图像压缩的实现 3.4 压缩效果的评价 3.5 本章小节 3.1.1 前向 DCT 变换 3.1.2 量化 3.1.3 哈夫曼编码 I II 1 1 3 4 5 5 5 6 10 11 15 22 23 23 23 24 25 28 29 32 35 35 37 41 42 42 46 46 47
JPEG 和 PDCM 对图像压缩的研究 4.3.2 算术编码的实现 4.4 压缩效果的评价 4.5 本章小节 ···················································································· ···························································································· ······································································································· ···························································································································· ···················································································································· ·························································································································· 结论 参考文献 附 录 49 53 56 57 58 61 - IV -
JPEG 和 PDCM 对图像压缩的研究 第1章 绪论 1.1 图像压缩原理 图像数据的压缩基于两点: (1)像信息存在着很大的冗余度,数据之间存在着相关性,如相邻像素 之间色彩的相关性等。 (2)人眼是图像信息的接收端。因此,可利用人的视觉对于边缘急剧变 化不敏感(视觉掩盖效应),以及人眼对图像的亮度信息敏感、对颜色分辨率 弱的特点实现高压缩比,而解压缩后的图像信号仍有着满意的主观质量。 从信号系统的角度理解,数据的压缩就是对原来信号进行某种变换。借助 这种变换,信号的表达更经济,存储传输更为方便。从信息论角度理解,信号 本身的具体表达形式不过是其内在携带信息的外在表象,一定的信息可以用各 种形式加以体现,每种表达形式的表达效率并不相同,存在着信息冗余。数据 压缩的目的就是寻找在一定约束条件下最为高效的信息表达方式。从压缩技术 的 角 度 理 解 , 数 据 压 缩 一 般 分 为 : 建 模 、 去 相 关 、 量 化 、 编 码 四 道 工 序 。 由此发展出数据压缩的两类基本方法:无损压缩和有损压缩。 无损压缩是将相同的或相似的数据或数据特征归类,使用较少的数据量描 述原始数据,达到减少数据量的目的。无损压缩又称信息保持编码,或叫做熵 保持编码[1]。图像的无损压缩通常分为两步,即去相关和编码。去相关就是要 去除图像冗余,降低信源熵[2]。 在对数据进行编码时,可对那些经常出现的数据指定较少的位数表示,而 那些不常出现的数据指定较多的位数表示。用这种方法得到的代码,其码的位 数,也即码长就是不固定的,故称为变长码。Huffman 在 1952 年根据香农 (Shannon)在 1948 年和范若(Fano)在 1949 年阐述的这种编码思想提出了 一种不定长编码的方法,也称哈夫曼(Huffman)编码[3]。霍夫曼编码的基本 方法是先对图像数据扫描一遍,计算出各种像素出现的概率,按概率的大小指 定不同长度的唯一码字,由此得到一张该图像的霍夫曼码表。哈夫曼编码 (Huffman 编码)是完全依据字符出现概率来构造字符的平均长度最短的码 字,又称为最佳编码。 1
JPEG 和 PDCM 对图像压缩的研究 游程编码[4]RLE(Run-Length Encoding)是一种适合信息源字符少或某几 个字符重复出现概率很高的情况。作为无失真压缩的一种,不需要存储每一个 像素的颜色值,而仅仅存储一个像素值以及具有相同颜色的像素数目。由于自 然图像的颜色往往是五光十色,它的行程长度非常短,若用 RLE 对它进行编 码,不仅不能把图像数据压缩,反而越压越多,要用更多的代码来表示。 算术编码也是一种常见的无损压缩算法,由于他可以对编码对象的概率分 布进行自适应,其效率要高于哈夫曼编码,现在正得到越来越广泛的应用。 LZW 编码是一种字典压缩算法,其压缩效率比较高,压缩速度较快。如果原 始图像数据值中带有随机变化的“噪音图像”,则很难利用 LZW 算法进行压 缩。当前流行的 GIF、TIFF 等图像文件格式都采用这种压缩算法。这类方法广 泛用于文本数据、程序和特殊应用场合的图像数据(如指纹图像、医学图像等) 的压缩。由于压缩比的限制,仅使用无损压缩方法不可能解决图像和数字视频 的存储和传输问题。 有损压缩是有利用人眼的视觉特性有针对性地简化不重要的数据,以减少 总的数据量。有损算法有很多种,比较常见的主要是预测编码、变换编码等。 预测编码法中最重要的是线性预测法,通常也成为“差值脉冲编码调制法” (DPCM)。DPCM 编码的基本思想是用反馈方法预测估值。变换域编码[5]就是 将通常在时间域或空间域描述的信号通过多维坐标的旋转、变换,将原散布在 各坐标轴上的能量集中到少数坐标轴上,减少各信号分量的相关性。因此,可 以使用较少的编码位数来表示一组信号样本,实现高效率的压缩编码。编码变 换是一种有损编码。编码变换中理论上最佳的是 K-L 变换,其去相关最彻底, 但目前尚无快速算法,且变换矩阵随数据集变化,不能广泛应用。而离散余弦 变换(DCT)是一种实变换,去相关能力仅次于 K-L 变换,压缩效果好,压缩 比易于调整,压缩率高,易于硬件实现。DCT 有固定基,性能最接近 K-L 变 换,现已出现了 DCT 的多种快速算法。有损压缩方法利用了人类视觉对图像 中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能 完全恢复原始数据,但是所损失的部分对理解原始图像的影响较小,却换来了 大得多的压缩比。只要损失的数据不太影响人眼主观接收的效果,就可采用。 通过上面简单分析可知,压缩比与图像内容、压缩方法、允许失真的限制 等等因素有关。实际编码图像时,也常常采用混合编码方法,甚至一幅图像采 用好几种算法在多层次上反复进行处理,其目的当然是为了达到尽可能高的压 缩比而不影响图像质量。除了压缩比,衡量压缩效果的常用指标[6]为 PSNR (Peak Signal-to-Noise Ratio),但它要和主观评价相配合来对压缩效果进行评 2
JPEG 和 PDCM 对图像压缩的研究 价。 1.2 图像压缩的国际标准 图像数据文件的格式有很多,如 GIF、TIFF、PCX、TGA、BMP、JPG 等。其中 BMP 图像对于原始的图像数据(直接来自于 CCD 数码相机)不压缩或 压缩比例很小。JPEG 由于有较高的压缩比,被广泛地应用于多媒体和网络程 序中,例如 HTML 语法中选用的图像格式之一就是 JPEG(另一种是 GIF), 目前网站上百分之八十的图像都是采用 JPEG 的压缩标准。美国国防部及情报 部门亦采用此标准为各部门间交流图像资料的标准格式。JPEG 全名为 Joint Photographic Experts Group,它是一个在国际标准组织(ISO)下从事静态影像压 缩标准制定的委员会,它和国际电信同盟(ITU)下属的国际电话与电报顾问委 员会(CCITT)及国际电工委员会(IEC)合作,共同制定出了第一套国标静 态影像压缩标准:ISO/IEC 10918-1,也被称作 CCITT Rec.T.81,就是俗称的 JPEG,它被公布于 1992 年 9 月份。 随著多媒体应用领域的激增,传统 JPEG 压缩技术已无法满足人们对多媒 体影像资料的要求。因此,更高压缩率以及更多新功能的新一代静态影像压缩 技术 JPEG 2000 就诞生了。JPEG 2000 与传统 JPEG 最大的不同,在于它放弃 了 JPEG 所采用的以离散余弦转换(Discrete Cosine Transform)为主的区块编码方 式,而改用以小波转换(Wavelet transform)为主的多解析编码方式[7]。小波变换 的主要目的是要将影像的频率成分抽取出来。JPEG2000 中只采用了数学编 码。编码的基本单位变为 TILE,它可以任意大小甚至是整幅图像,TILE 越 大,压缩的效果越好,但对系统缓存的要求也就越高。JPEG2000 的于 JPEG 相比增加了不少新的功能,如对图像中细节较多或较为感兴趣的区域(形状与 大小可以是任意的)进行高精度的无损编码、很强的容错性、支持水印等。 JPEG2000 的许多优点和新的功能都是建立在复杂的计算与较大的缓存基 础上[8,9],因此其速度与 JPEG 相比要慢许多。 JPEG-LS(JPEG-Lossless)标准[10]是 JPEG 组织在 1997 年制定的连续色度 (Continuous-tone)图像的无损压缩标准,它的无损压缩效果与 JPEG2000 相 当,但算法相对简单。它的压缩原理也是基于预测,误差编码,但它的预测器 要比 JPEG 中的复杂,并根据预测误差符合双边几何分布(Two-sided geometric distribution ) 的 推 论 对 误 差 进 行 修 正 , 同 时 它 对 即 将 编 码 的 像 素 的 背 景 (Context)也进行建模以提高预测精度。 3
JPEG 和 PDCM 对图像压缩的研究 1.3 本论文的研究内容 JPEG 压缩方法的原理及实现的具体步骤。 1. 2. 通过试验,观察 JPEG 压缩方法对图像的压缩效果。 3. 4. 在 JPEG-LS 中像素值预测模型的基础上,对图像进行差值编码, JPEG-LS 压缩方法中的像素值预测模型的原理和实现。 并通过试验,观察对图像的压缩效果。 5. 哈夫曼编码和算术编码是两种常用的熵编码方法,论文中分析了它 们的原理和在图像压缩中应用。 4
分享到:
收藏