屠 菁,劉登勝,鐘雪景
(1.合肥學(xué)院 人工智能與大數(shù)據(jù)學(xué)院,安徽 合肥 230601;2.東南大學(xué) 軟件學(xué)院,江蘇 蘇州 215123)
車牌識(shí)別(Automatic license plate recognition,ALPR)[1]是先通過(guò)彩色、黑白或紅外相機(jī)拍攝圖像,然后由機(jī)器通過(guò)圖像處理或模式識(shí)別相關(guān)算法達(dá)到自動(dòng)識(shí)別車牌號(hào)碼的目的,用于減輕人為的工作量以及提高管理效率。 但是,車牌類型或環(huán)境的不確定增加了車牌的檢測(cè)和識(shí)別難度,如車輛型號(hào)和相機(jī)距離的不同, 會(huì)對(duì)車牌的定位造成困擾;另外環(huán)境和光線也給拍攝的圖像識(shí)別造成了困難。
車牌識(shí)別技術(shù)在智能處理領(lǐng)域一直是國(guó)內(nèi)外學(xué)者主要的研究方向。例如,以色列Hi-Tech 公司和新加坡Optasia 公司,都研制了比較成熟的產(chǎn)品[2-3]。我國(guó)學(xué)者也一直在進(jìn)行相關(guān)識(shí)別算法的研究,如劉軍等[4]使用兩層高斯金字塔模型分析漢字圖像,再由神經(jīng)網(wǎng)絡(luò)分類器實(shí)現(xiàn)漢辨別;陳宏照等[5]提出基于OpenCV 的車牌定位方法,即將色彩與紋理相結(jié)合;張變蓮等[6]利用 SUSAN 算子和 SIFT 算法實(shí)現(xiàn)對(duì)車牌區(qū)域邊緣檢測(cè)和字符識(shí)別;林乾畢[7]提出通過(guò) SVM 分類器判斷圖像中的車牌區(qū)域[8],然后由ANN 神經(jīng)網(wǎng)絡(luò)完成字符識(shí)別。 國(guó)內(nèi)外車牌的排列規(guī)則不同,雖然國(guó)外研究效果較好,但是并不適用國(guó)內(nèi)。 而國(guó)內(nèi)的研究注重對(duì)算法的理論研究,較少與實(shí)際應(yīng)用場(chǎng)景相結(jié)合。
本文主要討論基于K- nearest neighbor(KNN)分類算法的車牌識(shí)別在停車場(chǎng)中的具體應(yīng)用,系統(tǒng)擬在原車輛信息管理的基礎(chǔ)上,增加車牌自動(dòng)識(shí)別模塊。首先,預(yù)處理原始車輛圖像,削弱噪聲的影響并緩和圖像模糊;其次,通過(guò)邊緣檢測(cè)定位車牌區(qū)域及目標(biāo)圖像,采用垂直投影的方法進(jìn)行字符分割;然后,通過(guò)KNN 算法完成車牌號(hào)碼的最終識(shí)別。最后, 通過(guò)與ANN 神經(jīng)網(wǎng)絡(luò)算法、SIFT 算法進(jìn)行實(shí)驗(yàn)比較, 驗(yàn)證KNN 方法的精度和效率以及實(shí)際應(yīng)用價(jià)值。
在模式識(shí)別技術(shù)中,KNN 算法被廣泛應(yīng)用于基于小訓(xùn)練集的有監(jiān)督機(jī)器學(xué)習(xí)算法, 它通過(guò)計(jì)算兩點(diǎn)之間的距離來(lái)發(fā)現(xiàn)兩點(diǎn)之間的相似性, 該算法的優(yōu)點(diǎn)是易于開(kāi)發(fā)構(gòu)造和計(jì)算復(fù)雜度較低[9][10](P228-231)。該算法基于3 個(gè)主要原則:(1) 確定每個(gè)訓(xùn)練樣本到目標(biāo)點(diǎn)的距離;(2)通過(guò)距離的遠(yuǎn)近選擇目標(biāo)點(diǎn)最近的k 個(gè)鄰居;(3)用k 個(gè)樣本為目標(biāo)點(diǎn)的投票,共同確定目標(biāo)點(diǎn)的類別。圖1 給出了KNN 算法的實(shí)現(xiàn)原理[11]。
Minkowski 距離是傳統(tǒng)KNN 中廣泛使用的距離度量之一。如果樣本特征具有相同的規(guī)模和數(shù)據(jù)分布,那么Minkowski 距離可以表示兩點(diǎn)之間的實(shí)際距離。 本文將特征值之間的差異指數(shù)設(shè)為2,即歐式距離,因?yàn)槠椒胶陀欣诿枋龆嗑S點(diǎn)距離。 當(dāng)特征點(diǎn)的個(gè)數(shù)為m 時(shí),計(jì)算訓(xùn)練樣本p = (x1, … ,xm)和測(cè)試樣本q =(y1, … , ym)之間的歐式距離為公式(1)所示:
兩個(gè)點(diǎn)之間的距離越短,它們之間的相似性越大。 在計(jì)算所有點(diǎn)對(duì)的距離后,可確定測(cè)試樣本的類別。KNN 分類算法易于實(shí)現(xiàn)、分類性能好,主要表現(xiàn)為:算法的性能只與訓(xùn)練集有關(guān),當(dāng)測(cè)試樣本發(fā)生變化時(shí)不會(huì)產(chǎn)生影響,且樣本集越大性能越好[12];算法通用性強(qiáng),對(duì)于不同場(chǎng)景問(wèn)題,無(wú)需重復(fù)建模,只需調(diào)整參數(shù)。
車牌圖片采集時(shí)因?yàn)槭墉h(huán)境或車型的影響,容易產(chǎn)生噪聲干擾識(shí)別的穩(wěn)定性, 需預(yù)處理車牌圖像,主要步驟如下。
步驟 1:濾波去噪、高斯濾波(Gauss Filter)算法可以較好地消除白噪聲。具體方法為:通過(guò)計(jì)算像素點(diǎn)和鄰域內(nèi)其他像素點(diǎn)的值的加權(quán)平均值后, 每一個(gè)像素點(diǎn)的高斯濾波值即可獲得。如公式(2) 所示。
經(jīng)過(guò)高斯濾波之后的圖像和原圖像對(duì)比的示例如圖2 所示。
圖2 原始彩色圖像與濾波后的圖像
步驟2:圖像的灰度化。 灰度圖像相比彩色圖像而言,每個(gè)像素點(diǎn)只需要一個(gè)字節(jié)存放,既減少了計(jì)算量,又不會(huì)影響圖像處理的正確率。 一般可以采用加權(quán)平均法進(jìn)行灰度處理,將每一個(gè)像素點(diǎn)的原有三個(gè)顏色參數(shù)轉(zhuǎn)換為一個(gè)參數(shù)值來(lái)代替。如公式(3)所示。
以圖1 的圖像為例,灰度化后的圖像如圖3 所示。對(duì)于灰度化后的圖像可進(jìn)一步通過(guò)大津法[13]將其二值化,主要思想是:(1)選取一個(gè)灰度閥值t,根據(jù)閥值t 將圖像中的所有像素點(diǎn)分為兩類C0和C1;(2)由公式(4)分別計(jì)算出 C0和 C1出現(xiàn)的概率W0和 W1,然后由公式(5)計(jì)算出類 C0和 C1的平均灰度值u0和u1,最后根據(jù)公式(6)計(jì)算出類間方差g(t)。 當(dāng)所得到的類間方差最大時(shí),此時(shí)對(duì)應(yīng)的閥值t 即為目標(biāo)最佳閥值。
要獲得汽車的車牌內(nèi)容,首先需要從復(fù)雜的車輛照片中準(zhǔn)確定位車牌的位置。車牌定位算法主要是根據(jù)車牌的一些獨(dú)有特征來(lái)獲取圖像中的車牌照[14](P14-20)。 我國(guó)的車牌在幾何、顏色和紋理特征等方面具有明顯的特征,主要表現(xiàn)為:車牌為規(guī)則具有特定比例的矩形,車牌的顏色較為固定,且其中的字符排列規(guī)則,字符之間都有一定的距離。
圖3 基于Canny 算法的邊緣檢測(cè)步驟
圖4 數(shù)學(xué)形態(tài)學(xué)和連通域分析后的圖像
圖5 基于垂直投影的車牌分割流程
圖6 基于垂直投影的車牌字符分割方法示例
車牌定位常使用基于邊緣檢測(cè)、基于數(shù)學(xué)形態(tài)學(xué)和基于數(shù)字特征等定位方法,其中邊緣檢測(cè)和數(shù)學(xué)形態(tài)學(xué)依賴于圖像的紋理和邊緣特征,研究綜合了兩者的優(yōu)點(diǎn),對(duì)光線較弱、有噪聲干擾的的車牌圖像也能實(shí)現(xiàn)快速的定位,具有良好的魯棒性和準(zhǔn)確性。車牌區(qū)域中字符與底色之間灰度有著明顯性的變化特征, 車牌區(qū)域中的灰度變化幅度比較大,具有規(guī)律性[15]。 Canny 邊緣檢測(cè)算法使用了變分法(Calculus of variations),通過(guò)優(yōu)化特定功能的函數(shù)達(dá)到最優(yōu)檢邊緣檢測(cè),Canny 算法包含許多可以調(diào)整的參數(shù), 可調(diào)整優(yōu)化算法計(jì)算的時(shí)間與實(shí)效。具體步驟如圖3 所示:
若垂直和水平方向的差分分別為Gy (x, y)和Gx(x, y),根據(jù)一階偏導(dǎo)有限差分,則梯度值 φ(x,方向 θ(x, y)=tan-1(Gy(x, y)/Gx(x, y))。
對(duì)于車牌位置對(duì)應(yīng)形狀的提取,可在不影響圖細(xì)節(jié)和邊緣的前提下,通過(guò)數(shù)學(xué)形態(tài)學(xué)簡(jiǎn)化形狀結(jié)構(gòu)來(lái)提取選取的元素內(nèi)容,主要采用的閉運(yùn)算和開(kāi)運(yùn)算后的圖像,具體如圖4 所示。
數(shù)學(xué)形態(tài)學(xué)處理后的圖像中,往往會(huì)有多個(gè)連通候選區(qū)域, 根據(jù)對(duì)車牌照固定的長(zhǎng)寬比的分析(大約為3.14),篩選出特定的連通候選區(qū)域。 由于拍照和處理過(guò)程中其他種種因素的影響,車牌圖像的具體大小會(huì)發(fā)生變化,通過(guò)設(shè)置合適的車牌長(zhǎng)寬比,可以達(dá)到剔除范圍外區(qū)域、得到真正的車牌連通區(qū)域的目的,然后根據(jù)連通域中的坐標(biāo)從原始圖像中提取完整的車牌照。 分析結(jié)果如圖4(C)所示。
對(duì)定位后的車牌照進(jìn)行整體識(shí)別,難度既大而且識(shí)別率較低,需要先對(duì)車牌照進(jìn)行字符分割。 為了具有良好的實(shí)時(shí)性和準(zhǔn)確性,本文采用垂直投影法,具體流程如圖5 所示。
圖6 為字符分割過(guò)程的示例圖。由圖,可知,字符間的間距在經(jīng)過(guò)垂直投影后會(huì)形成波谷,而字符處的投影則會(huì)形成波峰。根據(jù)波谷處的像素點(diǎn)為0 來(lái)進(jìn)行分割,(c)表示的字符為垂直投影分割后的結(jié)果。
分割字符之后,下一步需要對(duì)字符進(jìn)行識(shí)別處理。傳統(tǒng)的識(shí)別方法是將圖像進(jìn)行二值化處理轉(zhuǎn)換成0, 1 矩陣, 但是字符特別是漢字字符的筆畫(huà)斷裂等現(xiàn)象會(huì)大大影響識(shí)別效果。HLBP[16]特征結(jié)合了LBP(局部二值化模式)特征和 Haar 型特征[17](P511-518),更能有效地反映圖像局部的灰度變化,該算子以對(duì)稱的方式給出8 組編碼模型,如圖7 所示。
圖7 HLBP 的8 組編碼模型
其中, 中心點(diǎn)P0記錄 Haar 型特征的紋理變化,以 P0為中心構(gòu)成了 5×5 的小窗 W(x, y),圖像中任意像素 I(x, y)對(duì)于其 W(x, y)的 HLBP 算子可由公式(7)計(jì)算得到。
其中Mk分別對(duì)應(yīng)圖8 中的編碼模型,T 為灰度劃分的閾值。對(duì)車牌漢字和數(shù)字進(jìn)行HLBP 算子特征提取之后,就可以采用KNN 算法進(jìn)行分類。為了識(shí)別方便,我們將全圖像的HLBP 特征進(jìn)行直方圖統(tǒng)計(jì),生成直方圖向量。 采用此方法為訓(xùn)練樣本集中的圖像均做HLBP 特征分析與提取。為了后期分類方便,可將直方圖進(jìn)行歸一化處理,具體如公式(8)所示。
其中,灰度區(qū)間[0, L],rk為灰度值,nk是 rk的像素個(gè)數(shù),p(rk)即為其出現(xiàn)的概率。
對(duì)于待識(shí)別字符, 可采用KNN 分類算法進(jìn)行歐式距離的計(jì)算和識(shí)別, 實(shí)現(xiàn)分類和字符識(shí)別,具體如圖8 KNN 算法所示。
圖8 KNN 分類算法
關(guān)鍵步驟的Python 語(yǔ)言實(shí)現(xiàn)代碼如下所示:
實(shí)驗(yàn)搭建的服務(wù)數(shù)據(jù)環(huán)境為:PC 電腦(硬件配置為: 酷睿 i5 四核,500 GB HDD,8 GB 內(nèi)存),操作系統(tǒng)為Windows 8.1 中文版, 數(shù)據(jù)庫(kù)版本為MySQL 5.5,采用 Python 3.7 作為開(kāi)發(fā)工具。
實(shí)驗(yàn)?zāi)M了小區(qū)停車場(chǎng)的應(yīng)用場(chǎng)景,常見(jiàn)的車型(包括豐田、福特、東風(fēng)等品牌),包含1 025 張車輛的前視圖像,圖像尺寸為1 200×900,圖像拍攝于多種環(huán)境下,有晴天、陰天、逆光等,如圖9 所示。
圖9 測(cè)試集圖像示例
系統(tǒng)模擬了停車場(chǎng)的車牌識(shí)別,通過(guò)獲取攝像頭拍攝到的圖片后對(duì)其進(jìn)行處理,如圖10 所示,界面左側(cè)顯示預(yù)處理的車牌照片信息,右側(cè)顯示圖像識(shí)別之后的結(jié)果。
圖10 車牌識(shí)別結(jié)果界面
車輛識(shí)別結(jié)果的性能評(píng)估,可根據(jù)車牌字符識(shí)別精度, 即車牌字符序列識(shí)別正確與否來(lái)定義,具體如公式(9)所示:
將ANN 神經(jīng)網(wǎng)絡(luò)算法、SIFT 算法和與本文中使用的KNN 算法進(jìn)行比較, 針對(duì)1 000 張完整車牌進(jìn)行實(shí)驗(yàn),選取850 張車牌圖像作為字符訓(xùn)練集和150 張車牌圖像作為字符測(cè)試集,檢測(cè)各算法的車牌識(shí)別效果。 實(shí)驗(yàn)結(jié)果如表1 所示。
表1 不同識(shí)別算法下的車牌識(shí)別準(zhǔn)確率和速度性能
由表1 可知,ANN 雖然在訓(xùn)練集和測(cè)試集均能得到較高的識(shí)別準(zhǔn)確率,但車牌整體識(shí)別的準(zhǔn)確率較低且耗時(shí)較多,原因在于車牌是多個(gè)字符的組合。 SIFT 和KNN 在訓(xùn)練集精度和車牌識(shí)別率上均表現(xiàn)較好,但是KNN 的時(shí)間性能更加出色,且實(shí)現(xiàn)起來(lái)更為直觀,通過(guò)調(diào)整參數(shù)對(duì)性能進(jìn)行微調(diào)也較容易。因此,本文采用的KNN 分類算法總體性能上識(shí)別準(zhǔn)確率更好,識(shí)別率高且耗時(shí)時(shí)間較少,且隨著訓(xùn)練集樣本增多,其識(shí)別精度還會(huì)更高。
本文具體論述了車牌識(shí)別過(guò)程中的關(guān)鍵步驟與關(guān)鍵技術(shù), 并介紹了KNN 分類算法在字符識(shí)別中的應(yīng)用。經(jīng)測(cè)試,應(yīng)用KNN 分類算法的車牌識(shí)別本系統(tǒng)能夠很好地對(duì)車牌圖像進(jìn)行識(shí)別和提取出正確的車牌號(hào)碼。 但是測(cè)試過(guò)程中也發(fā)現(xiàn)一些不足,例如當(dāng)車牌圖片受天氣、光線等因素影響時(shí),由于圖像噪聲增多,會(huì)影響識(shí)別的正確率。 在今后的研究中,可以引入深度學(xué)習(xí)相關(guān)算法,如卷積神經(jīng)網(wǎng)絡(luò)等,以提高車牌識(shí)別精度和普適性。
淮南師范學(xué)院學(xué)報(bào)2021年2期