当前位置:文档之家› (JPEG)编码算法及压缩过程的实现

(JPEG)编码算法及压缩过程的实现

1
1.1.2 图象压缩的几种方法 1.统计和字典的压缩方法 常规程序和计算机熵的数据对于那些基于利用统计变种的压缩,效果很好,
这些统计变种表现在单个符号的频率以及符号或短语字符串的频率等方面,而基于字典 的系统实际山就是假扮统计程序。可是遗憾的是,这类压缩对于连续色调图象的作用并 不很好。
这些程序的主要问题产生于这样的一个事实:照片图象的象素广泛地分布在整个 范围。如果将图象中的彩色用频率分布画出,那么频率分布图中,没有我们在统计压缩 的成功的情况下所看到的“尖峰”状,实际上,如果延长这个分布图,那么从类似于电 视那样的生活图象源中得出的分布图会趋于平展。这意味着,每个象素代码彼此是大约 相同的出现机会,决定不存在挖掘熵差的任何机会。
第二章 JPEG 编码算法
2.1JPEG 压缩编码基础 七十年代末八十年代初,研究工作开始着眼于新的图像压缩类型,希望能够大大地 优于前面所讨论过的那些非常一般的压缩技术。到八十年代末,开始可为桌面系统的图 像处理而寻找应用的工作,大多是是为 UNIX 和 Macintosh 工作站加入的协处理器卡的 形式,这些卡的图象质量没有任何可见退化的情况下,可以以 95%的比率执行图像的 有损压缩。 同时,另一部分人开始发展一个国际标准,它能够包括这些新的压缩的种类。如果 标准允许方便的图形格式的互换,那么,显然,对于各方面都是有利的,关于标准化工 作,早期的担心是:它会限制进一步革新的可能性。两个标准化组织,CCITT 和 ISO, 分别从涉及图像压缩的工业和学术两个入手,并且,似乎已经潜在的阻止了工作的负结 果。 2.2.1JPEG 算法于 JPEG 小组简介 JPEG(Joint Photographic Experts Group)是由 ISO/IEC JTC1/SC2/WG8 和 CCITT VIII/NIC 于 1986 年底联合组成的专家小组。JPEG 小组的工组事研究具有连续色调的图 像(包括灰度及彩色图像)的压缩算法,并将其制定为适用于大多数图像存储及通信局 设备的标准算法,JPEG 小组于 1990 年提出 JPEG 算法的建议,并决定对建议中的算法 不再修改,除非发现了危害压缩算法标准的问题。 作为静态图像压缩的标准算法,JPEG 算法必须满足以下要求:算法独立于图像的 分辨率;具有低于 1bit/象素的编码率,并且能够在五秒钟内建立图像,以满足实时要 求;在压缩比大约是 2 的情况下能够无失真地恢复原图像;支持顺序编解码和渐进编解
}
6
2.3DCT 的实现 测验 DCT 算法时所表现出的首要的问题之一是计算 DCT 中每个元素所需要的
世界紧紧地依赖于矩阵的大小。由于使用双层嵌套循环,所以计算量为:随着 N 的增 长,处理 DCT 输出数组中每个元素所要的时间也将增长。DCT 的实现将图像分成更小 更能处理的块,JPEG 小组选用 8×8 的块大小进行 DCT 计算。
3.差分调制 差分调制依赖余模拟数据趋于“平缓” 的变化,信号幅度撒谎那个的大的跳变是例外,而不是常规。在音频数据中,只 要信号的采样率一定程度地高于信息本身的最大的频率分量,那么大的跳变就不会产 生。 音频信号的差分调制通过编码一个样点与前一个样点的不同来利用这一个特点。 例如,如果单频样点位 8 位,差分编码系统可能用 4 位来编码样点之差,这就将输入数 据压缩了 50%。这种压缩方法中所产生的损失是来自于:使用标准的差分方法不可能 总是精确地编码。信号的增长可能快于比编码的允许,或者,编码可能太粗而不能容纳 下的差别,差分编码的有损性可以很好的处理,以产生出好的信号。 当压缩图形数据时,差分调制有很多问题。首先,图形中的象素依赖于平缓的增 加或减少时不可靠的,一幅图中不同的分量间的明显界限时常有的事情。这意味着,使 用差分编码的系统需要接受样点间的大的不同和小的不同。这就限制了压缩的效率。带 有数据长结构的许多图象可以压缩的很好。长结构中的象素,彼此之间没有什么差别或 差别很少;但时,带有突变部分的那些图象不可能压缩的很好。 通常,图形图象的差分的编码似乎不产生非常强于最好的无损算法的压缩结果,
但开始研究图形压缩时,人们也试图用相似的技术压缩数字化的图象,取得了一 些成功。最初,研究人员进行栅格化数据流的压缩,如显示在电视机栅的数据。
图形数据栅格化时,图形显示成一个象素流,每次一行地显示在屏幕上,从左到 右,从上到下。这样,当完成一行时 位到 24 位,如今的琢磨图形常常使用 8 位来定义一个象 素。
2
但并没有达到所希望的那么好,原因之一是音频数据和视频数据根本不同。 用常规格式采样的音频数据是趋于反复的,声音,包括讲话,是由每次几秒的重
复的正弦波组成的。虽然计算机上 DAC 的输入流可能由许多不同的频率叠加在一起而 成,但是正弦波通常产生反复的波形。
音频反复的本性自然使他利于压缩,线性预言编码和自适应差分脉冲编码调制等 技术就利于了这一点,因此将音频数据流压缩了 50%到 95%。
JPEG 中允许四种编解码模式: (1)基于 DCT 的顺序模式(sequential DCT-based) (2)基于 DCT 的渐进模式(progressive DCT-based) (3)无失真模式(Lossless) (4) 层次模式(hierarchical). 其中,(1)和(2)是基于 DCT 的有损压缩;(3)是基于线性预测的无损压缩;(4) 可以是 DCT 与线性预测的分层混合。 JPEG 算法可分为基本 JPEG 和扩展,即 Baseline System 与 Extended System。在 Baseline System 中生成的编码文件,在 Extended System 中一定可以正确解码。 2.1.2 JPEG 压缩 JPEG 有损压缩算法在三个成功的阶段中操作,见图 2-1
for ( j = 0 ;j < 8 : j + + ){ temp = 0.0; for ( x = 0 ; x < 8 ; x ++ ) for ( y = 0 ; y < 8 ; y ++ ){ temp += Cosines [ x ] [ i ]*Cosines[ y ][ j ]*pixel[ x ][ y ]; } temp * = sqrt ( 2 * 8 ) * Coefficient[ i ][ j ]; DCT [ i ][ j ] = INT_ROUND (temp);
1.1.1 图象压缩的目的 图象采样后,如果对之进行简单的 8bit 量化和 PCM 编码,其数据量是巨大的。
以 CIF(Common Intermediate Format)格式的彩色视频信号为例,若采样速率为 25 帧/ 秒,采样样点的 Y、U、V 分量均为 8bit 量化,则一秒钟的数据量为:
2.有损压缩 类似于音频数据,图形图象也同样有一个比常规计算机数据文件优越的地方:在 压缩/扩展的循环中,他们可以被略微改动,而不会影响用户的立即质量。如果仔细修 改,那么各处象素的精确灰度可以完全不被注意地进行小的改变。由于计算机栅的图形 图象通常来自对真实世界源的扫描,所有他们通常表达一个已经不完美的照片的表达或 是不完美的其他打印接着的表达。没有改变图象基本性能的有损压缩程序应该是可行 的。 假设图形图象的有损压缩是可能的,那么它是如何实现的呢?研究人员最初试验 了用于语音信号的同样的技术,如差分编码和自适应编码,虽然这些技术对图象有帮助,
5
边到 8 的整数倍。 下面(式 2-1)给出了二维 DCT 的实用公式。式 2-2 是反离散余弦变化(IDCT)
公式。式中表示的是 8×8 个象素值的矩阵进行计算的,产生出 8×8 频率系数的矩阵。 8×8 的 DCT 及 IDCT 公式如下:
这个公式初看起来让人害怕,但它可以用相当直接的代码段来表示。 for ( i = 0 ; i < 8 ; i + + )
DCT Transformation →
Coefficient Quantization →
Lossless Compression
这三个步骤形成了一个强有力的压缩器。,可以将连续色调图像压缩到少于原大小 的 10%,同时丢失很少的原始逼真度。
2.2 JPEG 中的二维 DCT 本文所讨论的压缩过程的关键是被称为离散余弦变换(Discrete Cosine Transform, DCT)的数学变换。Baseline System 中的 DCT 要求输入数据是一个 8×8 的矩阵,且每 个矩阵元素具有 8bit 精度,分为从-128 到 127,故 DCT 变换前,象素值先要减去 128。 所谓 8×8 的二维 DCT 是指将 8×8 的象素值矩阵变换成 8×8 系数矩阵。8×8 象素值 矩阵是由输入图像分块得到的,若图像的高或宽不是 8 的整数倍,必须扩展其下边或右
图象压缩(JPEG)编码算法及压缩过程的实现
摘要 本文首先介绍了静态图像压缩(JPEG)编码算法的基本原理、压缩的实现过程及 其重要过程的离散余弦变换(DCT)算法的实现原理及软件实现的例程,其次着重介绍 了压缩过程中的 DCT、量化和编码三个重要步骤的实现原理。 关键词:图像压缩 有损压缩 JPEG 离散余弦变换 DCT 量化
基于字典的压缩程序的运行也有类似的问题,基于扫描照片的图象决定没有任何 类型的数据特征以产生相同的短语的多次出现。例如,一个栅格化的图象,类似房子墙 边的垂直部分,在图片的许多连续的行中可能可以给出相似的字符串。但不幸的是,由 于真实世界是变化多端的,每行中的相同的性能将彼此地略有不同,对于 20 个象素的 一个字符串,其中的一两个象素会因扫描而彼此出现一步长的变化,虽然这些不同点小 到人眼不能探测或对人眼不起作用,但他们毕竟妨碍了基于字典压缩的工作,对于这类 压缩方法来说,字符串必须严格匹配,由于小的变化,而使匹配的字符串长度趋于很小, 这就限制了压缩的效率。
3
他当然也不会产生所需要的、对压缩的数量级上的改进。
4.自适应编码
自适应编码(常常于差分编码一同使用)根据前面看到的一些象素而对将要到来 的一些象素的信息做预言。例如,如果一幅灰度级照片中的最新的十个象素的值都在 45 到 50 之间,那么自适应压缩系统可能预言,下一个象素很大可能也在这个范围中, 之后,类似于霍夫曼或算术编码那样的基于熵的编码方案可能给将来到来的各种代码赋 以概率值。可以代替地使用压缩-扩展方法,将最细的粒度赋给最接近预言猜测的范围。
相关主题