基于Halcon的圖像識別系統(tǒng)的設計與開發(fā)_第1頁
基于Halcon的圖像識別系統(tǒng)的設計與開發(fā)_第2頁
基于Halcon的圖像識別系統(tǒng)的設計與開發(fā)_第3頁
基于Halcon的圖像識別系統(tǒng)的設計與開發(fā)_第4頁
基于Halcon的圖像識別系統(tǒng)的設計與開發(fā)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

錯誤!未找到引用源。。5.1軟件總體設計按照模塊化設計的思想,本文將軟件劃分為3個部分:圖像獲取模塊、圖像預處理模塊、圖像識別處理模塊。各部分順次執(zhí)行形成一個完整的車牌識別過程,如圖5-1所示。圖5-1軟件結(jié)構(gòu)圖Diagram5-1Softwarestructurediagram在細化好每一個模塊后,接下來要對車牌識別系統(tǒng)的人機交互界面進行總體設計。按照軟件結(jié)構(gòu)圖來看,本系統(tǒng)一共有三大模塊,對界面空間的布局要進行初步設計。本系統(tǒng)需要一個兩個圖像窗口,一個來讀取本地圖片,或者利用攝像頭功能讀取相機視頻照片,另一個用來單獨顯示車牌照片,需要一些按鈕來實現(xiàn)處理流程,需要一些文本框來顯示字符識別的處理結(jié)果。如圖5-2所示,就是簡單的交互界面。

圖5-2系統(tǒng)界面設計圖Diagram5-2SystemHMIdesigndiagram5.2軟件詳細設計5.2.1圖像獲取模塊設計本模塊的功能是獲取待處理的圖片并顯示在圖像窗口,模塊用兩種方法實現(xiàn),第一種用獲取本地圖片并顯示在窗口界面,實現(xiàn)過程是用MFC的DFileDlg對話框獲取圖片的路徑,將圖片路徑當做參數(shù)用Halcon自帶的readImage()顯示,獲得第一步圖像處理的變量,并用halcon算子DispObj()顯示在界面,但要使用Halcon自帶的圖像窗口,則必須先初始化,用dev_open_window(),先獲取窗口句柄,并傳入函數(shù)中。第二種是用攝像頭獲取圖片,相關(guān)的功能有相機連續(xù)采集,停止連續(xù)采集,相機單幅采集和圖片保存的功能。要使用此功能,必須先連接相機,再按照所需功能進行選擇,具體流程步驟如圖5-3所示。圖5-3圖像獲取流程圖Diagram5-3Imageacquisitionflowchar5.2.2圖像預處理模塊模塊的功能是對讀取到的圖片進行預處理,將圖像濾波處理、圖像旋轉(zhuǎn)矯正后,然后將處理好的圖像送入下一步驟。模塊下有兩個功能,第一個功能是圖像灰度化處理,利用Halcon算子Rgb1ToGray(ho_Image,&grayImage)將一張彩色圖像灰度化處理,減少后續(xù)數(shù)據(jù)處理的時間。第二個功能是圖像矯正,利用前文提到的RGB模型轉(zhuǎn)成HSV模型,將提取到的Saturation通道的圖像和Saturation通道灰度值反轉(zhuǎn)的圖片進行動態(tài)閥值分割,部分具體代碼如下fill_up(SelectedRegions,RegionFillUp)\\填充車牌區(qū)域shape_trans(RegionFillUp,RegionTrans,'rectangle2')\\將填充區(qū)域轉(zhuǎn)換成帶方向矩形,orientation_region(RegionTrans,Phi)\\求得矩形區(qū)域與水平方向的角度,area_center(RegionTrans,Area,Row,Column)//求得圖片坐標位置vector_angle_to_rigid(Row,Column,Phi,Row,Column,rad(180),HomMat2D)這一步從點和角度計算剛性角度變換,將圖像和區(qū)域都做這個旋轉(zhuǎn)變換,然后摳圖,再進行圖像分割,affine_trans_image(Image,ImageAffinTrans,HomMat2D,'constant','false')(a)Image (b)RegionDynThresh(c)RegionFillUp (d)RegionTrans圖5-4圖像矯正處理過程Diagram5-4ImageCorrectionProcessing

圖5-5圖像矯正結(jié)果Diagram5-5Imagecorrectionresults圖5-5是已經(jīng)經(jīng)過灰度化和圖像旋轉(zhuǎn)矯正的區(qū)域,接下來將車牌區(qū)域送入下一個區(qū)域。 具體流程步驟如圖5-6所示圖5-6圖像預處理流程圖Diagram5-6Imagepreprocessingflowchart5.2.3圖像識別處理模塊本模塊包含三個功能,包括車牌定位,字體定位和字符識別,接下來分別描述功能算法設計。1.首先對第一個功能,車牌定位進行介紹,定位功能是對前一模塊提取到的ImageAffinTrans圖片進行處理,由于此圖片已經(jīng)是轉(zhuǎn)正圖片,接下來將車牌區(qū)域轉(zhuǎn)正,求一個車牌ROI和已矯正車牌的交集,得到車牌圖片,核心代碼原理如下所示。affine_trans_region(RegionTrans,RegionAffineTrans,HomMat2D,'nearest_neighbor')//進行region旋轉(zhuǎn)的功能,將區(qū)域轉(zhuǎn)正成和圖片一樣角度的區(qū)域reduce_domain(ImageAffinTrans,RegionAffineTrans,ImageReduced)//將圖片和區(qū)域求一個交集,將車牌圖片ImageAffinTrans下來,以供后續(xù)處理crop_domain(ImageReduced,ImagePart) //將截取步驟得到的圖片大小進行處理實現(xiàn)步驟如圖5-7所示。(a)RegionAffineTrans (b)ImageAffinTrans(c)ImagePart圖5-7車牌定位過程Diagram5-7ImageCorrectionProcessing

2.功能二是字體定位,盡管我們之前提取到了車牌區(qū)域圖片,但是距離識別還有一段距離,因此接下來,要將圖片上的字符進行提取。代碼實現(xiàn)原理如下。threshold(GrayImage,Regions,147,249)opening_rectangle1(Regions,RegionOpening,10,10)dilation_rectangle1(RegionOpening,RegionDilation,19,31)threshold(Image:Region:MinGray:MaxGray)對灰度化處理的圖片進行定值閥值分割,其中參數(shù)Image是輸入圖像,Region是灰度值介于最大灰度和最小灰度的區(qū)域點集合,參數(shù)MinGray和MaxGray是事先設定的固定的閥值,這里選擇147和249作為閥值。opening_rectangle1()是進行矩形結(jié)構(gòu)的開運算算子,是在輸入?yún)^(qū)域Region上執(zhí)行一次腐蝕,然后再執(zhí)行一次膨脹操作,選用此算子的目的是減少對車牌有用區(qū)域的干擾,提高準確程度。如圖5-7是閥值分割的處理結(jié)果。(a)Regions (b)RegionOpening圖5-7閥值分割過程Diagram5-7Thresholdsegmentationprocess從處理結(jié)果來看圖(a)Regions是經(jīng)過閥值分割得到的結(jié)果,灰度閥值147-249的設置已經(jīng)很好的到了字體區(qū)域,但還是有部分框線和點干擾,因此經(jīng)過開運算得到圖(b)RegionOpening,從這幅處理結(jié)果相比上一幅圖片,已經(jīng)去掉了大部分干擾區(qū)域,剩余的字體已經(jīng)符合識別要求。 3.最后一個功能是進行車牌字體識別,將上一步得到的RegionOpening中包含的字符進行識別,加載用于事先訓練的分類器句柄,用分類器進行學習分類。Halcon中支持mlp、svm等分類器模型,本文選用svm分類器。在使用分類器的第一步就是進行訓練,首先獲取訓練車牌圖片。訓練第一步是從樣本圖片中獲得字符,從車牌中分割出字符不需要車牌定位,只需從圖片中框選出車牌字體即可。首先繪制除開省字簡寫以外的6位字符,這6位字符是采用大寫數(shù)字和字母組成。具體過程如下。draw_rectangle1(WindowHandle,Row1,Column1,Row2,Column2)gen_rectangle1(Rectangle,Row1,Column1,Row2,Column2)reduce_domain(GrayImage,Rectangle,ImageReduced)draw_rectangle1()的功能是在HDevelop界面劃出矩形區(qū)域框,用于框選字符,Row1,Column1和Row2,Column2兩組數(shù)組分別代表矩形左上角和右下角的坐標。gen_rectangle1()是在前者獲取到的坐標上繪制一個矩形,生成一個ROI區(qū)域。reduce_domain()函數(shù)參數(shù)、功能同上。提取到ROI后進行閥值分割,提取出字體。接下來提取車牌中漢字部分,也是同樣的函數(shù)和效果。提取過程如圖5-8所示。(a)draw_rectangle1 (b)Rectangle(c)除去省的字符 (d)接收所有提取得到的字符圖5-8閥值分割過程Diagram5-8Thresholdsegmentationprocess然后將每一個區(qū)域和字符進行關(guān)聯(lián),形成一一對應關(guān)系。words:=['遼','H','2','S','5','3','5']sort_region(EmptyObject,SortedRegions1,'character','true','row')forIndex1:=1to7by1select_obj(SortedRegions1,ObjectSelected1,Index1)append_ocr_trainf(ObjectSelected1,Image,words[Index1-1],'F:/bishe/OCR/CarNum_TEST.trf')endfor這段代碼先將區(qū)域EmptyObject進行排序處理,然后通過for循環(huán)的方式追加到之前創(chuàng)建好的分類器句柄中,append_ocr_trainf中參數(shù)表示字符的區(qū)域(包括它們的灰度值(區(qū)域和像素)和相應的類別名稱)將被寫入訓練文件中,最后所有區(qū)域?qū)戤叄瑢懭胗柧毼募襟E結(jié)束,Halcon提供了OCR字符識別助手,可以查看其中灰度值圖片和類別名稱的對應關(guān)。如圖5-9所示

圖5-9OCR訓練助手Diagram5-9OCRTrainingAssistant從訓練助手中可以看到每一張圖片的灰度值和分類標簽聯(lián)系在一起,接下來就是要對字符進行分別訓練。進行訓練的過程如下:首先讀取訓練文件,read_ocr_trainf_names(),然后進行訓練,這里用Halcon自帶的SVM分類器進行訓練:create_ocr_class_svm(width,hight,'constant','default',CharacterNames,'rbf',0.02,0.05,'one-versus-one','normalization',10,OCRHandle),halcon中默認的核函數(shù)類型為’rbf’,徑向基核函數(shù)參數(shù)默認為0.02,SVM的正則化常數(shù)為0.05。訓練完畢后寫入文件內(nèi),結(jié)束訓練過程。得到訓練文件后可以對選擇到的區(qū)域進行訓練。訓練結(jié)果如圖5-10所示。

圖5-10訓練識別結(jié)果Diagram5-10Trainingrecognitionresults圖像處理流程圖如5-11所示。圖5-11圖像特征提取和識別流程圖Diagram5-11imagefeatureextractionandrecognitionflowchart5.2.4交互界面設計車牌識別系統(tǒng)主要包括圖片源獲取、預處理、車牌定位、車牌字體、字體識別和字體識別等幾個功能。主要界面設計如圖5-12所示。主要分為MFC按鈕控件、文本框控件和圖片顯示窗口三個部分。按鈕控件的功能又分為三類,第一類是圖片獲取模塊,包括:打開圖片、連接相機、斷開相機、采集保存、相機連續(xù)采集、停止連續(xù)采集和相機單幅采集。第二類是圖像預處理模塊,包括灰度化和車牌矯正。第三類是圖像特征提取和識別模塊,包括:車牌定位、字體定位和字體識別。運行步驟是每次點擊一次按鈕,按鈕執(zhí)行對圖像的操作,將圖像執(zhí)行的結(jié)果顯示在圖像窗口。左上角窗口為圖像主要顯示區(qū)域,右上角窗口是車牌區(qū)域顯示窗口,下方是7個車牌經(jīng)過圖像分割后得到的字符圖片,當按下字體識別按鈕時,整個車牌識別步驟結(jié)束,將車牌識別結(jié)果和車牌處理時間顯示在文本窗口。圖5-12系統(tǒng)界面設計圖Diagram.5-12SystemHMIdesigndiagram

6編碼與測試6.1編碼軟件設計和編碼非常重要,因為編碼是使用一種語言來實現(xiàn)軟件設計的結(jié)果,而編碼則進一步描述了軟件設計的結(jié)果。但是,在編碼之前,必須在實現(xiàn)其代碼之前選擇適當?shù)恼Z言。在編碼部分設計正確的語言并不難,可以節(jié)省大量時間,節(jié)省大量人員,使程序易于理解和維護。6.1.1編碼標準(1)需要滿足系統(tǒng)用戶的要求。(2)編譯器需要滿足并且可以使用。(3)軟件工具需要可用。(4))項目的規(guī)模。(5)程序員的知識。(6)軟件可移植性和標準化要求。(7)軟件的應用范圍。6.1.2開發(fā)工具選擇本系統(tǒng)選用VisualStudio2017作為c++人機界面設計和業(yè)務流程邏輯設計,HDevelop作為車牌識別部分的開發(fā)平臺,因為Halcon是由德國MVtec開發(fā)的機器視覺軟件包,具有顏色分析,識別,面積校正,形態(tài)計算和OCR識別等全部功能。此外,Halc還將HDevelop作為圖形界面,供用戶快速開發(fā),使用戶可以輕松開發(fā)識別系統(tǒng)。圖6-1顯示了基于Halcon平臺的開發(fā)過程。圖6-1基于Halcon開發(fā)軟件設計流程Diagram6-1SoftwaredesignprocessbasedonHalcon6.1.3源程序清單(詳情請見附錄C)6.2測試根據(jù)不同的應用目的,設計了兩組車牌圖片測試用例對系統(tǒng)進行測試。6.2.1圖片獲取模塊測試這個測試實驗是對圖像獲取模塊的測試,這項測試的目的是:驗證系統(tǒng)運行時圖像源的選擇的正確性,能夠正確選擇本地文件的圖像數(shù)據(jù),也能夠選擇攝像頭的采集方式獲取圖像源,前提是連接相機和斷開相機功能正常。通過反復的實驗與校正,系統(tǒng)能夠成功的連接相機以獲得圖像源,并且能夠在不需要相機的時候斷開連接相機。與此同時能夠根據(jù)當前所處的運行狀態(tài)能夠使某些按鈕失效,以消除程序執(zhí)行過程中的人為錯誤操作。同樣能夠按照系統(tǒng)的需求通過讀取本地磁盤的文件的方式來獲取圖片源。具體測試結(jié)果如圖6-2至圖6-7所示。

圖6-2打開本地圖片Diagram.6-2OpenLocalPictures圖6-3打開本地圖片失敗Diagram.6-3Failedtoopenlocalimage圖6-4打開本地圖片成功Diagram.6-4Successtoopenlocalimage圖6-2至圖6-4是顯示打開本地圖片的測試流程,其中包括打開文件失敗的錯誤信息圖,測試打開本地文件模塊正常。圖6-5連接相機成功Diagram.6-5SuccessfulConnectionofCameras圖6-6相機采集界面Diagram.6-6Cameraacquisitioninterface圖6-7采集圖像保存界面Diagram6-7ImageAcquisitionandPreservationInterface圖6-5至圖6-7顯示連接相機并保存采集圖片的測試流程,其中包括保存文件的界面圖,測試連接相機保存模塊正常。6.2.2圖片預處理模塊測試這個測試實驗是對圖像預處理模塊的測試,這項測試的目的是:在用戶成功讀取本地圖片到操作界面或打開相機采集到圖片的前提下,用戶能夠?qū)D片進行預處理,包括圖像灰度化和圖像矯正,與此同時能夠根據(jù)當前所處的運行狀態(tài)能夠使某些按鈕失效,以消除程序執(zhí)行過程中的人為錯誤操作。具體測試結(jié)果如圖6-7至圖6-9所示。

圖6-8灰度化處理結(jié)果Diagram6-8Grayscaleprocessingresults圖6-9圖像矯正處理結(jié)果Diagram6-9ImageCorrectionProcessingResults圖6-8至圖6-9顯示圖像預處理中灰度化和圖像矯正的測試流程,測試圖像預處理模塊正常。6.2.3圖片識別處理模塊測試這個測試實驗是對圖像處理模塊的測試,這項測試的目的是:在用戶對圖片預處理的前提下,用戶能夠?qū)D片進行車牌識別處理,包括車牌定位、字體定位和字體識別,與此同時能夠根據(jù)當前所處的運行狀態(tài)能夠使某些按鈕失效,以消除程序執(zhí)行過程中的人為錯誤操作。具體測試結(jié)果如圖6-10至圖6-12所示。圖6-10車牌定位處理結(jié)果Diagram6-10LicensePlateLocationProcessingResults

圖6-11字體定位處理結(jié)果Diagram6-11FontLocationProcessingResults圖6-12字體識別處理結(jié)果Diagram6-12FontRecognitionProcessingResults圖6-10至圖6-12顯示車牌識別系統(tǒng)中車牌定位、字體定位和字體的測試流程,測試圖像識別處理模塊正常。6.2.4測試結(jié)果分析車牌識別系統(tǒng)的各個模塊都已經(jīng)通過了測試,各個模塊都已經(jīng)達到了預期的效果。車牌圖片的識別準確率也能經(jīng)過多張車牌圖片的測試,符合識別的準確率。

7結(jié)論本文對于用于車牌識別系統(tǒng)算法進行了分析對比,為不同的情況下選擇了適合本系統(tǒng)的算法處理流程。對于傳統(tǒng)中車牌識別依賴形狀選擇以及定值閥值分割處理的過程,將RGB顏色模型轉(zhuǎn)成HSV模型,利用圖像中車牌區(qū)域的灰度差值,運用更加合理的動態(tài)閥值分割處理車牌定位問題。研究了Halcon的存儲ROI區(qū)域的存儲方式,減少了空間復雜度。對比分析了圖像預處理算法中的幾種濾波算法,并選取了適合本系統(tǒng)的濾波算法。研究了特征提取的方法,對比分析了幾種閾值分割的方法優(yōu)勢與不足,并且在形狀選擇上設置更加合理。研究了Halcon中OCR字符識別的處理流程,對Halcon中分類器的簡單使用有了解,能成功識別出正確的車牌結(jié)果。在上述理論研究的基礎(chǔ)上,實現(xiàn)了車牌字符識別的機器視覺檢測系統(tǒng)。本文的主要工作和成果如下(1)研究對比了圖像灰度化過程中灰度圖的求取。對比采用三通道的灰度圖通過平均計算、加權(quán)、最大值等方法求取灰度圖和采用HSV的灰度圖作為圖像處理的輸入灰度圖數(shù)據(jù)。得出采用HSV模型的灰度圖作為某一檢測過程的灰度圖相比通過RGB模型得到的灰度圖效果更好。(2)根據(jù)圖像的情況,對比采用平滑濾波、中值濾波等濾波器在本系統(tǒng)中的適用性,選取適用于本系統(tǒng)的圖像預處理算法。(3)在閥值分割的過程中,分析對比了定值閾值分割和動態(tài)閥值分割算法優(yōu)勢和不足。選取了動態(tài)閥值分割作為系統(tǒng)閾值分割的算法,對車牌處理的范圍更大,魯棒性會更強一些。然而本系統(tǒng)仍需要進一步進行開發(fā)和研究。因為本系統(tǒng)只是實現(xiàn)了

溫馨提示

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

評論

0/150

提交評論