实验五 JPEG解码

本次实验旨在掌握JPEG编解码原理,通过调试解码器程序将JPG文件转为YUV,理解DCT系数的熵编码(DC与AC系数的编码方式),并实现游程编码及量化矩阵的输出。实验结果显示,生成的YUV图与原图一致,表明解码成功。
摘要由CSDN通过智能技术生成

实验五 JPEG解码

一、实验背景知识

1.1 DCT 系数熵编码原理
1.1.1 DC 系数编码:
由于直流系数 F(0,0)反映了该子图像中包含的直流成分,通常较大,又由于两个相邻的子图像的直流系数通常具有较大的相关性,所以对 DC 系数采用差值脉冲编码(DPCM),即对本像素块直流系数与前一像素块直流系数的差值进行无损编码。
1.1.2 AC 系数编码:
首先,进行游程编码(RLC),并在最后加上块结束(EOB);然后,系数序列分组,将非零系数和它前面的相邻的全部零系数分在一组内;每组用两个符号表示[(Run,Size),(Amplitude)]Amplitude:表示非零系数的幅度值;Run:表示零的游程即零的个数;Size:表示非零系数的幅度值的编码位数;

JPEG编解码原理

在这里插入图片描述

二 、实验目的

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

三、实验过程
JPEG 的解码流程

1.逐步调试JPEG解码器程序。将输入的JPG文件进行解码,将输出文件保存为可供YUVViewer观看的YUV文件。
2. 程序调试过程中,应做到:
 理解程序设计的整体框架
 理解三个结构体的设计目的
• struct huffman_table
• struct component
• struct jdec_private
 理解在视音频编解码调试中TRACE的目的和含义
• 会打开和关闭TRACE
• 会根据自己的要求修改TRACE
3.以txt文件输出所有的量化矩阵和所有的HUFFMAN码表。

三、实验代码
调试write_yuv函数修改为:
static void write_yuv(const char *filename, int width, int height
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值