![](https://csdnimg.cn/release/download_crawler_static/86393197/bg1.jpg)
中国地质大学(武汉)信息工程学院-《算法设计与分析》课程实习报告 2018 年春
实习一 BMP 灰度图像压缩
一、实习目的与要求
【问题描述】
灰度图像的像素值范围在[0,255]之间,如果采用一个像素一个字节的存储方式,势必会造成空
间的浪费。如果采用一定的无损压缩算法,可以大大提高减小文件大小,减少存储空间。本课题要
求针对提供的 256 色(8 位)位图数据,采用教材上第 15 章动态规划中图像压缩算法(图像分段合
并的思想),设计一个类,实现灰度位图数据的压缩和解压过程。
【基本要求】
一个完整的灰度图像类应具有以下功能:
(1)对 8 位位图数据的读功能,提供 ReadBitmap 方法。
ReadBitmap 方法有一个参数为输入位图文件名(*.bmp),它能解析 8 位位图文件格式,获取位图
BITMAPINFOHEADER 信息和每个像素的数据信息,放入内存中。
(2)对 8 位位图数据的写功能,提供 WriteBitmap 方法。
WriteBitmap 方法有一个参数为输出位图文件名(*.bmp),它能将内存中的位图文件信息,按照位
图格式,写到位图文件中保存。
(3)灰度图像压缩功能,提供 Compress 方法。
Compress 方法有一个参数为输出压缩文件名(*.img) ,它能将已经装入到内存中的 8 位位图信息,
进行压缩,形成段标题和以变长格式存储的像素的二进制串,写入到文件中(注意:Img 文件格式
自行定义)。
(4)灰度图像解压功能,提供 UnCompress 方法。
UnCompress 方法有一个参数为输入压缩文件名(*.img),它能解析 Img 文件格式,将其在内存中
解压缩为 8 位位图信息,以便输出为位图文件。
(5)以上是该灰度图像类基本的四个方法,在实现时可根据需要扩充其他方法。在设计时,要使用
面向对象的思想,考虑各个成员的访问权限。
【提高要求】
(1)基于 Windows 对话框界面,可选择输入/输出文件名,有压缩进度条显示。
(2)采用不同的数据集,比较其压缩比,采用最有效的压缩方式。
【测试数据】
数字化.bmp,636*455*8
纹理.bmp, 512*512*8
【测试用例】
类的测试用例如下:
CCompressImage Test;
Test. ReadBitmap(“数字化.bmp”); 读原始位图
Test. Compress(“Out.img”); 压缩
Test. UnCompress(“Out.img”); 解压
Test. WriteBitmap(“Out.bmp”); 还原位图信息
评论0
最新资源