實現衛星照片三維顯示
摘要: 本文介紹了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所有動態
- 柳巖與媽媽穿旗袍錄節目!身材高挑妝容顯清純,母女眉眼想像中相似