鉴于大家对电气工程与自动化类别十分关注,我们编辑小组在此为大家搜集整理了“JPEG格式文件的解压缩及其算法的实现”一文,供大家参考学习
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
2 JPEG编解码技术及实现2.1 JPEG标准的工作模式为了适用于单色或彩色图像,JPEG对每一个图像分量单独编码。对于单 色图像,它只有一个分量,反映图像的亮度。对于彩色图像,一个图像分量是 指一种彩色分量。例如:RGB彩色图像,R、G、B分别构成单独编码的三个 图像分量;对于YUV彩色图像,亮度Y是单独分量,色差U和V各构成一个 单独图像分量,但各图像分量可能用不同的分辨率,例如,在YUV422格式中 Y分量使用720×576的分辨率,而U和V分量可以采用360×576的分辨率。 对每个图像分量,JPEG定义了4种工作模式 [1]: 1)无损编码模式 可以保证无失真地重建原始图像的采样值,其压缩比低于有失真压缩编码 模式。 2)顺序编码模式 每一个图像分量按从左到右,从上到下的顺序扫描,一次扫描完成编码。 3)累进编码模式 图像编码在多次扫描中完成。在数据传输时间长,解码端希望收到的图像 是多次由粗糙到清晰的累进过程显示的情况下可以使用累进编码模式。 4)分层编码模式 以各种分辨率对图像进行编码,可以根据不同的要求,获得不同分辨率的图像。 其中无损编码模式是基于差分脉冲编码(Differential Pulse CodeModulation,DPCM)算法并用Huffman编码或算术熵编码进行编码的无损压缩算法。另外3种是基于离散余弦变换(DCT),并对变换系数经过量化和熵编码的有损压缩算法。 JPEG对每个不同的图像分量可以采用不同的量化参数和熵编码码表,JPEG本身并不进行不同色彩空间图像分量的转换。如果对RGB彩色图像转换成YUV分量再进行压缩,这个转换要由JPEG以外的功能单元完成。正是由于JPEG的压缩比高,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图像格式之一就是JPEG(另一种是GIF)。JPEG实际上定义了3种编码系统: (1)基于DCT的有损编码基本系统,适用于绝大多数压缩应用场合。 (2)用于高压缩比、高精度或渐进重建应用的扩展编码系统。 (3)用于无失真应用场合的无损系统。 每个编码解码器必须实现一个必备的基本系统(也称为基本顺序编码器)。基本系统必须合理地解压缩彩色图像,保持高压缩率并能处理从4bit/像素到16bit/像素的图像。 扩展编码系统包括了各种的编码方式,如长度可变编码、渐进编码以及分层模式的编码。这些特殊用途的扩展可适用于各种应用。这些编码方法都是基本顺序编码方法的扩展。 特殊无损功能(也称为预测无损编码法)确保了图像在压缩的分辨率下,解压缩没有造成初始源图像(即图像的数字化形式)中任何细节的损失。 2.2 JPEG压缩过程JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程为图2所示: 2.21. 色彩模型 JPEG 的图片使用的是 YCrCb 颜色模型, 而不是计算机上最常用的 RGB. 关于色彩模型, 这里不多阐述. 只是说明, YCrCb 模型更适合图形压缩. 因为人眼对图片上的亮度 Y 的变化远比色度 C 的变化敏感. 我们完全可以每个点保存一个 8bit 的亮度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化. 所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节. 而现在仅需要 4+2=6 字节; 平均每个点占 12bit. 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里都是按 12bit 一个点来存放的, 我们简写为 YUV12. [R G B] -> [Y Cb Cr] 转换 (R,G,B 都是 8bit unsigned) | Y | | 0.299 0.587 0.114 | | R | | 0 | | Cb | = |- 0.1687 - 0.3313 0.5 | * | G | + |128| | Cr | | 0.5 - 0.4187 - 0.0813| | B | |128| Y = 0.299*R + 0.587*G + 0.114*B (亮度) Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128 Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128 [Y,Cb,Cr] -> [R,G,B] 转换 R = Y + 1.402 *(Cr-128) G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128) B = Y + 1.772 *(Cb-128) 一般, C 值 (包括 Cb Cr) 应该是一个有符号的数字, 但这里被处理过了, 方法是加上了 128. JPEG 里的数据都是无符号 8bit 的. |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |