图像压缩-JPEG算法介绍

在图像传输过程中,为了有效的传输图像,降低图像数据所需带宽,因此会对图像数据进行压缩,依据图像保真度,图像压缩可以分为无损压缩和有损压缩。无损压缩一般是把图像数据压缩到原本数据的1/2~1/4,常见的无损压缩的图像格式有:BMP、PNG、GIF。有损压缩会将图像信息量减少,前后图像数据不一致,因此图像质量会下降,常见的有损压缩的图像格式有:JPEG、WebP。

此篇博文着重介绍有损压缩中的JPEG算法。

JPEG

JPEG算法压缩后的图像后缀一般为.JPG或者.JPEG,二者实质相同。

『通常中我们所见到的图像一般是三通道(R、G、B)或者四通道的图像(R、G、B、Alpha),四通道图像只有PNG格式能够支持。

JPEG算法采用的是YUV颜色空间,其中“Y”表示亮度,“U”和”V”表示色度,YUV的作用是描述影像色彩及饱和度,用于指定像素的颜色。因为人眼对图像亮度敏感,而对色度不那么敏感,因此可以在UV空间上减少信息。』(注1)

RGB转换为YUV空间的转换算法为:

Y = 0.299 R + 0.587 G + 0.114 B

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

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

JPEG算法采用4:2:0的方式采样,也就是2:1水平方向采样,2:1垂直方向采样,即每四个Y共用一组UV。因为人眼对于高频分量不是很敏感,因此可以通过离散余弦变换(DCT)分析出其中的高低频分量,进一步压缩数据。

二维离散余弦变换公式为:

 

由上离散余弦变化生成8*8的矩阵,去除高频分量。由此8*8矩阵除以JPEG算法提供的标准系数矩阵,后取整,如下图1所示。




图1 JPGE标准化系数矩阵

经过上述步骤后得到的矩阵进行ZIGZAG排序,排序方式如下图2所示:


 

图2 ZIGZAG排序

最后通过对得到矩阵进行编码并按照JPEG格式存储,即可得到jpg格式的图像文件。

 

Q&A

Q:JPEG压缩算法对于图像还原性如何?

A:因为JPEG是有损压缩,且数据已经改变,因此是无法还原原始图像,同时因为压缩率较高的因素,可能存在图像模糊的问题。

 

Q:目前图像压缩算法中有没有更好的图像压缩算法,且传输速度更快的?

A:目前在针对高PPI、高刷等移动端方面有着更好的VESA压缩算法,传输速度更快,切实无损压缩,以Novatek的OLED drive IC NT37XXX系列,对于VESA算法的使用已经十分成熟。

 

Q:YUV算法除了4:2:0采样还有什么采样吗?

A:YUV的采样方式有:

4:4:4表示完全取样。

4:2:2表示2:1的水平取样,垂直完全采样。

4:2:0表示2:1的水平取样,垂直2:1采样。

4:1:1表示4:1的水平取样,垂直完全采样。

 

Q:为什么会用到YUV采样方式?

A:因为为了兼顾彩色电视与黑白电视,降低所需的信道带宽。

 

Q:图像压缩比计算方式是怎样的?

A:压缩比=压缩前所占空间大小/实际所占空间大小



註1:作者:Vinegar �;出處:https://blog.csdn.net/VinagerJoe/article/details/129023880

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

Vinegar �: https://blog.csdn.net/VinagerJoe/article/details/129023880

评论