碧波液压网 欢迎你,游客。 登录 注册

基于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所示。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论