文档详情

VC与Matlab的混合编程实现图像的三维显示.doc

发布:2018-12-24约4.32千字共6页下载文档
文本预览下载声明
基于VC与Matlab的混合编程实现图像的三维显示   陈翔 李进文 吴小雅 (广州气象卫星地面站? 广州? 510640)   ? 摘? 要? 本文介绍了VC++与Matlab混合编程的一般实现方法,并实现对二维影像图的三维效果显示。 ? 关键词 ?VC++? MATLAB? M文件? 三维显示   引言 ??? 通常我们看到的图像是二维状态下的,而在某些特殊领域需要根据三维影像才能做出更进一步的信息抽取,这就需要通过后处理的手段根据原始二维影像虚拟出其三维效果。 ?MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。MATLA具有强大的矩阵运算、数据处理和图形显示功能,其输出结果可视化,编程效率极高,极少的代码即可实现复杂的运行.然而其边解释边执行,运算效率较低,实现相同功能的代码跟其他编程平台相比运行时间相对较长,且不适合作为通用的编程平台。因此,为系统整体效率考虑,采取具有很高编程效率的通用编程平台VC++与Matlab混合编程的方式,将更有助于发挥Matlab和VC的各自优势。 ? ? 1? ?VC++与Matlab几种常用的集成方法   Matlab与VC++混合编程的具体方式有多种,根据Matlab是否运行可大致分为两类:Matlab在后台运行和可以脱离Matlab环境运行。Matlab 5.0以后版本均自带C/C++编译器,可将其程序文件(M文件)转换为C-MEX或C/C++程序。 ??? 第一种方式是Matlab引擎采用客户机/服务器的计算方式,通过Windows的ActivcX通道和Matlab接口。在具体的应用中,VC的程序作为前端客户机,通过调用Matlab引擎在后台与Matlab服务器建立连接,实现动态通信。这种方法实现较为简单,不要求连接整个Matlab,只需要嵌入必要的Matlab引擎库,可大大地节省系统资源,但这种Matlab在后台运行,运行效率低下。 ??? 第二种方式是使用Mathtools公司推出的Matlab集成编译开发平台Mideva,它提供了对M文件的解释执行和开发环境支持。经过简单设置后Mideva可以将M源文件转换为C/C++,然后添加到VC++工程中。 也可以先利用Mideva直接生成EXE文件(方法是启动Mideva,在菜单File-Compile to exe中, 选出需要转换的M文件),然后在VC++中通过shellexec()或winexec()等外部函数完成Shell调用。这种方法简单方便,但运行时出现一个控制台窗口,而且由于VC和Matlab之间不能交互,通用性差。 ??? 第三种方式是通过Mablab编译器将其m文件转换成为C/C++代码文件并生成必要的dll库后再通过VC++编译器生成可独立执行的应用程序,这种方式可以直接调用其中的库函数,生成并发布不必依赖Matlab的可执行文件。在建立好函数m文件(不能是脚本m文件)后,用mcc命令将其转换为C++代码,命令行参数如下(假定m文件为test.m): mcc -t -L Cpp test.m   然后继续生成动态链接库函数: mcc -t -W lib:test2 -T link:lib test.m ??? 需要注意的是,lib:后跟生成的库文件名不能和原m文件名相同(此处为test2),而且此处只能生成C语言方式的动态链接库。该编译命令共生成9个文件,其中test.lib和test.dll是可以在C/C++应用程序中调用的动态链接库文件。 ??? ?最后一种方式是通过Matlab Add-in实现Matlab与VC的混合编程,这是最方便的也是本文下面将要使用的集成方式。在Matlab 6.0以后版本对其编译器作了较大的改进,其支持更多的数据类型,更强的优化功能,更为重要的是其Matlab Add-in提供了一个Matlab和VC直接集成的途径。它具有一些新的特征:快速集成M文件到C++工程中,创建独立的 C/C++应用程序或C MEX DLL;通过M文件创建共享库或MEX文件;内含Visual Matrix Viewer,调试过程中可以查看矩阵变量的值; 直接修改M源文件而不是修改生成的C/C++文件;方便快捷地打包应用程序等。下面给出Matlab Add-in的具体安装步骤: 1. 1 启动Matlab,运行mex-setup,按照菜单提示选取MSVC。它将配置MEX使用VC为默认的编译器(创建C-MEX文件必需),并安装Matlab Add-in所需文件到VC目录。 1.2. 在Ma
显示全部
相似文档