searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

JPEG图像压缩原理

2023-04-28 08:32:58
31
0

      JPG即JPEG(Joint Photographic Experts Group)。 JPEG 是互联网上常见的图像存储和传送方式。但是此格式不适合用来绘制线条、文字或图标,因为JPEG的压缩方式通常会导致图片质量严重受损。对比之下PNG、GIF更适合做绘制线条、文字或图标的首选,不过GIF只支持8bit的颜色,不适合颜色丰富的图片。

JPEG的格式

JPEG的格式可以分为三种:

  • 标准JPEG格式:在网页上下载显示图像时,是从上至下逐步显示图片,直到下载完成,才能看到图像原貌;
  • 渐进式JPEG格式:在网页上显示图像时,先显示粗略的图像,然后随着下载进度,逐步精细图像细节。渐进式JPEG格式图像要比标准JPEG格式要小很多,网页上的JPEG格式多用这种格式;
  • JPEG2000:新一代影像压缩法,压缩品质更高。

JPEG的优缺点

  • JPEG可以支持极高的压缩率,所以JPEG的下载速度特别快;
  • JPEG的压缩可能造成图像质量受损,因此不太适用于高清晰的图像应用场景;

JPEG的压缩方式

JPEG的压缩方式主要有四种,其中一种是基于空间DPCM的无损压缩,另外三种是基于DCT的有损压缩。

  • 基于DCT的顺序编码:基于DCT变换原理,按照从上之下,从左至右的顺序对图像数据进行编码压缩。当接收端收到数据后,再按照这个顺序进行解码,在此过程中存在图像丢失,因此是有损压缩;
  • 基于DCT的累进编码:也是基于DCT变换原理,不过是对图像进行多次扫描,从而对图像进行进一步的数据压缩。所以图像还原时,看到的图像时粗略图,而后逐步细化,直到结束;
  • 基于DCT的分层编码:以图像分辨率为基准进行编码,从低分辨率开始,逐渐提高分辨率,直到于原图像的分辨率一致。图像的解码也是这样的步骤;
  • 基于空间DPCM的无损压缩:采用预测法和哈夫曼编码(或算术编码)以保证重建图像与原图像完全相同(设均方误差为零);

关于DCT变换

DCT变换,即离散余弦变换是与傅里叶变换相关的一种变换。

离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。

DCT变换,经常应用于信号处理和图像处理中,对信号或图像进行有损压缩。

如下图,取一张160160的JPEG图像,进行分割成 2020 个小块,每个小块是8*8个像素。

将RGB转换为YUV(亮度、色调、饱和度),然后重新采样。

YUV与RGB可以互相转换。
Y=0.299R+0.587G+0.114B
U=0.148R-0.289G+0.473B
V=0.615R-0.515G-0.1B

上文图中展示的FDCT、IDCT表示的是正变换、反变换。 这里不深究DCT变换的具体底层细节,先由浅入深的认识这个过程。 输入就是8x8的数据矩阵,经过计算,输出还是一个8x8的数据矩阵。公式如下:

量化

将DCT变换后的临时结果,除以各自量化步长并四舍五入后取整,得到量化系数。
经过DCT后,数据就不同了,左上方都是大数值,右下方都是小数值。
结构上,左上方称为低频数据,右下方称为高频数据

原8*8小图像块的亮度数据如下:

最后量化的结果:

因此整个8*8的图像块大小将大大缩小。

 

 

转载自 https://zhuanlan.zhihu.com/p/156639005

0条评论
0 / 1000
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝