一、实验目的:
掌握 JPEG 编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。
二、JEPEG原理:
JPEG 是Joint Photographic Experts Group(联合图像专家小组)的缩写,是第一个国际图像压缩标准。
.jpeg/.jpg是最常用的图像文件格式,是一种有损压缩格式。JPEG编码框图如下图所示:
编码步骤为:
(1)颜色空间转换、采样、零偏置
由于JPEG采用的是YUV颜色空间,首先将输入图片转换为YUV颜色空间,并按一定的采样格式进行采样。然后对Y分量进行电平偏移转换,可以对Y减128操作,使Y、U、V电平取值范围都在-128~127之间。
(2)分块
分别对Y、U、V三个分量的数据进行88分块,编码时,按从左至右,从上至下的顺序依次读取一个88块,对其进行DCT变换、量化、编码后,再读取下一个8*8块。
若图像宽高不是8的整数倍,还需要通过复制相邻像素值补成8的整数倍。
(3)DCT变换
JPEG中采用DCT(离散余弦变换),DCT变换具有能量守恒、能量集中和去相关的特性。这样可以将能量集中在低频区域,对低频和高频各系数采用不同的量化比特数进行单独量化,不会损伤过多的效率。
(4)zig-zag扫描排序、量化
对每个88块的数据进行zig-zag扫描排序,重新排序后的88数组里的系数值按低频到高频依次排列。再对每个8*8系数块进行量化,由于人眼对亮度信号比对色差信号更敏感,所以采用亮度量化表和色差量化表对其分别处理。又由于人眼对低频比对高频敏感,所以对低频系数细量化,对高频粗量化。
zig-zag扫描: 两张量化表:
(5)DC系数的差分脉冲调制编码
由于8*8 的图像