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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

一、实验目的

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文件拷贝到当前工程目录文件里面;并添加到当前工程。

四、实验结果

五、实验心得及体会

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

相关文档
最新文档