科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC+Matlab实现卫星照片三维显示

VC+Matlab实现卫星照片三维显示

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了VC++与Matlab编程实现对遥感卫星获取得到的二维大地影像三维效果显示的方法。

作者:青岛郎锐 来源:天极网 2007年10月19日

关键字: VC Matlab 卫星照片 三维显示

  • 评论
  • 分享微博
  • 分享邮件
摘要: 本文介绍了VC++与Matlab混合编程的一般实现方法,并在此基础之上实现了对遥感卫星获取得到的二维大地影像的三维效果显示。

  关键词: VC++;Matlab;M文件;遥感影象;三维显示

  引言

  随着科技的进步,遥感卫星早已在众多领域得到广泛应用,如资源普查、灾害预警和土地普查等。由于现有的遥感探测设备只有红外行扫仪、多光谱CCD相机或SAR雷达等几大类,因此从卫星得到的原始图象只可能是二维图象,而在某些特殊领域需要根据三维影像才能做出更进一步的信息抽取,这就需要通过后处理的手段根据原始二维遥感影像虚拟出其三维效果。

  具体的技术解决途径有很多,比如在VC++下可以通过直接对OpenGL或Direct3D进行编程实现,但由于此类应用需要大量的科学计算,使用具有强大的矩阵运算、数据处理和图形显示功能的Matlab进行开发比较合适,其输出结果可视化,编程效率极高,极少的代码即可实现复杂的运行,然而其边解释边执行,运算效率较低,实现相同功能的代码跟其他编程平台相比运行时间相对较长,且不适合作为通用的编程平台。因此,为系统整体效率考虑,采取具有很高编程效率的通用编程平台VC++与Matlab混合编程的方式将更有助于发挥Matlab和VC的各自优势。

  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之间不能交互,通用性差。

  第三种方式是通过Mablat编译器将其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. 启动Matlab,运行"mex-setup",按照菜单提示选取MSVC。它将配置MEX使用VC为默认的编译器(创建C-MEX文件必需),并安装Matlab Add-in所需文件到VC目录。

  2. 在Matlab环境下运行"mbuild-setup", 按提示选取MSVC。它将配置使用VC为默认的编译器(创建独立应用程序必需),并安装Matlab Add-in所需的Matlab Compiler和C/C++数学库文件到VC目录。

  3. 在Matlab环境下运行"cd(prefdir)"和"mccsavepath"。它将保存当前Matlab路径到mccpath文件中,这是因为Matlab Add-in脱离Matlab运行,否则它无从知道Matlab路径。

  4. 启动VC环境,从菜单"Tools -> Customize"选择"Add-ins and Macro Files"选项卡,选中"Matlab Add-in", 点击"Close"。VC工具栏出现Matlab Add-in图标,完成Matlab Add-in的配置,以后每次启动VC将自动加载Matlab Add-in。

  5. 配置Windows系统。如果是Windows 95/98系统,找到config.sys, 添加一行:shell= c:\ command.com /e:32768 /p;如果是Windows ME则需设置Conagent.exe的属性Memory选项卡的Initial Environment值为4096。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章