当前位置:首页> 压缩教程> 其他教程> jpg和jpeg有什么不同?之间有着什么样的联系?

jpg和jpeg有什么不同?之间有着什么样的联系?

发布时间:2021-06-22 15:30:05        出处:易压缩        阅读数:1329

  您也许对JPEG和JPG看起来如此相似感到疑惑,它们究竟是同一种图片格式吗?JPEG与JPG之间究竟有什么关系?要回答这个问题,我们必须先理解JPEG的来源。


  JPEG,全名为"JohnPhotographicExpertsyup",译成中文,是1986年成立的“图像联合专家组”,1992年,它发布了“JPEG标准”,这是一项专门对图像进行压缩的标准。


jpeg


  在JPG、JPEG、JFIFI和JIF等文件格式中,使用JPEG标准压缩的图片文件,被称为"JPEG文件",JIG文件的扩展名最常见。


  若JPEG在此指的是联合图像专家小组,那么JPEG和JPG就是制定压缩标准的组织和采用该组织制定的压缩标准的一种压缩方式之间的关系;若JPEG在此指的是JPEG压缩标准,那么JPEG和JPG就是一种压缩方式,图像的压缩方式和采用该标准的压缩方式之间的关系;

JPEG是指JPG的后缀名,JPEG与JPG的关系,就是JPEG标准中JPEG压缩图像的两种不同格式。


颜色空间变换

  为了压缩图片,首先要知道图片中包含的内容是什么,在分解图片内容时,首先要做的是颜色空间转换。色彩空间是指描述图像颜色的一组数,比较常用的色彩空间有RGB、CMYK。


  也就是说,RGB用三组数值,分别代表红、绿、蓝,而红、绿、蓝三种颜色在不同程度上被配比后,就会呈现出不同的颜色。一般RGB颜色模式用于显示显示器。


  CMYK表示为四组数,分别表示色、品红色、色、艳,而青、品红色、色、艳四种颜色经过不同程度的配比,就会出现不同的颜色。CMYK色彩模型通常用于印刷。


  如何才能在JPEG压缩图像的过程中,用数字表达图像内容?实际上,JPEG定量分析图像颜色时,不使用RGB模式,也不使用CMYK模式,而是使用YCbCr模式,其中,Y是一种颜色度(蓝色),Cb是一种颜色度(红色)。所以问题来了,为什么JPEG不采用RGB和CMYK的颜色模型,而采用YCbCr这样一种看似奇葩的颜色模式?这里也要谈到人类眼睛的工作机制。


  人的眼睛能够感知图像,是因为人的眼睛包含了视锥细胞和视杆细胞,其中视锥细胞具有感知颜色的能力,视杆细胞则具有知性的能力,通常,人的眼睛中视杆细胞的数目较多,因此人的眼睛比颜色更敏感。比如当你熄灯的时候,你可以在黑暗的光线下逐渐看到周围的事物,而对于周围事物的颜色,你可能就不那么敏感了。而JPEG正是利用了人眼的这个特点,在压缩图像时,分别处理色彩和颜色。


  因为人眼对亮度非常敏感,所以JPEG不会对亮度做太多的改变,而人类眼睛对颜色比较不敏感(科学研究表明,人眼可能能分辨1000万种不同的颜色,与电脑相比,这种感知能力要差得多),因此JPEG在人眼发现颜色错误之前,会对颜色进行压缩,这样即使图像丢失了一些细节,人眼也不容易捕捉到。


 JPEG图像压缩过程中颜色空间的转换,指的是RGB到YCbCr的转换。


缩减取样

  对于YCbCr模型,Cb通道和Cr通道中的信息量远远小于Y通道中的信息量,同时,人眼对颜色的敏感度也很有限,因此JPEG的压缩算法会将Cb通道和Cr通道中的数据缩减至4:4:4(无缩减采样),4:2:2(横向2倍),4:0(纵向2倍),而4:0(横向2倍)最常见。


离散余弦变换(DCT )

  一般认为,8*8像素的格子里的像素往往非常相似,所以,当我们走到这一步时,JPEG就会把图像分成8*8像素的两部分。


一个8*8的像素块

  每个象元都使用离散的余弦变换来编码,法国数学家傅里叶告诉我们,几乎所有的周期函数,都可以表示为一系列的"弦波",即,通过将一系列带有权重的不同余弦的值相加,可以重构出原始图。最终,每一个8*8的象素块通过一个特定的功能,产生一个8*8的新的数字矩阵。

一个8*8的数字矩阵

量化

  在此之前,通过离散余弦变换得到的数字可以直接进行压缩,而且它们还需要再处理一次,这就是量化。这一过程,实际上是DTC系数-优化过程,在8*8像素的一个8像素区域,每个像素点之间的差值很大,它的弦波频率很高,我们称之为高频区,相反,在一个8*8像素的区域,每个像素点之间的差值很小,这就是它的弦波频率,我们称之为低频区,DCT算法已将哪里频率高,哪里频率低称为低频区。


离左下角越近,频率就越低,越接近右下角


人的眼睛对高频区(小范围、复杂度)的识别能力较差,而对低频区(大范围、低复杂度)的识别能力较好,因此JPEG根据人的这一特点对高频区进行了大量的简化和压缩,实际上就是将频率域中的每一组元素,除以一组特定的常数,然后将计算结果四舍五入,取一个整数,JPEG将高频区中的所有元素都算到零,然后四舍五入,取该频域的数值为0。


你会发现,这个矩阵中有许多连续的0,这对于压缩来说是非常有用的。


熵编码最后一步是压缩,仔细看一下最后得到的矩阵,你会发现,从左上角到右下角,连续0的数目都在急剧地增加,而这就需要用熵编码技术,对数据进行编码。

相关技巧

最新资讯

快速访问

351244714

在线咨询

咨询客服

客服热线:0592-6665555

工作时间:08:30-18:00

非工作时间欢迎微信或QQ留言客服上线将第一时间进行处理