![VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示講解學(xué)習(xí)_第1頁(yè)](http://file4.renrendoc.com/view/fe88adb1f2d50e570393a98310f0cdd4/fe88adb1f2d50e570393a98310f0cdd41.gif)
![VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示講解學(xué)習(xí)_第2頁(yè)](http://file4.renrendoc.com/view/fe88adb1f2d50e570393a98310f0cdd4/fe88adb1f2d50e570393a98310f0cdd42.gif)
![VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示講解學(xué)習(xí)_第3頁(yè)](http://file4.renrendoc.com/view/fe88adb1f2d50e570393a98310f0cdd4/fe88adb1f2d50e570393a98310f0cdd43.gif)
![VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示講解學(xué)習(xí)_第4頁(yè)](http://file4.renrendoc.com/view/fe88adb1f2d50e570393a98310f0cdd4/fe88adb1f2d50e570393a98310f0cdd44.gif)
![VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示講解學(xué)習(xí)_第5頁(yè)](http://file4.renrendoc.com/view/fe88adb1f2d50e570393a98310f0cdd4/fe88adb1f2d50e570393a98310f0cdd45.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Good is good, but better carries it.精益求精,善益求善。VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示-基于VC與Matlab的混合編程實(shí)現(xiàn)圖像的三維顯示陳翔李進(jìn)文吳小雅(廣州氣象衛(wèi)星地面站廣州510640)摘要本文介紹了VC+與Matlab混合編程的一般實(shí)現(xiàn)方法,并實(shí)現(xiàn)對(duì)二維影像圖的三維效果顯示。關(guān)鍵詞VC+MATLABM文件三維顯示引言通常我們看到的圖像是二維狀態(tài)下的,而在某些特殊領(lǐng)域需要根據(jù)三維影像才能做出更進(jìn)一步的信息抽取,這就需要通過(guò)后處理的手段根據(jù)原始二維影像虛擬出其三維效果。MATLAB既是一種直觀、高效的計(jì)算機(jī)語(yǔ)言,同時(shí)又是一個(gè)科學(xué)計(jì)算平臺(tái)。
2、它為數(shù)據(jù)分析和數(shù)據(jù)可視化、算法和應(yīng)用程序開(kāi)發(fā)提供了最核心的數(shù)學(xué)和高級(jí)圖形工具。根據(jù)它提供的500多個(gè)數(shù)學(xué)和工程函數(shù),工程技術(shù)人員和科學(xué)工作者可以在它的集成環(huán)境中交互或編程以完成各自的計(jì)算。MATLA具有強(qiáng)大的矩陣運(yùn)算、數(shù)據(jù)處理和圖形顯示功能,其輸出結(jié)果可視化,編程效率極高,極少的代碼即可實(shí)現(xiàn)復(fù)雜的運(yùn)行.然而其邊解釋邊執(zhí)行,運(yùn)算效率較低,實(shí)現(xiàn)相同功能的代碼跟其他編程平臺(tái)相比運(yùn)行時(shí)間相對(duì)較長(zhǎng),且不適合作為通用的編程平臺(tái)。因此,為系統(tǒng)整體效率考慮,采取具有很高編程效率的通用編程平臺(tái)VC+與Matlab混合編程的方式,將更有助于發(fā)揮Matlab和VC的各自優(yōu)勢(shì)。1VC+與Matlab幾種常用的集成方法
3、Matlab與VC+混合編程的具體方式有多種,根據(jù)Matlab是否運(yùn)行可大致分為兩類:Matlab在后臺(tái)運(yùn)行和可以脫離Matlab環(huán)境運(yùn)行。Matlab5.0以后版本均自帶C/C+編譯器,可將其程序文件(M文件)轉(zhuǎn)換為C-MEX或C/C+程序。第一種方式是Matlab引擎采用客戶機(jī)/服務(wù)器的計(jì)算方式,通過(guò)Windows的ActivcX通道和Matlab接口。在具體的應(yīng)用中,VC的程序作為前端客戶機(jī),通過(guò)調(diào)用Matlab引擎在后臺(tái)與Matlab服務(wù)器建立連接,實(shí)現(xiàn)動(dòng)態(tài)通信。這種方法實(shí)現(xiàn)較為簡(jiǎn)單,不要求連接整個(gè)Matlab,只需要嵌入必要的Matlab引擎庫(kù),可大大地節(jié)省系統(tǒng)資源,但這種Matla
4、b在后臺(tái)運(yùn)行,運(yùn)行效率低下。第二種方式是使用Mathtools公司推出的Matlab集成編譯開(kāi)發(fā)平臺(tái)Mideva,它提供了對(duì)M文件的解釋執(zhí)行和開(kāi)發(fā)環(huán)境支持。經(jīng)過(guò)簡(jiǎn)單設(shè)置后Mideva可以將M源文件轉(zhuǎn)換為C/C+,然后添加到VC+工程中。也可以先利用Mideva直接生成EXE文件(方法是啟動(dòng)Mideva,在菜單File-Compiletoexe中,選出需要轉(zhuǎn)換的M文件),然后在VC+中通過(guò)shellexec()或winexec()等外部函數(shù)完成Shell調(diào)用。這種方法簡(jiǎn)單方便,但運(yùn)行時(shí)出現(xiàn)一個(gè)控制臺(tái)窗口,而且由于VC和Matlab之間不能交互,通用性差。第三種方式是通過(guò)Mablab編譯器將其m文
5、件轉(zhuǎn)換成為C/C+代碼文件并生成必要的dll庫(kù)后再通過(guò)VC+編譯器生成可獨(dú)立執(zhí)行的應(yīng)用程序,這種方式可以直接調(diào)用其中的庫(kù)函數(shù),生成并發(fā)布不必依賴Matlab的可執(zhí)行文件。在建立好函數(shù)m文件(不能是腳本m文件)后,用mcc命令將其轉(zhuǎn)換為C+代碼,命令行參數(shù)如下(假定m文件為test.m):mcc-t-LCpptest.m然后繼續(xù)生成動(dòng)態(tài)鏈接庫(kù)函數(shù):mcc-t-Wlib:test2-Tlink:libtest.m需要注意的是,lib:后跟生成的庫(kù)文件名不能和原m文件名相同(此處為test2),而且此處只能生成C語(yǔ)言方式的動(dòng)態(tài)鏈接庫(kù)。該編譯命令共生成9個(gè)文件,其中test.lib和test.dll是
6、可以在C/C+應(yīng)用程序中調(diào)用的動(dòng)態(tài)鏈接庫(kù)文件。最后一種方式是通過(guò)MatlabAdd-in實(shí)現(xiàn)Matlab與VC的混合編程,這是最方便的也是本文下面將要使用的集成方式。在Matlab6.0以后版本對(duì)其編譯器作了較大的改進(jìn),其支持更多的數(shù)據(jù)類型,更強(qiáng)的優(yōu)化功能,更為重要的是其MatlabAdd-in提供了一個(gè)Matlab和VC直接集成的途徑。它具有一些新的特征:快速集成M文件到C+工程中,創(chuàng)建獨(dú)立的C/C+應(yīng)用程序或CMEXDLL;通過(guò)M文件創(chuàng)建共享庫(kù)或MEX文件;內(nèi)含VisualMatrixViewer,調(diào)試過(guò)程中可以查看矩陣變量的值;直接修改M源文件而不是修改生成的C/C+文件;方便快捷地打包
7、應(yīng)用程序等。下面給出MatlabAdd-in的具體安裝步驟:1.1啟動(dòng)Matlab,運(yùn)行mex-setup,按照菜單提示選取MSVC。它將配置MEX使用VC為默認(rèn)的編譯器(創(chuàng)建C-MEX文件必需),并安裝MatlabAdd-in所需文件到VC目錄。1.2.在Matlab環(huán)境下運(yùn)行mbuild-setup,按提示選取MSVC。它將配置使用VC為默認(rèn)的編譯器(創(chuàng)建獨(dú)立應(yīng)用程序必需),并安裝MatlabAdd-in所需的MatlabCompiler和C/C+數(shù)學(xué)庫(kù)文件到VC目錄。1.3.在Matlab環(huán)境下運(yùn)行cd(prefdir)和mccsavepath。它將保存當(dāng)前Matlab路徑到mccpat
8、h文件中,這是因?yàn)镸atlabAdd-in脫離Matlab運(yùn)行,否則它無(wú)從知道Matlab路徑。1.4.啟動(dòng)VC環(huán)境,從菜單Tools-Customize選擇Add-insandMacroFiles選項(xiàng)卡,選中MatlabAdd-in,點(diǎn)擊Close。VC工具欄出現(xiàn)MatlabAdd-in圖標(biāo),完成MatlabAdd-in的配置,以后每次啟動(dòng)VC將自動(dòng)加載MatlabAdd-in。1.5.配置Windows系統(tǒng)。如果是Windows95/98系統(tǒng),找到config.sys,添加一行:shell=c:/e:32768/p;如果是WindowsME則需設(shè)置Conagent.exe的屬性Memory
9、選項(xiàng)卡的InitialEnvironment值為4096。2三維顯示程序的創(chuàng)建三維顯示處理的核心部分由Matlab實(shí)現(xiàn),首先通過(guò)imread()與imfinfo()函數(shù)得到圖象點(diǎn)陣數(shù)據(jù)及其大小,在meshgrid()創(chuàng)建相應(yīng)的網(wǎng)格后以圖象灰度值作為高度坐標(biāo)值,并通過(guò)meshc()進(jìn)行三維網(wǎng)格繪制,最后由surf()完成表面繪制。具體實(shí)現(xiàn)代碼如下:%讀取圖象數(shù)據(jù)到矩陣A,map=imread(input.bmp);%得到圖象信息info=imfinfo(input.bmp);w=info.Width;h=info.Height;%創(chuàng)建與圖象大小相對(duì)應(yīng)的網(wǎng)格x,y=meshgrid(1:w,1:h
10、);z=x-y+y-x;i=1;j=1;%用圖象灰度值填充高度值while(i-1)*w+jwj=1;i=i+1;endend;%繪制三維圖象meshc(x,y,z);%繪制表面surf(x,y,z,FaceColor,interp,EdgeColor,none,FaceLighting,phong)此m文件創(chuàng)建完畢后,啟動(dòng)VC+,創(chuàng)建一個(gè)MatlabProjectWizard工程,選擇所生成的應(yīng)用程序的類型為WindowsConsoleEXE、C+程序、Debug模式、生成Main函數(shù)、需要圖形支持。點(diǎn)擊Finish后在出現(xiàn)的對(duì)話框中將剛創(chuàng)建的M文件添加到工程,這時(shí)VC將調(diào)用MCC生成一個(gè)混
11、合M文件和C+的工程。在FileView選項(xiàng)卡中可以看到添加的M文件和自動(dòng)生成的C+文件。編譯運(yùn)行后,將能夠?qū)崿F(xiàn)二維圖像的三維顯示。3在主程序中完成對(duì)三維顯示程序的調(diào)用由于上述三維顯示程序只是整個(gè)系統(tǒng)中的一個(gè)部分,因此還需要在主程序中通過(guò)CreateProcess()完成對(duì)其進(jìn)程的創(chuàng)建:charcCommandLineMAX_PATH;PROCESS_INFORMATIONpi;STARTUPINFOsi=sizeof(si);/啟動(dòng)子進(jìn)程CStringsCommandLine=GetCurPath()+LandmineShower.exe;:strcpy(cCommandLine,sComm
12、andLine);CreateProcess(NULL,cCommandLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);三維顯示程序是一個(gè)控制臺(tái)程序。如果需要隱藏其界面,可以在其進(jìn)程創(chuàng)建完畢之后通過(guò)FindWindow()函數(shù)找到其窗口句柄并進(jìn)而通過(guò)向ShowWindow()指定該窗口句炳來(lái)實(shí)現(xiàn):Sleep(100);/關(guān)閉子進(jìn)程的主線程句柄CloseHandle(pi.hThread);/隱藏控制臺(tái)窗口m_hwnd3DShower=:FindWindow(NULL,sCommandLine);if(m_hwnd3DShower!=NULL):ShowWindow(m_hwnd3DShower,SW_HIDE);4小結(jié)混合編程是綜合使用多種開(kāi)發(fā)工具技術(shù)優(yōu)勢(shì)的一種常用手段,本文通過(guò)對(duì)VC+和Matlab的集成開(kāi)發(fā),以精練的代碼和較高的運(yùn)行效率實(shí)現(xiàn)了對(duì)二維遙感影像的三維效果顯示。通過(guò)本文所述Matlab與VC+集成開(kāi)發(fā)方法,讀者可
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廣告活動(dòng)策劃與執(zhí)行代理合同范本
- 2025年度中小企業(yè)信用貸款合同范本及證明書格式
- 2025年度海運(yùn)集裝箱清潔與消毒服務(wù)合同
- 2025年度糧食行業(yè)市場(chǎng)拓展與品牌推廣合同
- 2025年度家暴離婚財(cái)產(chǎn)分割專項(xiàng)法律服務(wù)合同
- 金華浙江金華蘭溪市人民政府辦公室招聘勞務(wù)派遣工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 貴州2025年貴州開(kāi)放大學(xué)(貴州職業(yè)技術(shù)學(xué)院)招聘41人筆試歷年參考題庫(kù)附帶答案詳解
- 衢州浙江衢州江山市峽口中心幼兒園招聘幼兒園專任教師筆試歷年參考題庫(kù)附帶答案詳解
- 珠海廣東珠海市澳深度合作區(qū)頌琴小學(xué)招聘臨聘專任教師7人筆試歷年參考題庫(kù)附帶答案詳解
- 湖南2025年湖南農(nóng)業(yè)大學(xué)-岳麓山實(shí)驗(yàn)室博士后招聘筆試歷年參考題庫(kù)附帶答案詳解
- PID圖(工藝儀表流程圖)基礎(chǔ)知識(shí)培訓(xùn)課件
- 《澳大利亞特有動(dòng)物》課件
- 社會(huì)工作綜合能力上(初級(jí))課件
- 《數(shù)據(jù)結(jié)構(gòu)》課件(完整版)
- 2023年春節(jié)后建筑施工復(fù)工復(fù)產(chǎn)專項(xiàng)方案
- 污水處理廠化驗(yàn)管理手冊(cè)
- 出納收入支出記賬表Excel模板
- 叉車操作規(guī)程
- 2021年春新青島版(五四制)科學(xué)四年級(jí)下冊(cè)全冊(cè)教學(xué)課件
- 土建工程技術(shù)標(biāo)范本(DOC167頁(yè))
- 惡性腫瘤化療后重度骨髓抑制病人的護(hù)理論文
評(píng)論
0/150
提交評(píng)論