欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于图片存储格式的整理(JPEG格式介绍)

程序员文章站 2022-07-04 21:40:26
jpg jpg全名是jpeg 。jpeg 图片以 24 位颜色存储单个光栅图像。jpeg 是与平台无关的格式,支持*别的压缩,不过,这种压缩是有损耗的。渐近式 jpe...

jpg

jpg全名是jpeg 。jpeg 图片以 24 位颜色存储单个光栅图像。jpeg 是与平台无关的格式,支持*别的压缩,不过,这种压缩是有损耗的。渐近式 jpeg 文件支持交错。

jpg功能  

可以提高或降低 jpeg文件压缩的级别。但是,文件大小是以牺牲图像质量为代价的。压缩比率可以高达 100:1。(jpeg 格式可在 10:1 到 20:1 的比率下轻松地压缩文件,而图片质量不会下降。)jpeg 压缩可以很好地处理写实摄影作品。但是,对于颜色较少、对比级别强烈、实心边框或纯色区域大的较简单的作品,jpeg 压缩无法提供理想的结果。有时,压缩比率会低到 5:1,严重损失了图片完整性。这一损失产生的原因是,jpeg 压缩方案可以很好地压缩类似的色调,但是 jpeg 压缩方案不能很好地处理亮度的强烈差异或处理纯色区域。

jpg优缺点

  优点:摄影作品或写实作品支持高级压缩。

  利用可变的压缩比可以控制文件大小。
  支持交错(对于渐近式 jpeg 文件)。
  广泛支持internet 标准。
  由于体积小,jpg在万维网中被用来储存和传输照片的格式。

  缺点:有损耗压缩会使原始图片数据质量下降。

  当您编辑和重新保存 jpeg 文件时,jpeg 会混合原始图片数据的质量下降。这种下降是累积性的。
  jpeg 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。jpg使用范围
  jpg格式是一种图片格式,是一种比较常见的图画格式,如果你的图片是其他格式,可以通过以下方法转化:
  1、photoshop ,打开图画以后,按另存为,下面格式那里选择jpg格式就是了,这个方法比较简单,而且适合画质比较好的,要求比较高的图片转换。
  2、如果你要求不高,你直接通过windows附带的图画程序,选择jpg格式就可以,这种转换方式画质不高
  如果jpg格式转其他格式,这样的方法同样适用。

jpg压缩模式

  jpeg (joint photographic experts group)是由国际标准组织(iso:international standardization organization)和国际电话电报咨询委员会(ccitt:consultation commitee of the international telephone and telegraph)为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用的、应用最广的图像压缩标准。jpeg由于可以提供有损压缩,因此压缩比可以达到其他传统压缩算法无法比拟的程度。
  jpeg的压缩模式有以下几种:
  顺序式编码(sequential encoding)
  一次将图像由左到右、由上到下顺序处理。
  递增式编码(progressive encoding)
  当图像传输的时间较长时,可将图像分数次处理,以从模糊到清晰的方式来传送图像(效果类似gif在网络上的传输)。
  无失真编码(lossless encoding)
  阶梯式编码(hierarchical encoding)
  图像以数种分辨率来压缩,其目的是为了让具有高分辨率的图像也可以在较低分辨率的设备上显示。

jpg压缩步骤

  由于jpeg的无损压缩方式并不比其他的压缩方法更优秀,因此我们着重来看它的有损压缩。以一幅24位彩色图像为例,jpeg的压缩步骤分为:

  1.颜色转换  

  由于jpeg只支持yuv颜色模式的数据结构,而不支持rgb图像数据结构,所以在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。各个值的转换可以通过下面的转换公式计算得出:
  y=0.299r+0.587g+0.114b
  u=-0.169r-0.3313g+0.5b
  v=0.5r-0.4187g-0.0813b
  其中,y表示亮度,u和v表示颜色。

  转换完成之后还需要进行数据采样。一般采用的采样比例是4:1:1或4:2:2。由于在执行了此项工作之后,每两行数据只保留一行,因此,采样后图像数据量将压缩为原来的一半。

  2.dct变换

  dct(discrete consine transform)是将图像信号在频率域上进行变换,分离出高频和低频信息的处理过程。然后再对图像的高频部分(即图像细节)进行压缩,以达到压缩图像数据的目的。
  首先将图像划分为多个8*8的矩阵。然后对每一个矩阵作dct变换(变换公式此略)。变换后得到一个频率系数矩阵,其中的频率系数都是浮点数。

  3.量化  

  由于在后面编码过程中使用的码本都是整数,因此需要对变换后的频率系数进行量化,将之转换为整数。
  由于进行数据量化后,矩阵中的数据都是近似值,和原始图像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。
  在这一过程中,质量因子的选取至为重要。值选得过大,可以大幅度提高压缩比,但是图像质量就比较差;反之,质量因子越小(最小为1),图像重建质量越好,但是压缩比越低。对此,iso已经制定了一组供jpeg代码实现者使用的标准量化值。

  4.编码  

  从前面过程我们可以看到,颜色转换完成到编码之前,图像并没有得到进一步的压缩,dct变换和量化可以说是为编码阶段做准备。
  编码采用两种机制:一是0值的行程长度编码;二是熵编码(entropy coding)。
  在jpeg中,采用曲徊序列,即以矩阵对角线的法线方向作“之”字排列矩阵中的元素。这样做的优点是使得靠近矩阵左上角、值比较大的元素排列在行程的前面,而行程的后面所排列的矩阵元素基本上为0值。行程长度编码是非常简单和常用的编码方式,在此不再赘述。

  编码实际上是一种基于统计特性的编码方法。在jpeg中允许采用huffman编码或者算术编码