数据压缩实验五——JPEG原理分析及JPEG解码器的调试

该实验旨在理解和掌握JPEG编解码系统,包括解码原理、文件格式、解码流程。实验中,通过调试JPEG解码器程序,将JPG文件解码为YUV格式,并分析解码过程中的关键步骤,如 Segment Marker、Huffman 解码和IDCT。同时,强调了程序设计框架的理解,如结构体设计和TRACE调试的重要性。
摘要由CSDN通过智能技术生成

一、实验目的

掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。

二、实验设备

安装Windows和Visual Studio软件的个人计算机

三、实验内容

1.jpeg解码原理
在这里插入图片描述

解码是编码的逆过程

2.jpeg文件格式

2.1Segment 的组织形式

JPEG 在文件中以 Segment 的形式组织,它具有以下特点:
· 均以 0xFF 开始,后跟 1 byte 的 Marker 和 2 byte 的 Segment length(包含表示Length 本身所占用的 2 byte,不含“0xFF” + “Marker” 所占用的 2 byte);
·采用 Motorola 序(相对于 Intel 序),即保存时高位在前,低位在后;
·Data部分中,0xFF后若为0x00,则跳过此字节不予处理;

2.2JPEG 的 Segment Marker

在这里插入图片描述在这里插入图片描述
2.3jpeg解码流程

(1)读取文件
(2)解析segmentmarker:依次解析出SOI、APPO、DCT、SCF0、DHT、SOS、EOI
(3)依据每个分量的水平采样、垂直采样因子计算MCU(微控制单元,即RAM,即要开辟的图像内存?)的大小,并得到每个MCU中8*8宏块的个数。
(4)对每个MCU解码:对每个宏块进行huffman解码得到DCT系数,进行IDCT得到变换之前的数据。
(5)解析到EOI,解码结束
(6)将得到的Y、Cb、Cr转换成需要的色彩空间并保存。

四、编码过程

1、逐步调试JPEG解码器程序。将输入的JPG文件进行解码,将输出文件保存为可供YUVViewer观看的YUV文件。

1)加入yuv格式
在这里插入图片描述
2)loadjpeg.c中加入判断输出格式—YUV
在这里插入图片描述
3)loadjpeg.c的main函数中增加判断yuv代码
在这里插入图片描述
4)在tinyjpeg.c中加入case TINYJPEG_FMT_YUV项
在这里插入图片描述

输出yuv文件如图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值