一、实验目的
掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。
二、实验原理
1、JPEG编解码原理
(1)编码原理
零偏置(Level Offset):对于灰度级是的像素,通过减去,将无符号的整数值变成有符号数;对于n=8,即将0~255的值域,通过减去128,转换为值域在-128~127之间的值
DCT变换:对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,不足8×8的图像块,取边缘像素补齐,对每个块做DCT变换,直流系数在每个块的左上角,右下角的分量频率高。
DC系数的差分编码:8×8图像块经过DCT变换之后得到的DC直流系数(系数的数值比较大;相邻8×8图像块的DC系数值变化不大),JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值DIFF进行Huffman编码
AC系数的Z字扫描:经DCT变换后,系数大多数集中在左上角,即低频分量区,因此采用Z字形按频率的高低顺序读出,可以出现很多连零的机会,使用游程编码。
(2)解码原理
解码Huffman数据→解码DC差值→重构量化后的系数→DCT逆变换→丢弃填充的行/列→反0偏置→对丢失的CbCr分量差值(下采样的逆过程)→YCbCr →RGB
2、JPEG文件格式
SOI,Start of Image,图像开始
APP0,Application,应用程序保留标记0