您的位置:首页 > 其它

手机开发实战150——JPEG介绍1

2016-06-12 21:56 169 查看
JPEG格式

标准介绍

JPEG标准,即国际多灰度静止图像数字压缩编码标准,由JPEG专家组(Joint Photographic  Experts Group)于1991年3月提出的ISO
CD10918号建议草案而来,其标准号为ISO 10918-1。 

      JPEG是一个适用于彩色和单色多灰度或连续色调静止数字图像的压缩标准。 JPEG标准的压缩编码算法是“多灰度静止图像的数字压缩编码”。

      (1)JPEG标准的组成部分  

JPEG标准包括3部分,即编码器、译码器和交换格式。

  编码器将原始图像的编码压缩成压缩数据。

  译码器将压缩的图像数据还原成原始图像数据。

  图像压缩数据以一定的交换格式存储,格式中包括编码过程中采用的码表等。

      JPEG标准包括基于DPCM(差分脉冲编码调制)的无损压缩编码,基于DCT(离散余弦变换)和 Fuffman编码的有损压缩算法两个部分。前者不会产生失真,但压缩比很小;后一种算法进行图像压缩信息虽有损失,但压缩比可以很大,例如压缩20倍左右时,人眼基本上看不出失真。 

      目前我们对JPEG标准的应用主要是其高压缩比的有损压缩算法。  

      (2)JPEG算法的三个基本步骤  

      JPEG算法操作可分成以下三个基本步骤:  

      1) 通过离散余弦变换(DCT)去除数据冗余。  

      2) 使用量化表对DCT系数进行量化,量化表是根据人类视觉系统和压缩图像类型的特点进行优化的量化系数矩阵。  

      3) 对量化后的DCT系数进行编码使其熵达到最小,熵编码采用Fuffman可变字长编码。  

      JPEG标准包括以下4种运行模式。

  基本系统(Baseline System):基于离散余弦变换DCT(Discrete
Cosine Transform)进行从左到右、从上到下的顺序扫描编码和重建图像,实现信息有丢失的图像压缩,但重建图像的质量要达到难以观察出图像损伤的要求。它采用8×8像素自适应DCT算法量化以及哈夫曼(Huffman)型的熵编码器。

  扩展系统(Extended System):选用基于离散余弦变换DCT的递增工作方式,编码过程采用具有自适应能力的算术编码。

  无失真的预测编码:采用帧内预测编码及哈夫曼编码(或算术编码),可保证重建图像与原始图像完全一样(即均方误差为零)。

分层编码:以多种分辨率对图像进行编码,按不同的应用要求可以获得不同分辨率或质量的图像。

JPEG2000标准同样由JPEG 组织负责制定。自1997年3月开始筹划,于2000年3月出台。其标准号为ISO
15444。  

      (1)JPEG2000编码原理  

       JPEG 2000与传统 JPEG 最大的不同,在于它放弃了 JPEG 所采用的以离散馀弦转换(DCT)为主的区块编码方式,而改采用以小波转换(Wavelet
transform)为主的多解析编码方式。小波转换的主要目的是要将图像的频率成分抽取出来,分别加以控制及编码。  

      (2)JPEG2000的优点:  

      1) JPEG2000作为JPEG升级标准,高压缩比(低码率)是其目标,其压缩率比JPEG高约30%左右。  

      2) JPEG2000同时支持有损和无损压缩,其无损压缩具有很好的实用价值,因此它适合保存重要图片。  

      3) JPEG2000的一个极其重要的特征就是采用小波变换后,JPEG2000 能实现渐进传输,这也就是我们常说的"渐现"特性。它先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示,而不必是像现在的 JPEG 一样,由上到下慢慢显示。  

      4) JPEG2000能方便的实现对码流的随机存取与处理,保证位错误的鲁棒性。 

      5) JPEG2000支持所谓的"感兴趣区域"特性,你可以任意指定图像上你感兴趣区域的压缩质量,还可以选择指定的部份先解压缩,这样我们就可以很方便的突出图片中的重点进行浏览。  

   JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供11级压缩级别,以0—10级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。

算法介绍

JPEG标准定义了两种基本的压缩算法,即基于空间线性预测技术差分脉冲码调制DPCM(Differential Pulse Code Modulation)的无失真压缩算法和基于离散余弦DCT(Discrete
Cosine Transform)的有失真压缩算法。

  JPEG压缩标准的压缩比是通过量化因子(Q因子)来控制的。Q因子用来确定原始图像的采样精度,并产生一个JPEG量化矩阵,即:

  式中QM[i,j]为量化矩阵,Q是量化因子,V[i,j]是图像缺省清晰度表。

  量化矩阵用来量化DCT变换产生的频率系数,量化后的系数值减少,0值的数目大大增加。Q因子越大,量化后的0值越多,压缩比越大,因此Q因子决定着JPEG的压缩比。

JPEG的无失真压缩率为4:1,有失真压缩率为10:1~100:1。在压缩率小于40:1时,人眼基本上分辨不出图像的效果变化,可认为是“主观无失真压缩”。

JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像数据及其相关信息,使用比较广泛的还是JPEG文件交换格式(JPEG
File Interchange Format,JFIF)版本号为1.02。这是1992年9月由在C-Cube
Microsystems公司工作的Eric Hamilton提出的。此外还有TIFF JPEG等格式,但由于这种格式比较复杂,因此大多数应用程序都支持JFIF文件交换格式。

     JPEG文件使用的颜色空间是CCIR 601推荐标准进行的彩色空间(参看第7章)。在这个彩色空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。从RGB转换成YCbCr空间时,使用下面的精确的转换关系:

       Y = 256 * E'y

      Cb = 256 * [E'Cb] + 128

      Cr = 256 * [E'Cr] + 128
其中亮度电平E'y和色差电平E'Cb和E'Cb分别是CCIR
601定义的参数。由于E'y的范围是0~1,E'Cb和E'Cb的范围是-0.5~+0.5,因此Y,
Cb和Cr的最大值必须要箝到255。于是RGB和YCbCr之间的转换关系需要按照下面的方法计算。

(1) 从RGB转换成YCbCr

YCbCr(256级)分量可直接从用8位表示的RGB分量计算得到:

      Y =   0.299 R + 0.587 G  +
0.114 B

    Cb = - 0.1687R - 0.3313G  + 0.5   B
+ 128

    Cr = 0.5 R - 0.4187G - 0.0813 B + 128

需要注意的是不是所有图像文件格式都按照R0,G0,B0,……
Rn,Gn,Bn的次序存储样本数据,因此在RGB文件转换成JFIF文件时需要首先验证RGB的次序。

(2) 从YCbCr转换成RGB

RGB分量可直接从YCbCr(256级)分量计算得到:

     R = Y                 + 1.402 (Cr-128)

      G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)

      B = Y + 1.772 (Cb-128)

     在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: