VC与Matlab混合编程实现图像处理.pdf
《VC与Matlab混合编程实现图像处理.pdf》由会员分享,可在线阅读,更多相关《VC与Matlab混合编程实现图像处理.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、收稿日期:2003-08-31 第22卷 第1期计 算 机 仿 真2005年1月 文章编号:1006-9348(2005)01-0254-04VC与Matlab混合编程实现图像处理李文煜(国防科技大学理学院定向能技术研究所,湖南 长沙410073)摘要:分析对比Visual C+与Matlab混合编程的几种方法的特点后,根据图像采集处理的实际要求,从中选择使用MAT2LAB引擎实现VC与Matlab混合编程进行图像处理,该方法充分利用了Matlab的图像处理工具箱的功能,结合了VC与Matlab各自的优点。程序界面和图像采集由VC编程实现,所有的图像处理由MAT LAB引擎实现。通过一个例子给
2、出了程序实现的具体过程。关键词:混合编程;图象处理;引擎中图分类号:TP311.5 文献标识码:BImage Processing by Mixed Programming Between VC and MatlabLI Wen-yu(Institute of Directed Energy,National University of Defense Technology,Changsha Hunan 410073,China)ABSTRACT:The characteristics of several mixed programming methods are analyzed and
3、compared.The method by Matlabengine is selected,it is most suitable for an image capturing and processing application.It combines the advantagesof Visu2al C+and Matlab,and adequately make use of the functions of image processing toolbox.The interface and image cap2turingfunction of the program are i
4、mplemented by VC,all image processing functions are implemented by Matlab engine.An example shows the programming process.KEYWORDS:Mixed programming;Image processing;Engine1 引言Matlab发展到现在,已经成为世界上最流行的科学与工程计算中面向对象的交互编程工具,以可靠的矩阵运算为基础,具有图形绘制、数据处理、系统分析、信号和图象处理、符号运算功能,并且针对不同专业领域,研发了各种工具箱,其中包含了当今流行的新算法,广泛应
5、用于自动控制、信号与图像处理、证券分析,教学科研,Visual C+6.0是一个Win2dows下最主要的、功能强大的集成应用开发环境,它提供了一套MFC类库,这套由微软开发的程序类库已经成为设计窗口应用程序的准工业标准了,它与Windows系统紧密相连,利用它可以完成各种层面的窗口程序开发。如何充分利用Matlab的工具箱及其内部函数,将VC编程的优势结合起来,开发出高质量的软件,是人们关心的问题。2C+与Matlab混合编程的几种方法121)将Matlab的代码编译为VC编译器能识别的代码用Matlab的内部编译器MCC将.m文件转换为C或C+编译器所能识别的源代码即.cpp文件和它的头文
6、件.h文件。2)用Matcom(MIDEVA)或MCC将Matlab函数编译成动态连接库DLL文件,置于VC工程中,工程就可以直接调用库中封装的函数,由于Matlab函数不需要和VC代码一起编译,可以方便地用Matlab做一些函数来扩展VC所编应用程序的功能。3)在VC中直接书写类Matcom或类Matlab语句。按照Matcom的语法,在VC源程序中书写类Matcom语句,要注意过程开始时必须初始化Matcom进程即添加语句initM(MAT2COM-VERSION);写完类Matcom语句结束过程时,必须退出Matcom进程即添加语句exitM();4)使用MAT LAB引擎在VC中激活M
7、atlab把过程和数据写入Matlab的工作区,由Matlab来完成计算等工作。对比四种混合编程方法,如果应用不涉及Matlab的内部类,不利用Matlab功能强大的工具箱,前三种方法是非常理想的。如果想利用Matlab图像处理工具箱功能进行图像处理、二维三维图形显示时,第四种方法具有明显优势,虽然基于三维坐标变换算法和MFC的CDC类,或者借助OpenG L等工具也能实现非常强大的二维三维图形显示等功能,但是对一个非专业程序员来说,会在算法实现与程序编码上花费大量的时间和精力,经常对中心工作造成不利影响。452Matlab引擎采用客户机/服务器(Client/Server)的计算方式,VC程
8、序作为前端客户机通过Windows的ActiveX通道与后台Matlab服务器建立连接,实现动态通讯。虽然只要嵌入必要的Matlab引擎库而不需要启动整个Matlab,可以节省系统资源,但Matlab在后台运行,系统必须安装Matlab,程序不能脱离Matlab,导致程序运行效率相对低下。MAT LAB引擎提供给用户一组API函数,它有C和FOR2TRAN两个版本,表1列出了其C语言函数。表1C引擎函数函数名函数功能engOpenStart up MAT LAB engine启动MAT LAB引擎engCloseShut down MAT LAB engine关闭MAT LAB引擎engGet
9、ArrayGet a MAT LAB array from the MAT LAB engine从MAT LAB引擎获取一个MAT LAB矩阵engPutArraySend a MAT LAB array to the MAT LAB engine向MAT LAB引擎发送一个MAT LAB矩阵engEvalStringExecute a MAT LAB command执行一个MAT2LAB语句命令engOutputBufferCreate a buffer to store MAT LAB text output创建一个缓冲区以保存MAT LAB的文本输出engOpenSingleUseSta
10、rt a MAT LAB engine session for single,non2shared use启动一个独占的MAT LAB引擎对话engGetVisibleDetermine visibility of MAT LAB engine session确定MAT LAB引擎对话的可见性engSetVisibleShow or hide MAT LAB engine session显示或隐藏MAT LAB引擎对话它们的申明放在头文件engine.h中。3 程序实现由于Matlab引擎对Matlab的全功能调用能力,在实际应用中,我们经常基于Matlab引擎用C+与Matlab混合编程方法
11、实现二维三维图形显示,进行相关的图像处理。下面给出具体的实现过程:工作环境为VC+6.0和MatLab6.1,首先必须设置VC的编译环境,选择菜单T ools-Options-Directories由于MAT LAB的头文件都在安装MAT LAB时拷入以下两个子目录中,在Include files项中添加d:MAT LAB6P1 EXTERN INCLUDE CPP,d:MAT LAB6P1 EXTERN IN2CLUDE同样与VC+6.0相关的MAT LAB库文件都放在下面子目录中,因此在Library files项中添加d:MAT LAB6P1 EXTERN LIB WIN32 MICRO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC Matlab 混合 编程 实现 图像 处理
限制150内