亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stext.txt

?? 一種采用VC和Matlab編程實現衛星照片的三維顯示方法
?? TXT
字號:
			   VC+Matlab實現衛星照片的三維顯示

本文介紹了VC++與Matlab混合編程的一般實現方法,并在此基礎之上實現了對遙感衛星獲取得到的二維大地影像的三維效果顯示。

  隨著科技的進步,遙感衛星早已在眾多領域得到廣泛應用,如資源普查、災害預警和土地普查等。由于現有的遙感探測設備只有紅外行掃儀、多光譜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。
三維顯示程序的創建

  三維顯示處理的核心部分由Matlab實現,首先通過imread ()與imfinfo()函數得到圖象點陣數據及其大小,在meshgrid()創建相應的網格后以圖象灰度值作為高度坐標值,并通過meshc()進行三維網格繪制,最后由surf()完成表面繪制。具體實現代碼如下:

  % 讀取圖象數據到矩陣
  [A, map] = imread('input.bmp');
  % 得到圖象信息
  info = imfinfo('input.bmp');
  w = info.Width;
  h = info.Height;
  % 創建與圖象大小相對應的網格
  [x,y] = meshgrid(1:w,1:h);
  z = x - y + y - x;
  i = 1;
  j = 1;
  % 用圖象灰度值填充高度值
  while (i - 1) * w + j <= w * h
  z(i,j) = A(i,j);
  j = j + 1;
  if j > w
  j = 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函數、需要圖形支持。點擊"Finish"后在出現的對話框中將剛創建的M文件添加到工程,這時VC將調用MCC生成一個混合M文件和C++的工程。在"File View"選項卡中可以看到添加的M文件和自動生成的C++文件。編譯運行后,將能夠實現二維圖像的三維顯示。

  在主程序中完成對三維顯示程序的調用

  由于上述三維顯示程序只是整個系統中的一個部分,因此還需要在主程序中通過CreateProcess()完成對其進程的創建:

  char cCommandLine[MAX_PATH];
  PROCESS_INFORMATION pi;
  STARTUPINFO si = {sizeof(si)};
  // 啟動子進程
  CString sCommandLine = 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);

  圖一和圖二分別為遙感衛星探測得到的二維原始大地影象和通過本程序實現的其三維效果顯示圖。通過工具欄上的旋轉按鈕可以進行任意視點角度的觀察。

  



  小結:混合編程是綜合使用多種開發工具技術優勢的一種常用手段,本文通過對VC++和Matlab的集成開發,以精練的代碼和較高的運行效率實現了對二維遙感影像的三維效果顯示。通過本文所述Matlab與VC++集成開發方法,讀者可以自行對其他類似程序進行開發。當然,也可以根據實際需要,靈活選用除本文所用方法外的其他三種集成開發方法。本文所述程序在Windows 2000 Professional下由Microsoft Visual C++ 6.0與Mathworks Matlab 6.1編譯、調試通過。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品99久久久久久| 国产91精品露脸国语对白| 日本一区二区免费在线| 欧美成人乱码一区二区三区| 在线成人小视频| 911国产精品| 欧美一级专区免费大片| 91精品国产91久久久久久最新毛片| 欧美日韩国产经典色站一区二区三区| 欧美性生活久久| 欧美日韩精品电影| 欧美成人官网二区| 久久精品视频一区二区三区| 欧美韩日一区二区三区四区| 中文字幕人成不卡一区| 亚洲精品视频一区| 午夜欧美电影在线观看| 麻豆精品在线观看| 国产成人综合亚洲网站| 白白色 亚洲乱淫| 一区二区三区免费| 99精品国产视频| 国产凹凸在线观看一区二区| 波多野结衣的一区二区三区| 色综合色狠狠综合色| 91精品国产综合久久久蜜臀粉嫩| 欧美一区二区三区在线| 国产日韩欧美电影| 亚洲人成在线播放网站岛国| 日韩国产欧美三级| 成人免费视频网站在线观看| 欧美日韩国产一区二区三区地区| 2017欧美狠狠色| 一区二区三区小说| 国产精品一区二区久久精品爱涩| 97久久精品人人做人人爽50路| 欧美乱妇一区二区三区不卡视频| 97成人超碰视| 日韩女优制服丝袜电影| 亚洲日本va在线观看| 老司机午夜精品| 欧美亚洲国产一区二区三区va | 欧美电影精品一区二区| 久久久不卡网国产精品二区| 亚洲另类在线一区| 国产乱码精品一区二区三区五月婷| 色乱码一区二区三区88| 久久精品欧美一区二区三区不卡| 亚洲第一福利一区| 99精品欧美一区二区蜜桃免费 | 国产一区二区三区四区五区美女| 欧美在线免费观看亚洲| 国产欧美精品区一区二区三区| 日韩激情在线观看| 91蜜桃婷婷狠狠久久综合9色| 久久久精品免费免费| 奇米777欧美一区二区| 日本福利一区二区| 日本欧美一区二区| 欧美丝袜丝交足nylons| 中文字幕一区二区三区在线不卡| 国产一区二区三区| 日韩免费电影一区| 日日夜夜精品视频免费| 欧美中文字幕一区二区三区 | 婷婷久久综合九色国产成人 | 欧美一区二区三区免费大片| 亚洲美女视频一区| 成人18精品视频| 国产欧美日韩不卡免费| 国产一区免费电影| 精品电影一区二区三区| 日韩主播视频在线| 日韩一区二区在线免费观看| 性做久久久久久| 在线电影一区二区三区| 日韩电影在线一区二区| 欧美一区三区四区| 久久精品72免费观看| 欧美第一区第二区| 国产一区二区三区综合| wwww国产精品欧美| 福利一区二区在线观看| 中文字幕精品综合| 91色乱码一区二区三区| 亚洲综合色自拍一区| 欧美午夜一区二区三区 | 欧美大片日本大片免费观看| 蜜桃视频第一区免费观看| 日韩一级视频免费观看在线| 捆绑调教一区二区三区| 久久精品视频免费观看| 99久久免费精品| 亚洲国产精品嫩草影院| 日韩欧美亚洲国产精品字幕久久久 | 777久久久精品| 精品亚洲成av人在线观看| 久久久久久久久久久久久女国产乱| 国产精品 日产精品 欧美精品| 中文字幕乱码亚洲精品一区| 在线看国产一区二区| 日韩国产在线观看一区| 久久精品视频一区| 91福利在线导航| 久久精品国产久精国产| 国产精品久99| 国产日韩亚洲欧美综合| 在线亚洲一区观看| 精品一区精品二区高清| 亚洲免费视频成人| 日韩久久精品一区| 色一情一伦一子一伦一区| 天堂资源在线中文精品| 久久精品网站免费观看| 欧美亚日韩国产aⅴ精品中极品| 精品无人码麻豆乱码1区2区 | 久久综合久久综合亚洲| 色域天天综合网| 国产原创一区二区| 亚洲午夜三级在线| 国产精品免费aⅴ片在线观看| 欧美日韩精品一区二区在线播放| 国产不卡在线视频| 丝袜美腿亚洲一区二区图片| 国产精品久久二区二区| 精品日韩一区二区| 欧美理论片在线| 91欧美一区二区| 国产大陆a不卡| 久久精品免费观看| 亚洲影院理伦片| 18成人在线视频| 国产视频一区在线观看| 在线观看91精品国产麻豆| 色综合久久88色综合天天6| 国产一二精品视频| 久久 天天综合| 婷婷国产v国产偷v亚洲高清| 日韩美女啊v在线免费观看| 久久久亚洲精品石原莉奈| 91精品国产一区二区| 欧美日韩国产首页| 欧美色倩网站大全免费| 97se亚洲国产综合在线| caoporen国产精品视频| 国产成人av电影在线观看| 久久成人免费网| 久久er99精品| 精品一区中文字幕| 国产毛片精品一区| 狠狠色丁香久久婷婷综| 国产在线播放一区| 国产剧情在线观看一区二区| 国产精品亚洲第一区在线暖暖韩国| 精品在线免费视频| 精品在线免费观看| 国产a区久久久| 99久久夜色精品国产网站| 欧美日韩高清一区二区| 欧美日韩国产中文| 日韩一区二区三区在线| 日韩欧美中文一区二区| 久久久精品中文字幕麻豆发布| 久久影音资源网| 日本一区二区高清| 亚洲美女在线国产| 性久久久久久久久久久久| 麻豆精品视频在线观看免费 | 懂色一区二区三区免费观看| 国产不卡一区视频| 在线精品亚洲一区二区不卡| 欧美三级电影在线观看| 欧美一级国产精品| 精品国产乱码久久久久久浪潮| 久久精品综合网| 亚洲欧美日韩国产综合在线| 丝袜亚洲精品中文字幕一区| 韩国精品免费视频| 99免费精品视频| 91精品久久久久久久99蜜桃| 久久综合国产精品| 亚洲嫩草精品久久| 男女激情视频一区| 成人av午夜电影| 制服丝袜成人动漫| 国产精品久久久久久久久久免费看 | 久久草av在线| 91视频国产资源| 欧美tickling网站挠脚心| 中文字幕一区二区不卡| 三级亚洲高清视频| 成人动漫一区二区在线| 精品视频1区2区| 国产欧美日韩另类一区| 五月开心婷婷久久| 成人免费视频免费观看| 欧美精品在线视频| 亚洲欧美另类在线| 国产成人综合在线观看| 欧美一卡二卡在线|