实现卫星照片三维显示
摘要: 本文介绍了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个文件,其中b和l是可以在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系统,找到s, 添加一行:shell= c:\\ /e:32768 /p;如果是Windows ME则需设置e的属性Memory选项卡的Initial Environment值为4096。
长春好医院男科上海哪家妇科医院比较正规
成都早泄治疗多少钱
- 赏美文丨周家窗口 作者:余秋雨 诵读:王卉
- 国家中心城市学校,怎会并未几亩成熟的麦地?
- 二嫂/Esoteric Grandioso K1X 新款旗舰SACD/CD播放器
- 情是感官折射的感官
- 32岁杨幂,30岁杨颖,36岁王心凌路人照,网友:扎实重要
- 54岁郑钧好可怕,与小16岁娇妻在机场热吻,剪齐刘海刻意扮嫩
- “不该让我背锅?”男生考公政审没过,抱怨“连坐”不公平
- 戏仿手臂该怎么画?戏仿手臂简单画法
- 可怕!在此之前男同事送她全身镜,称有特殊功能!
- 联交所:鼓励证券公司积极发挥融资中介职能 支持受疫情影响严重地区和行业开展股权融资和债券融资
- 什么持续性?威少清空INS所有动态
- 柳岩与妈妈穿旗袍录节目!身材高挑妆容显清纯,母女眉眼想像中相似