Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取_第1頁
Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取_第2頁
Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取_第3頁
Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取_第4頁
Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、VC與Matlab混合編程實現(xiàn)成組圖像邊緣的連續(xù)提取周海琴',張張健三2(1合肥工業(yè)大學機城與汽車工程學It安徽合肥230009"上朋上"AW r WirayXil安徵合肥230009)Implement of Extracting the Edge of a Group of ImagesatlabZHOU Hai .ZHANG Ye1 .ZHANG(1. College of Mechanical and Automotive Engineering«Hefei Univen2 Anhui Ankaijinda Industry and Trade C

2、o.Ltd. 64 64 摘要:使用Matlab 調用圖像處理工具箱的 功能通過VC調月其導出的COM接口 并對返回 姑果進行后續(xù)處理,在丸分利用成熟畫數(shù)庫加快開 發(fā)的同時,保證了友好的用戶界面和性能。程序打 包后可以脫蔦Matlab環(huán)境運行程序實現(xiàn)了綸入 一血DICOM圖像獲得設定國值下的二維邊界體 息.關鍵詞:COM;VC;MatIab;混合編程;接口 中圖分類號:TH122文獻標識碼:A文章編號:1001 2257(2009)07 - 0064 -03Abstract:Matlab functions call the image processing toolbox*and then

3、VC calls its COM interface and deals with the returning results In the full use of the mature library to speed up the develop ment this method realizes a friendly user interface. This procedure can run from the Matlab environ ment after packed When inputting a group of DICOM images* thi3 procedure g

4、ains the two - dimensional border information of the defined threshold.Key words: COM; VC; Matlab; joint program ming; interface0引言由于Matlab是一種腳本語育,程序運行效率低收WBW .2009-02-13下,而且不能脫離Matlab軟件環(huán)境,這就大大限制 了程序的可移植性和通用性.另外,其應用軟件的 開發(fā)界面不是很友好,不便于用戶交互.而Visual C+ +能方便地開發(fā)出各種用戶界面.用VC開發(fā) 的系統(tǒng)具有界面友好、代碼效率高、執(zhí)行速度快和易 維護升級等優(yōu)點

5、,但VC提供的數(shù)學函數(shù)相對太少, 顯示和處理圖像的程序代碼相對太長,從而對開發(fā) 者的要求相對較高.在進行圖像處理時,采用兩者 聯(lián)合編程無軽是最佳選擇,可大大提高開發(fā)效率. 通過聯(lián)合編程實現(xiàn)了 D1COM圖像的邊界提取,為 后續(xù)的三維重建工作莫定了基礎.1圖像邊界提取原理及Matlab實現(xiàn)1.1邊緣檢測的基本原理及常用算子一刃邊緣檢測的實質是采用某種算法來提取出圖像 中對象與背景間的交界線.所謂邊緣是指其周圍像 素灰度發(fā)生急劇變化的那些像素的集合.圖像灰度 的變化情況可以用圖像灰度分布的梯度來反映,因 此可以用局部圖像微分技術來獲得邊緣檢測算子. 經典的邊緣檢測方法姥對原始圖像中像素的某小鄰 域

6、來構造邊緣檢測算子.記匸=+為圖像的梯度,/(z,y)中包含局部灰度的變化信息。記 eQ,y) =為梯度Q,y的幅度,e(x,y)可以用作邊緣檢測算子.為 了簡化計算,也可以將e(sy)定義為僞導數(shù)人,力 的絕對值之和:e(Xfy) = |/,(x,y)| + |/(x>y)|(機械與電子>2009(7) 64 64 以這些理論為依據人們提岀了許多算法其中 比較*用的邊緣檢測方法有差分邊緣檢測.Roberts 邊緣檢測算子、Sobel邊緣檢測算子、Prewitt邊緣檢 測算子、Robinson邊緣檢測算子、Laplace邊緣檢測 算子、Canny算子和LOG算子等.在使用算子進行邊

7、緣檢測時設工為像素編 號;FGr)為算子計算結果汀為臨界值,定義邊緣為 像素集合:x|F(x)>I從定義中可以看岀,邊緣檢測的過程可以分解 為對每個像素分別計算判斷的過程.邊緣檢測的結果通常用灰度圖來表示灰度圖 中像素的灰度可以直接通過算子計算源圖像中對應 像素的灰度差分得到,在實現(xiàn)時,只用依次對源圖像 中的毎個像素進行運算,并把結果保存為灰度圖中 的像素即可.在計算時,由于灰度差分的結果通常 較小,直接轉換為灰度圖會使檢測結果模糊,可以使 用比例系數(shù)scale對差分結果進行縮放,從而得到清 晰的邊緣圖像。1.2各種邊緣檢測算子的Matlab實現(xiàn)(一”在Matlab中可以由edge函數(shù)實

8、現(xiàn)各算子對邊 緣的檢SL以Roberts算子為例其語法格式如下,BW=edge(I/roberts9,自動選擇閾值用 Ro- berts算子進行邊緣檢測.BW - edged/robertsS thresh 片根據所指定的 敏感閾值thresh用Roberts算子進行邊緣檢測,它 忽略了所有小于閾值的邊緣.當thresh為空時,自 動選擇閾值。BW 9 thresh = edge (L roberts% ) 返回閾 值.edge函數(shù)對荻度圖像I進行邊緣檢測,返回與 I同樣大的二值圖象BW,其中1表示邊緣,0表示 非邊緣】是unit8型.unit 16型,或者超double型. BW 是 uni

9、t8 型。其余Sobel算子、Prewitt算子、Canny算子及 LOG算子的實現(xiàn)僅需將Roberts,用sobelYprewit" canny及l(fā)og代替即可。2 Matlab與VC+ +混合編程的實現(xiàn)2.1 Matlab與VC+十混合編程的實現(xiàn)方法混合編程有下列幾種方法:乂使用Matlab引篆。該方法的優(yōu)點是能支持 機械與電子>2009(7) 所有的Matlab函數(shù)。缺點是混合編程后的可執(zhí)行 程序脫離不了 Matlab的運行環(huán)境,另外一方面在調 用引擎之后是按照Matkb的執(zhí)行方式進行的,由于 Matlab杲解釋執(zhí)行代碼運行速度很慢。b.利用Matlab自帶的mcc編譯器

10、.但是Mat- bb本身的資料也說明該編譯器如被用來建立迪立 的可執(zhí)行彳P的函數(shù).另外.且不支持圖形Fc利F$換非常簡單方:編譯器后其代dI不能支持所有Matlab I具箱函數(shù)。d.利用 Matlab COM Builder。COM 方法實現(xiàn) 簡單通用性強,幾乎可以使用Matlab任何函數(shù),無 論是程序苣大還是需要調用的工具箱函數(shù)或 Matlab任何西數(shù),都能夠在COM方法中得到很好 的實現(xiàn),并且,這也是Math Works公司推薦的跨平 臺應用。因此本文采用第4種方法實現(xiàn)成組圖像的 連續(xù)邊緣提取2.2基于COM的VC與Matlab混合編程的實現(xiàn)混合編程的實現(xiàn)主要分為2步,此在Matlab環(huán)境

11、下編寫M函數(shù)文件* m.并 利用COM Builder工具箱創(chuàng)建COM組件一幻導 出接口 再對生成的COM組件打包,以保持開發(fā)軟 件的可移植性b. VC中調用上述由Matlab產生組件形成一 個可脫離Matlab環(huán)境運行的可執(zhí)行文件( exe). 3成組圖像邊界的連續(xù)提取利用Matlab圖像處理工具箱函數(shù)實現(xiàn)對圖像 邊界的提取,得到包含點信息的.txt文件,作為后續(xù) UG二次開發(fā)的原始數(shù)據進行所需物體的三維重 建叫3.1定義Matlab函數(shù)實現(xiàn)圖像處理并生成COM 組件為利用Matlab函數(shù)及工具箱中提供的大量方 便、成熟的功能,可以定義自己的Matlab函數(shù),通過 編程組合這些功能并將得到的

12、結果輸岀給其它接 口調用.本例中m文件為myedgem,函數(shù)的主要 定義體如F:function my edge (filename»T»n > h)%該函數(shù)有3個參數(shù),第1個參數(shù)為圖片文件 名或文件路徑第2個為01的閾值,第3個為輸 岀 txt文件的序號即斷層序號第4個為斷層高 度,目的是得到該圖片在給定閾值下的輪廓數(shù)據.I=imread(filename) 1 % 1瀆入灰度圖片文件I=im2bw(hT)$% 2.間值分割將圖像進行 二値化slrdCdisktDiI=imclose(It5e)i% 3應用數(shù)學形態(tài)學閉合 操作填充細小間隙I=cdge(I/cann/

13、) i % 4提取邊界在該函數(shù)定義體內,依次執(zhí)行上述操作,就可以 將讀人的圖片文件的邊界信息提取岀來以點信息 文件格式輸岀把該函數(shù)導岀為COM組件具體 步探為:在命令行中輸入命令comtooh打開Matlab COM Builder窗口;新建工程輸入COM組件名稱 (com.myedge)併舀定類名(com.myedge) 保存工 程設置后,將上面創(chuàng)建的myedge. m文件添加到該 工程執(zhí)行Build-COM Object命令,生成COM 接口文件.3.2 VC中調用Matbb函數(shù),實現(xiàn)混合編程實現(xiàn)步驟如下曠打此新建MFC的對話框工程ExtractEdge.添 加相應控件.并對Precomp

14、iled Headers進行設置$ 工程一設置一C/C+ + -Y分類中選擇 Precompiled Headers,接著選擇M自動使用與補償 頁眉,在其中填寫stdafx.h,ft好確定b.將上面在Matlab界面生成的接口文件com. myedge.idl. h 和 ccmmyedge.idLi. c(文件默認目 錄為com_myedgesrc) 以及 VMatlab 安裝位置 extern include 下的 mwcomtypes. h 和 mwcomu- tiLh文件拷貝到VC建立的工程ExtractEdge 0錄 下再加人到VC工程中:選擇工程一添加工程一 文件,選擇剛才拷貝到Ex

15、tractEdge 0錄下的4 個文件.此時發(fā)現(xiàn)工程中出現(xiàn)的一個類Icom. myedge.這就是要操作的類.G在ExtractEdge. cpp中添加如下的頭文件# include " com.myedge.idL h H# include H mwcomtypes. h H# include w mwcomutil h H# include " comdef. h " /用于 CString 向 VARIANT數(shù)JS類型的轉換d.為界面忝加所需控件和相應代碼調試程序, 最后形成可脫離Matlab環(huán)境運行的可執(zhí)行文件 (* exe)Cr-«.按照上述步

16、熹依次利用Matlab COM Builder 生成COM組件、新建VC工程并設置環(huán)境、在VC 中2次調用該接口 第1次是經過對比得到合適的 閾值,第2次在調用該接口完成成組CT圖像的邊 界提取工作,為后續(xù)處理奠定了基礎。程序中還設 置了斷層高度選項增加了該程序的柔性。3.3程序需要力kt是無法直接E1.器上注冊.如身是(針對 MatlabxtemIibwin32:可自動把程序需旻旳庫甌取辭出到肖刖日求甲,把編譯 好的程序放到該目錄中,霑貝到未裝Matlab的機器 上即可實現(xiàn)脫離Matlab.4結束語本方法在兼顧開發(fā)效率和性能的同時,可以充 分利用Matlab成熟的函效庫和工具箱功能并在此 基

17、礎上發(fā)揮VC強大的底層系統(tǒng)及用戶界面開發(fā)能 力將掃描序號作為原始文件的名稱,并最終轉換 為點文件中Z坐標的數(shù)據.運用list box控件循環(huán) 實現(xiàn)了一組圖片的連續(xù)操作參考文獻:1 賀興華等Madab7X圖像處理M 北京,人民郵電 出版社.2006.2 何 «. Visual C+®字圖橡處理M北京,人民郵 電岀版社2002.3 楊高波等精通Matlab7.0混合編程M北京,電子 工業(yè)出版社2006.4 清源計算機工作Matlab高級應用一圖形及圖像處 9MJ.北京,機械工業(yè)出版社20005 王曉春曹嗚羅永瓠基于8M的VC與Matlab 的混合編程技術J現(xiàn)代電子技術-2004

18、.27(19):16 -17.23.6 周 靈基于8M的VC調用Matlab的方法及實現(xiàn)J中國科技借息.2006.(24)1131-133.7 宋曉宇王水會.Visual C+ +高級編程技術與實鈿M北京:中國水利水電出版社20068 1維國棵入淺出Matkb 7. X混合編程MJ北京,機 械工業(yè)出版社.2006.作者簡介,用(1981-).女安安慶人士研究生 研丸方向為機憾電子工程. 66 機械與電子2009(7)作者:作者單位:刊名:英文刊名: 年,卷(期): 引用次數(shù):,230009),張健三,ZHANG Jian-san安徽安凱金達工貿有限公司安徽合肥230009) 機械與電子叵莊MA

19、CHINERY & ELECTRONICS2009 (7)0次參考文獻(8條)1. 賀興華 Matlab 7.X圖像處理 20062. 何斌Visual C+數(shù)字圖像處理 20023. 楊高波精通Matlab7.0混合編程 20064. 清源計算機工作室Matlab高級應用-圖形及圖像處理20005. 王曉春.曹鳴.羅永新 基于COMV(與Matlab的混合編程技術期刊論文-現(xiàn)代電子技術2004(19)6. 周靈 基于COMV(調用Matlab的方法及實現(xiàn)期刊論文-中國科技信息2006(24)7. 宋曉宇.王永會Visual C+高級編程技術與實例 20068. 董維國 深入淺出Mat

20、lab 7.X混合編程2006相似文獻(10條)1. 期刊論文 徐彬.張偉成.XU Bin. ZHANG Wei-cheng基于Matcor與COMVC/Matlab昆合編程-微計算機信息 2009,25(9)目前比較流行的控制系統(tǒng)仿真軟件側atlab.Matlat功能強大算法標準化但是效率低VC弋碼效率高執(zhí)行快但是提供的數(shù)學函數(shù)少為了使V和 Matlat可以充分的發(fā)揮出二者各自的優(yōu)點大大提高仿真效率文中詳細介紹了兩種/(與Matlat混合編程模式分別是基刊atco與COM方法這兩種方法 可脫離Matlab運行環(huán)境文中最后比較兩種方法的特點并得出結論基于CO的方法更加通用有效.2. 期刊論文

21、李芳.徐麗基于CO組件的Matlab7.x與VC+6.接口技術及實際應用-計算機應用與軟件2009,26(2)介紹了MATLAB7與/C+ +6.四種接口方法分析比較了各種方法的優(yōu)缺點在此基礎上著重研究了基于組件的接口技術詳細闡述了利用DC組件進行接口的配置、步驟和方法吏用此接口技術完成了某數(shù)值仿真平臺的實例開翹好地實現(xiàn)了Matlab7.x強大的計算功能與/C+ +6.卓越的可視化功 能的高效結合大大提高了數(shù)值仿真軟件的開發(fā)效率.3. 期刊論文 田麗華.曾航基于CO組件的Matlab與VC+混合編程-科技創(chuàng)新導報2009(31)VC+以界面友好、代碼效率高、執(zhí)行速度快等特點成為目前廣泛采用的主

22、要開發(fā)工具之一MATLAKE陣運算、二堆和三維圖形的繪制、數(shù)據擬 合等方面具有極強的功能本文充分發(fā)揮兩種語言各自的優(yōu)利J用Maltab勺COM術實B/C+與Matlab教據傳遞和調用的具體方法實現(xiàn)了/C+環(huán)境下的 矩陣運算該方法可以完全脫勵atlab的運行環(huán)境在實際應用中大大提高了編程效率和軟件性能.4. 期刊論文 沈智娟.楊賀來.王淑芬.張為民.SHEN Zhi-juan . YANG Hei-lai . WANG Shu-fenZHANG Wei-minMatlab COM Serve的VC+程序調用-電腦知識與技術2008,4(36)工程中往往需要/C+編寫的程序進行大量的數(shù)學計算如能在

23、程序中使IMafla啲例程這些問題則能迅速解決在Win-dow平臺上Matlab提供了兩個 實現(xiàn)這一目標的接口-Matlab Engine和Automation Server.兩者在本質上都基iCOM術.引擎庫通過其輸出函數(shù)對用戶屏蔽了底層的OM節(jié)這大大方 便了使用而使用自動化服務器就要使用O的自動化接口Dispatch,不過MF庫的coleDispacchDriver類已使這一過程大大簡化了兩種方式的差剮主要 體現(xiàn)在參數(shù)傳遞和返回值處理上如文中代碼所示無論哪種方法都可以將具有強大工程計算能力的atlab接入VC十程序從而快捷方面地解決許多數(shù)值 計算和圖形輸出問題.5. 期刊論文 李健.韓國棟

24、.孫志鵬.LI Jian . HAN Guo-dong SUN Zhi-peng VC+調用Matlab的方法 -計算機與現(xiàn)代 化 2009(7)研究了如何應用/C +碉用Matlab工具內部類的問題通過Matlab勺MC命令和CC組件的方法實現(xiàn)了對Matlabg序的調用應用這兩種方法不僅可以 使程序完全脫離Matlat環(huán)境運行而且能夠充分發(fā)揮/CUMatlab勺優(yōu)點大大提高了軟件速度和性能.6. 期刊論文 徐彬.張偉成.XU Bin. ZHANG Wei-cheng分別基于Mateo與COMVC Matlab混合編程探討與比較-微 型電腦應用2008,24(12)VC與Matlab混合編程模式靈活多樣各有特點為了使/(和Matlat可以充分的發(fā)揮出二者各自的優(yōu)點大大提高開發(fā)效率文中詳細介紹了兩種可脫離 Matlat運行環(huán)境的混合編程方法分別是基刊atco與CO的方法最后給出實例來說明兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論