JPEG压缩原理

原创 2012年10月27日 11:04:54

本文介绍JPEG压缩技术的原理,对于DCT变换、Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架。


1. JPEG压缩的编解码互逆过程:

  • 编码


  • 解码






2. 具体过程:(这里仅以编码为例,解码过程为其逆过程)

       

  A. 将原始图像分为8*8的小块, 每个block里有64pixels:




     



    B. 将图像中每个8*8的block进行DCT变换:

数据压缩中有很多变换,比如KLT(Karhunen-Loeve Transform),这里我们用的是DCT离散余弦变换。和FFT一样,DCT也是将信号从时域到频域的变换,不同的是DCT中变换结果没有复数,全是实数。每8*8个original pixels都变成了另外8*8个数字,变换后的每一个数都是由original 64 data通过basis function组合而得的,如下图所示为DCT谱中6个元素的由来。


低频部分集中在每个8*8块的左上角,高频部分在右下角所谓JPEG的有损压缩,损的是量化过程中的高频部分。为什么呢?因为有这样一个前提:低频部分比高频部分要重要得多,romove 50%的高频信息可能对于编码信息只损失了5%。




    



    C. 量化:

所谓量化就是用像素值÷量化表对应值所得的结果。由于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。JPEG使用的颜色是YUV格式。我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。所以上面所说的量化表通常有两张,一张是针对Y的;一张是针对UV的。

通过量化可以reducing the number of bits and eliminating some of the components,达到通低频减高频的效果,如下图所示就是两张量化表的例子. 


比如左边那个量化表,最右下角的高频÷16,这样原先DCT后[-127,127]的范围就变成了[-7,7],固然减少了码字(从8位减至4位)。



    


    D. 编码分类:

编码信息分两类,一类是每个8*8格子F中的[0,0]位置上元素,这是DC(直流分量),代表8*8个子块的平均值,JPEG中对F[0,0]单独编码,由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。

另一类是8×8块的其它63个子块,即交流(AC)系数,采用行程编码(游程编码Run-length encode,RLE)。这里出现一个问题:这63个系数应该按照怎么样的顺序排列?为了保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数,这63个元素采用了“之”字型(Zig-Zag)的排列方法,如下图所示。






    E. 编码格式:

上面,我们得到了DC码字和 AC行程码字。为了进一步提高压缩比,需要对RLE编码结果再进行熵编码,这里选用Huffman编码。Huffman编码具体不讲啦,详细地看我以前的这篇Huffman编码——原理与实现吧





Reference:

1. http://jilie0226.blog.163.com/blog/static/36792254200902072746964/

2. http://www.stat.ncsu.edu/people/martin/courses/st783/JPEG%20(Transform%20compression).htm

3. http://fourier.eng.hmc.edu/e161/lectures/klt/node3.html

4. http://tomjark.blog.163.com/blog/static/14600788201010137309298/

5. http://blog.chinaunix.net/uid-24517893-id-3074462.html



关于Compression更多的学习资料将继续更新,敬请关注本博客和新浪微博Rachel____Zhang




JPEG压缩原理与DCT离散余弦变换

入门介绍----JPEG压缩原理与DCT离散余弦变换,能让你有个大致的理解。
  • newchenxf
  • newchenxf
  • 2016年06月20日 15:58
  • 12422

【数据压缩】JPEG标准与原理解析

为了满足不同应用的需求,JPEG标准包括两种基本的压缩方法:1.基于DCT变换的有损压缩算法;2.基于预测方法的无损压缩算法。基于DCT的基线系统有损压缩技术是到目前为止应用最为广泛的一种压缩方法。 ...
  • luoshixian099
  • luoshixian099
  • 2015年12月24日 19:26
  • 6660

jpeg图像压缩原理

step1.颜色模式转换 JPEG只支持YUV颜色模式(准确说是YCbCr颜色模式)的数据结构,而不支持RGB图像数据结构,所以在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。YUV色彩模型来...
  • Quason
  • Quason
  • 2015年06月24日 09:49
  • 4865

JPEG系列三 JPEG图像压缩

本文介绍JPEG图片压缩算法,主要介绍了图片分割、余弦变换、量化、行程编码、哈夫曼编码,最后是一个JPEG压缩图片实例分析。...
  • shelldon
  • shelldon
  • 2017年01月08日 16:12
  • 3255

JPEG有损压缩过程介绍

一、JPEG压缩是有损压缩,它利用了人的视角系统的特性,使用量化和无损压缩编码相结合来去掉视角的冗余信息和数据本身的冗余信息。JPEG算法框图如图: 二、压缩编码大致分成三个步骤: 1、使用...
  • qq_29859497
  • qq_29859497
  • 2017年06月04日 18:06
  • 1240

JPEG压缩技术原理

本文介绍JPEG压缩技术的原理,对于DCT变换、Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架。 1. JPEG压缩的编解码互逆过程: 编码 ...
  • redline2005
  • redline2005
  • 2014年04月19日 10:38
  • 1980

JPEG压缩学习笔记

JPEG压缩学习及其C语言实现笔记 JPEG压缩流程 1.颜色转换(RGB->YUV) 2.DCT变换 (分块8*8进行DCT变换) 3.量化(-996, 19, 0, 2,0, 0, 0, ...
  • u012557434
  • u012557434
  • 2015年05月06日 17:00
  • 1307

JPEG图像压缩算法流程详解

转自http://blog.csdn.net/carson2005/article/details/7753499 JPEG是Joint Photographic Exports Group的英文缩...
  • qingkongyeyue
  • qingkongyeyue
  • 2017年04月22日 15:23
  • 4492

JPEG压缩图解

本文介绍JPEG压缩技术的原理,对于DCT变换、Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架。 1. JPEG压缩的编解码互逆过程: 编码 ...
  • woshinia
  • woshinia
  • 2013年03月13日 14:34
  • 1493

JPEG图像压缩算法流程详解

JPEG是Joint Photographic Exports Group的英文缩写,中文称之为联合图像专家小组。该小组隶属于ISO国际标准化组织,主要负责定制静态数字图像的编码方法,即所谓的JPEG...
  • carson2005
  • carson2005
  • 2012年07月16日 23:54
  • 91210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JPEG压缩原理
举报原因:
原因补充:

(最多只允许输入30个字)