ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:107.88KB ,
资源ID:17234693      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17234693.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB数字图像课设文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLAB数字图像课设文档格式.docx

1、3.2 引擎函数功能.6第四章 系统实现.8 4.1 主界面.8 4.2 链接.84.3 程序.9 4.4 图像处理实现过程.11第五章 心得体会.14第一章 引言数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。随着计算机的发展,数字图像处理技术也不断的进步,实现了对图像图像增强、复原、编码、压缩等,在空间和军事高科技中扮演越来越重要的角色。图像处理的基础是数字,主要任务是进行各种

2、算法设计和算法实现。通过界面实现显示原数字图像以及操作后的效果图。通过界面实现不同操作方法的选择、参数设置等,能通过编程实现对处理后的图像进行保存、生成新的图像文件,能实现不少于6种基本操作。其目的是进一步理解数字图像的原理、基本操作;掌握用MATLAB对数字图像处理操作的实现过程;学习使用Visual C+进行软件编程;熟悉数字图像文件的基本格式。随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。近几十年来由于计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、

3、可视电话、网络传输等等领域,成为各个学科学习和研究对象。随着图像处理技术的广泛应用,学习和掌握这门科学显得格外重要,图像处理已经成为信息技术相关领域的核心课程。本课题主要实现图像的一些简单特效显示,图像的旋转和镜像、图像的增强处理,图像灰度变换,图像边缘检测等。数字图像处理采用一定的算法对数字图像进行处理,以获得人眼视觉或 者某种接受系统所需要的图像处理过程。掌握对数字图像处理操作的实现过程; 第二章 总体设计方案 2.1设计思路 首先建立OPEN()函数,然后调用子程序OpenBMP(CString fileName)打开bmp位图,调用子程序DrawPic(unsigned char* p

4、Da, int dx,int dy)显示图片。接着实现图像高斯白、椒盐、中值滤波、均值滤波、锐化、灰度变换、图像复原、自适应变换等功能。混合编程: 设计方案一:Matlab调用C/C+Matlab调用C/C+的方式主要有两种:利用MEX技术和调用C/C+动态连接库。在Matlab与C/C+混合编程之前,必须先对Matlab的编译应用程序mex和编译器mbuild进行正确的设置:对Matlab编译应用程序mex的设置:Mexsetup;对Matlab编译器mbuild的设置:Mbuildsetup.调用C/C+的MEX文件:MEX是MatlabExecutable的缩写,它是一种“可在Matla

5、b中调用的C(或Fortran)语言衍生程序”。MEX文件的使用极为方便,其调用方式与Matlab的内建函数完全相同,只需在Matlab命令提示符下键入MEX文件名即可。一个C/C+的MEX源程序通常包括4个组成部分,其中前3个是必须包含的内容,第4个则根据所实现的功能灵活选用:(1)#include“mex.h”;(2)MEX文件的入口函数mexFunction,MEX文件导出名必须为mexFunction函数;(3)mxArray;(4)API函数 设计方案二:调用MATLAB引擎。所谓MATLAB引擎(engine),是指一组MATLAB提供的接口函数,支持C/C+、Fortran等语言

6、,通过这些接口函数,用户可以在其它编程环境中实现对MATLAB的控制。与其他各种接口相比,引擎所提供的MATLAB功能支持是最全面的。通过引擎方式,应用程序会打开一个新的MATLAB进程,可以控制它完成任何计算和绘图操作。对所有数据结构提供100%的支持。同时,引擎方式打开的MATLAB进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制MATLAB运行的流程,并可在其中输入任何MATLAB命令。该方案在Visual C+6.0编程中,程序较为简单,添加头文件“#include “engine.h”后配合基本的命令程序语句即可使用。设计方案三:COM组件:组件对象模

7、型(简称MCR)是以组件为发布单元的对象模型。它提供一种可以共享二进制代码的工业标准,允许任何符合标准的程序访问,所以COM作为不同语言之间的协作开发是非常方便的。MATLAB的COM编译器是在MATLAB 6.5中才开始提供的一个新工具,从MATLAB 7.0起,这个产品改名为MATLAB Builder for COM。基于COM的混合编程方法也是Mathworks公司推荐使用的方法。综合考虑:以上四种方法中,采用MATLAB引擎方式,应用程序整体性能好,MATLAB引擎支持功能全面,但需要MATLAB后台运行,不能脱离MATLAB环境。而MCC方法和COM组件方法均可已脱离MAYLAB环

8、境,应用程序运行效率高。开始我们选择mcc编译器的方法进行混合编程,但是经过后期的编程、运行和调试后发现,难度较大,无法及时完成本次课程设计任务。所以最终我们选择了调用MATLAB的引擎函数engine函数的方法,即方案二。 图2.1 主界面流程图2.2总体设计框图 图2.2 总体设计框图第三章 设计原理3.1 部分处理原理及引擎介绍 基于课本上所学的知识,我们初步了解了数字图像的一些基本知识,掌握了基本的程序编写,通过VC实现主界面的设计和编写,并通过超链接连接到MATLEB,在MATLEB中进行图像处理,其中中值滤波选一个含有基数点的滑动窗口,在图像上进行扫描,将其中所含像素点按灰度级升序

9、排列,取位于中间的灰度值来代替该点的灰度值。中值滤波原理:(1)做一个M*M的作用模板(2)在其中选择K个与待处理像素的灰度差最小的像素(3)用这K个像素的灰度均值替换原来的值。其中部分引擎原理为:Matlab引擎,是Matlab提供的一系列程序的结合,它允许用户在自己的应用程序中对Matlab进行调用,将Matlab作为一个操作引擎使用,使其在后台运行。 同时Matlab提供的接口函数它采用客户机/服务器计算模式,并且支持VC语言。一般情况下,客户机是运行前端软件的PC机,并且知道如何与服务器通信,服务器与此相对应,是接收请求信息,并采取相应行为的机器。具体在VC中使用Matlab引擎来编制

10、程序时,VC是作为客户端出现的,即负责用户接口和提出数据请求,而Matlab则属于服务器端,即向客户端提供数据服务。VC客户端通过调用Matlab引擎与Matlab服务器建立连接,从而实现动态通信。其引擎调用全过程如图3.1所示。图3.1 引擎调用全过程在Matlab环境中将Matlab函数编译成可以脱离Matlab环境使用的动态连接库,在VC环境中编写应用程序界面并加载调用动态连接库,实现二者之间的无缝连接,此种方法关键是对Matlab与VC接口进行编程。由于其完全脱离Matlab环境,因此得到广泛应用。采用目前较为流行的Windows应用程序开发环境VC完成图形界面设计、数据管理、低层I/

11、O操作,利用Matlab数学库完成软件核心算法设计,很大程度上降低了编程难度和工作量,缩短开发周期,提高软件可靠性。尤其利用编译器调用Matlab动态连接库实现脱离Matlab环境下二者的紧密结合,更极大拓展了Matlab 的应用范围。3.2 引擎函数功能Matlab引擎函数库中的函数具体功能如下:(1) engOpen ( )启动Matlab引擎:语法:# include engine. h Engine *engOpen (constchar * startcmd) ;说明:通过函数engOpen用户可以在自己的应用程序中,在后台启动一个Matlab 进程,用于完成一定的计算任务,其返回值

12、是一个Engine类型的指针变量,若函数执行成功将返回开启的Matlab引擎的指针,否则为NULL,其输入参数为一字符指针startcmd,在windows操作系统必须为NULL。(2) engPutArray ( )将mxArray结构体类型变量输送到Matlab的工作空间: int engPutArray (Engine * ep , const mxArray * mp ) ; 引擎函数engPutArray包含两个输入参数,分别为引擎指针ep和MxArray结构体对象指针。执行该函数,允许用户将一个MxArray结构体类型的变量输送到引擎ep中,如果在当前程序的工作空间中不存在所指定的

13、MxArray结构体,函数会自动创建,如函数执行成功,返回值为0,否则为1。(3) engEvalString ( )执行一个字符串表示的Matlab表达式: # include int engEvalString (Engine * ep,constchar * string) ;第一个参数ep为一个Engine类型的指针。第二个参数String为字符指针代表了一个字符串,该字符串应该为一个合法的Matlab表达式。若该函数执行成功将返回0,否则将返回1。(4) engGetArray ( ) 从Matlab工作空间中获取一个变量: mxArray * engGetArray (Engine

14、 * ep ,const char * name) ;在使用函数engGetArray时必须提供两个参数。第一个指向Matlab引擎的指针变量ep。第二个指向某字符串的字符指针name。通过engGetArray ( ) ,用户可以从Matlab的工作空间中获取使用参数name指定的mxArray结构体的内容,同时复制给一个新分配的mxArray结构体,并将该结构体返回给用户。若该函数执行成功,将得到一个mxArray结构体对象的指针,否则返回NULL。(5) engOutputBuffer确定存放Matlab输出结果的缓冲区域 int engOutputBuffer (Engine * ep

15、,char *p , int n) 通过引擎函数engOutputBuffer,用户可以为由引擎指针ep 所指向的引擎设置一个输出缓冲区,将Matlab输出到屏幕的内容保存在其中,其长度可由参数n 确定,位置由字符指针p来确定。在默认情况下,通过引擎函数engEvalString所执行的所有的Matlab操作所产生的屏幕输出均被抛弃, 而函数engOutputBuffer则告诉所有后继的engEvalString操作,将屏幕输出保存在缓冲p中。(6) engClose ( ) 关闭Matlab引擎 int engClose (Engine * ep ) ; 通过此函数用户可以关闭一个处于开启状

16、态的Matlab引擎,该函数在执行时,首先向Matlab引擎发出一个关闭命令,然后断开与Matlab引擎的连接,若函数执行成功将返回0,否则返回1。此外,Matlab引擎函数库还包括一些函数,有engGetFull (Obsolete)、engGetMatrix (Obsolete)、engPutFull (Obsolete)、engPutMatrix (Obsolete) 等一些过时的函数,这些函数在Matlab 5.X 以上版本的引擎程序中不应继续被使用7。引擎接口为在VC中调用Matlab服务提供了应用程序接口(API),主要由以上的引擎(Engine)库函数来实现,完成VC客户端与Ma

17、tlab服务器的连接建立与撤销、数据的传递与接收。在VC中使用Matlab引擎编程的另一个重要问题是VC数据类型与mxArray矩阵的相互转换,即数据组织。Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。Matlab对所有的VC + +数据类型均使用同一种专门的mxArray矩阵结构来描述和存储,每个mxArray矩阵结构包含类型、维度、数据、稀疏矩阵、非零元索引、结构等字段说明。Matlab通过mxArray矩阵结构及其相关函数来实现对数据的组织。可以说,Matlab的数据组织是利用Matlab引擎进行VC编程的核心,不同的V

18、C数据类型对应着不同的数据组织方式。数据组织方式正确与否直接影响着对Matlab引擎的调用是否成功,决定着VC客户端与Matlab服务器之间动态数据交换的有效性8。Matlab与VC数据类型之间的相互转换如表1所示。表1 类型转换表VC数据类型Matlab矩阵类型DoubleDouble- Precision MatricesFloat Int UnsignedNumeric MatricesChar CStringMatlab StringsStructStructsClassObjects第四章 系统实现 4.1主界面 图4.1该界面利用VC+ 6.0中的MFC功能编辑而成,使用MFC可以

19、方便地创建基于对话框或文档视图的程序,在其上添加各种控件,通过消息映射机制使控件操作和某个函数对应起来。(1)新建工程,选择“MFC AppWizardexe”类;(2)在生成的工程里,插入新的Dialog对话框,添加按钮和编辑框;(3)新建class类型,然后使得Dialog对话框连接到Menu框中;(4)然后编辑代码,运行成功后,即可以调用新建的数字图像处理系统对话框。控件包括:CStatic类:静态文本空间,用于标注、分隔对话框和窗口中的其他控件;CButton类:按钮空间窗口,为对话框或窗口中的按钮、检查框或单选框提供接口;CEdit类:文本编辑对话窗口,用于接收用户的文本输入;本次课

20、程设计基本就使用了以上控件类型,完成了相对应的功能选择。4.2 连接VC+调用MATLAB引擎函数具体步骤:1)设置系统环境变量path,path里面要包括MATLAB的exe。双击path,变量设为C:MATLAB7bin;C:MATLAB7binwin322)设置VC路径运行VC,转到options include增加MATLAB的include路径:C:MATLAB7EXTERNINCLUDELIB和C:MATLAB7EXTERNLIBWIN32MICROSOFT3)在VX中新建一个console项目,项目的link输入增加libmx.lib libmat.lib libmex.lib

21、libeng.lib 。一般的经历这三步后,基本就能成功运行利用该编辑窗口编辑的代码了。我们也是在完成以上三步后,完善的界面设计和引擎函数调用编程。4.3程序加入高斯白噪声:function gaosibaiI=imread(111.jpg);subplot(1,2,1),imshow(I);J=imnoise(I,gaussian,0,0.02);subplot(1,2,2),imshow(J);加入椒盐噪声:function jiaoyansalt & pepper,0.04);中值滤波处理:function zhongzhilvboK=rgb2gray(I);subplot(2,2,1)

22、,imshow(I);J=imnoise(K,subplot(2,2,2),imshow(J);I_Filter=medfilt2(J);subplot(2,2,3),imshow(I_Filter);均值滤波处理:function junzhilvboI map=imread(111.pngJ=rgb2gray(I);J1=imnoise(J,subplot(2,2,2),imshow(J1);M4=0 1 0;1 0 1;0 1 0;M4=M4/4;I_filter=filter2(M4,J1);subplot(2,2,3),imshow(I_filter);锐化处理:function r

23、uihuaJ=double(J);Gx,Gy=gradient(J);G=sqrt(Gx.*Gx+Gy.*Gy);J1=G;subplot(1,2,2),imshow(J1);灰度变换处理:function huidubianhuanimshow(I);M=rgb2gray(I);figure,imhist(M);J=imadjust(M,0.15 0.9,0 1);figure,imshow(J);figure,imhist(J);图像复原处理:111.jpgfigure(1);len=28;theta=14;PSF=fspecial(motion,len,theta);blurred=im

24、filter(I,PSF,circular,convwnr1=deconvwnr(blurred,PSF);figure(2);imshow(wnr1);自适应处理:function zishiyingI,map=imread(J1=imnoise(K,H noise=wiener2(J1);subplot(1,2,2),imshow(H);4.4 图像处理实现过程 建立好界面后,需要VC+调用MATLAB引擎函数实现信号处理。 MATLAB7bin; 一般的经历这三步后,基本就能成功运行利用该编辑窗口编辑的代码了。具体步骤如下:引擎程序可以在Matlab环境下编译和连接,也可以在Visual C + 6.0的DE中编译和连接,下面阐述具体实现步骤。在VC+ + 6.0中调用Matlab引擎下首先要进行环境设置如下9:(1) 使用菜单Tools/Options设置属性页,进入Directories页面,选择Show directories for下拉框中的Include files,加入路径(假定Matlab安装在C盘下) : matlab extern include matlab extern include cpp(2) 选择library files,加入如下路径: matlab extern lib win32 Microsoft

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1