版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于VC与Matlab的混合编程实现图像的三维显示陈翔 李进文 吴小雅(广州气象卫星地面站 广州 510640)摘 要 本文介绍了VC+与Matlab混合编程的一般实现方法,并实现对二维影像图的三维效果显示。关键词 VC+ MATLAB M文件 三维显示引言 通常我们看到的图像是二维状态下的,而在某些特殊领域需要根据三维影像才能做出更进一步的信息抽取,这就需要通过后处理的手段根据原始二维影像虚拟出其三维效果。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工
2、程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。MATLA具有强大的矩阵运算、数据处理和图形显示功能,其输出结果可视化,编程效率极高,极少的代码即可实现复杂的运行.然而其边解释边执行,运算效率较低,实现相同功能的代码跟其他编程平台相比运行时间相对较长,且不适合作为通用的编程平台。因此,为系统整体效率考虑,采取具有很高编程效率的通用编程平台VC+与Matlab混合编程的方式,将更有助于发挥Matlab和VC的各自优势。1 VC+与Matlab几种常用的集成方法 Matlab与VC+混合编程的具体方式有多种,根据Matlab是否运行可大致分为两类:Matlab在后台运行和可以
3、脱离Matlab环境运行。Matlab 5.0以后版本均自带C/C+编译器,可将其程序文件(M文件)转换为C-MEX或C/C+程序。 第一种方式是Matlab引擎采用客户机/服务器的计算方式,通过Windows的ActivcX通道和Matlab接口。在具体的应用中,VC的程序作为前端客户机,通过调用Matlab引擎在后台与Matlab服务器建立连接,实现动态通信。这种方法实现较为简单,不要求连接整个Matlab,只需要嵌入必要的Matlab引擎库,可大大地节省系统资源,但这种Matlab在后台运行,运行效率低下。 第二种方式是使用Mathtools公司推出的Matlab集成编译开发平台Mide
4、va,它提供了对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+编译器生成可独立执行的应用程序,这种方
5、式可以直接调用其中的库函数,生成并发布不必依赖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+应用程序中调用的动态链接库文件。 最后一种方式是通过Matla
6、b 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的具体安装
7、步骤:1. 1 启动Matlab,运行mex-setup,按照菜单提示选取MSVC。它将配置MEX使用VC为默认的编译器(创建C-MEX文件必需),并安装Matlab Add-in所需文件到VC目录。 1.2. 在Matlab环境下运行mbuild-setup, 按提示选取MSVC。它将配置使用VC为默认的编译器(创建独立应用程序必需),并安装Matlab Add-in所需的Matlab Compiler和C/C+数学库文件到VC目录。 1.3. 在Matlab环境下运行cd(prefdir)和mccsavepath。它将保存当前Matlab路径到mccpath文件中,这是因为Matlab A
8、dd-in脱离Matlab运行,否则它无从知道Matlab路径。 1.4. 启动VC环境,从菜单Tools - Customize选择Add-ins and Macro Files选项卡,选中Matlab Add-in, 点击Close。VC工具栏出现Matlab Add-in图标,完成Matlab Add-in的配置,以后每次启动VC将自动加载Matlab Add-in。1.5. 配置Windows系统。如果是Windows 95/98系统,找到config.sys, 添加一行:shell= c: /e:32768 /p;如果是Windows ME则需设置Conagent.exe的属性Mem
9、ory选项卡的Initial Environment值为4096。2 三维显示程序的创建 三维显示处理的核心部分由Matlab实现,首先通过imread()与imfinfo()函数得到图象点阵数据及其大小,在meshgrid()创建相应的网格后以图象灰度值作为高度坐标值,并通过meshc()进行三维网格绘制,最后由surf()完成表面绘制。具体实现代码如下:% 读取图象数据到矩阵A, map = imread(input.bmp);% 得到图象信息info = imfinfo(input.bmp);w = info.Width;h = info.Height;% 创建与图象大小相对应的网格x,
10、y = meshgrid(1:w,1:h);z = x - y + y - x;i = 1;j = 1;% 用图象灰度值填充高度值while (i - 1) * w + j wj = 1;i = i + 1;end end;% 绘制三维图象meshc(x,y,z);% 绘制表面surf(x,y,z,FaceColor,interp,EdgeColor,none,FaceLighting,phong)此m文件创建完毕后,启动VC+,创建一个Matlab Project Wizard工程,选择所生成的应用程序的类型为Windows Console EXE、C+程序、Debug模式、生成Main函数
11、、需要图形支持。点击Finish后在出现的对话框中将刚创建的M文件添加到工程,这时VC将调用MCC生成一个混合M文件和C+的工程。在File View选项卡中可以看到添加的M文件和自动生成的C+文件。 编译运行后,将能够实现二维图像的三维显示。3 在主程序中完成对三维显示程序的调用 由于上述三维显示程序只是整个系统中的一个部分,因此还需要在主程序中通过CreateProcess()完成对其进程的创建:char cCommandLineMAX_PATH;PROCESS_INFORMATION pi;STARTUPINFO si = sizeof(si);/ 启动子进程CString sComma
12、ndLine = GetCurPath() + LandmineShower.exe;:strcpy(cCommandLine, sCommandLine);CreateProcess(NULL, cCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);三维显示程序是一个控制台程序。如果需要隐藏其界面,可以在其进程创建完毕之后通过FindWindow()函数找到其窗口句柄并进而通过向ShowWindow()指定该窗口句炳来实现:Sleep(100);/ 关闭子进程的主线程句柄CloseHandle(pi.hThread);/ 隐藏控制台窗口m_hwnd3DShower = :FindWindow(NULL, sCommandLine);if (m_hwnd3DShower != NULL):ShowWindow(m_hwnd3DShower, SW_HIDE);4小结混合编程是综合使用多种开发工具技术优势的一种常用手段,本文通过对VC+和Matlab的集成开发,以精练的代码和较高的运行效率实现了对二维遥感影像的三维效果显示。通过本文所述Matlab与VC+集成开发方法,读者可以自行对其他类似程序进行开发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:闽派古琴的历史、现状及文献研究
- 课题申报参考:面向学生创造力培育的场馆学习环境测评体系与优化机制研究
- 课题申报参考:面向产品个性化定制的共享制造资源协同调度优化理论研究
- 二零二五年度智能电网信息化系统运维与电力市场服务合同3篇
- 二零二五年度党政机关会议酒店住宿及会议场地租赁合同4篇
- 2025年度土地承包经营权续包合同示范文本4篇
- 2025年度个人个人房产买卖合同(含装修及配套设施)2篇
- 2025年度钢材行业投资合作开发合同
- 2025年个人购房合同(含房屋保险服务)
- 二零二五版南京房地产抵押物拍卖合同4篇
- 2024中考复习必背初中英语单词词汇表(苏教译林版)
- 海员的营养-1315医学营养霍建颖等讲解
- 《现代根管治疗术》课件
- 肩袖损伤的护理查房课件
- 2023届北京市顺义区高三二模数学试卷
- 公司差旅费报销单
- 我国全科医生培训模式
- 2021年上海市杨浦区初三一模语文试卷及参考答案(精校word打印版)
- 八年级上册英语完形填空、阅读理解100题含参考答案
- 八年级物理下册功率课件
- DBJ51-T 188-2022 预拌流态固化土工程应用技术标准
评论
0/150
提交评论