数字图像处理实验指导书Word格式.docx

上传人:b****5 文档编号:8534982 上传时间:2023-05-11 格式:DOCX 页数:15 大小:21.10KB
下载 相关 举报
数字图像处理实验指导书Word格式.docx_第1页
第1页 / 共15页
数字图像处理实验指导书Word格式.docx_第2页
第2页 / 共15页
数字图像处理实验指导书Word格式.docx_第3页
第3页 / 共15页
数字图像处理实验指导书Word格式.docx_第4页
第4页 / 共15页
数字图像处理实验指导书Word格式.docx_第5页
第5页 / 共15页
数字图像处理实验指导书Word格式.docx_第6页
第6页 / 共15页
数字图像处理实验指导书Word格式.docx_第7页
第7页 / 共15页
数字图像处理实验指导书Word格式.docx_第8页
第8页 / 共15页
数字图像处理实验指导书Word格式.docx_第9页
第9页 / 共15页
数字图像处理实验指导书Word格式.docx_第10页
第10页 / 共15页
数字图像处理实验指导书Word格式.docx_第11页
第11页 / 共15页
数字图像处理实验指导书Word格式.docx_第12页
第12页 / 共15页
数字图像处理实验指导书Word格式.docx_第13页
第13页 / 共15页
数字图像处理实验指导书Word格式.docx_第14页
第14页 / 共15页
数字图像处理实验指导书Word格式.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字图像处理实验指导书Word格式.docx

《数字图像处理实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验指导书Word格式.docx(15页珍藏版)》请在冰点文库上搜索。

数字图像处理实验指导书Word格式.docx

实验九 

在复杂背景图片中提取有用信息 

63

实验环境和工具使用

多文件应用程序的开发过程

一、实验目的与要求

VisualC++提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率,本实验通过学习VisualC++6.0界面的常用组成情况,并学习各种常用的窗口、菜单、按钮的意义和功能,并通过一些简单的程序设计,目的是使学生对用户界面、菜单和工具栏有一个全面的了解并掌握主要菜单命令。

●了解VisualC++集成开发环境的界面组成;

●理解菜单命令的含义

●掌握“New:

”菜单命令、“Breakpoints”菜单命令、“Build”菜单命令、“SourceBrower”菜单命令、工具栏的定制和修改、联机帮助。

●简单的程序设计

二、实验设备与平台

实验设备要求每个学生一台电脑,其中运行环境为VC++6.0系统。

三、实验内容及步骤

1.上机实验内容

●VisualC++集成开发环境的用户界面识别;

●新文件、新工程项目、工作区的创建;

●设置、查看和删除断点;

●编译和运行程序;

●浏览资源信息;

●工具栏的定制和修改;

●联机帮助的使用;

●熟悉VisualC++编写控制台模式程序的方法;

上机输入例题,调试并运行,并观察结果;

●上机编写一个程序

实验1调试并编译程序。

在VisualC++下,编写控制台模式的程序和在DOS下编写程序相似,具有简单方便的特点,一般用于后台程序的编写。

控制台模式下程序的编写有两种方法,一是创建一个C++源程序文件,二是创建一个控制台模式的工程。

⑴创建一个C++源程序文件

1启动VisualC++,单击“File”菜单下的“New”菜单命令,出现“New”对话框。

然后选择“Files”选项卡,在此选项卡的左侧,单击“C++SourceFiles”:

在选项卡的右侧,选择源程序存放的位置(location)以及源程序文件名(File),然后单击【OK】按钮。

注意C++源程序文件的扩展名为.cpp。

2在编辑区输入源程序,程序内容如下:

#include<

iostream.h>

voidmain()

for(inti=0;

i<

3;

i++)

cout<

<

"

Hello!

myfriend!

\n"

;

}

}

3程序输入之后,请认真检查,然后按<

F7>

键或工具栏中的

(Build)按钮或者选择“Build”菜单命令,系统提示是否创建一个默认的工程工作区,单击【是】按钮即可。

4系统开始编译源程序并链接相应的文件,如果没有错误则在集成开发环境下方的状态栏中出现下列提示“0error(s),0warning(s)”,此时可以按<

Ctrl>

+<

键或按下状态栏中的

按钮或者选择“Build”菜单的“Excute1_1.exe”运行程序,然后观察程序运行结果。

用户也可以在DOS(Windows98)下或控制台模式下(Windows2000或WindowsXP)直接键入文件名“1_1.exe”也可以运行程序。

⑵创建一个控制台模式的工程

1启动VisualC++,单击“File”菜单下的“New”菜单命令,出现“New”对话框。

然后选择“Projects”选项卡,在此选项卡的左侧,单击“Win32ConsoleApplication”;

在选项卡的右侧,选择工程文件存放的位置(location)以及工程文件名(ProjectName)。

然后单击【OK】按钮。

2在“Win32ConsoleApplication-Step1of1”对话框中选择应用程序的类型“Anemptyproject”,单击【Finish】按钮。

3在集成开发环境的左侧单击“FileView”属性页,右键单击“SourceFiles”,选择“AddFilestoFolder…”。

在“文件名”中填入文件名,此时也可以选择存在的文件。

4此时在“SourceFiles”左侧出现一个加号,单击加号,出现新的源程序文件“1_1.cpp”,双击此文件,在集成开发环境的右侧输入例1_1.

5按照创建一个C++源程序文件的第④个步骤编译和运行程序。

图1-1向工程中添加源程序文件

图1-2选择添加的源程序文件的文件名与类型

实验2:

设置、查看和删除断点。

为了对程序进行调适,可以设置断点。

在VisualC++6.0中,断点分为位置断点(Location)、数据断点(Data)、消息断点(Message)三种类型。

本次实验只练习位置断点的设置、查看和删除。

图1-3右键单击设置断点

a)设置位置断点。

有两种方法可以设置位置断点,一是右键单击断点所在行,如图1-4所示,单击“Insert/RemoveBreakpoint”,断点所在行会出现红色的圆,标识断点设置成功。

二是让光标到达相应位置,然后单击“Edit”菜单的“Breakpoints”命令,出现如图1-5所示的“Breakpoints”对话框,在“Breakat”处选择断点所在行即可。

b)查看位置断点。

某行设置断点之后,行首位置有一个红圆,源程序较长时,查看比较麻烦,可以单击“Edit”菜单的“Breakpoints”命令,出现如图1-4所示的“Breakpoints”对话框,在对话框的左下角“Breakpoints”处看到所有的断点。

c)删除位置断点。

有两种方法可以删除位置断点,一是右键单击断点所在行,单击“RemoveBreakpoint”删除断点;

二是在如图1-5所示的“Breakpoints”对话框的“Breakpoints”处选择断点,然后选择“Remove”删除断点。

图1-4“断点”对话框

图像显示,直接灰度变换

1、掌握BMP灰度图像显示,图像文件格式。

2、掌握用CDib类,读写位图文件,取得文件宽度,高度,图像数据缓冲区。

3、掌握BMP文件图像的步长定义。

4、掌握灰度线形变换。

5、掌握灰度分段变换。

(1)生成一个多文档程序MyStep1。

在文档类中定义一个CDib 

对象m_dib。

定义函数Draw(intx,inty,CDC*);

voidCMyStep1Doc:

:

Draw(intx,inty,CDC*pDC)

{

if(!

m_dib.IsValid())

return;

//----下面分别以两种方式显示

#if

(1) 

//---0:

则以下面else代码有效

m_dib.Draw(pDC,x,y);

#else

int 

nStep=m_dib.GetWidth();

//再改为nStep=(m_dib.GetWidth()*8+31)/32*4;

for(inty=0;

y<

m_dib.GetHeight();

y++)

for(intx=0;

x<

m_dib.GetWidth();

x++)

unsignedchargray=m_dib.GetBits()[y*nStep+x];

pDC->

SetPixel(x,y,RGB(gray,gray,gray));

//再改为pDC->

SetPixel(x,m_dib.GetHeight()-y,RGB(gray,gray,gray));

}

添加菜单读图像文件。

在文档类中响应该菜单命令,

OnReadBmp()

CDib:

SelectBmpFile(&

m_dib);

if(m_dib.IsValid())

UpdateAllViews(NULL);

在视图类的OnDraw()中显示m_dib

voidCMyStep1View:

OnDraw(CDC*pDC)

…………………………………………

GetDocument()->

Draw();

注意:

bmp位图文件的行是以4字节对其,行存储是以颠倒格式。

(2)添加菜单命令,灰度变换。

voidCmyTest1Doc:

OnLs()

if(!

//--Src[a,b]Dst[c,d] 

g=(d-c)/(b-a)*(f-a)+c;

float 

a=50;

b=150;

c=10;

d=250;

nStep=(m_dib.GetWidth()*8+31)/32*4;

off=y*nStep+x;

if(m_dib.GetBits()[off]>

=a&

&

)m_dib.GetBits()[off]<

=b)

m_dib.GetBits()[off]=(d-c)/(b-a)*(m_dib.GetBits()[off]–a)+c;

(3)添加菜单命令,灰度分段变换。

OnLs1()

a1=30;

b1=80;

c1=10;

d1=120;

a2=81;

b2=150;

c2=120;

d2=250;

=a1&

=b1)

m_dib.GetBits()[off]=(d1-c1)/(b1-a1)*(m_dib.GetBits()[off]-a1)+c1;

elseif(m_dib.GetBits()[off]>

=a2&

=b2)

m_dib.GetBits()[off]=(d2-c2)/(b2-a2)*(m_dib.GetBits()[off]-a2)+c2;

(4)添加菜单命令,灰度γ变换。

OnLsr()

g=f^(1/r);

double 

r=1.2;

//修改该值,看变换的效果

0)

doubleg=pow((double)m_dib.GetBits()[off],r);

if(g>

255)

g=255;

m_dib.GetBits()[off]=g;

均衡化,规定化

一、实验目的及要求

1、掌握直方图计算方法。

2、掌握利用直方图均衡化对图像进行变换。

3、掌握利用直方图规定化对图像进行变换。

1、直方图计算。

voidHistogram(unsignedchar*buf,intnWidth,intnHeight,intnStep,intHisg[])

memset(Hisg,0,sizeof(int)*256);

nHeight;

nWidth;

intoff=y*nStep+x;

Hisg[buf[off]]++;

2、直方图均衡化。

voidHistogramEqua(unsignedchar*pSrc,intnWidth,intnHeight,intnSrcStep,unsignedchar*pDst,intnDstStep)

//1:

直方图计算

Hist[256];

Histogram(pSrc,nWidth,nHeight,nSrcStep,Hist);

//2:

映射表计算

nTable[256];

nSum=0;

for(inti=0;

i<

256;

i++)

nSum+=Hist[i];

nTable[i]= 

255.0*nSum/(nWidth*nHeight);

//3:

灰度变换

offSrc=y*nSrcStep+x;

offDst=y*nDstStep+x;

pDst[offDst]=nTable[pSrc[offSrc]];

3、添加菜单命令[见实验一MyStep1],直方图均衡化。

OnHistogramEqua()

nStep=(m_dib.GetWidth()*8+31)/32*4;

HistogramEqua(m_dib.GetBits(),m_dib.GetWidth(),m_dib.GetHeight(),nStep,m_dib.GetBits(),nStep);

2、直方图规定化。

voidHistogramRegulate(unsignedchar*pSrc1,intnWidth1,intnHeight1,intnStep1,

unsignedchar*pSrc2,intnWidth2,intnHeight2,intnStep2,

unsignedchar*pDst, 

intnWidth3,intnHeight3,intnStep3)

assert(nWidth2==nWidth3&

nHeight3==nHeight2);

//---将pSrc2变换,使其直方图分布和pSrc1一直,

nHist[256];

Histogram(pSrc1,nWidth1,nHeight1,nStep1,nHist);

floatfP1[256];

i,j;

for(i=0;

fP1[i]=0;

fP1[0]=(float)nHist[0]/(nWidth1*nHeight1);

for(j=1;

j<

j++)

fP1[j]=fP1[j-1]+(float)nHist[j]/(nWidth1*nHeight1);

//--------------------------------------------------------------------------

Histogram(pSrc2,nWidth2,nHeight2,nStep2,nHist);

floatfP2[256];

fP2[i]=0;

fP2[0]=(float)nHist[0]/(nWidth2*nHeight2);

fP2[j]=fP2[j-1]+(float)nHist[j]/(nWidth2*nHeight2);

//---------------------------------------------------------

j=0;

while(fP1[j]<

fP2[i]&

256)

j++;

nTable[i]=(j>

255?

255:

j);

//------------------------------------------------

off2=0;

off3=0;

nHeight2;

nWidth2;

pDst[off3+x]=nTable[pSrc2[off2+x]];

off2+=nStep2;

off3+=nStep3;

平滑增强

1、掌握图象增强基本算法。

2、掌握高斯平滑滤波。

3、掌握中值滤波。

4、

1、硬件环境:

微型计算机,2、软件环境:

VisualC++6.0;

锐化滤波

1、掌握梯度算子

2、掌握Laplacian算子

3、掌握Laplacian锐化增强

4、掌握高斯锐化增强

实验设备要求每个学生一台电脑,其中运行C程序环境为VC6.0系统。

图像边缘的提取

1、掌握Sobel梯度算子。

2、掌握文本文件和二进制文件的使用方法。

3、

微型计算机

2、软件环境:

VisualC++6.0

三、实验内容与步骤:

图像的分割

一、实验目的

本实验是对前面所学知识的总结,通过一个比较完整的应用程序的设计,将学过的知识连贯起来,掌握开发一个实际应用程序的步骤,同时学会使用开发工具实现界面友好的应用程序。

并通过本实验,掌握如何运用面向对象技术对具体的应用系统进行分析和设计。

二、基本知识点

1、类和对象的定义、对象的初始化和使用

2、面向对象的继承机制

3、虚函数与多态性

4、运算符重载

5、文件的使用

6、算法的使用

三、基本要求

1、理解面向对象的特性

2、掌握面向对象程序设计的开发方法

3、有一定的分析问题和解决问题的能力

4、根据学过的知识点,充分利用已有的开发工具和素材,使程序编写具有更高的效率,能真正地解决实际问题。

四、实验内容:

腐蚀和膨胀

第一部分使用图形设备接口进行绘图

1、通过实验理解和掌握图形设备接口的基本概念

2、掌握使用图形设备接口进行绘图的步骤

3、掌握图形对象(绘图工具)的使用方法

运行环境:

VC++6.0

对带噪声干扰的图像的综合处理

第一部分MFC与标准控件的使用

了解MFC类的层次结构及主要类的用法,掌握使用MFC和向导来编写Windows应用程序。

控件是Windows图形用户界面的主要组成部分之一,用户通过操作控件对象完成与应用程序之间的交互。

本实验要求通过对控件相关知识的学习,目的是要掌握静态控件、按钮、流动条、编辑框、列表框、组合框和对话框的创建、消息发送和控件控制等内容。

要求:

(1)掌握MFC类的层次结构及主要类的用法。

(2)使用应用程序向导创建MFC类的Windows应用程序。

(3)使用静态控件、按钮、流动条、编辑框、列表框、组合框和对话框等创建应用程序。

类的概念。

MFC类的层次结构。

MFC类主要的类的用法。

应用程序向导的应用方法。

常用控件的创建和成员函数使用;

对话框的调用,控件消息的处理;

三、实验设备与平台

在复杂背景图片中提取有用信息

2、面向对象的特征的应用:

封装、继承和多态

3、可视化程序设计中资源的运用

4、Windows的消息传递机制

5、MFC类库的使用

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2