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