基于Windows CE下JPEG图像的压缩技术
JPEG(JointPhotographic ExpertsGroup)是在国际标准组织(ISO)下从事静态影像压缩标准制定的委员会。JPEG图像由于有较高的压缩比,被广泛地应用于多媒体和网络程序中。由于嵌入式技术迅速发展, JPEG图像也广泛应用于其他各种嵌入式平台,如嵌入式Linux,W indowsCE。
在W indowsCE嵌入式平台下,由于W indowsCE. net4. 2及以前的版本微软公司并没有专门处理JPEG图像文件的库函数,所以在W indows CE.net4. 2及以前版本处理JPEG图像需要利用第三方编写的库。在W indowsCE 5. 0中微软提供了IImage组件,应用程序可以通过IImage组件对JPEG文件进行处理。JPEG图像压缩解压缩的编程比较复杂,但国外有很多公司、组织提供了大量操作JPEG的开放C语言资源库可以利用。
文中使用IJG(Independent JPEG Group)的ThomasG. Lane编写的JPEG库来进行JPEG压缩与解压缩过程,并设计了抽象基类以便于增加程序的可扩展性。
1 JPEG图像压缩与解压缩
1. 1 JPEG压缩的基本原理
JPEG是一个复杂图像的压缩技术。这里采用了JPEG基准模式对图像进行压缩。在基准模式中,熵编码采用哈夫曼编码方法[1-2]。图1是JPEG压缩与解压缩过程的图解。
1. 2 BMP图像的灰度化
由RGB空间向YcbCr空间转换的公式如下:
1. 3 利用DCT对空间频率的变换
离散余弦变换(DCT)实现将一组光强数据转换成频率数据[3]。压缩时,将源图像数据分成8×8像素构成的像块的集合。经过零偏置将每一取样值从0 ~ 255转为-128 ~+127,再做DCT处理。解压缩是正向变换的反过程。DCT和IDCT分别由式(2), (3)实现:
式中:f(x,y)为原始图像数据空间的函数;x为像素所处的行,y为像素所处的列;u和v对应频域空间的行和列。式(2), (3)中:
1.4 量化
对于前面得到的8×8个空间频率振幅值按比例缩小,并取其最接近的整数值的处理过程称为量化。JPEG标准中推荐的量化表见表1。共有64个元素,按照从上到下,从左到右的顺序与DCT变换后的幅值对应,每一元素记为Q(u,v),u,v对应行和列,量化公式为式(4),解码时反量化公式为式(5)。
式中,FQ(u,v)为量化后的幅值,FQ′(u,v)为反量化后的幅值,IntegerRound进行四舍五入。
1.5 熵编码
在JPEG图像压缩的熵编码采用哈夫曼编码。哈夫曼编码基于不同符号的概率分布,对出现次数较多的符号赋予较短的代码,出现次数较少的符号赋予较长的代码[4]。
下面举例说明哈夫曼编码的原理。
假设由A,B,C,D,E,F,G组成7个字符组成原始信息,对原始信息统计得到各个字符的出现概率如表2所示。
相关文章
- 2022-12-18基于人机工程学的网球轮椅设计
- 2023-06-12A.C.Cleland公式在氨制冷循环最佳中间温度求解中的应用
- 2023-12-21用滑移线法解正挤压实心件的准确方法
- 2024-03-02混合动力车用电池均衡方案研究
- 2023-09-01工控机管理的数字式多通道超声波探伤系统
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。