JPEG原理分析及JPEG解码器的调试

该实验旨在分析JPEG编解码原理,包括零偏置电平下移、8x8 DCT变换、量化、DC系数差分编码、AC系数Zig-Zag扫描与RLE、Huffman编码等步骤。实验在Windows环境下使用Visual Studio进行,通过解码器调试,输出了yuv图像和8x8量化表。
摘要由CSDN通过智能技术生成

一、实验名称:JPEG原理分析及JPEG解码器的调试
二、实验目的
掌握JPEG编解码系统的基本原理。初步掌握复杂的数据压缩算法实现,并能根据理论分析需要实现所对应数据的输出。
三、主要设备
安装Windows和Visual Studio软件的个人计算机
四、实验内容
1.JPEG编解码原理
(1) 零偏置电平下移
先对8×8的像块进行零偏置电平下移(Level Offset),即对于灰度级为2 n 2^n2
n
的像素,通过减去2 n − 1 2^{n-1}2
n−1
,将无符号整数变为有符号数,使其值域变为[ − 2 n − 1 , 2 n − 1 − 1 ] [-2{n-1},2{n-1}-1][−2
n−1
,2
n−1
−1],以将绝对值大的数出现的概率大大减小,提高编码效率。

(2) 8×8 DCT
将图像分为8×8的像块;对于宽(高)不是8的整数倍的图像,使用图像边缘像素填充,以不改变频谱分布。然后对每一个子块进行DCT(Discrete Cosine Transform,离散余弦变换),以实现能量集中和去相关,便于去除空间冗余,提高编码效率。
DCT核矩阵
在这里插入图片描述
JPEG中使用的是二维8×8 DCT(N = 8 N=8N=8),则
在这里插入图片描述
(3) 量化
实际上JPEG压缩编码算法中,真正可供调整的部分并不多:DCT、熵编码这两个主要步骤都是完全确定的了,实际上只有量化可以调整,量化也自然是JPEG压缩编码算法的核心。此外,量化是编码流程中唯一会引入误差也是唯一会带来压缩的步骤。
(4) DC系数差分编码
在这里插入图片描述
(5) AC系数Zig-Zag扫描与RLE
(6) Huffman编码
在这里插入图片描述

JPEG编码的过程如上图所示。解码是编码的逆过程。
五、实验结果
输出的yuv图像为:

在这里插入图片描述

在这里插入图片描述
输出一个8x8的量化表。
在这里插入图片描述

六、实验代码

  1. 将输出文件保存为.yuv格式
static void write_yuv(const char* filename, int width, int height, unsigned char** components) {
   
    FILE* F;
    char temp[1024];

    snpri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值