- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编号:
北京工商大学
计算机图像处理 课程设计(报告)
院 (系):
班 级:
学 号:
姓 名:
指导教师:
成 绩:
实践地点:
实践时间:
2005 年 1 月 7 日
以振兴民族软件产业为己任,
作真实、正值、优秀的科技人员!
——林锐语
计算机图像处理课程设计报告
——微机024班 15号 欧阳锦林
内容提要:
本软件是用VisualStudio6.0制作而成,利用了MFC库。运行此可执行文件后即可使用,使用方法和所有的windows窗口程序一样的方便,注意:本软件还只是支持256色图像的处理,你可以用本软件附带的测试图片来进行试验。
本此软件是由我在图像处理实验课的基础上做了一些优化工作而成,除了以前的功能,主要是增加了查看直方图和生成哈夫曼编码压缩文件功能。并对压缩算法做了全面改进,使之不仅简洁,而且易懂,效率也有所提高。
目录:
正文:
设计目的:
设计题目:
设计要求:
设计内容与步骤:
方案:
数据结构:
待解决的问题:
算法与实现:
软件的调试
框图:
课程设计体会
参考文献
正文:
设计目的:
1、加深对计算机图像处理课程理论方面的理解。
2、掌握计算机图像处理课程的应用。
3、掌握用哈夫曼编码无损压缩文件的方法。
设计题目:
图像哈夫曼无损预测编码
设计要求:
编制出能够对图像进行无损预测编码的程序。要求用户随机打开一幅图像;用鼠标从菜单选择无损预测编码即可将所打开的图像进行无损预测编码。
设计内容与步骤:
方案:
拟定方案与步骤如下:
将信源符号按其出现概率分布,由大到小排列。
将r 个最小概率的信源符号合并成一个符号,这时信源减少到[N-(r-1)]个,形成一个新的信源A1。
将新信源的符号按照步骤a)的要求重新排列,并将最小概率分布的r 个信源符号按某一次序分别用码符号表示,再按步骤b) 的做法合并,此时A1缩减到[N-(r-1)-(r-1)]个,形成一个新的信源A2。
依此进行下去,若合并了S次后,总减少的信源符号为(r-1)S个;若As信源中的符号数:N-(r-1)Sr时,将重复前面过程;若N-(r-1)S=r时,结束编码过程。
从结束处沿授码符号的路线返回依次写出字符的码符号序列,这就是哈夫曼编码了。
数据结构:
二叉树。
待解决的问题:
怎样定义压缩文件格式才是最优的选择?所谓最优,也就是要达到压缩文件的大小最小、解压算法最简、文件格式最清晰等等要求。
生成压缩文件后,如何打开压缩文件?我的想法是先生成对应的BMP文件,再用相同的程序打开生成的文件即可。
如何写对应的解压缩算法?这还主要是文件格式的问题。我试了几种格式的生成压缩文件。我现在的算法我觉得是最为简洁也是最为易懂的一个算法。
算法与实现:
菜单:生成哈夫曼压缩文件...的实现代码为:
void COuyangImageView::OnHumanGen()
{
// 获取文档
COuyangImageDoc* pDoc = GetDocument();
CFileDialog fileDlg(FALSE, *.HUF, *.HUF, NULL, HUFFMAN File (*.HUF)|*.HUF||, this);
fileDlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
fileDlg.m_ofn.lpstrTitle = File to save as;
// 保存压缩图象
if (fileDlg.DoModal() == IDOK)
{
// 指向源图像象素的指针
unsigned char * lpSrc;
// 指向DIB的指针
LPSTR lpDIB;
// 指向DIB象素指针
LPSTR lpDIBBits;
// DIB的高度
LONG lHeight;
// DIB的宽度
LONG lWidth;
// 图像每行的字节数
LONG lLineBytes;
// 图像象素总数
LONG lCountSum;
// 循环变量
LONG i;
LONG j;
LONG k;
// 保存各个灰度值频率的数组指针
FLOAT * fFreq;
// 获取当前DIB颜色数目
int iColorNum;
// 锁定DIB
lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc-GetH
文档评论(0)