您好,欢迎来到微智科技网。
搜索
您的当前位置:首页数字图像实验 哈夫曼编码的方法和实现1234

数字图像实验 哈夫曼编码的方法和实现1234

来源:微智科技网


实验八 哈夫曼编码的方法和实现

一、 实验目的

1. 掌握哈夫曼编码的基本理论和算法流程;

2. 用VC++6.0编程实现图像的哈夫曼编码。

二、 实验内容

1.画出哈夫曼编码的算法流程;

2.用VC++6.0编程实现哈夫曼编码。

三、 实验步骤

(1) 启动VC++6.0,打开Dip工程。

(2)在菜单栏insertresoucedialognew,在对话框模版的非控制区点击鼠标右键,在弹出的对话框中选properties,设置为ID:IDD_DLG_Huffman,C标题:哈夫曼编码表。

(3) 在弹出的对话框中,添加如下的按钮等控件:

(4)在

ResourceView

栏中Menu选

IDR_DIPTYPE ,如图

在图像编码菜单栏下空的一栏中,右键鼠标,在弹出的对话

框中选属性properties,在弹出的对话框中,进行如下的设置

(5)右击哈夫曼编码表菜单栏,在建立的类向导中进行如下设置

(6)在DipDoc.cpp中找到void CDipDoc::OnCodeHuffman()添加如下代码

void CDipDoc::OnCodeHuffman()

{

int imgSize;

imgSize = m_pDibObject->GetWidth()*m_pDibObject->GetHeight();

//在点处理CPointPro类中创建用来绘制直方图的数据

CPointPro PointOperation(m_pDibObject );

int *pHistogram = PointOperation.GetHistogram();

//生成一个对话框CHistDlg类的实例

CDlgHuffman HuffmanDlg;

//将绘制直方图的数据传递给CHistDlg对话框类的公有成员变量m_pnHistogram

if( pHistogram != NULL )

{

//设置直方图数据指针

HuffmanDlg.m_fFreq = pHistogram;

HuffmanDlg.m_iSizeImage = imgSize;

if(m_pDibObject->GetNumBits() >= 8)

HuffmanDlg.m_iLeafNum=256;

else

HuffmanDlg.m_iLeafNum=m_pDibObject->GetNumBits();

}

//显示对话框

if ( HuffmanDlg.DoModal() != IDOK)

return;

delete [] pHistogram;

}

(7)在DipDoc.cpp中添加#include \"DlgHuffman.h\"

(8)将DlgHuffman.h、DlgHuffman.cpp文件拷贝到当前工程目录文件里面;并添加到当前工程。

四、 实验结果

五、 实验心得及体会

通过做这次实验掌握了哈夫曼编码的基本理论和算法流程;掌握了编程实现图像的哈夫曼编码算法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务