龐寧清,徐云龍,劉潤可,李丹,肖勝龍,劉向玲
(蘇州大學(xué)應(yīng)用技術(shù)學(xué)院計算機(jī)系,江蘇蘇州,215325)
隨著人們生活水平的提高,幾乎每家都有汽車,而隨著科技的發(fā)展以及車輛數(shù)量的增加,停車場、道路監(jiān)控等地方都會通過識別車牌信息來獲取車輛信息。在遭遇霧霾等糟糕天氣時,拍攝的圖像會出現(xiàn)失真等問題,單純的車牌識別系統(tǒng)會無法識別到準(zhǔn)確的車牌信息。本項目是基于MATLAB設(shè)計的一款能夠在霧霾天氣,或者能見度不高的環(huán)境下進(jìn)行車牌識別的裝置。
汽車牌照識別系統(tǒng)需要應(yīng)用到圖像采集與預(yù)處理、牌照定位、字符分割以及識別等等相關(guān)技術(shù),這是一個非常復(fù)雜的過程。
將牌照識別系統(tǒng)分為硬件和軟件兩個大部分,其中硬件部分的主要任務(wù)是完成汽車牌照圖像的采集,軟件部分需要對采集到的圖像信息進(jìn)行處理,提取出牌照位置并且識別出牌照信息。整個系統(tǒng)的核心部分的工作是軟件部分,能否通過汽車牌照對車輛進(jìn)行有效的管理,很大程度上取決于軟件部分的準(zhǔn)確性[1]。汽車牌照識別系統(tǒng)一般應(yīng)該包括以下五個部分:圖像采集、圖像預(yù)處理、牌照定位、字符分割、字符識別。
在對汽車牌照進(jìn)行定位之前,需要對圖像進(jìn)行預(yù)處理。由于MATLAB在處理圖像時,不僅會讀取車的牌照部分,還會讀取汽車本身和背景部分。在牌照定位前,對圖片信息預(yù)處理從而改善圖像質(zhì)量。
灰度圖像是一幅二維圖像,灰度圖像的變換采用了Rgb2gray函數(shù)。Rgb2gray:轉(zhuǎn)換RGB圖像為灰度圖像,格式:I=rgb2gray(RGB)。原始圖像和灰度圖如圖1所示。
圖1 原圖及灰度圖像
為提高識別率和精確度,必須在邊緣提取前增強(qiáng)汽車牌照部位和其他部位的對比度,使二維灰度化的圖像明暗對比鮮明。
本次設(shè)計中我們將采取直方圖均衡化的方式來對圖像進(jìn)行增強(qiáng)處理。由于圖像有時會出現(xiàn)整體偏暗或者整體偏亮的情況,要使用MATLAB中的變換函數(shù)將原圖像的直方圖修的更為均勻,使其層次鮮明豐富,從而避免整體偏暗或者整體偏亮的極端情況,我們稱這種方法為直方圖均衡化[11]。
在此,我們假設(shè)r表示原始圖像的灰度級,假設(shè)s表示經(jīng)過直方圖均衡化之后的灰度級。若一幅圖像的像元數(shù)為n,共有l(wèi)個灰度級,nk代表灰度級為rk的像元的數(shù)目,則第k個灰度級出現(xiàn)的概率可表示為:
有以上公式可以得到,我們可以由圖像的直方圖算出來各像素在均衡之后的灰度值。
本次圖像增強(qiáng)的實現(xiàn)采用了Histeq函數(shù)。格式:I=histeq(gray);圖像增強(qiáng)圖像如圖2所示。
圖2 增強(qiáng)圖像
在檢測邊緣時,為突出圖像灰度變化的作用,需要利用微分算子把圖像信息進(jìn)行微分運(yùn)算;另外,由于在圖像邊緣處的地方灰度變化比較大,所以此處圖像微分計算所得到的值比較高;我們可以把此值作為相應(yīng)點的邊緣強(qiáng)度;將設(shè)置好的閾值與分支比較結(jié)果來判斷和提取邊緣點,只要分支大于閾值,我們就可以將其作為邊緣點來提取。
常用的邊緣檢測算子有Sobel算子、Prewitt算子和Canny算子[9]。四種檢測算子均可以較好的完成邊緣提取的任務(wù)。但考慮到不確定的外觀因素,在汽車圖像中的牌照區(qū)域突現(xiàn)時,為增加車牌的邊緣定位精準(zhǔn)確性,需要抑制其他相應(yīng)部分的邊緣。所以,由于Canny算子表現(xiàn)出來的能有效檢測車牌區(qū)域紋理的特性,本文將使用Canny算子來檢測汽車牌照邊緣。
要想實現(xiàn)快速準(zhǔn)確定位車牌,需要綜合考慮多種定位方法。由于本次是針對藍(lán)色車牌的識別系統(tǒng)設(shè)計,所以利用RGB模型結(jié)合車牌顏色特征,選取合適的顏色分量閾值來進(jìn)行車牌的快速準(zhǔn)確定位。定位出車牌在圖像中的大概位置就要對車牌進(jìn)行提取,分割出車牌。
圖3 車牌定位及分割
由于放置不當(dāng)或拍攝角度問題,分割下來的車牌可能存在水平或垂直方向的傾斜。為了準(zhǔn)確的分割字符,識別出車牌,所以分割下來的車牌要進(jìn)行傾斜校正。一般情況下傾斜校正分為兩步,第一步是計算出傾斜的角度,第二步是根據(jù)傾斜的角度進(jìn)行旋轉(zhuǎn)變化。
本文主要使用Radon變換進(jìn)行車牌校正。Radon函數(shù)是處理圖像經(jīng)常使用到的工具之一,主要用來計算指定方向上的圖像矩陣的投影。
車牌水平方向傾斜校正步驟如下:(1)將分割的車牌灰度化,邊緣提??;(2)調(diào)用Radon函數(shù)進(jìn)行水平方向投影,計算傾斜角度;(3)調(diào)用Imrotate函數(shù)進(jìn)行旋轉(zhuǎn)。
為了得到包含車牌字符的水平條形區(qū)域,需要將分割后的車牌圖形進(jìn)行二值化和傾斜校正,然后將車牌字符分割出來,以便于識別。本文采用的字符分割方法是先規(guī)定分割出的車牌區(qū)域長×寬為238×52,設(shè)置閾值為2,尋找大于閾值2的列的數(shù)目,然后找到跳變對應(yīng)的前邊緣和后邊緣所對應(yīng)的列,當(dāng)跳變點所對應(yīng)的前邊緣和后邊緣所對應(yīng)列的長度是238×52的0.02倍時進(jìn)行分割。
字符分割完之后要對分割的字符進(jìn)行歸一化處理,以滿足下一步字符識別的需要。本文設(shè)計把分割的字符統(tǒng)一規(guī)定為12×24個像素。分割字符結(jié)果如圖4所示。
圖4 字符分割結(jié)果
在準(zhǔn)確地把字符切分開之后,要完成整個汽車牌照識別系統(tǒng)的最后一步,即字符的識別。這一步是計算量比較大的一步。經(jīng)過多年的研究,目前有多種字符識別方法。本文設(shè)計的汽車牌照識別系統(tǒng)是基于BP神經(jīng)網(wǎng)絡(luò)的識別系統(tǒng)。
BP(Back Propagation) 神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),它采用了誤差反向傳播算法。BP神經(jīng)網(wǎng)絡(luò)的實現(xiàn)分為學(xué)習(xí)過程和識別過程兩個部分,在學(xué)習(xí)過程中,同時進(jìn)行著兩個過程,分別是信息的正向傳播和誤差的反向傳播?;贐P算法的前饋網(wǎng)絡(luò)由輸入層、隱層、輸出層三個部分組成。
通常我們采用Sigmoid型的激活函數(shù)作為輸出函數(shù),如式5-1所示。Sigmoid型函數(shù)具有個單元特性,然后把隱含節(jié)點的輸出信息傳送到輸出節(jié)點,最后就可以將結(jié)果輸出。通過網(wǎng)絡(luò)學(xué)習(xí)的正向和反向傳播過程的反復(fù)運(yùn)用可以修改權(quán)值,從而得到最小的誤差信號。當(dāng)誤差達(dá)到理想值時,就可以結(jié)束網(wǎng)絡(luò)學(xué)習(xí)過程[12]。
車牌識別的好壞在于模板庫建立的大小,要想使車牌識別率高,首先要建立比較大的模板庫。汽車牌照的字符一般有7個,第一個字符是漢字,通常代表車輛所屬省份,第二位是字母,緊接其后的為字母與數(shù)字的混合[11]。
BP神經(jīng)網(wǎng)絡(luò)識別分割字符的流程為建立模板庫,送入神經(jīng)網(wǎng)絡(luò),設(shè)置神經(jīng)網(wǎng)絡(luò)參數(shù)并訓(xùn)練,分隔字符送入神經(jīng)網(wǎng)絡(luò),識別輸出結(jié)果。
車輛牌照的識別技術(shù)應(yīng)用廣泛,包括:交通流量檢測,機(jī)場港口出入車輛管理。交通流量檢測運(yùn)用時,交通監(jiān)控拍下車輛的車牌號,通過一系列的圖像處理得到較清晰的車牌圖像,通過多個路段的監(jiān)控拍攝,大概判斷出車輛行駛路段,從而達(dá)到預(yù)測和交通流量檢測的目的。機(jī)場港口出入車輛管理運(yùn)用時通過監(jiān)控檢測車牌,通過圖像處理識別出飛機(jī)或者輪船的牌號,從而對相應(yīng)的飛機(jī)或者輪船進(jìn)行駛出,駛?cè)氲认嚓P(guān)的管理操作。