一、实验原理
YUV图片输入,依次经过零偏置、8x8DCT变换、统一量化,然后分为DC系数和AC系数分别进行编码。DC系数进行差分编码然后进行Huffman编码,AC系数先进行zigzag扫描然后进行游程编码然后进行Huffman编码生成码流。
JPEG解码过程:
解码Huffman数据,解码DC差值,重构量化后的系数,DCT逆变换,丢弃填充的行/列,反零偏置,对丢失的CbCr分量差值(下采样的逆过程)
JPEG 在文件中以 Segment 的形式组织,它具有以下特点:
1.均以 0xFF 开始,后跟 1 byte 的 Marker 和 2 byte 的 Segment length(包含表示 Length 本身所占用的 2 byte,不含“0xFF” + “Marker” 所占用的 2 byte);
2.采用 Motorola 序(相对于 Intel 序),即保存时高位在前,低位在后;
3. Data 部分中,0xFF 后若为 0x00,则跳过此字节不予处理;
二、实验步骤
1.读取文件
2.解析文件
SOI、APP0、DQT、SOF0、DHT、SOS
3.根据每个分量的水平和垂直采样因子计算最小编码单元的大小,并得到每个最小编码单元内8×8宏块的个数
4.对每个最小编码单元解码
5.解析到EOI结束
6.将Y、Cb、Cr转换为所需的色彩空间保存
—