VCmatlab混合編程快速提取數(shù)字圖像特征值_第1頁
VCmatlab混合編程快速提取數(shù)字圖像特征值_第2頁
VCmatlab混合編程快速提取數(shù)字圖像特征值_第3頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、VC+/matlab混合編程快速提取數(shù)字圖像特征值2008-06-12 17:021、引言VC+是流行的通用程序設計語言,靈活高效,使用其MFC進行面向對象編程,可以快捷地完成windows風格的人機交互界面設計。matlab是一種數(shù)值計算能力很強的面向科學應用的軟件,以矩陣為基本數(shù)據(jù)結構進行運算,語法簡潔。matlab針對科學研究工作的實際需要,由各領域專家開發(fā)了若干工具箱(函數(shù)庫),極大地方便了科研工作。在數(shù)字圖像處理領域,其圖像處理工具箱中現(xiàn)有200多個工具,可以實現(xiàn)大部分處理算法。如果將VC與matlab優(yōu)勢結合,進行混合編程,可以大幅度提高編程效率而不失靈活性、可靠性。特征值的選擇和

2、提取是由圖像分析過程中的一個主要環(huán)節(jié),是實現(xiàn)圖像理解的前提。matlab以矩陣為基本數(shù)據(jù)結構,對處理圖像這種二維數(shù)據(jù)具有編程效率上的先天優(yōu)勢。在很多預處理算法日漸成熟的今天,我們希望用更簡便的方法來實現(xiàn)圖像特征值的提取,從而將研究重點放到圖像分析和理解上。2、接口實現(xiàn)及相關函數(shù)介紹鑒于VC程序界面友好,通用性好,VC/matlab混合編程一般都采用從VC中調用matlab函數(shù)的方式。實現(xiàn)二者的結合有多種方法。本文采用matlab引擎的方法,這種方法的特點是操作簡便,不需要進行過多的設置和轉換,也不需要對matlab的程序結構有較深研究,只要熟悉matlab工具箱中相關函數(shù)即可。缺點是工作環(huán)境內

3、必須安裝matlab環(huán)境,另外程序運行時會啟動matlab進程,影響了速度。VC中調用matlab語言實現(xiàn)圖像處理的示例程序如下(運行環(huán)境VC+6.0,matlat6.5):Engine *ep;/定義引掣指針if(!(ep=engOpen(NULL) exit(1); /打開引掣mxArray *input=NULL,*num=NULL;/mxArray是專用數(shù)據(jù)結構,必須用此結構與引掣區(qū)傳遞數(shù)據(jù),這里定義二個數(shù)據(jù)input用來傳遞圖像數(shù)據(jù),num用來傳遞參數(shù)值const int dims2=GetWidth(),GetHeight();/定義二維數(shù)組大小,即VC中像素區(qū)大小input=mx

4、CreateNumericArray(2,dims,mxUINT8_CLASS,mxREAL);/建立相應大小數(shù)據(jù)區(qū)num=mxCreateDoubleMatrix(1,1,mxREAL);/單值參數(shù)也要定義成矩陣形式memcpy(mxGetPr(input),m_pData,high*wide*sizeof(byte);/將VC中數(shù)據(jù)賦值給matlab可識別的變量engPutVariable(ep,"input",input);/放入引掣,準備調用matlab函數(shù)進行計算,并命以別名engPutVariable(ep,"num",num);engEva

5、lString(ep,"input=im2bw(input,graythresh(input)");/在引掣中執(zhí)行matlab命令進行二值化engEvalString(ep,"num=bwarea(input);");/matlab函數(shù)計算面積大小input=engGetVariable(ep,"input"); num=engGetVariable(ep,"num");/處理后結果出引掣double *result=mxGetPr(num); double real=result0;/得到面積值 mxDestro

6、yArray(input); mxDestroyArray(num); /釋放內存engClose(ep);/關閉引掣通過以上幾句程序就實現(xiàn)了VC與matlab的交互。本方法的基本思想是:對于圖像的讀取、顯示、儲存等基本輸入輸出操作采用VC實現(xiàn),完全采用VC界面,matlab完全在后臺運行。在需要調用matlab函數(shù)進行圖像處理時,將VC中的圖像數(shù)據(jù)轉換為matlab可識別的格式并裝入引掣區(qū),調用matlab的圖像處理函數(shù)進行運算,并將結果轉換后復制回VC。在進行下一步圖像分析時,可利用VC的ODBC功能,將特征數(shù)據(jù)直接轉入access等數(shù)據(jù)庫中。以下介紹幾個與特征提取密切相關的matlab函

7、數(shù),為簡便起見,省略輸入輸出參數(shù)。帶星號的函數(shù)為參考文獻1所自帶,其非商業(yè)版本可以在該書網(wǎng)站免費下載。regionprops(),imfeature(),區(qū)域的特征度量.輸出區(qū)域的若干特征值;mean2(), std2(), corr2()二維數(shù)組的摘要統(tǒng)計值:均值,標準差,相關系數(shù);bwlabel() 將二值化圖像作區(qū)域標記,同時返回標記區(qū)域塊數(shù);fft2(),dct2(), 快速傅立葉變換和離散余弦變換,可以求頻域特征*statxture();紋理特征計算,返回平均值,標準差,平滑度,直方圖偏斜度,均勻性,紋理熵;* invmoments() 可計算出七個不變矩;*specxture()頻

8、譜特征,計算S(r)和S()*polyangles()計算多邊形區(qū)域各頂點內角值上述函數(shù)可以直接計算二十個左右特征值,另外通過這些值之間的運算,可以求出更多的值。3、實例介紹/input為灰度圖像數(shù)據(jù)engEvalString(ep,"num=statxture(input);"); /調用statxture計算灰度差分紋理值num=engGetVariable(ep,"num");/提取計算結果,是包含七個值的數(shù)據(jù)結構double *result=mxGetPr(num);m_mean1=result0;/第一項,平均灰度  

9、60; m_std1=result1;/第二項,標準差(對比度m_smooth=result2;/第三項,平滑度    m_tm=result3;/第四項,三階矩    m_asm1=result4;/第五項,慣性矩(均衡度)m_ent1=result5;/第六項,熵/下面二值化計算形狀特征engEvalString(ep,"input=im2bw(input,graythresh(input);”);自動計算閾值進行二值化engEvalString(ep,"input=bwareaopen(output,1500

10、);");形態(tài)學處理去除小面積區(qū)域engEvalString(ep,"output=imfill(output,'holes');");填補最大面積區(qū)域內的空洞    engEvalString(ep,"output=bwlabel(output);");/區(qū)域標記后再調用props /以下調用matlab的regionprops求幾何形狀特征    engEvalString(ep,"a=regionprops(output,'all');n

11、um=a.Area;");num=engGetVariable(ep,"num");/獲得面積值result=mxGetPr(num);m_area=result0;/面積值存入VC數(shù)據(jù)   engEvalString(ep,"num=a.Eccentricity;");num=engGetVariable(ep,"num");/獲得偏心率值result=mxGetPr(num);m_ecc=result0;/同理可求出長度,寬度值,質心坐標值,矩形度等若干特征值4、 小結及討論提取特征值前,要進行圖像預處理,如圖像增強及分割等,可以使用matlab的圖像處理工具,快速實現(xiàn)相關功能。用matlab進行圖像預處理,通常在1個子函數(shù)內就可全部完成,與VC相比大大節(jié)省了編程量,節(jié)約了時間,減少了出錯的可能。matlab的工具箱是開放的系統(tǒng),隨版本升級也在不斷擴充。使用者,完全可以根據(jù)需要自己開發(fā)相應的matlab不函數(shù),加入自己的工具箱使用。對于指紋、車牌、人臉等特征的提取,均可根據(jù)各自不同的需要使用matlab技術進行圖像預處理。使用混編要選擇matlab中語法簡單而功能強大的函數(shù),對于涉

溫馨提示

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

評論

0/150

提交評論