当前位置:
文档之家› 基于JPEG标准的静态图像压缩算法概述
基于JPEG标准的静态图像压缩算法概述
JPEG 标准中采用线性均匀量化器,对 64 个 DCT 系数除以量化步长并四舍五入取整, 量化步长由量化表决定。JPEG 标准中使用了两种量化表:亮度量化表和色度量化表。
2.4 Z 字形编码(zigzag scan)
量化后的 AC 系数通常会有许多零值,以 Z 字形路径编排,增加了连续“0”系数的个 数,这为下一步编码提供了很大方便,节省 了码率。如图 2 所示。
中国科技论文在线
基于 JPEG 标准的静态图像压缩算法概述
张元伟 1 ,刘彦隆 2
太原理工大学信息学院,太原(030024)
E-mail: zyw7457@
摘 要:本文主要论述了基本 JPEG 标准的编码方法。其中包括采样、离散余弦变换、量化 和熵编码等几个主要步骤,最后,用 Visual C++编程实现把一幅 BMP 格式的图像转换为 JPEG 格式图像,进一步显示 JPEG 标准在图像压缩中的优越性。 关键词:JPEG 标准;采样;离散余弦变换;量化;熵编码 中图分类号:TN919
Abstract This paper mainly introduce coding method of the baseline JPEG standard. It includes several steps, which is sampling、discrete cosine transform、quantification and entropy coding etc. Finally, BMP image is translated into JPEG image with Visual C++, and demonstrate the superiority of JPEG standard in image compression. Key words: standard of JPEG; sampling; discrete cosine transform; quantification; Entropy coding
格式为(符号 1)(符号 2) 符号 1 表示了两条信息,称为“行程”和“长度”。“行程”是在 Z 字形矩阵中位于非零 AC 系数前的连续零值 AC 系数的个数,“长度”是对 AC 系数的幅度进行编码所用的位数。 符号 2 表示了 AC 系数幅度值。
2.7 熵编码(entropy coding)
JPEG 标准具体规定了 Huffman 编码[4]和算术编码两种熵编码方式。JPEG 基本顺序编码 解码器具体规定用 Huffman 编码,但 JPEG 并没有限制对任何 JPEG 算法用 Huffman 编码方 式或算术编码方式。熵编码可以分成两步进行,首先把 DC 码和行程码转换成中间序列(2.5 和 2.6 已做),然后给这些符号赋以变长码字。
1.引言
随着多媒体技术的快速发展,静态图像的应用越来越广泛,但存在一个主要问题就是数 据量过于庞大。例如,一张 A4(210mm×297mm)幅面的照片,若用中等分辨率(300dpi)的扫 描仪按真彩色扫描,其数据量共有(300×210/25.4)×(300×297/25.4)个像素,每个像素占 3 个字节,其数据量为 26M 字节。这样大容量的图像信息会给存储器的存储容量、通信干线 信道的带宽以及计算机的处理速度增加了极大的压力。因此,图像必须进行压缩。
霍夫曼编码器可以使用很简单的查表方法进行编码。编码时,每个矩阵数据的 DC 值与 63 个 AC 值,将分别使用不同的 Huffman 编码表,而亮度与色度也需要不同的 Huffman 编 码表,所以一共需要 4 个编码表,才能顺利地完成 JPEG 编码工作。
实现上述几个步骤,即完成一幅图像的 JPEG 压缩。
2.1 颜色模式转化及取样
2.1.1 颜色模式转化
RGB 色彩系统是我们最常用的表示颜色的方式,JPEG 采用的是 YCbCr 色彩系统,想要 用 JPEG 基本压缩法处理全彩色图像,得先把 RGB 颜色模式图像数据转化为 YCbCr 颜色模 式数据。其中 Y 代表明视度,Cb 和 Cr 则代表色度和饱和度。其转化公式如下:
图5 对JPEG文件压缩编码的过程图
本文通过实验,如果选择 75%的图像质量,可得到 20:1 的压缩率;选择 55%的图像质 量,可得到 30:1 的压缩率;选择 35%的图像质量,可得到 40:1 的压缩率,只要压缩率不大 于 40 倍,图像压缩后的效果质量用肉眼无法区别。可见 JPEG 标准的优越性(限于篇幅, 这里就不给出压缩后的效果图)。
经过 DCT 变换后的矩阵数据自然数为频率系数,这些系数以 F (0,0) 的值最大,称为
DC,其余的 63 个频率系数则多半是一些接近于 0 的正负浮点数,一概称之为 AC。
2.3 量化(quantization)
量化的作用是在保持一定图像质量的前提下,丢弃图像中对视觉效果影响不大的信息, 就是减少非“0”系数的幅度以及增加“0”值系数的数目。量化是图像下降的最主要原因[3]。
从以上测试结果看,设计实现的 JPEG 压缩算法较好地实现了对于 24 位 bmp 图像的压 缩,压缩比较高,且压缩图像与原始图像相比差异几乎无法察觉。
4.结束语
本文系统的对 JPEG 编码的基本原理进行了阐述,并给出了 BMP 格式图像与 JPEG 格 式图像之间转换的软件实现,使读者对 JPEG 的压缩效果有了一个更直观的了解。虽然图像 压缩了很多,但图像视觉效果没有什么差异。JPEG 标准的优点是在自然景观与再现图片方 面表现很出色,且其图像文件比较小,目前 WEB 上 80%的图像都是 JPEG 格式。缺点是只 能处理静态图像,不能处理活动景物。 随着技术的进步,JPEG 标准将会得到更进一步的发 展和应用。
经过 Z 字形编排后,就把一个 8×8 的矩 阵变成一个 1×64 的矢量,频率较低的系数 放在矢量的顶部。
2.5 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码
在同一个图像分量中取得每一个 DC 值与前一个 DC 值的差值来编码。如图 3 所示。
原因是由于在连续色调的图像中,其差值多半比原值小,对差值进行编码所需的位数, 会比对原值进行编码所需的位数少许多。
3.1 程序实现的主要代码
CRWJpegExpDoc∷OnOpenDocument(LPCTSTR lpszPathName)//显示要打开的文件; CRWJpegExpDoc∷OnSaveDocument(LPCTSTR lpszPathName)//保存变换后的图像; CFormatJpeg JpegDlg//创建 Dialog 对话框; CJpeg jpeg//创建 CJpeg 类,实现 JPEG 文件转换;
Overview of Static Image Compression Algorithm Base on the JPEG Standard
ZHANG Yuan Wei1, LIU Yan Long2
Department of Information and Communication engineering,Taiyuan University of Technology, Taiyuan (030024)
-4-
中国科技论文在线
Jpeg.Save(lpszPathName.m_pDib,JpegDlg.m_bColor,JpegDlg.m_nQuality)// 将 文 件 存 储 为 JPEG 格式。
3.2 程序结果及分析
RWJpegExp 程序实现对 JPEG 文件压缩编码的过程如图 5 所示
-3-
中国科技论文在线
2.6 使用行程长度编码(RLE)对交流系数(AC)进行编码
量化 AC 系数的特点是 1×64 矢量中包含有许多“0”系数,并且许多“0”是连续的,因此 使用非常简单和直观的游程长度编码(RLE)对它们进行编码。
JPEG 使用一个字节的高 4 位来表示连续“0”的个数,而使用它的低 4 位来表示编码下一 个非“0”系数所需要的位数,跟在它后面的是量化 AC 系数的数值。如下图 4 所示
长宽不是 8 的倍数,都需要先补成 8 的倍数。
2.2.2 DCT 变换
DCT 变换使用下式计算:
F (u, v)
=
1
77
C(u)C(v)[∑ ∑
f (i, j) cos (2i + 1)uπ cos (2i + 1)vπ ]
4
i=0 j=0
16
16
其中: u, v 代表 DCT 变换后矩阵内某个数值的坐标位置
JPEG 算法流程如图 1 所示。
JPEG 压缩算法基本过程可分为如下几个步骤实现。 ● 颜色模式转化及取样。 ● 离散余弦变换(DCT)。
-1-
中国科技论文在线
● 量化(quantization)。 ● Z 字形编码(zigzag scan)。 ● 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。 ● 使用行程长度编码(RLE)对交流系数(AC)进行编码。 ● 熵编码(entropy coding)。
因为 JPEG 里的数据都是无符号 8 比特数据,因此 C 值在这里都加上了 128。
2.1.2 取样
因为人眼对图片上亮度 Y 的变化远比色彩 C 的变化敏感,所以采用部分取样可达到图 像压缩但几乎不影响图像质量。
目前在市面上支持 JPEG 的应用软件,通常提供两种部分取样的方法:YUV411 和 YUV422(YCbCr 是从 YUV[2]衍生来的),它们代表的意义是 Y,Cb,Cr 3 个数据取样比例。 比如:YUV411 取样,原来用 RGB 模型,4 个点需要 4×3=12 字节,而现在仅需要 4+2=6 字节,具有 50%的压缩比例。
2.图像编码压缩算法
JPEG[1]是“联合图像专家小组”(Joint Photographic Experts Group)的简称,是由 ISO 和 CCITT 于 1986 年底联合制定的连续色调的静止图像压缩标准。它是一个适用范围广泛的通 用标准,不仅适用于静止图像的压缩,也适用于电视图像序列的帧内图像的压缩。1992 年 正式成为国际标准(ISO10918)。