天天看點

畢業設計論文-基于matlab的車牌識别系統

基于MATLAB的車牌識别系統GUI實作

摘 要

汽車車牌的識别系統是現代智能交通管理的重要組成部分之一。車牌識别系統使車輛管理更智能化,數字化,有效的提升了交通管理的友善性和有效性。車牌識别系統主要包括了圖像采集、圖像預處理、車牌定位、字元分割、字元識别等五大核心部分。本文主要介紹圖像預處理、車牌定位、字元分割三個子產品的實作方法。本文的圖像預處理子產品是将圖像灰階化和用Roberts算子進行邊緣檢測的步驟。車牌定位和分割采用的是利用數學形态法來确定車牌位置,再利用車牌彩色資訊的彩色分割法來完成車牌部位分割。字元的分割采用的方法是以二值化後的車牌部分進行垂直投影,然後在對垂直投影進行掃描,進而完成字元的分割。本文即是針對其核心部分進行闡述并使用MATLAB軟體環境中進行字元分割的仿真實驗。

關鍵詞:MATLAB、圖像預處理、車牌定位、字元分割 ABSTRACT

Vehicle license plate recognition system is one important of the modern intelligent traffic management. License plate recognition system to make more intelligent vehicle management, digital, Effective traffic management to enhance the convenience and effectiveness. License plate recognition system includes image acquisition, image preprocessing, license plate localization, character segmentation, character recognition and other five core parts. In this paper, preprocessing, license plate localization, character segmentation method for the realization of three modules.This is the image preprocessing module and the use of the image grayscale Roberts edge detection operator steps. License plate location and segmentation using mathematical morphology method is used to determine the license plate location,Re-use license plate color segmentation method of color information to complete the license plate area segmentation. Character segmentation approach is based on the license plate after the binary part of the vertical projection, Then scan in the vertical projection, thus completing the character segmentation. This article is described for the core part and use the MATLAB software environment, the simulation experiments for character segmentation.

Keywords: MATLAB software, image preprocessing, license plate localization, character segmentation . 目 錄

1. 緒論 1

1.1 本課題的研究背景 1

1.2 本課題的研究目的及意義 2

1.3 國内外發展狀況 3

1.4 主要應用領域 5

1.5 設計原理 6

2. MATLAB簡介 7

2.1 MATLAB發展曆史 7

2.2 MATLAB的語言特點 7

3.工作流程 9

3.1 系統架構結構和工作流程 9

4.各子產品的實作 11

4.1設計方案 11

4.2圖像預處理 11

4.2.1圖像灰階化 11

4.2.2圖像的邊緣檢測 12

4.3車牌定位和分割 14

4.3.1車牌的定位 15

4.3.2車牌的分割 16

4.3.3對定位後的彩色車牌的進一步處理 17

4.4字元的分割和歸一化處理 17

4.4.1字元的分割 18

4.4.2字元的歸一化處理 19

4.5 字元的識别 19

5.實驗結果和分析 22

6.實驗總結 24

緻謝 25

參考文獻 26

程式附錄 27

第一章 緒論

1.1 本課題的研究背景

現代社會已進入資訊時代,随着計算機技術、通信技術和計算機網絡技術的發展,自動化資訊處理能力和水準不斷提高,作為現代社會主要交通工具之一的汽車在人們的生産生活的各個領域得到大量使用,對他的資訊進行自動采集和管理具有十分重要的意義,成為資訊處理技術的一項重要研究課題。

此外,智能交通系統,簡稱ITS(Intelligent Traffic System)已成為現代社會道路交通發展趨勢。隻能交通系統,是在當代科學技術高速發展的背景下産生的。其目标在于将現金的計算機處理技術、資料通信技術、自動控制技術等綜合應用于地面交通管理體系,進而建立起一種高效、準确、實時的交通管理系統。公路交通基礎建設的不斷發展和車輛管理體制的不斷完善,為以視覺監控為基礎的智能交通系統的實際應用打下了良好基礎。

在智能交通系統中,車牌自動識别系統是一個非常重要的發展方向。車牌自動識别系統簡稱ALPRS或LPRS,該系統可以對車輛進行自動登記、驗證、監視、報警。系統應用場合包括:高速公路,橋梁,隧道等收費管理系統。城市交通車輛管理,智能小區、智能停車場管理,車牌驗證,車流統計等。同時,汽車牌照自動識别的基本方法還可以應用到其他檢測和識别領域,是以車牌自動識别問題已成為現代交通工程領域中研究的重點和熱點問題之一。

車牌識别系統是一項科技含量很高的多種技術結合的産品,主要有計算機視覺、數字圖像處理、數字視訊處理、模式識别等技術組成。也是智能交通系統的核心技術,産生于60年代。在80年代,由于城市交通問題日益嚴重,美國和歐洲許多國家投入了大量的人力和物力,建立了自動化高速公路網,安裝了攝像、雷達探測系統和光纖網絡,履歷智能交通系統。在美國、歐洲、日本等發達國家的帶動下,世界各國也開始履歷智能交通系統。由于公路車流量日益增大、道路交通日益擁擠,車輛管理相對越來越困難,是以各個發達國家和開發中國家都在積極建設适應未來交通運輸需求的智能交通系統。

車牌号識别系統是基于圖像處理技術的基礎進行研究的。本課題圖像處理分為以下幾方面:

1.圖像數字化

其目的是将模拟形式的圖像通過數字化裝置變為數字計算機可用的離散的圖像資料。

2.圖像變換

為了達到某種目的而對圖像使用一種數學技巧,經過變換後的圖像更為友善、容易地處理和操作。

3.圖像增強

圖像增強的主要目标是改善圖像的品質。采用某些處理技術來突出圖像中的某些資訊,削弱或消除某些無關資訊,進而有目的地強調圖像的整體或局部特征,讓觀察者能看到更加直接、清晰的分析和處理圖像。直方圖修正、灰階變換、強化圖像輪廓等都是常用的手段。

4.圖像分割

在圖像研究和應用中,人們往往僅對圖像的某些部分感興趣。它們一般對應圖像中待定的、具有獨特性質的區域。圖像分割就是把圖像中需要的那一個部分分割出來。

5.圖像分析

圖像分析的内容分為特征提取、圖像分割、符号描述、和圖像的檢測與比對。

1.2 本課題的研究目的及意義

車牌識别系統的主要任務是分析和處理攝取到的複雜背景下的車輛圖像,定位分割牌照,最後自動識别汽車牌照上的字元,車牌識别是利用車輛牌照的唯一性來識别和統計車輛,它是以數字圖像處理、模式識别、計算機視覺等技術為基礎的智能識别系統。在現代化交通發展中車牌識别系統是制約交通系統智能化、現代化的重要因素,車牌識别系統應該能夠從一幅圖像中自動提取車輛圖像,自動分割牌照圖像,對字元進行正确識别,進而降低交通管理工作的複雜度。車牌識别系統将擷取的車輛圖像進行一系列的處理後,以字元串的形式輸出結果,這樣不但資料量小,便于存儲,操作起來也更容易,是以車牌識别系統的便捷性是人工車牌識别所不能比拟的,它蘊藏着很大的經濟價值和發展空間,對車牌識别技術的研究是非常有的意義的。在車牌識别系統中最為重要的兩個技術是車牌定位和車牌字元識别,這兩個技術的好壞直接影響到整個車牌識别系統的實時性和準确性。國内外己有不少學者對車牌定位技術做了大量的研究,但在實際的應用中還沒有一個有效可行的方法,如由于車輛抖動造成車牌圖像的歪斜、由于污迹和磨損造成車牌字元的模糊、由于光照不均造成車牌圖像的模糊等都會或多或少影響到車牌定位的準确度。針對以上實際情況,很多學者開始在鑒于車牌圖像本身特征的基礎上研究車牌定位技術,并先後提出了一些有效的定位方法,以減小種種主、客觀因素對車牌定位準确度的影響。然而智能交通的不斷發展使得對車牌定位系統有了更高的要求,主要表現在系統的實時性和準确性。

車牌字元識别的實質是對車牌上的漢字、字母和數字進行快速準确的識别并以字元串的形式輸出識别結果,字元識别技術是整個車牌識别系統的關鍵。車牌識别系統與其它圖像識别系統相比較而言要複雜的多,在字元識别中,漢字識别是最難也是最關鍵的部分,很多國外較為成熟的車牌識别系統無法進入中國市場的原因就在于無法有效的識别漢字。此外,由于外界環境的影響,系統必須保證能夠在任何天氣情況下全天不間斷的正常工作。到目前為止,在衆多的車牌自動識别方法中還沒有一個可以達到理想的效果,是以對車牌識别技術的研究意義重大。

1.3 國内外的發展狀況

從20世紀90年代初,國外就已經開始了對汽車牌照自動識别的研究,其主要途徑就是對車牌的圖像進行分析,自動提取車牌資訊,确定汽車牌号。在各種應用中,有使用模糊數學理論也有用神經元網絡的算法來識别車牌中的字元,但由于外界環境光線變化、光路中有灰塵、季節環境變化及車牌本身比較模糊等條件的影響,給車牌的識别帶來較大的困難。國外的相關研究有:(1)J Barroso提出的基于掃描行高頻分析的方法; (2) I.T. Lancaster提出的類字元分析方法等。為了解決圖像惡化的問題,目前國内外采用主動紅外照明攝像或使用特殊的傳感器來提高圖像的品質,繼而提高識别率,但系統的投資成本過大,不适合普遍的推廣。

車牌識别系統中的兩個關鍵子系統是車牌定位系統和車牌字元識别系統。

關于車牌定位系統的研究,國内外學者已經作了大量的工作,但實際效果并不是很理想,比如車牌圖像的傾斜、車牌表面的污穢和磨損、光線的幹擾等都是影響定位準确度的潛在因素。為此,近年來不少學者針對車牌本身的特點,車輛拍攝的不良現象及背景的複雜狀況,先後提出了許多有針對性的定位方法,使車牌定位在技術和方法上都有了很大的改善.然而現代化交通系統不斷提高的快節奏,将對車牌定位的準确率和實時性提出更高的要求。因而進一步加深車牌定位的研究是非常必要的。

車牌字元識别是在車牌準确定位的基礎上,對車牌上的漢字、字母、數字進行有效确認的過程,其中漢字識别是一個難點,許多國外的LPR系統也往往是因為漢字難以識别而無法打入中國市場,因而探尋好的方法解決字元的識别也是至關重要的。目前己有的方法很多,但其效果與實際的要求相差很遠,難以适應現代化交通系統高速度、快節奏的要求。因而對字元識别的進一步研究也同樣具有緊迫性和必要性。

從實用産品來看,如以色列的Hi-Tech公司研制的多種See/Car system,适應于幾個不同國家的車牌識别,就針對中國格式車牌的See/Car syste而言,它不能識别漢字,且識别率有待提高。新加坡Optasia公司的VLPRS産品,适合于新加坡的車牌,另外日本、加拿大、德國、意大利、英國等西方發達國家都有适合于本國車牌的識别系統。

我國的實際情況有所不同,國外的實際拍攝條件比較理想,車牌比較規範統一,而我國車牌規範不夠,不同汽車類型有不同的規格、大小和顔色,是以車牌的顔色多,且位數不統一,對處理造成了一定的困難。在待處理的車牌圖像中就有小功率汽車使用的藍底白字牌照,大功率汽車所用的黃底黑字牌照,軍車和警車的白底黑字,紅字牌照,還有國外駐華機構的黑底白字牌照等。就位數而言,有七位數字的,有武警車九位數字的,有軍車、前兩位字元上下排列的等,是以也造成了處理的難度。

國内做得較好的産品主要是中科院自動化研究所漢王公司的“漢王眼”,此外國内的亞洲視覺科技有限公司、深圳市吉通電子有限公司、中智交通電子系統有限公司等都有自己的産品,另外西安交通大學的圖像處理與識别研究室、上海交通大學的計算機科學與工程系、清華大學、浙江大學等都做過類似的研究。通常處理時為了提高系統的識别率,都采用了一些硬體的探測器和其他的輔助裝置如紅外照明等,其中“漢王眼”就 是采用主動紅外照明和光學濾波器來減弱可見光的不可控制影響,減少惡劣氣候和汽車大小燈光的影響,另外還要求在高速公路管理視窗到“漢王眼”識别點埋設兩條線路管 道,一條管道鋪設220伏50赫茲1安培的交流供電線路:另一條管道鋪設觸發信号線路和漢王眼與管理計算機的通訊線路,投資巨大,不适合于大面積的推廣。

另外,還有兩種專門的技術被用于車牌的識别中,條形碼識别技術和無線射頻技術。條形碼識别要求預先在車身上印刷條形碼,在系統的某一固定位置上安裝掃描裝置,通過掃描來讀取條形碼,以達到識别車輛的目的。無線射頻技術要求在車内安裝标示卡,在系統某一位置安裝收發器等裝置,通過收發器來接受标示卡的信号,進而識别出經過的車輛。顯然,這兩種技術更難以推廣。

從目前一些産品的性能名額可以看出,車牌識别系統的識别率和識别速度有待提高。現代交通的飛速發展以及車牌識别系統應用範圍的日益拓寬給車牌識别系統提出了更高的要求。是以,研究高速、準确的定位與識别算法是目前的主要任務,而圖像處理技術的發展與攝像裝置、計算機性能的提高都會促進車牌識别技術的發展,提高車牌識别系統的性能。

1.4 主要應用領域

車牌自動識别系統具有廣泛的應用範圍,主要應用于:

(1)高速公路收費、監控管理;(2)小區、停車場管理;(3)城市道路監控、違章管理;(4)車牌登入、驗證;(5)車流統計、安全管理等。車牌自動識别系統應用于這些系統,可以解決通緝車輛的自動稽查問題,可以解決車流高峰期因出入口車流瓶頸造成的路橋卡口、停車場交通堵塞問題,可以解決因從業人員作弊造成的路橋卡口、高速公路、停車場應收款流失的問題,還可以以最簡單的方式完成交通部門的車輛資訊聯網,解決資料統計自動化,模糊查詢的問題。

車牌自動識别系統可安裝于公路收費站、停車場、十字路口等交通關卡處,其具體應用可概括為:

(l)交通監控利用車牌識别系統的攝像裝置,可以直接監視相應路段的交通狀況,獲得車輛密度、隊長、排隊規模等交通資訊,防範和觀察交通事故。它還可以同雷達測速器或其他的檢測器配合使用,以檢測違犯限速值的車輛。當發現車輛超速時,錄影機擷取該車的圖像,并得到該車的牌照号碼,然後給該車超速的警告信号。

(2)交通流控制名額參量的測量,為達到交通流控制的目标,一些交通流名額的測量相當重要。該系統能夠測量和統計很多交通流名額參數,如總的服務流率,總行程時間,總的流入量流出量,車型及車流組成,日車流量,小時/分鐘車流量,車流高峰時間段,平均車速,車輛密度等。這也為交通誘導系統提供必要的交通流資訊。

(3)高速公路上的事故自動測報這是由于該系統能夠監視道路情況和測量交通流量名額,能及時發現超速、堵車、排隊、事故等交通異常現象。

(4)對養路費交納、安全檢查、營運管理實行不停車檢查根據識别出的車牌号碼從資料庫中調出該車檔案材料,可發現沒及時交納養路費的車輛。另外,該系系統還可發現無車牌的車輛。若同車型檢測器聯用,可迅速發現所挂車牌與車型不符的車輛。

(5)車輛定位由于能自動識别車牌号碼,因而極易發現被盜車輛,以及定位出車輛在道路上的行駛位置。這為防範、發現和追蹤涉及車輛的犯罪,保護重要車輛(如運鈔車)的安全有重大作用,進而對城市治安及交通安全有重要的保障作用。

車牌自動識别系統擁有廣闊的應用前景,但若在每個街口都裝配一套全新的車輛探測器的硬體系統則投資巨大,是以急需一個純軟體實行的車牌自動識别系統來最大限度的減少費用,而純軟體的設計,不僅投資小而且靈活性高,适合我國的國情。

1.5 設計原理

車牌識别系統的攝像頭通過對經過指定區域的機動車輛進行拍照,因為照片會受到光照、拍攝位置和車輛行駛速度的影響,導緻拍攝的圖檔不能準确的确定汽車的車牌。而車牌識别系統就通過對機動車輛的照片進行圖像預處理、車牌定位、字元分割、字元識别等技術手段,進而得到清晰的機動車牌照的照片,進而提高現代智能交通的管理效率,可以說車牌識别系統對于現代智能交通至關重要。

第二章 MATLAB簡介 2.1 MATLAB發展曆史

MATLAB是一門計算機程式設計語言,取名來源于Matrix Laboratory,本意是專門以矩陣的方式來處理計算機資料,它把數值計算和可視化環境內建到一起,非常直覺,而且提供了大量的函數,使其越來越受到人們的喜愛,工具箱越來越多,應用範圍也越來越廣泛。

MATLAB以商品形式出現後,僅短短幾年,就以其良好的開放性和運作的可靠性,使原先控制領域裡的封閉式軟體包(如英國的 UMIST ,瑞典的 LUND,和 SIMNON ,德國的 KEDDC )紛紛淘汰,而改以 MATLAB 為平台加以重建。在時間進入 20 世紀九十年代的時候,MATLAB 已經成為國際控制界公認的标準計算軟體。

到九十年代初期,在國際上 30 幾個數學類科技應用軟體中,MATLAB 在數值計算方面獨占鳌頭,而 Mathematica 和 Maple 則分居符号計算軟體的前兩名。 Mathcad 因其提供計算、圖形、文字處理的統一環境而深受中學生歡迎。

國際學術界,MATLAB 已經被确認為準确、可靠的科學計算标準軟體。在許多國際一流學術刊物上,(尤其是資訊科學刊物),都可以看到 MATLAB 的應用。

在設計研究機關和工業部門,MATLAB 被認作進行高效研究、開發的首選軟體工具。如美國 National Instruments 公司信号測量、分析軟體 Lab VIEW ,Cadence 公司信号和通信分析設計軟體 SPW 等,或者直接建築在 MATLAB 之上,或者以 MATLAB 為主要支撐。又如 HP 公司的 VXI 硬體,TM 公司的 DSP ,Gage 公司的各種硬卡、儀器等都接受 MATLAB 的支援。

2.2 MATLAB的語言特點

一種語言之是以能如此迅速地普及,顯示出如此旺盛的生命力,是由于它有着不同于其他語言的特點。正如同FORTRAN和C等進階語言使人們擺脫了需要直接對計算機硬體資源進行操作一樣,被稱作為第四代計算機語言的MATLAB,利用其豐富的函數資源,使程式設計人員從繁瑣的程式代碼中解放出來。MATLAB的最突出的特點就是簡潔。MATLAB用更直覺的、符合人們思維習慣的代碼,代替了C和FORTRAN語言的冗長代碼。MATLAB給使用者帶來的是最直覺、最簡潔的程式開發環境。以下簡單介紹一下MATLAB的主要特點:

(1)語言簡潔緊湊,使用友善靈活,庫函數極其豐富。MATLAB程式書寫形式自由,利用其豐富的庫函數避開繁雜的子程式程式設計任務,壓縮了一切不必要的程式設計工作。由于庫函數都由本領域的專家編寫,使用者不必擔心函數的可靠性。可以說,用MATLAB進行科技開發是站在專家的肩膀上。

(2)運算符豐富。由于MATLAB是用C語言編寫的,MATLAB提供了和C語言幾乎一樣多的運算符,靈活使用MATLAB的運算符将使程式變得極為簡短。

(3)MATLAB既具有結構化的控制語句(如for循環、while循環、break語句和if語句),又有面向對象程式設計的特性。

(4)文法限制不嚴格,程式設計自由度大。例如,在MATLAB裡,使用者無需對矩陣預定義就可使用。

(5)程式的可移植性很好,基本上不做修改就可以在各種型号的計算機和作業系統上運作。

(6)MATLAB的圖形功能強大。在FORTRAN和C語言裡,繪圖都很不容易,但在MATLAB裡,資料的可視化非常簡單。MATLAB還具有較強的編輯圖形界面的能力。

(7)MATLAB的缺點是,它和其他進階程式相比,程式的執行速度較慢。由于MATLAB的程式不用編譯等預處理,也不生成可執行檔案,程式為解釋執行,是以速度較慢。

(8)功能強勁的工具箱是MATLAB的另一重大特色。MATLAB包含兩個部分:核心部分和各種可選的工具箱。核心部分中有數百個核心内部函數。其工具箱又可分為兩類:功能性工具箱和學科性工具箱。功能性工具箱主要用來擴充其符号計算功能、圖示模組化仿真功能、文字處理功能以及與硬體實時互動功能。功能性工具箱能用于多種學科。而學科性工具箱是專業性比較強的,如control、toolbox、signal processing toolbox、communication toolbox等。這些工具箱都是由該領域内的學術水準很高的專家編寫的,是以使用者無需編寫自己學科範圍内的基礎程式,而直接進行高、精、尖的研究。下表列出了MATLAB的核心部分及其工具箱等産品系列的主要應用領域。

第三章 工作流程 3.1系統架構結構和工作流程

汽車牌照識别(LPR)系統通過引入數字攝像技術和計算機資訊管理技術,采用先進的圖像處理、模式識别和人工智能技術,通過對圖像的采集和處理,獲得更多的資訊,進而達到更高的智能化管理程度。在LPR 系統産品的性能名額中,識别率和識别速度難以同時提高其中原因既包括圖像處理技術不夠成熟,又受到攝像裝置計算機等性能的限制。是以,研究高速準确的定位與識别算法,是目前的主要任務。

汽車車牌自動識别系統主要包括觸發拍照、圖像采集、圖像預處理、車牌定位、字元分割、字元識别、輸出結果等單元。

圖像采集

車牌定位

字元分割

字元識别

輸出結果

觸發牌照

圖像預處理

圖1.1車牌識别系統工作流程圖

觸發拍照:該單元會自動檢測車輛在指定區域的存在,現有的成熟技術的有線圈觸發、視訊觸發、紅外觸發、雷達觸發以及雷射觸發。其中線圈觸發和視訊觸發得到了廣泛的應用。

圖像采集:該單元是指道路上安裝的攝像頭在檢測到有車輛通過的同時進行拍照并借助網絡傳送到汽車自動識别系統。

圖像預處理:該單元是指車牌識别系統對拍攝的汽車圖檔進行灰階化和邊緣檢測等處理。在外界光照不均勻,光照強度不穩定的情況下,通過錄影機采集到的車牌原始圖像會模糊不清,是以需要對其進行圖像增強的處理;在外界環境噪聲以及電子器件自身産生的噪聲幹擾下,車牌圖像品質會有所下降,是以需要對原圖像進行去噪處理等等。以上所做的這些處理均屬于圖像預處理的工作。

車牌定位:是指對預處理過的汽車圖檔進行處理,把車牌部分進行定位,把無用的部分去除,得到定位好的車牌圖檔。在一張完整的車輛圖像中,大部分區域都是背景圖像,對識别工作毫無意義,我們可以将背景區域視為無用區域,并設法将其去除,即從複雜的背景圖像中準确的定位并分割出車牌區域圖像,從原圖像中提取出需要的部分舍棄不需要的部分,以便節省系統識别時間,這也是車牌定位分割的目的及意義所在。在定位分割的過程中要保證不能把非車牌區域誤判為車牌區域,也不能漏檢車牌區域,否則後繼的工作将無法進行。

字元分割:對已經定位的車牌圖檔的進行字元分割,将車牌分割為7個單一的字元圖檔。被分離出的車牌區域圖像,系統并不能直接對其進行識别,還需要将車牌上的每一個字元都獨立的完整的分割出來,即從車牌區域圖像中将車牌上所包含的每一個字元都切分出來,使其成為不具有任何相關性的單個字元圖像,再由系統分别對每個字元進行識别,在對字元進行切分時,要注意保證每個字元的完整度。

字元識别:車牌字元識别是最為關鍵的一步,前面對車牌圖像所做的處理都是為了完成最終的識别。系統輸入的是單個的字元圖像,輸出的卻是文本格式的完整的車牌号碼,車牌字元識别的準确率直接反映出車牌識别系統性能的好壞。

輸出結果:輸出識别結果,并進行資料存儲。

對于車牌識别系統而言,以上的每一個步驟都是必不可少的,并且後一步驟均是建立在前面步驟的基礎之上進行的,是以,隻有確定做好每一步才能順利完成系統最終的識别工作。

第四章 各子產品的實作

車牌識别系統包括圖像采集、圖像預處理、車牌定位、字元分割、字元識别等子產品,本文主要研究圖像預處理、車牌定位和字元分割三個子產品。

4.1 設計方案:

該系統主要是由圖像處理和字元識别兩部分組成。其中圖像處理部分包括圖像預處理、邊緣提取子產品、牌照的定位以及分割子產品。字元識别部分可以分為字元分割與特征提取和單個字元識别兩個子產品。

字元識别部分要求照片清晰,但由于該系統的攝像頭長時間在室外工作,加上光照條件、攝像頭角度和距離、車輛自身條件以及車輛的行駛速度的影響,想拍出較理想的圖檔很困難。是以,我們要對攝像頭拍攝的圖檔進行預處理,主要包括圖檔灰階化和圖檔邊緣提取等。

車牌定位和車牌分割是整個系統的關鍵,其作用是在經圖象預處理後的灰階圖象中确定牌照的具體位置,并将包含牌照字元的一塊子圖象從整個圖象中分割出來,供字元識别子系統識别之用,分割的準确與否直接關系到整個牌照字元識别系統的識别率。

車牌識别系統的最終目的就是将不清楚的車牌照片進行識别,輸出清晰的圖檔。現在字元識别的常用方法有模闆比對法和神經網絡模型法。

4.2圖像預處理 4.2.1圖像灰階化

汽車圖像樣本目前大都是通過錄影機、數位相機等裝置拍攝擷取的,因而預處理前的圖像都是彩色圖像。真彩色圖像又稱RGB圖像,它是利用R、G、B分量表示一個像素的顔色,R、G、B分别代表紅、綠、藍3種不同的顔色,通過三基色可以合成出任意顔色。而每個分量有255種值可取,這樣一個像素點可以有,1600多萬(255*255*255)的顔色的變化範圍。而灰階圖像是R、G、B三個分量相同的一種特殊的彩色圖像,每一個像素點的變化範圍為255種,是以在數字圖像處理種一般先将各種格式的圖像轉變成灰階圖像以使後續的圖像的計算量變得少一些。灰階圖像的描述與彩色圖像一樣仍然反映了整幅圖像的整體和局部的色度和亮度等級的分布和特征。是以,對一個尺寸為m*n的彩色圖像來說,存儲為一個m*n*3的多元數組。

彩色圖像包含着大量的顔色資訊,不但在存儲上開銷很大,而且在處理上也會降低系統的執行速度。由于圖像的每個象素都具有三個不同的顔色分量,存在許多與識别無關的資訊,不便于進一步的識别工作,是以在對圖像進行識别等進行中,經常将彩色圖像轉變為灰階圖像,以加快處理速度。

數字圖像分為彩色圖像和灰階圖像。在RGB模型中,如果R=G=B,則顔色表示一種灰階顔色,其中R=G=B的值叫做灰階值。由彩色轉換為灰階的過程叫做灰階化處理。灰階圖像就是隻有強度資訊而沒有顔色資訊的圖像,存儲灰階圖像隻需要一個資料矩陣,矩陣每個元素表示對應位置像素的灰階值。彩色圖像的象素色為RGB (R, G, B ),灰階圖像的象素色為RGB ( r, r, r ), R, G, B可由彩色圖像的顔色分解獲得.而R, G, B的取值範圍是0-255,是以灰階的級别隻有256級。

對于将彩色圖像轉換成灰階圖像時, 目前比較主流的灰階化方法叫平均值法,公式為: H=0.229R+0.588G+0.144B

公式中H表示灰階圖的亮度值;R代表彩色圖像紅色分量值;G代表色彩圖像綠色分量值;B代表彩色圖像藍色分量值。RGB 三分量前的系數為經驗權重值。權重系數的取值建立在人眼的視覺模型之上。對于人眼較為敏感的綠色取較大的權值; 對人眼較為不敏感的藍色則取較小的權值。通過該公式轉換的灰階圖能夠比較好地反應原圖像的亮度資訊。

在MATLAB中我們可以調用im2gray函數對圖像進行灰階化處理。

4.2.2圖像的邊緣檢測:

邊緣是指圖像灰階發生空間突變或者在梯度方向上發生突變的像素的集合。用錄影機采集到的機動車圖像由于受到噪聲幹擾以及車輛本身的影響,使得獲得的圖像品質不理想。是以,在進行對汽車牌照的定位及字元識别之前需要先對車輛圖像進行邊緣檢測處理,提高圖像的品質,使其易于後面的分割和識别。通過良好的邊緣檢測可以大幅度的降低噪聲、分離出複雜環境中的車輛圖像、保留完好的車牌字元資訊,友善後面的車牌精确定位與字元識别。

由于車牌識别系統攝像頭安裝位置固定以及機動車車牌的固有屬性,我們可以發現機動車車牌圖像都處在水準的矩形區域,在圖像中位置較為固定,車牌中字元都是按水準方向排列。因為有這些明顯的特征,經過适當的圖像變換,可以清晰的呈現出車牌的邊緣。本文采用經典的Roberts邊緣檢測算子來對圖像進行邊緣檢測。

灰階化和邊緣檢測的MATLAB程式如下:

I=imread('car.jpg');

figure(1),imshow(I);title('原圖')

I1=rgb2gray(I);

figure(2),subplot(1,2,1),imshow(I1);title('灰階圖');

figure(2),subplot(1,2,2),imhist(I1);title('灰階圖直方圖');

I2=edge(I1,'robert',0.08,'both');

figure(3),imshow(I2);title('robert算子邊緣檢測')

畢業設計論文-基于matlab的車牌識别系統
圖4.1 原圖
畢業設計論文-基于matlab的車牌識别系統
圖4.2 灰階圖
畢業設計論文-基于matlab的車牌識别系統
圖4.3 Robert算子邊緣檢測 4.3車牌定位和分割

該系統的攝像頭拍攝的圖檔是整個機動車的圖檔,而隻有車牌部分是對系統有用的。是以我們要對照片進行車牌定位和分割。車牌的定位和分割是從經過圖像預處理後的灰階圖像中确定牌照位置,并将車牌部分從整個圖像中分割出來,進而進行字元識别。車牌圖像的灰階圖的車牌部分是一個水準度很高的長方形圖樣,在原圖中比較集中,且灰階值和周圍圖樣有明顯差異,是以很容易用邊緣檢測來對圖像進行分割。車牌定位和分割的準确度直接關系到最後的字元識别的品質。

圖4.4車牌定位流程圖

對圖像進行圖像腐蝕

除去圖像雜質

通過計算尋找X和Y方向車牌的區域

完成車牌定位

對定位後的彩色車牌的進一步處理

4.3.1車牌定位

機動車圖像經過灰階化和邊緣檢測的處理後,邊緣得到了加強,牌照區域已經非常明顯。本文采用的是用數學形态學來進行圖像處理和模式識别。數學形态學用具有一定形态的機構元素去量度和提取圖像中的對應形狀以達到對圖像分析和識别的目的,能有效的去除噪聲,保留圖像原有資訊的同時提取的邊緣比較平滑,提取的圖像骨架也比較連續,斷點少。現在我們将經過預處理的圖像進行圖像腐蝕以及去除雜質,就可以得到相對準确的車牌位置。

畢業設計論文-基于matlab的車牌識别系統
圖4.5腐蝕後的圖像
畢業設計論文-基于matlab的車牌識别系統
圖4.6 平滑圖像的輪廓
畢業設計論文-基于matlab的車牌識别系統
圖4.7從對象中移除小對象後圖像 4.3.2車牌分割

車牌字元分割是車牌自動識别系統中的重要步驟,這一子產品的正确性受到很多因素的影響,最大問題是二值化不徹底使投影圖像中字元間的波谷不夠分明;其次,車牌污損、反光、光照不均等原因使車牌圖像交差,存在大量噪聲;再次,車牌邊框和鉚釘也會造成分割不正确;還有車牌的前兩個字元和後面五個字元之間的間隔符(小圓點)對字元識别有影響;車牌旋轉對水準分割有較大影響。本文車牌部分的分割采用的是利用車牌彩色資訊的彩色分割法。使用統計彩色像素點的方法分割出車牌區域,确定車牌底色藍色RGB對應的灰階範圍,然後統計在行方向的顔色範圍内的像素點數量,确定車牌在行方向的區域。然後,在分割出的行區域内,統計列方向藍色像素點的數量,最終确定完整的車牌區域。

畢業設計論文-基于matlab的車牌識别系統
圖4.8車牌對位的圖像 4.3.3對定位後的彩色車牌的進一步處理

定位後車牌圖像是彩色的,會占用較大的存儲空間,加重計算機負擔。且車輛圖檔不可避免存在噪聲,是以要對圖像進行灰階化,二值化以及濾波處理。圖像的二值化處理就是将圖像上的點的灰階置為兩個數值,通常為0或255,使整個圖像呈現出明顯的黑白效果。也就是将256個亮度等級的灰階圖像通過适當的門限值選取而獲得仍然可以反映圖像整體和局部特征的二值化圖像。濾波則是為了除去圖像噪聲。濾波方法有多種,本文采取的濾波方法為均值濾波。均值濾波是典型的線性濾波算法,指在圖像上對目标像素給一個模闆,該模闆包括了其周圍的臨近像素。再用模闆中的全體像素的平均值來代替原來像素值。

畢業設計論文-基于matlab的車牌識别系統
圖4.9車牌的進一步處理 4.4字元分割與歸一化

[m,n]=size(d),逐排檢查有沒有白色像素點,設定1<=j<n-1,若圖像兩邊s(j)=0,則切割,去除圖像兩邊多餘的部分

切割去圖像上下多餘的部分

根據圖像的大小,設定一門檻值,檢測圖像的X軸,若寬度等于這一門檻值則切割,分離出七個字元

歸一化切割出來的字元圖像的大小為40*20,與模闆中字元圖像的大小相比對

圖4.10 字元分割和歸一化流程圖 4.4.1字元分割

在汽車牌照自動識别過程中,字元分割有承前啟後的作用。它在前期牌照定位的基礎上進行字元的分割,然後再利用分割的結果進行字元識别。将得到的車牌區域圖像進行二值化處理後,對圖像進行垂直投影,投影圖上有明顯的類似于峰谷的波形起伏變化, 通過對投影圖上的波形從左向右進行掃描,根據谷和峰的特征就可以判斷出每個字元的位置;計算垂直峰,檢測合理的字元高寬比。在字元切割時,往往由于門檻值取得不好,導緻字元切割不準确,針對這種情況,可以對切割出的字元寬度進行統計分析,用以指導切割,對因錯誤切割過寬的字元進行分裂處理。

畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
畢業設計論文-基于matlab的車牌識别系統
圖4.11 字元分割後的圖像 4.4.2字元歸一化處理

由于數位相機拍攝的汽車圖像大小不一樣, 是以得到的牌照上的字元大小就不一樣,為了便于字元的識别,需要對字元進行歸一化處理。歸一化處理的目的就是使車牌字元同标準子產品裡面的字元特征一樣。而大小歸一是指在長度和寬度方向上分别乘以一個比例因子,使其等于标準子產品的字元大小,本文采用的大小歸一的方法是分别從水準投影和垂直投影兩個方向上對字元象素的大小進行歸一化處理。

畢業設計論文-基于matlab的車牌識别系統
圖4.12字元歸一化後的圖像 4.5字元的識别

字元的識别目前用于車牌字元識别(OCR)中的算法主要有基于模闆比對的OCR算法以及基于人工神經網絡的OCR算法。基于模闆比對的OCR的基本過程是:首先對待識别字元進行二值化并将其尺寸大小縮放為字元資料庫中模闆的大小,然後與所有的模闆進行比對,最後選最佳比對作為結果。模闆比對的主要特點是實作簡單,當字元較規整時對字元圖像的缺損、污迹幹擾适應力強且識别率相當高。綜合模闆比對的這些優點我們将其用為車牌字元識别的主要方法。

模闆比對是圖象識别方法中最具代表性的基本方法之一,它是将從待識别的圖象或圖象區域f(i,j)中提取的若幹特征量與模闆T(i,j)相應的特征量逐個進行比較,計算它們之間規格化的互相關量,其中互相關量最大的一個就表示期間相似程度最高,可将圖象歸于相應的類。也可以計算圖象與模闆特征量之間的距離,用最小距離法判定所屬類。然而,通常情況下用于比對的圖象各自的成像條件存在差異,産生較大的噪聲幹擾,或圖象經預處理和規格化處理後,使得圖象的灰階或像素點的位置發生改變。在實際設計模闆的時候,是根據各區域形狀固有的特點,突出各類似區域之間的差别,并将容易由處理過程引起的噪聲和位移等因素都考慮進去,按照一些基于圖象不變特性所設計的特征量來構模組化闆,就可以避免上述問題。

建立自動識别的代碼表

讀取分割出來的字元

第一個字元與模闆中的漢字模闆進行比對

第二個字元與模闆中的字母模闆進行比對

待識别字元與模闆字元相減,值越小相似度越大,找到最小的一個即為比對的最好的

識别完成,輸出此模闆對應值

後5個字元與模闆中的字母與數字模闆進行比對

圖4.13 字元識别流程圖

此處采用相減的方法來求得字元與模闆中哪一個字元最相似,然後找到相似度最大的輸出。汽車牌照的字元一般有七個,大部分車牌第一位是漢字,通常代表車輛所屬省份,或是軍種、警别等有特定含義的字元簡稱;緊接其後的為字母與數字。車牌字元識别與一般文字識别在于它的字元數有限,漢字共約50多個,大寫英文字母26個,數字10個。是以建立字元模闆庫也極為友善。為了實驗友善,結合本次設計所選汽車牌照的特點,隻建立了4個數字26個字母與10個數字的模闆。其他模闆設計的方法與此相同。

首先取字元模闆,接着依次取待識别字元與模闆進行比對,将其與模闆字元相減,得到的0越多那麼就越比對。把每一幅相減後的圖的0值個數儲存,即為識别出來的結果。

畢業設計論文-基于matlab的車牌識别系統
圖4.14識别結果 六、程式附錄:
function [d]=main(jpg)
I=imread('car.jpg');
figure(1),imshow(I);title('原圖');
I1=rgb2gray(I);   %将真彩色圖像轉換為灰階圖像
figure(2),subplot(1,2,1),imshow(I1);title('灰階圖');
figure(2),subplot(1,2,2),imhist(I1);title('灰階圖直方圖');
I2=edge(I1,'robert',0.08,'both');  %高斯濾波器,方差為0.08
figure(3),imshow(I2);title('robert算子邊緣檢測')
se=[1;1;1];
I3=imerode(I2,se);  %圖像的腐蝕
figure(4),imshow(I3);title('腐蝕後圖像');
se=strel('rectangle',[40,40]);  %構造結構元素,以長方形構造一個se
I4=imclose(I3,se); %對圖像實作閉運算,閉運算也能平滑圖像的輪廓,但與開運算相反,它一般融合窄的缺口和細長的彎口,去掉小洞,填補輪廓上的縫隙。
figure(5),imshow(I4);title('平滑圖像的輪廓');
I5=bwareaopen(I4,2000); %從二進制圖像中移除所有少于p像素的連接配接的元件(對象),産生另一個二進制圖像
figure(6),imshow(I5);title('從對象中移除小對象');
[y,x,z]=size(I5);  %傳回I5各維的尺寸,并存儲在變量y、x、z中
myI=double(I5); %換成雙精度數值
    %begin橫向掃描
tic  %計算tic與toc之間程式的運作時間
     Blue_y=zeros(y,1); %産生y*1的全0矩陣
      for i=1:y
         for j=1:x
             if(myI(i,j,1)==1) 
          %如果myI(i,j,1)即myI圖像中坐标為(i,j)的點為藍色
          %則Blue_y的相應行的元素white_y(i,1)值加1
           Blue_y(i,1)= Blue_y(i,1)+1;%藍色像素點統計 
              end  
end       
 end
 [temp MaxY]=max(Blue_y);%temp為向量white_y的元素中的最大值,MaxY為該值的索引( 在向量中的位置)
     IY=I(PY1:PY2,:,:);
%IY為原始圖像I中截取的縱坐标在PY1:PY2之間的部分
 %end橫向掃描
 %begin縱向掃描
      Blue_x=zeros(1,x);%進一步确定x方向的車牌區域
 for j=1:x
         for i=PY1:PY2
             if(myI(i,j,1)==1)
                  Blue_x(1,j)= Blue_x(1,j)+1;               
               end  
           end       
 end
 
 PX1=1;
      while ((Blue_x(1,PX1)<3)&&(PX1<x))
          PX1=PX1+1;
      end    
 PX2=x;
      while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
             PX2=PX2-1;
       end 
      %end縱向掃描
 PX1=PX1-2;%對車牌區域的校正
 PX2=PX2+2;
 dw=I(PY1:PY2,:,:);
        t=toc; 
figure(7),subplot(1,2,1),imshow(IY),title('行方向合理區域');
figure(7),subplot(1,2,2),imshow(dw),title('定位剪切後的彩色車牌圖像')
imwrite(dw,'dw.jpg'); %将圖像資料寫入到圖像檔案中
[filename,filepath]=uigetfile('dw.jpg','輸入一個定位裁剪後的車牌圖像'); 
%讀取
jpg=strcat(filepath,filename); %将數組filepath,filename水準地連接配接成單個字元串,并儲存于變量jpg中
a=imread('dw.jpg');  %讀取圖檔檔案中的資料
b=rgb2gray(a);  %将真彩色圖像轉換為灰階圖像
imwrite(b,'1.車牌灰階圖像.jpg');  %将圖像資料寫入到圖像檔案中
figure(8);subplot(3,2,1),imshow(b),title('1.車牌灰階圖像')
g_max=double(max(max(b)));  %換成雙精度數值
g_min=double(min(min(b)));  %換成雙精度數值
T=round(g_max-(g_max-g_min)/3); % T 為二值化的門檻值
[m,n]=size(b);  %傳回矩陣b的尺寸資訊, 并存儲在m、n中。其中m中存儲的是行數,n中存儲的是列數。 
d=(double(b)>=T);  % d:二值圖像
imwrite(d,'2.車牌二值圖像.jpg');  %将圖像資料寫入到圖像檔案中
figure(8);subplot(3,2,2),imshow(d),title('2.車牌二值圖像')
figure(8),subplot(3,2,3),imshow(d),title('3.均值濾波前')
% 濾波
h=fspecial('average',3); %建立預定義的濾波算子,average指定算子的類型,3為相應的參數
d=im2bw(round(filter2(h,d)));  %轉換為二值圖像
imwrite(d,'4.均值濾波後.jpg');  %将圖像資料寫入到圖像檔案中
figure(8),subplot(3,2,4),imshow(d),title('4.均值濾波後')
% 某些圖像進行操作
% 膨脹或腐蝕
% se=strel('square',3); % 使用一個3X3的正方形結果元素對象對建立的圖像膨脹
figure(8),subplot(3,2,5),imshow(d),title('5.膨脹或腐蝕處理後')
% 尋找連續有文字的塊,若長度大于某門檻值,則認為該塊有兩個字元組成,需要分割
d=qiege(d);  %切割
[m,n]=size(d); %傳回矩陣b的尺寸資訊, 并存儲在m、n中。其中m中存儲的是行數,n中存儲的是列數
figure,subplot(2,1,1),imshow(d),title(n)
k1=1;k2=1;s=sum(d);j=1;
while j~=n
        while s(j)==0
             j=j+1;
        end
               k1=j;
          while s(j)~=0 && j<=n-1
               j=j+1;
         end
                 k2=j-1;
       if k2-k1>=round(n/6.5)
              [val,num]=min(sum(d(:,[k1+5:k2-5])));
           d(:,k1+num+5)=0;  % 分割
          end
end
% 再切割
d=qiege(d);
% 切割出 7 個字元
y1=10;y2=0.25;flag=0;word1=[];
while flag==0
            [m,n]=size(d);
        left=1;wide=0;
        while sum(d(:,wide+1))~=0
            wide=wide+1;
         end
         if wide<y1   % 認為是左側幹擾
              d(:,[1:wide])=0;
              d=qiege(d);
         else
 
          if two_thirds/all>y2
               flag=1;word1=temp;   % WORD 1
             end
              d(:,[1:wide])=0;d=qiege(d);
          end
end
% 分割出第二個字元
[word2,d]=getword(d);
% 分割出第三個字元
[word3,d]=getword(d);
% 分割出第四個字元
[word4,d]=getword(d);
% 分割出第五個字元
[word5,d]=getword(d);
% 分割出第六個字元
[word6,d]=getword(d);
% 分割出第七個字元
[word7,d]=getword(d);
figure(9),imshow(word1),title('1');
figure(10),imshow(word2),title('2');
figure(11),imshow(word3),title('3');
figure(12),imshow(word4),title('4');
figure(13),imshow(word5),title('5');
figure(14),imshow(word6),title('6');
figure(15),imshow(word7),title('7');
[m,n]=size(word1); %傳回矩陣b的尺寸資訊, 并存儲在m、n中。其中m中存儲的是行數,n中存儲的是列數

word1=imresize(word1,[40 20]);% 商用系統程式中歸一化大小為 40*20,此處示範
word2=imresize(word2,[40 20]); %對圖像做縮放處理,高40,寬20
word3=imresize(word3,[40 20]);
word4=imresize(word4,[40 20]);
word5=imresize(word5,[40 20]);
word6=imresize(word6,[40 20]);
word7=imresize(word7,[40 20]);
figure(16),
subplot(3,7,8),imshow(word1),title('1');
subplot(3,7,9),imshow(word2),title('2');
subplot(3,7,10),imshow(word3),title('3');
subplot(3,7,11),imshow(word4),title('4');
subplot(3,7,12),imshow(word5),title('5');
subplot(3,7,13),imshow(word6),title('6');
subplot(3,7,14),imshow(word7),title('7');
liccode=char(['0':'9' 'A':'Z' '魯陝蘇渝京']);  %建立自動識别字元代碼表,将t'0':'9' 'A':'Z' '魯陝蘇豫'多個字元串組成一個字元數組,每行對應一個字元串,字元數不足的自動補空格
SubBw2=zeros(32,16);
l=1;
for I=1:7
     SubBw2=zeros(32,16); %産生32*16的全0矩陣
      ii=int2str(I);%轉換為串
      t=imread([ii '.jpg']);%讀取圖檔檔案中的資料
      SegBw2=imresize(t,[32 16],'nearest'); %對圖像做縮放處理,高32,寬16,'nearest': 這個參數,是預設的, 即改變圖像尺寸時采用最近鄰插值算法
      SegBw2=double(SegBw2)>20;
        if l==1                 %第一位漢字識别
            kmin=37;
            kmax=40;
        elseif l==2             %第二位 A~Z 字母識别
            kmin=11;
            kmax=36;
        else l>=3               %第三位以後是字母或數字識别
            kmin=1;
            kmax=36;
 
        end
 
        for k2=kmin:kmax
            fname=strcat('字元模闆\',liccode(k2),'.bmp'); %把一個行向量轉化成字元串
            SamBw2 = imread(fname);%讀取圖檔檔案中的資料
            SamBw2=double(SamBw2)>1;
            for  i=1:32
                for j=1:16
                    SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
                end
            end
           % 以上相當于兩幅圖相減得到第三幅圖
            Dmax=0;
            for k1=1:32
                for l1=1:16
                    if  ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 )
                        Dmax=Dmax+1;
                    end
                end
            end
            Error(k2)=Dmax;
        end
        Error1=Error(kmin:kmax);
        MinError=min(Error1);
        findc=find(Error1==MinError);
        Code(l*2-1)=liccode(findc(1)+kmin-1);
        Code(l*2)=' ';
        l=l+1;
end
figure(5),imshow(dw),title (['車牌号碼:', Code],'Color','b');
%子程式:(getword子程式)
function [word,result]=getword(d)
word=[];flag=0;y1=8;y2=0.5;
    while flag==0
        [m,n]=size(d);
        wide=0;
        while sum(d(:,wide+1))~=0 && wide<=n-2
            wide=wide+1;
        end
        temp=qiege(imcrop(d,[1 1 wide m]));
        [m1,n1]=size(temp);
        if wide<y1 && n1/m1>y2
            d(:,[1:wide])=0;
            if sum(sum(d))~=0
                d=qiege(d);  % 切割出最小範圍
            else word=[];flag=1;
            end
        else
            word=qiege(imcrop(d,[1 1 wide m]));
            d(:,[1:wide])=0;
            if sum(sum(d))~=0;
                d=qiege(d);flag=1;
            else d=[];
              end
           end
        end
          result=d;
         % (qiege子程式)
function e=qiege(d)
[m,n]=size(d);
top=1;bottom=m;left=1;right=n;   % init
while sum(d(top,:))==0 && top<=m
            top=top+1;
end
while sum(d(bottom,:))==0 && bottom>1
          bottom=bottom-1;
end
while sum(d(:,left))==0 && left<n
          left=left+1;
end
while sum(d(:,right))==0 && right>=1
right=right-1;
end
dd=right-left;
hh=bottom-top;
e=imcrop(d,[left top dd hh]);  %傳回圖像的一個裁剪區域
           

繼續閱讀