李冰潔
山東廣域科技有限責任公司 山東東營 257081
一個完整的車牌字符識別系統(tǒng)需要完成圖像采集、字符識別,然后輸出,可以分為軟件、硬件兩大部分。硬件部分包括系統(tǒng)觸發(fā)、圖像采集等,軟件部分包括圖像預處理、車牌位置提取、字符分割、字符識別四方面。
圖像讀取及車牌區(qū)域確定主要由灰度圖轉(zhuǎn)換、灰度圖腐蝕、圖像邊緣檢測、圖像平滑處理、車牌區(qū)域邊界值確定等過程組成。利用圖像工具箱中的Car_Image_RGB=imread(‘Image_Name’)命令,即可將圖像讀取出來。Car_Image_RGB是一個大小為m×n的數(shù)組,m、n分別表示圖像像素的行數(shù)、列數(shù)。我國車牌顏色及其RGB值分別為藍底(0,0,255)、黃底(255,255,0)、黑底(0,0,0)、白字(255,255,255)、黑字(0,0,0)、紅字(255,0,0)。由于車牌的底色不同,因此從RGB圖中直接進行車牌區(qū)域提取存在很大困難。實際情況是,無論哪種底色的車牌,底色與字符的顏色對比度均較大。利用這一點,將RGB圖轉(zhuǎn)換為灰度圖時,車牌底色與字符的灰度值相差很大。例如,藍色(255,0,0)與白色(255,255,255)在R通道中是一樣的,而在G通道、B通道或灰度圖中數(shù)值相差很大。同理,對白底黑字的車牌可以使用R通道,綠底白字的識別可以使用G通道,這樣就可以明顯呈現(xiàn)出車牌區(qū)域的位置,便于后續(xù)操作。將RGB圖轉(zhuǎn)換為灰度圖時,圖像灰度值可由權(quán)值加重法或均值法計算。MATLAB軟件內(nèi)的RGB圖轉(zhuǎn)換為灰度圖函數(shù)rgb2gray()使用權(quán)值加重法,R通道權(quán)值為0.229,G通道權(quán)值為0.587,B通道權(quán)值為0.114。由此,可以利用邊緣檢測方法,識別出鄰近區(qū)域灰度值相差大的分界區(qū)。車牌RGB圖如圖1所示,車牌灰度圖如圖2所示。
中值濾波是一種線性處理技術(shù),對某些輸入信號具有不變性,并且有去噪功能。中值濾波最初主要在一維信號處理中應用,之后被二維圖像信號處理引用。在一定條件下,中值濾波可以克服線性濾波帶來的模糊圖像細節(jié)不準確,并能有效過濾毛刺,在保護圖像邊緣的同時去除噪聲。圖像增強處理可以提高圖像的視覺外觀,或者將圖像轉(zhuǎn)換為更適合機器讀取的形式,以從圖像中獲取更多信息。圖像增強處理分為空間域方法和頻率域方法兩大類。空間域方法包括點處理、鄰域處理,頻率域方法包括高通濾波、低通濾波、同態(tài)濾波等。
圖1 車牌RGB圖
圖2 車牌灰度圖
在MATLAB軟件中利用函數(shù)edge()實現(xiàn)邊緣檢測,具體的命令Car_Image_Bin=edge(Car_Image_Gray,‘robert’,0.15,‘both’)。Robert梯度以(x-1/2,y-1/2)為中心,度量(x-1/2,y-1/2)處45°和135°方向的灰度變化。車牌邊緣檢測圖如圖3所示。
圖3 車牌邊緣檢測圖
經(jīng)過處理以后,車牌的輪廓很明顯,車牌區(qū)域呈現(xiàn)白色條紋,基本達到了邊緣檢測的效果。在車牌附近區(qū)域由于各種干擾的影響,存在一些白色區(qū)域,所以要對邊緣檢測圖做進一步處理,用灰度圖腐蝕來消除多余的邊界點。
腐蝕是消除邊界點并使邊界向內(nèi)收縮的過程,利用腐蝕可以消除小且無意義的部分。腐蝕的規(guī)則為輸出圖像的最小值是輸入圖像領(lǐng)域中的最小值,在一個二值圖像中,若有一個像素值為0,則其相應的輸出像素值為0。使用imerode()函數(shù),具體命令為Car_Image_Erode=imerode(Car_Image_Bin,Se)。車牌腐蝕后圖像如圖4所示。
從腐蝕結(jié)果看,無意義的部分基本消除,留下的是車牌區(qū)域。至此得到車牌圖像的輪廓線,再經(jīng)過適當處理即可把車牌提取出來。
MATLAB軟件中有圖像平滑處理函數(shù)imclose(),具體命令為Car_Image_Perform=imclose(Car_Image_Erode,Se)。平滑處理后,可以消除圖像的數(shù)字化誤差和噪聲對焦點直接提取的影響。
圖4 車牌腐蝕后圖像
平滑處理后,圖像中可能會存在多個閉合區(qū)域。對于不是車牌區(qū)域的多余區(qū)域,必須予以刪除。
MATLAB軟件提供了函數(shù)bwareaopen(),用于刪除二值圖像中面積小于一定定值的對象,在默認情況下使用8鄰域,具體命令為Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000)。這樣Car_Image_Perform中面積小于2 000的對象都被刪除了,消除對車牌定位的影響。車牌水平邊框去除后圖像如圖5所示,車牌豎直邊框去除后圖像如圖6所示。
圖5 車牌水平邊框去除后圖像
圖6 車牌豎直邊框去除后圖像
根據(jù)經(jīng)驗,車牌中字符面積與車牌面積之比在0.235~0.365之間,因此計算字符面積與車牌面積的比值,若大于0.365,則對圖像進行腐蝕,若小于0.235,則對圖像進行膨脹。
在完成車牌區(qū)域定位后,將車牌區(qū)域的字符分為單字符,再進行識別。字符分割往往采用垂直投影法。我國普通中小型汽車車牌總長為440 mm,牌照中七個字符的實際總長為409 mm左右,寬為140 mm。每個字符寬為45 mm,高為90 mm,字符間距為10 mm。其中,第二個字符與第三個字符的間距較為特殊,為15.5 mm,最后一個字符與第一個字符距邊界25 mm。基于此,如果平均分配每個字符在車牌中占據(jù)的寬度,那么每個字符的寬度為車牌圖像寬度除以7。但實際上,第二個字符與第三個字符之間存在一個點,車牌左右兩邊與圖像邊緣也都有一定的距離,所以每個字符的寬度應小于車牌圖像寬度除以7。考慮所有情況,一般情況下,最小的字符寬度為車牌圖像寬度除以9。因此,字符寬度可以從車牌圖像寬度除以9到車牌圖像寬度除以7之間漸進變化得到。車牌切割后字符圖像如圖7所示。
圖7 車牌切割后字符圖像
一連串字符串在進行切割后變成了單個字符,為后續(xù)字符匹配識別奠定了基礎(chǔ)。
車牌字符識別目前最常用的方法有兩種,分別是模板匹配法和神經(jīng)網(wǎng)絡(luò)法。模板匹配法是一種在技術(shù)上最經(jīng)典、最直接的對字符的模式識別方法,這種方法對待識別字符進行二值化,歸一化為模板的大小,選擇最佳匹配作為分類的結(jié)果。這種方法有一定缺點,包括抗干擾能力差、識別能力低,任何光照、字符清晰度、字符大小的變化都會影響模板匹配法的準確性。
神經(jīng)網(wǎng)絡(luò)法具有分布式信息存儲、大規(guī)模并行處理、自適應高容錯性等特點,近年來應用于車輛牌照識別系統(tǒng)中。
利用神經(jīng)網(wǎng)絡(luò)法對字符進行識別操作,主要有兩個途徑。
(1) 對待識別字符進行特征提取,用所獲得的特征訓練神經(jīng)網(wǎng)絡(luò)。
(2) 充分利用神經(jīng)網(wǎng)絡(luò)的特點,直接將待處理圖像輸入神經(jīng)網(wǎng)絡(luò),由神經(jīng)網(wǎng)絡(luò)自動實現(xiàn)特征提取,直至識別。
特征提取是字符識別的關(guān)鍵步驟,筆者提出一種字符多特征提取方法,在預處理后字符基礎(chǔ)上,通過對字符四個側(cè)面掃描提取出字符骨骼累積統(tǒng)計特征,包括筆畫斜率累積特征、拐點幅度累積特征、輪廓深度累積特征,通過固定粗網(wǎng)格提取字符內(nèi)部像素特征。
由于圖像采集時圖像的像素值不一樣,經(jīng)切割出的字符大小也會不同,因此在進行匹配前必須先進行字符圖像歸一化操作,使圖像字符大小與模板圖像大小相一致。MATLAB軟件提供了一個改變圖像大小的函數(shù)imresize(I,Size,Model),Model代表插值運算方法,選用最近鄰插值法。車牌歸一化后字符圖像如圖8所示。
圖8 車牌歸一化后字符圖像
切割的字符經(jīng)過歸一化處理后,每個字符的大小一致,解決了像素值不一致的問題,有利于后續(xù)對字符的識別操作。
字符識別率是車牌識別研發(fā)成功與否的關(guān)鍵指標,字符識別主要涉及特征提取和識別方法兩方面,并且兩方面是繼承互補的關(guān)系。經(jīng)過訓練后的神經(jīng)網(wǎng)絡(luò)不僅可以有效提取信號、圖像等感知模式的特征,而且可以調(diào)試現(xiàn)有的啟發(fā)模式識別系統(tǒng),使其更好地解決不變量探測、自適應、抽象、概括等常見問題。也就是說,神經(jīng)網(wǎng)絡(luò)可以很好地應用于數(shù)組識別系統(tǒng)算法設(shè)計中。
對于預處理后的圖片,需要使用神經(jīng)網(wǎng)絡(luò)進行訓練。筆者所使用的是前饋后向傳播神經(jīng)網(wǎng)絡(luò),主要設(shè)計輸入層、隱形層、輸出層,以及各層之間的傳輸函數(shù)。
前饋后向傳播神經(jīng)網(wǎng)絡(luò)用于模式分類,首先將輸入模式空間的樣本映射到隱形層模式空間,然后由輸入層將隱形層模式空間的輸出模式樣本映射到輸出模式空間,最后根據(jù)判決規(guī)則決定決策空間,進行模式分類。
隱形層神經(jīng)元數(shù)量為50,輸出層神經(jīng)元數(shù)量為10,種群大小為400。由于輸入數(shù)量比較少,為了擴大搜索范圍,權(quán)值取值范圍為-10~10。由于中間重組和線性重組生成的子代空間會略大于父代,因此最終權(quán)值范圍會略大于-10~10,算法遺傳代數(shù)為2 000。基于以上參數(shù)設(shè)置,在對車牌進行字符識別之前先對提取到的特征進行訓練,為后續(xù)工作做好準備。神經(jīng)網(wǎng)絡(luò)訓練界面如圖9所示。
通過MATLAB軟件編程實現(xiàn)對車牌圖像的每一步處理,最終獲得車牌識別結(jié)果,如圖10所示。
以MATLAB 7.0軟件為試驗平臺,整個系統(tǒng)使用MATLAB軟件編程實現(xiàn),可以直接調(diào)用函數(shù),不僅有效縮短了試驗時間,而且降低了編譯的難度。試驗表明,筆者所采用的方法既保留了車牌區(qū)域信息,又減小了噪聲的干擾,從而簡化了二值化處理的過程,提高了后續(xù)處理的速度,并且車牌定位的準確率很高。
圖9 神經(jīng)網(wǎng)絡(luò)訓練界面
圖10 車牌識別結(jié)果
試驗對藍底白字車牌進行了分割識別,對黑底白字車牌原則上也適用。對于白底黑字車牌、黃底黑字車牌,需要對車牌定位算法進行調(diào)整,并將圖像反轉(zhuǎn),車牌字符分割算法仍然是有效的。