Skip to content
This repository was archived by the owner on Jun 8, 2025. It is now read-only.

OKOtohime/Notes-for-Data-Compression

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Experiment notes for Data Compression course

学习课程《数据压缩》时做的实验

第四章内容自主实验内容在Chapter4,包括

  • 霍夫曼编码
  • 哥伦布编码
  • 算术编码
  • LZ编码

实验使用的程序语言为Julia.

第四章大实验为LZW编码,基于LZ编码的自主实验进行了改动后完成。

对单文件的实验流程:

  • 读入文件字节流,获取字符数组
  • 初始化字典,对字符数组进行LZW编码
  • 将编码后元素长为c位的码字数组转换为8位字节流保存为新文件
  • 统计压缩率
  • 读入新文件,将字节流转为元素长为c位的码字数组
  • 对码字数组进行LZW解码
  • 比较解码后与编码前的数组,验证算法实现是否正确

第五章大实验为DPCM编码,因要求改用C++编写。

对单文件的实验流程:

  • 命令行输入图像名、预测参数、量化位数
  • 读入文件字节流,获取文件头(实验使用的图像为8位灰度图,文件头长0x436字节),图像信息
  • 使用帧内预测器对图像进行DPCM编码
  • 将文件头、图像第一个像素和元素长为q位的码字数组拼接,整体转换为8位字节流保存为新文件
  • 统计压缩率
  • 读入新文件,解析文件头,读入第一个像素以及量化过的预测误差,将字节流转为元素长为q位的码字数组
  • 对码字数组进行DPCM解码
  • 比较解码后图像的失真情况

第六章大实验为JPEG编码,因要求改用Matlab编写。

对单文件的实验流程:

  • 读入图像,得到元素长为8位的二维矩阵(实验使用的图像为8位灰度图)
  • 将图像分割为8x8的像块
  • 对每个像块进行DCT变换
  • 对每个像块进行量化
  • 使用Zipzag扫描将每个8x8的像块转为一维矩阵
  • 分别对DCT变换后的直流与交流分量进行熵编码
  • 统计压缩率
  • 对量化过的像块进行反量化
  • 对反量化过的像块进行IDCT变换
  • 拼接像块,恢复图像
  • 统计PSNR,分析失真情况

参考资料:《数据压缩》第三版,吴乐南著

About

学习课程《数据压缩》时个人所做的实验

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published