使用Matlab实现JPEG压缩

姓名:李伟      学号:17101223393

【嵌牛导读】:大家都应该都知道图像压缩,但是你们都知道压缩的详细过程吗?今天和大家分享一下。

【嵌牛鼻子】:DCT 变换、图像压缩。

【嵌牛提问】:DCT变换的计算过程

【嵌牛正文】:

一、图像压缩原理

图像分成 8*8 小块 –> DCT 变换 –>用量化表对其量化 –>编码生成压缩数据

二、具体压缩过程

1、将原始图像分为 8 * 8 的小块, 每个 block 里有 64 个像素。

2、 将图像中每个 8 * 8 的 block 进行 DCT 变换。8 * 8 的图象经过 DCT 变换后,其低频分量都集中在左上角,高频分量分布在右下角。由于该低频分量包含了图象的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量。

3、 利用量化表抑制高频变量。量化操作,就是将某一个值除以量化表中对应的值。由 于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高 频分量的目的。压缩时候将彩色图像的颜色空间由 RGB 转化为 YUV 格式。其中 Y 分量代表了亮度信息,UV 分量代表了色差信息。相比而言,Y 分量更重要一些。 我们可以对 Y 采用细量化,对 UV 采用粗量化,可进一步提高压缩比。所以量化表 通常有两张,一张是针对 Y 的标准亮度量化表;一张是针对 UV 的标准色彩量化表。

4、 经过量化之后右下角大部分数据变成了 0,左上角为非零数据。这时使用 Z 字型(如 图所示)的顺序来重新排列数据生成一个整数数组,这样 0 就位于数组都后端。找到数组最后一个非零元素,将其后的数据都舍弃,并加上结束标志。

你可能感兴趣的:(使用Matlab实现JPEG压缩)