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,分析失真情况
参考资料:《数据压缩》第三版,吴乐南著