JPEG图像压缩算法及其实现
JPEG静图像压缩实验

JPEG静图像压缩实验
一.实验目的
1.了解数字图像压缩的一类方法
2.掌握2D快速DCT变换的算法
二.实验原理
JPEG标准是面向连续色调静止图像的图像压缩标准。
它定义了多种类型的工作模式,其中最基本的是基于8*8块的DCT变换的顺序编码。
就是将一帧图像分为8*8的数据块单元,按照从左到右,自上到下的顺序对”块流”编码,其编码解码框图如下:
三.实验内容
按照如上框图实现一帧图像的压缩编码和解码
四.代码理解
1.编码主程序
五、实验结果
六.思考题
1.计算图像压缩比,并比较原图像的效果
使用lady.dat做实验的图像压缩比为:63/5.436=11.8:1
左图为压缩前的lady.bmp,右图为压缩后的lady.jpg
两图没有明显的区别,但比较细节,右图稍微模糊,并且局部区域有一些块化现象。
2.改变g-scale和量化矩阵的元素,比较压缩比和恢复图像的效果
Gscale141625
压缩比 3.197.5418.122.91
G_scale=1G_scale=4
G_scale=16G_scale=25
量化矩阵Q1Q2
压缩比7.3418.44
Q1=0.5*Q0,Q2=2*Q0,Q0为原始的量化矩阵
Q1Q2
3.对于8bit的像素值,在经过DCT变换后,值域为[-2048,2047],有可能超过码表范围。
计算机学院多媒体基础多媒体技术JPEG图像压缩

计算机学院多媒体基础多媒体技术JPEG图像压缩计算机学院多媒体基础课程中,我们学习了不同的多媒体技术,其中之一是JPEG图像压缩技术。
JPEG(Joint Photographic Experts Group)是一种常用的图像压缩标准,广泛应用于图片传输和存储中。
JPEG图像压缩技术的目的是减小图片文件的大小,同时尽可能保持图像质量。
这项技术适用于需要在网络上传输大量图片的应用,如图片网站、社交媒体等。
JPEG压缩算法的核心思想是基于人眼对图像的感知特性,利用图像中的冗余和人眼的视觉敏感性来减少数据量。
具体来说,JPEG压缩包括三个主要步骤:色彩空间转换、离散余弦变换(DCT)和量化。
首先,将图像由RGB色彩空间转换为YCbCr色彩空间,因为人眼对亮度(Y)比对色度(Cb和Cr)更敏感。
然后,将图像分成8x8的小块,对每个小块进行DCT变换,将图像转化为频域表示。
之后,对频域图像进行量化操作,通过消除高频信息来减少数据量。
最后,将量化后的数据进行编码和压缩存储。
JPEG压缩技术的主要优点是压缩比高,可以将图像文件大小减小到原始大小的10%到20%,同时保持良好的视觉质量。
这对于需要传输大量图片且带宽有限的情况非常有帮助。
此外,JPEG压缩还具有较快的压缩和解压速度,使其成为处理图像文件的标准方法之一。
然而,JPEG压缩也存在一些限制和缺点。
最显著的是,压缩过程中会丢失一些细节和图片质量,尤其是在高压缩比下。
此外,由于JPEG是一种有损压缩算法,每次压缩和解压缩都会导致一些信息损失,因此不适合用于需要无损压缩的应用。
总之,JPEG图像压缩技术是计算机学院多媒体基础课程中的重要内容。
通过学习JPEG的压缩原理和算法,我们可以了解如何减小图像文件大小,提高图像传输效率,同时在保持较高视觉质量方面找到一个平衡点。
这对于我们将来从事与多媒体技术相关的工作将非常有帮助。
JPEG图像压缩技术是一种非常实用且广泛应用的图像压缩算法。
图像压缩算法原理:JPEG、PNG等压缩方式

图像压缩算法原理:JPEG、PNG等压缩方式图像压缩算法旨在减小图像文件的大小,同时保持尽可能多的图像质量。
JPEG(Joint Photographic Experts Group)和PNG(Portable Network Graphics)是两种常见的图像压缩方式,它们有不同的原理和适用场景。
JPEG 压缩算法原理:离散余弦变换(DCT): JPEG 使用离散余弦变换将图像从空间域变换到频域。
DCT将图像分解为一系列频率分量,允许更多的信息被聚焦在低频分量上,这些低频分量对人眼更敏感。
量化:在DCT之后,通过量化将每个频率分量的数值映射为一个较低的精度。
高频分量被更多地量化为零,从而进一步减小数据。
哈夫曼编码:使用哈夫曼编码对量化后的数据进行熵编码。
哈夫曼编码对常见的值使用较短的编码,对不常见的值使用较长的编码,以进一步减小文件大小。
色彩空间转换: JPEG通常将RGB颜色空间转换为YCbCr颜色空间,其中Y表示亮度(灰度),Cb和Cr表示色度(颜色信息)。
这样可以将图像的亮度和色度分离,使得在色度上的降采样更容易。
PNG 压缩算法原理:无损压缩:与JPEG不同,PNG是一种无损压缩算法,它保留了原始图像的每一个像素的精确信息。
这使得PNG适用于需要完整性的图像,如图标、图形等。
差分预测: PNG使用差分预测(Delta Predictive Coding)来减小冗余。
通过预测每个像素值与其周围像素值之间的差异,PNG可以用较小的数据表示图像。
LZ77压缩: PNG使用LZ77算法进行数据压缩。
该算法通过查找并用指向先前出现的相似数据的指针替换当前数据,从而减小文件大小。
无调色板和透明度支持: PNG支持真彩色图像,并且可以存储图像的透明度信息。
这使得PNG在需要保留图像质量的同时支持透明背景。
总体而言,JPEG适用于需要较小文件大小,且可以容忍一些信息损失的场景,而PNG适用于需要无损压缩和透明度支持的场景。
JPEG图像压缩算法基本介绍

JPEG图像压缩算法基本介绍JPEG压缩算法可以用失真的压缩方式来处理图像,但失真的程度却是肉眼所无法辩认的。
这也就是为什么JPEG会有如此满意的压缩比例的原因。
下面主要讨论,JPEG基本压缩法。
一、图像压缩算法之JPEG压缩过程JPEG压缩分四个步骤实现:1.颜色模式转换及采样;2.DCT变换;3.量化;4.编码。
二、图像压缩算法具体操作1、图像压缩算法之颜色模式转换及采样RGB色彩系统是我们最常用的表示颜色的方式。
JPEG采用的是YCbCr色彩系统。
想要用JPEG基本压缩法处理全彩色图像,得先把RGB颜色模式图像数据,转换为YCbCr颜色模式的数据。
Y代表亮度,Cb和Cr则代表色度、饱和度。
通过下列计算公式可完成数据转换。
Y=0.2990R+0.5870G+0.1140BCb=-0.1687R-0.3313G+0.5000B+128Cr=0.5000R-0.4187G-0.0813B+128人类的眼晴对低频的数据比对高频的数据具有更高的敏感度,事实上,人类的眼睛对亮度的改变也比对色彩的改变要敏感得多,也就是说Y成份的数据是比较重要的。
既然Cb成份和Cr成份的数据比较相对不重要,就可以只取部分数据来处理。
以增加压缩的比例。
JPEG 通常有两种采样方式:YUV411和YUV422,它们所代表的意义是Y、Cb和Cr三个成份的数据取样比例。
2、图像压缩算法之DCT变换DCT变换的全称是离散余弦变换(Discrete Cosine Transform),是指将一组光强数据转换成频率数据,以便得知强度变化的情形。
若对高频的数据做些修饰,再转回原来形式的数据时,显然与原始数据有些差异,但是人类的眼睛却是不容易辨认出来。
压缩时,将原始图像数据分成8*8数据单元矩阵,例如亮度值的第一个矩阵内容如下:JPEG将整个亮度矩阵与色度Cb矩阵,饱和度Cr矩阵,视为一个基本单元称作MCU。
每个MCU所包含的矩阵数量不得超过10个。
JPEG图像压缩技术的实现与优化

1 2 1 3
1 7 22 3 5 6 4 9 2
1 4 1 6
2 2 3 7 5 5 7 8 9 5
1 9 2 4
2 9 5 6 6 4 8 7 9 8
2 6 4 0
5 1 68 8 1 13 o l2 1
JE P G推 荐 的高低 频亮 度量 化表 如 表 1 所示 。
表 1 亮 度 量化 表
、~ 型 、 、
0
0
1 6
1
1 1
2
1 0
3
1 6
4
2 4
5
4 0
6
51
7
61
1 2
3 4 5 6 7
1 2 1 4
h s a e ,a d i e l a i pi ai o n F G w sgv n i d ti ti p p r n srai t na d o t z t n f w o P A a ie eal .T e ts r s l i dc td ta ok d t z o n mi o l n s h e t e ut n i e t t r e a h iw
vr ห้องสมุดไป่ตู้l. ey we1
Ke o d I g o rsi J E Wa ee a s r yW r s maec mpes n P G o vltt f m r o n
1 引言
有损静态图像压缩当前有两种 比较流行 的标准 JE P G和 JE 20 。它们都是 由联合 图像专家组(o t P G 00 Ji n Po g piE prGop 开发的, ht r h xe r ) oa c t u 前者是基于离散余弦变换( i re o n T nfm,C ) Ds e s e r s r D T 变换 , c tC i a o 后者是基于 小波 变换 。二 者采用 的 编码方 式不 同… 但都 在数 字 图像 处理 领域 得 到 了广 泛 的应 用 。 由于 JE 20 1, P G 00编码
JPEG XR压缩算法的研究及应用分析

JPEG XR压缩算法的研究及应用分析随着数码摄影的普及和移动互联网的快速发展,图片成为了人们日常生活中不可或缺的一部分。
然而,由于图片的大量占用存储空间和传输带宽,往往会导致用户访问速度缓慢,甚至影响用户体验。
针对这种问题,JPEG XR压缩算法应运而生,成为了当今最重要的压缩技术之一。
本文将对JPEG XR压缩算法进行深入研究,分析其在应用领域中的优势和局限性。
一、JPEG XR压缩算法的基本概念JPEG XR(JPEG eXtended Range)是JPEG家族中一种新型的图像压缩标准。
该算法最初由微软公司提出,被国际标准化组织(ISO)和国际电信联盟(ITU)正式接受并推荐。
JPEG XR是一种有损压缩算法,旨在通过去除图像中不必要的细节信息,获得更高的压缩比和更小的文件大小。
同时,该算法还可根据图像的特征、清晰度和颜色等多个因素进行自适应调整,从而对不同类型的图片进行最优化的压缩。
相比于其他压缩算法,JPEG XR在处理动态范围广泛、颜色深度高的图像时表现出更加优秀的压缩效果。
二、JPEG XR压缩算法的工作原理JPEG XR压缩算法主要分为两个步骤:编码和解码。
1. 编码在编码过程中,JPEG XR算法会对原始图像进行多通道分解和色度转换。
将RGB三个通道分别转换到YCbCr色彩空间,以使之具有更好的可压缩性。
然后,JPEG XR算法会对图像进行预测编码和残差编码两种压缩方式。
预测编码是指对图像进行预处理,根据已知的像素信息预测未知的像素值,并利用预测误差来表示图像信息。
JPEG XR预测编码采用了线性预测方法和Bayesian预测方法,通过构建网络预测模型,准确地预测了图像中的像素值,并获得了更高的压缩比。
残差编码是指将原始图像减去预测图像,以得到残差图像,并将残差图像转换成频域数据表达。
JPEG XR利用离散余弦变换(DCT)将图像从空间域转换成频域,利用DCT系数来表示图像信息。
JPEG图像压缩与编码解析

JPEG图像压缩与编码解析
JPEG(Joint Photographic Experts Group)压缩格式,以其易于使用、压缩率高而著称,是应用最为广泛的一种图像压缩格式。
JPEG压缩
算法把图像分为内容和质量两个维度来进行压缩。
下面将详细论述JPEG
图像编码与解码的基本原理。
1.JPEG图像编码过程
(1)空间域转换
空间域转换是将原始图像由空间域变换成更加节省存储空间的频域。
JPEG压缩采用的是离散余弦变换(DCT)这种空间域转换方法,它可以把
图像表示成一系列正交基函数的线性组合,每一个函数表示的是对应的图
像量化值。
利用DCT将一幅图像分成8×8(也有可能是16×16)大小的块,每一个块由64(或者256)个相互独立的像素构成,被称为DCT子块。
(2)频段选择
JPEG图像压缩算法采用频段选择的原则,根据图像中的特征,把空
间域转换之后的低频分量即低频信息传��有损,而只把高频分量即高频
信息传递以达到保留重要信息的目的,在JPEG中,特征的保留按照“从
重要的到不重要的”的顺序进行。
(3)变换。
基于JPEG压缩编码的数据压缩算法的研究与实现

基于JPEG压缩编码的数据压缩算法的研究与实现树2009-10-12 19:39:46 阅读68 评论2 字号:大中小JPEG压缩方法由于其较高的压缩比和理想的压缩效果,是目前应用最广泛的图像压缩方法。
它采用一种特殊的有损压缩算法,将不易被人眼察觉的图像颜色删除,从而能够将图像压缩在很小的储存空间。
JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。
本文对JPEG图像压缩方法进行了基本介绍,包括它的发展历史,现阶段的研究情况,压缩原理等。
其中重点介绍了哈夫曼编码和游程编码的基本原理和在JPEG压缩编码算法中的具体应用,以及以变换编码方法为例,介绍了离散余弦变换(DCT)的基本过程。
最后介绍了用VC++编写JPEG压缩程序所涉及到的几个基本模块,从而实现了BMP 图像和JPEG图像的相互转换,这也是最主要的编程思想和依据。
关键词:图像压缩,JPEG,DCT,哈夫曼编码,行程编码摘要IABSTRACT II第一章绪论11.1 图像压缩的意义11.2 JPEG图像压缩的国际标准21.3 本论文的研究内容3第二章JPEG图像压缩技术基础研究 42.1 JPEG图像压缩技术42.2 JPEG压缩中图像文件的格式52.2.1 BMP图像的格式52.2.2 JPEG图像格式82.3 本章小结8第三章JPEG图像压缩相关算法及实现93.1 JPEG图像压缩编码方法93.1.1 哈夫曼编码的原理103.1.2 哈夫曼编码在图像压缩中的实现113.2 JPEG图像压缩原理133.2.1 前向DCT变换143.2.2 量化153.2.3 使用哈夫曼可变字长编码器对量化系数进行编码16 3.3 本章小结19第四章JPEG图像压缩的设计与实现204.1 总体设计204.1.1设计思想204.1.2 模块设计204.2 JPEG图像压缩软件的实现214.2.1 BMP图像的读入、显示模块224.2.2 DCT量化编码模块254.2.3 组成位数据流模块294.2.4 JPEG图像存储模块314.2.5 解压缩模块314.3 软件应用324.4 压缩效果的评价334.4.1 压缩效果理论分析344.4.2 压缩效果实际分析344.5 本章小结35第五章总结365.1 JPEG图像压缩结论365.2 JPEG图像压缩前景分析36参考文献38致谢39附录40ABSTRACTJPEG compression is the most widely used image compression method because of its higher compression ratio and ideal compression effect. It uses a special lossy compression algorithm and deletes colors of images that is not detected easily by human eye, thus images can be compressed in a small storage space. JPEG compression technology is very advanced, it is used lossy compression methods to remove redundant image data. Thus, high compression ratios can be got, at the same time, a very rich and vivid images can be displayed, in other words, it is possible to get better image quality with the least disk space.The paper introduces the JPEG compression algorithm firstly, including its history and the basic situation of this stage, compression principle, and so on. Referring to the JPEG compression method, the paper focuses on the basic tenets of Huffman coding and run-length coding and their specific application in JPEG compression algorithm. To transform coding method as an example, it introduces the discrete cosine transform (DCT) the basic process. Finally, Using the VC + +, it involves several basic modules of JPEG compression process and realizes the BMP images and JPEG image conversion, which is the most important ideological basis for programming.KEY WORDS:Image compression, JPEG, DCT, Huffman coding, run-length coding第一章绪论1.1 图像压缩的意义人类社会已经进入信息时代了,在这个时代,人们每天都可以通过各种手段(如PDA、网络、电视、广播等等)获得大量的信息,而信息的本质,就要求交流和传播,在有必要的时候还要进行储存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、JEPG压缩算法(标准)(一)JPEG压缩标准JPEG(Joint Photographic Experts Group)是一个由ISO/IEC JTC1/SC2/WG8和CCITT VIII/NIC于1986年底联合组成的一个专家组,负责制定静态的数字图像数据压缩编码标准。
迄今为止,该组织已经指定了3个静止图像编码标准,分别为JPEG、JPEG-LS和JPEG2000。
这个专家组于1991年前后指定完毕第一个静止图像压缩标准JPEG标准,并且成为国际上通用的标准。
JPEG标准是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像。
JPEG专家组开发了两种基本的静止图像压缩算法,一种是采用以离散余弦变换(Discrete Cosine Transform, DCT)为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。
使用无损压缩算法时,其压缩比比较低,但可保证图像不失真。
使用有损压缩算法时,其算法实现较为复杂,但其压缩比大,按25:1压缩后还原得到的图像与原始图像相比较,非图像专家难于找出它们之间的区别,因此得到了广泛的应用。
JPEG有4种工作模式,分别为顺序编码,渐近编码,无失真编码和分层编码,他们有各自的应用场合,其中基于顺序编码工作模式的JPEG压缩系统也称为基本系统,该系统采用单遍扫描完成一个图像分量的编码,扫描次序从左到右、从上到下,基本系统要求图像像素的各个色彩分量都是8bit,并可通过量化线性地改变DCT系统的量化结果来调整图像质量和压缩比。
下面介绍图像压缩采用基于DCT的顺序模式有损压缩算法,该算法下的JPEG压缩为基本系统。
(二)JPEG压缩基本系统编码器JPEG压缩是有损压缩,它利用了人的视觉系统的特性,将量化和无损压缩编码相结合来去掉视觉的冗余信息和数据本身的冗余信息。
基于基本系统的JPEG压缩编码器框图如图1所示,该编码器是对单个图像分量的处理,对于多个分量的图像,则首先应将图像多分量按照一定顺序和比例组成若干个最小压缩单元(MCU),然后同样按该编码器对每个MCU各个分量进行独立编码处理,最终图像压缩数据将由多个MCU压缩数据组成。
图1 JPEG压缩编码器结构框图JPEG压缩主要步骤如下:(1)图像压缩预处理;(2)正向离散余弦变换(FDCT);(3)DCT系数量化;(4)编码。
(三)图像压缩预处理图像压缩前进行预处理,主要包括对原图像颜色空间转换、大小的调整和采样、整理MCU 单元。
JPEG压缩的对象是基于YUV颜色空间,对于其他颜色空间的图像数据要先应用相应的转换公式转换到YUV颜色空间。
由于后续图像分块及整理MCU单元的需要,对于原图像宽度和长度应当扩展为8的整数倍,针对YUV411、YUV420等需要降采样处理的图像则要求扩展为16的整数倍,JPEG标准建议通过复制每有一个分量最右边的列和最下面的行来进行扩展。
通过对原图像的降采样,将可以减少部分图像数据,增加压缩比,由于人眼对亮度信号Y比较敏感,而对色差信号UV不敏感,因此可以对原图像色度信号进行降采样处理,而人眼却基本感觉不到图像的变化,JPEG压缩常用可处理降采样处理格式为YUV422、YUV411和YUV420,本文采用YUV411格式,该格式为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。
JPEG压缩的最小单元为MCU,对于未降采样的图像数据(非交织数据),一个MCU就是一个数据单元,而对于降采样的图像数据(交织数据),一个MCU就是一系列在该扫描中由分量的采样因子定义的数据单元。
本文采用YUV411格式,则一个MCU将由Y分量水平4个8×8图像块、水平一个U分量和一个V分量8×8图像块组成。
基本系统将按照从上到下、从左到右的顺序将原图像整理为若干个MCU,后续JPEG压缩就是对每个MCU中各分量的图像块分别进行压缩,所有MCU的排列顺序就是最终图像压缩数据的排列顺序。
(四)正向离散余弦变换(FDCT)对每个8×8图像块进行FDCT之前,采样值应该先进行幅度值的位移,使之成为一个有符号的数,方法是将采样值减去,其中P为采样的精度,本文P取8位,幅度位移为128,即将每个采样点像素值减去128后再进行FDCT,FDCT的数学表达式为:8×8图像块经过FDCT变换后得到8×8的频率系数数组,该数组位置系数称为直流系数(DC),其他63个系数称为交流系数(AC)。
直接应用公式(3-1)进行计算其计算量较大,许多文献提出了该公式的优化计算方法,以提高运算效率,比较常见的是将该公式分解为两个一维的FDCT进行计算,分解后的公式为:(五)DCT系数的量化经过FDCT变换后的频率系数是一些浮点数,需进行均匀量化为JPEG可编码的整数系数,每一个FDCT变换后的频率系统使用一个量化器,每个量化器的步长Q(u,v)可由指定量化表给定,本文使用的量化表采用JPEG标准推荐的两个量化表,分别用于亮度和色差信号。
通过线性地改变量化表各元素数值可以控制图像压缩后的质量和压缩比。
可通过对量化表各元素乘一个调整因子fa来进行量化表元素数值调整,设所需图像质量系数为Q,则调整因子fa的计算表达式为:查看图片量化表各元素的新数值为:查看图片由于量化表为8位存储,计算的新数值应限制在1~255范围内。
量化后的DCT系数为:查看图片量化取整造成一定的数据精度损失,与原图像数据产生差异,这是造成JPEG图像压缩存在一定失真的主要原因。
通过改变Q的数值可以控制图像压缩比,一般而言,对中等复杂程度的彩色图像,对基本系统每8bit像素压缩到0.75~2bit时,解码恢复后的图像质量较好,可以满足大部分场合的应用。
(六)霍夫曼(Huffman)编码JPEG压缩最后一个步骤就是对量化后的频率系数进行编码处理,该编码的熵编码过程采用了Huffman编码,Huffman编码是一种基于概率统计的无损压缩技术,该算法首先统计信源出现的概率,再根据统计结果,出现概率高的符号使用短即时码表示,出现概率低的用长即时码表示,以达到压缩数据的目的。
应用标准霍夫曼编码对图像进行编码时效率很高,但需要对原始图像扫描两遍来统计每个像素值出现的概率和建立霍夫曼树并编码,数据压缩速度很慢。
实际应用中,为了提高处理速度,信源编码值通常根据信源查找相应的编码表得出。
Huffman码表以一个16字节的列表(BITS)规定,它包括长度从1到16的每一种码长的码字的数目,在列表后面紧跟着另外一个由8bit符号值组成的列表(HUFFVAL),该列表每一项被赋予一个Huffman码字,应用这两个列表可以获取可供信源查找Huffman编码值的码表。
在基本系统中,编码器最多在每个扫描中分别使用两个DC系数的Huffman码表和两个AC系数的Huffman码表(亮度分量和色度分量使用不同的Huffman码表),本文使用JPEG 推荐的4个Huffman码表,这4个表都来自对大量视频图像的统计平均,如果没有特别的要求,采用这4个码表就可以获得满意的压缩效果。
(七)DC编码在对量化后的系数进行熵编码之前,量化的直流系数被取出单独进行处理,对其进行差分预测编码(DPCM)。
DC系数为图像数据块的样本均值,包含了图像大部分的能量,数值也较大,通过差分预测编码可进一步去除数据块间平均值之间的相关性。
DPCM以同一个分量的前一个子块的量化直流系数DCi-1作为当前直流分量的预测值,然后再对预测误差DIFF 进行Huffman编码。
计算DIFF的表达式为:查看图片对DIFF的Huffman编码过程为:(1)根据DIFF值查幅度值分类表3-1取得差值幅度类别号SSSS和DIFF值实际保存的二进制码流CODE(DIFF);查看图片(2)根据标准DC系数Huffman码表计算得到的Huffman编码表查出SSSS值的Huffman 编码值HCODE(SSSS);(3)将SSSS的Huffman编码值和DIFF的实际保存值合并得到DC系数编码值HCODE(SSSS)CODE(DIFF),完成DC系数的编码。
(八)AC编码对量化后的63个AC系数可以观察到有许多系数值为零,首先通过对AC系数的之字形(Zig-Zag)扫描和0-RLE行程编码压缩掉这些0系数。
按照如图3-2所示的扫描次序将二维的AC系数按一维次序读出可将AC系数转换成Zig-Zag序列,该转换可以增加行程中连续的0系数值个数。
查看图片图2 Zig-Zag扫描次序0-RLE行程编码依次遍历Zig-Zag序列,当遍历到不为零的系数VAL(AC)时,计算该系数前面零的个数NUM(ZERO),然后用(NUM(ZERO),VAL(AC))进行表示,两部分刚好占用一个byte(分别占用4bit),对整个序列应用该方式进行表示。
如果最后一个非零的AC 系数不是序列的最后一个则在最后应加上结束标记EOB,EOB通常为(0,0)。
当序列中包含16个连续的零时则用(15,0)进行表示,可用多个(15,0)来表示多个16个连续的零。
最后再对0-RLE行程编码后的序列以(NUM(ZERO),VAL(AC))为单元进行Huffman编码,编码过程如下:(1)按序列顺序先后取出一个(NUM(ZERO),VAL(AC))单元,对VAL(AC)查幅度值分类表取得幅度类别号SSSS和VAL(AC)值实际保存的二进制码流CODE(VAL(AC));(2)再根据标准AC系数Huffman码表计算得到的Huffman编码表查出(NUM(ZERO),SSSS)的Huffman编码值HCODE((NUM(ZERO),SSSS));(3)组合HCODE((NUM(ZERO),SSSS))和CODE(VAL(AC))得到(NUM(ZERO),VAL (AC))单元的最后编码;(4)重复步骤(1)、(2)、(3)对其他(NUM(ZERO),VAL(AC))单元进行编码完成AC 系数的编码。
(九)压缩数据BIT码流整理将DC编码和AC编码的码流组合后便得到8×8图像块的JPEG压缩Bit码流,按照同样的步骤对每个MCU图像块进行编码,最后对压缩数据Bit码流以8位为单元进行存储,同时为了区别压缩数据与标记段(首字节为0xFF的段),当8位二进制码流值为0xFF时则在其后填充一个0x00字节。
此外,为了得到整数字节的熵编码字段,编码结束区域不完整字节通过填充“1”比特来实现完整化,如果这种填充中产生0xFF字节,则也在其后填充一个0x00字节。
整理完毕后将得到图像最终的JPEG压缩数据。
二JPEG文件组织结构应用JPEG压缩算法得到图像的压缩数据仅为JPEG文件的一部分,完整的JPEG文件由标记段和压缩数据两部分组成,标记段记录了JPEG图像的格式和解码信息。