李濤濤
(200093上海市 上海理工大學(xué) 機(jī)械工程學(xué)院)
伴隨著交通行業(yè)的飛速發(fā)展,車牌識(shí)別技術(shù)已然成為一項(xiàng)非常重要的研究課題,并在日常生活中有著廣泛的應(yīng)用。車牌識(shí)別技術(shù)的主要問題包括車牌定位和字符識(shí)別。從本質(zhì)上講,車牌定位的算法分為3種,一種是基于圖像邊緣的,一種是基于圖像顏色的,一種是基于機(jī)器學(xué)習(xí)。Abolghasemi[1]等提出的基于邊緣以及顏色輔助的車牌定位方法增加了對(duì)車牌可疑區(qū)域的比較,但是,該方法受光照的影響比較大。基于模板匹配的方法[2]廣泛用于車牌字符識(shí)別技術(shù)中,但是該類方法易受噪聲等因素的影響。支持向量機(jī)(support vector machine,SVM)分類器也被應(yīng)用于車牌字符識(shí)別[3]。基于SVM的車牌字符識(shí)別方法需要指定提取的特征,不同特征的選擇將直接關(guān)系到車牌字符識(shí)別的效果。
本文采用的車牌識(shí)別流程主要包括以下幾個(gè)部分:車牌圖像預(yù)處理、車牌定位、車牌字符分割、車牌字符識(shí)別,如圖1所示。

圖1 車牌識(shí)別流程Fig.1 License plate recognition process
本文針對(duì)生活中經(jīng)常出現(xiàn)的車牌,設(shè)計(jì)了一套車牌圖像預(yù)處理及車牌定位流程,具體流程如圖2所示。

圖2 車牌圖像預(yù)處理及車牌定位過程Fig.2 License plate image preprocessing and license plate location process
由于自然環(huán)境、拍攝設(shè)備和拍攝方位等客觀因素,在獲取車牌圖像的過程中會(huì)出現(xiàn)圖像模糊不清的情況,需對(duì)圖像進(jìn)行一定程度的預(yù)處理操作[4]。
1.1.1 彩色圖轉(zhuǎn)灰度圖
將三通道的彩色圖像轉(zhuǎn)換成單通道的灰度圖。將采集的車牌圖片轉(zhuǎn)換成灰度圖,轉(zhuǎn)換結(jié)果如圖3所示。

圖3 彩色圖轉(zhuǎn)灰度圖Fig.3 Color picture to gray picture
1.1.2 高斯濾波
高斯濾波是一種線性平滑濾波,可以消除高斯噪聲。圖4是灰度圖經(jīng)過高斯濾波后的圖像。

圖4 高斯濾波Fig.4 Gaussian filter
1.1.3 邊緣化檢測(cè)
常用的邊緣檢測(cè)算子有Canny算子、Sobel算子、Laplacian算子等[5],本文采用Canny算子進(jìn)行邊緣檢測(cè)。Canny算子邊緣檢測(cè)結(jié)果如圖5所示。

圖5 Canny算子邊緣檢測(cè)Fig.5 Canny operator edge detection
1.2.1 圖像形態(tài)學(xué)操作
對(duì)預(yù)處理完的圖像進(jìn)行開運(yùn)算,進(jìn)行先腐蝕后膨脹的過程。開運(yùn)算可以用來消除小物體,在纖細(xì)點(diǎn)處分離物體,并且在平滑較大物體的邊界的同時(shí)不明顯改變其面積。
1.2.2 查找輪廓,精確定位
根據(jù)車牌的面積、長(zhǎng)寬比等對(duì)所得的矩形進(jìn)行過濾。車牌定位結(jié)果如圖6所示。

圖6 車牌定位結(jié)果Fig.6 License plate location result
字符分割的目的就是將車牌中所有的文字分割開來,形成單一的字符塊,圖7為字符分割過程。

圖7 字符分割過程Fig.7 Character segmentation process
圖8為字符分割的最終結(jié)果。

圖8 車牌字符分割結(jié)果Fig.8 License plate character segmentation results
卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)一般由多個(gè)卷積層以及池化層交替而成,最后,再通過全連接BP神經(jīng)形成輸出。其整體架構(gòu)是一種多層監(jiān)督學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),通過學(xué)習(xí)大量的輸入輸出樣本,用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再根據(jù)新的輸入,輸出擬合之后的結(jié)果。本文提出的基于卷積神經(jīng)網(wǎng)絡(luò)的車牌字符識(shí)別方法由2部分構(gòu)成:第1部分,輸入待訓(xùn)練圖像集訓(xùn)練分類模型;第2部分,將待識(shí)別的車牌字符圖像輸入訓(xùn)練好的模型進(jìn)行識(shí)別。
在卷積層,前一層的特征圖與一個(gè)可學(xué)習(xí)的核進(jìn)行卷積,卷積的結(jié)果經(jīng)過激活函數(shù)后的輸出形成這一層的特征圖。一般地,卷積層的形式如:

池化是縮小高、長(zhǎng)方向的空間的運(yùn)算。將2×2的區(qū)域集約成1個(gè)元素,縮小空間大小。本次車牌定位使用的最大池化(max_pool)也就是選取最大值的運(yùn)算。步幅的大小是2,車牌的圖像大小都是136×36,在經(jīng)過2次池化后,得到的是34×9。池化層和卷積層不同,沒有要學(xué)習(xí)的參數(shù)。池化只是從目標(biāo)區(qū)域中取最大值或者平均值,所以不存在要學(xué)習(xí)的參數(shù)。池化有一個(gè)優(yōu)點(diǎn)是對(duì)微笑位置的變化具有魯棒性,輸入數(shù)據(jù)發(fā)生微笑偏差時(shí),池化仍會(huì)返回相同的結(jié)果。池化會(huì)細(xì)搜輸入數(shù)據(jù)的偏差。
全連接層中需要先把前兩個(gè)卷積層的輸出結(jié)果全部flatten,這里使用tensorflow.reshape使每個(gè)樣本變成一維向量。在全連接層最后得到一個(gè)2列的矩陣。
本文將總共12 000張圖片(包括省份、數(shù)字和字母圖片)作為數(shù)據(jù)集,其中9 000張作為訓(xùn)練集,剩余3 000張圖片作為測(cè)試集,并通過shuffle函數(shù)隨機(jī)將數(shù)據(jù)集排列,最終保存訓(xùn)練后的權(quán)重。卷積使用tensorflow.nn.conv2d函數(shù),池化使用tensorflow.max_pool函數(shù),最后添加softmax函數(shù)可以使模型的準(zhǔn)確率提高。圖9為訓(xùn)練模型字符識(shí)別結(jié)果。

圖9 訓(xùn)練模型字符識(shí)別結(jié)果Fig.9 Training model character recognition results
本文在充分利用車牌特征的基礎(chǔ)上,實(shí)現(xiàn)了車牌定位和字符分割,提出了一種基于CNN的車牌識(shí)別方法。實(shí)驗(yàn)表明,此方法識(shí)別車牌準(zhǔn)確率高。由于目前在車牌識(shí)別中主要針對(duì)的是國(guó)內(nèi)車牌,無法識(shí)別國(guó)外以及新能源車牌。在實(shí)際應(yīng)用中,還需進(jìn)一步增加樣本數(shù)量及網(wǎng)絡(luò)訓(xùn)練次數(shù)[6],改變網(wǎng)絡(luò)結(jié)構(gòu),以進(jìn)一步提高正確率。