查安秦
摘 要:本論文提出了一種基于圖像處理的車牌識別系統設計,系統分為三個部分,第一部分,對采集的圖像進行灰度化,圖像平滑,邊緣檢測等操作以進行預處理。第二部分,對預處理后的圖片進行車牌定位,并作傾斜矯正。最后使用卷積神經網絡,對車牌字符分割后提取出來單個字符的結果進行識別。
關鍵詞:車牌檢測 圖像處理 圖像分類 卷積神經網絡
1 引言
隨著智能交通系統的快速發展,車牌識別技術作為其中重要的一環,在交通管理、安全監控等領域扮演著至關重要的角色。傳統的車牌識別方法在復雜場景下表現不穩定,難以滿足日益增長的高效、精確識別需求。本文分析了已有的車牌識別技術并將其結合。先對獲取的圖像進行灰度化和邊緣檢測,其次對車牌進行定位,并使用Hough變換來校正傾斜的車牌圖像。最后使用卷積神經網絡,識別車牌。卷積神經網絡避免了傳統算法中復雜的字符特征提取過程,提高了復雜環境下車牌字符識別的準確性和穩定性[1]。
2 圖像預處理與車牌定位
2.1 灰度化
本文所用的數據集為彩色圖像,擁有RGB三個通道。而灰度圖像只有一個通道,相比起彩色圖像的多個通道計算復雜度更低。此外,對于一些情況下,灰度圖像的噪聲影響會相對較小。本文使用加權平均法進行灰度化處理,根據人的視覺系統對紅、綠、藍三種顏色的感知靈敏度,對紅,綠,藍三者的權值賦值分別為0.299、0.578和0.114,灰度化公式如式(2-1)所示:
Gray(i,j)=0.299*R(i,j)+0.578*G(i,j)+0.114*B(i,j)(2-1)
2.2 圖像平滑
圖像平滑是一種用于減少圖像中噪聲與細節的技術,平滑使得輸入圖像變得模糊,但同時凸顯了圖像的整體邊緣信息,為接下來的邊緣檢測打下鋪墊。本文使用了高斯濾波與中值濾波來進行圖像平滑。
高斯濾波是一種常用的圖像平滑技術,其使用一個N*N的卷積核對圖像進行卷積操作,越靠近卷積核中心的區域賦予的權重越重,而越遠離卷積核中心的區域所賦予的權重就越輕。通過這種方式,減少圖像中高頻的部分來減少圖像細節,相對地突出圖片的邊緣和結構信息,這樣做使得圖片更加平滑,但不至于丟失重要信息。
中值濾波是一種圖像處理中常用的非線性平滑技術,其使用統計的方式來降低圖像中的噪聲,并保留圖像的邊緣信息。其原理是對于圖像中的每個像素,將其周圍的一組像素(通常是一個滑動窗口內的像素)按照灰度值大小排序,然后選擇這組像素中的中間值作為當前像素的新值。與高斯濾波相同,其在降噪的同時,使得圖像的邊緣信息得以相對突出。
在高斯濾波與中值濾波卷積核大小N的選擇上,本文嘗試使用了3*3,5*5,7*7,11*11與21*21的卷積核,通過觀察實驗結果,發現過大的卷積核會導致汽車圖片的邊緣模糊,導致最終無法定位車牌。在現實場景中,拍攝車牌所用的攝影設備質量參差不齊,較差的攝影設備所產生的源圖片本身就較為模糊,且在大多數拍攝情況下,車輛是移動的,這樣拍攝圖片也會產生運動模糊。考慮到以上兩點。本文最終在高斯濾波與中值濾波的卷積核大小上,皆選用了3*3的卷積核。
經過圖像平滑操作后,車牌定位的結果相對變得準確,如圖為未經過圖像平滑操作和經過圖像平滑操作后的車牌輪廓篩選結果,由圖可見未經過圖像平滑操作的汽車圖像在通過輪廓篩選車牌時會產生較多的矩形區域,對后續的定位產生一定干擾,而經過圖像平滑操作的汽車圖像在通過輪廓篩選的結果會較為準確。
2.3 邊緣檢測
邊緣檢測通過識別圖像中不同區域間的輪廓,來對圖像進行分割,從而去除掉除車牌外的無用信息,以降低模型訓練過程中的數據處理量。本文嘗試使用了Sobel算子對圖像進行水平方向與垂直方向的雙卷積運算,Sobel算子屬于梯度幅度檢測算子,其基本思想是用卷積模板對檢測邊緣的圖像進行加權平均,再通過一階微分計算實現檢測圖像的邊緣。[2]
2.4 二值化
為了對圖像進行下一步數學形態學處理,需要對圖像先進性二值化,即在圖像中設立閾值,高于此閾值的像素點變為白色,低于此閾值的像素點變為黑色。
本文嘗試了三種方法設立閾值,一種是人為設立全局閾值。這種方法簡單方便,計算量低,但可能會受到圖像中亮度與對比度的影響。
第二種為使用OTSU算法確立全局閾值,OTSU法是一種自動閾值確定方法,通過將圖像分為背景和背景兩個部分,使得分割后得到的前景和背景與整幅圖像的類間方差最大。這種方法不需要手動設定閾值,減少了人工干預的需求,較為方便。而且其不會受到亮度與對比度的影響,也擁有一定的穩定性,但OTSU法對圖像中的噪點非常敏感,可能會導致在噪聲密集的區域中產生錯誤的分割。
第三種為使用局部閾值處理,即通過計算圖像中像素點領域的高斯均值,或加權平均值來確定局部閾值而非全局閾值。在明暗差異較大,如光照不均勻的圖像中,使用局部閾值處理能有效地保留圖像的細節。但由于算法需要計算每一個小區塊的閾值,因此相對于上述兩種方法的計算開銷更大。
經對比發現,對于清晰度不高的圖像,使用OTSU算法確立閾值與使用自適應閾值處理均會在一定程度上保留噪點,這些噪點在后續的數學形態學處理上步驟上會被放大,從而影響車牌定位。因此最終本文使用了人為設立全局閾值的方法。
2.5 二值圖像基本形態學運算
二值圖像基本形態學運算包括圖像的腐蝕與膨脹,腐蝕的實現基于填充結構元素的概念,它利用某種結構元素對一個圖像進行探測,以便找出在圖像內部可以放下該結構元素的區域。膨脹是腐蝕的對偶運算,可定義為對圖像的補集進行的腐蝕運算[3]。通過一個類似卷積核的內核遍歷圖像實現。將二值化圖像中的0表示背景,1表示前景。則腐蝕操作為當內核中的前景將內核完全覆蓋時,將該內核中心的單元格的像素置為1,否則置為0。而膨脹操作與此相反,只要內核元素的任意部分與圖像中的前景重合,就將內核中心單元格的置為1,否則置為0。腐蝕操作有著去除噪點和提取細節的作用,而膨脹有連接不連續物體,和放大物體的作用。
為了讓圖形的輪廓更為突出從而方便車牌的定位,本文將二值化后的圖像進行了開閉處理,通過對圖像的反復腐蝕和膨脹,去除二值化后細小的噪點,并讓車牌區域的輪廓更加突出,方便后續的車牌定位。
3 車牌定位
3.1 車牌輪廓篩選
車牌一般為矩形,國標普通轎車等車型,車牌尺寸為440*140mm,長寬比為3.1,一般以藍色為底色。大型汽車的后車牌尺寸為440*220mm[6],長寬比為2,一般以黃色為底色。而摩托車車牌的前牌與后牌尺寸為220*95mm與220*140mm,長寬比分別為2.3與1.5。一般以藍色或黃色為底色。此外,國內部分外資企業專用汽車也會使用黑白底色的車牌。綜合以上信息。對于開閉處理后的二值圖像,本文先進行輪廓查找,對于所有的圖像輪廓進行篩選,尋找矩形輪廓。對所有尋找到的輪廓進行篩查,考慮到拍攝角度會影響圖片中車牌的長寬比,首先剔除掉長寬比在1.5-5.5之外的輪廓,經過一輪剔除后,如果有兩個或以上的矩形輪廓,則利用車牌的顏色特征,進一步對剩下的矩形輪廓進行篩查。
3.2 車牌傾斜校正
由于拍攝角度原因,部分車牌在被篩選后為傾斜的圖像,不利于后續字符分割與字符識別任務。本文使用了基于透視變換的傾斜矯正算法矯正定位后的車牌圖像。透視變換的本質是將圖像投影至新的視平面[4]。在定位車牌后,可獲得車牌區域左上角,左下角,右上角,右下角的坐標,再將獲取到的點映射到矩形圖像的四個角落點上,即可獲得傾斜校正后的車牌。
3.3 車牌分割
車牌分割是為了讓卷積神經網絡的識別結果更準確。對于識別一個完整的車牌上的字符,有直接使用卷積神經網絡端對端的識別的方法,以及先將車牌分割成單個字符,再逐步識別單個分割字符后的結果。相對于直接識別,先將車牌分割后再逐步識別的方式準確率更高,并且這種方式識別的卷積神經網絡訓練成本也更低,因此本文使用了車牌字符分割技術對捕獲到的車牌進行處理。
本文嘗試了兩種分割方式嘗試字符分割。一種是基于連通域的字符分割,一種是基于像素直方圖的字符分割。輸入的圖片是定位車牌后的二值化區域。
基于連通域的字符分割即尋找圖像中具有相同像素值且位置相鄰的組織,對于找到的每個連通區域輪廓,進行篩選選掉不為車牌字符的區域,最終將每個區域的坐標從小到大進行排序,得到每一個含有字符的車牌區域。
基于像素直方圖的字符分割即通過對二值化后的圖像進行水平投影和垂直投影,分別得到水平投影與垂直投影的直方圖。其中水平投影后的直方圖用于去除車牌上下的邊框對字符提取的干擾,而垂直投影可以去除左右邊框,并提供每個字符的位置信息從而進一步進行分割。
由于基于連通域的字符分割對噪聲比較敏感,本文最后采用了基于像素直方圖的字符分割方法。對于水平投影,分別從上下位置開始找最小波谷,上半部分找到的最小波谷,即為車牌字符區域的頂邊,下半部分找到的最小波谷,即為車牌字符區域的底邊。對于垂直投影,從左至右尋找直方圖的波谷,當前面的波谷開始上升到某一閾值時,說明當前位置為車牌上某字符的開始,當垂直投影中的像素個數下降到后一個波谷時,說明當前位置為車牌上某字符的結束位置。由此提取出的矩形區域即為車牌的字符。
4 卷積神經網絡識別
傳統的圖像分類算法提取圖像的色彩、紋理和空間等特征,其在簡單的圖像分類任務中表現較好,但在復雜圖像分類任務中表現不盡人意[10]。本文使用的卷積神經網絡(Convolutional Neural Network, CNN)是一種深度學習模型,其算法原理基于模仿生物視知覺機制構建[5]。主要用于對圖像進行分類,分割和識別。其核心思想是通過卷積層來自動識別圖像中的特征。相比起普通的全連接神經網絡,卷積神經網絡擁有局部連接與權值共享的特征,使得訓練模型時的參數量大大降低。從而提升了訓練的效率,使得大規模的深層網絡更容易實現。卷積神經網絡的主要組成部分為卷積層,池化層與全連接層。
4.1 卷積層
卷積層是卷積神經網絡的核心組件,其單位是卷積核,主要負責對預處理過后的單個字符圖像進行特征提取。通過卷積核在數據集的輸入圖像上從左至右,從上至下的移動,來提取車牌數據集中文字或及數字的邊緣角點特征。通過在網絡中堆疊多個卷積層,卷積神經網絡可逐步學到更高級的特征,以進行復雜的分類任務。
4.2 池化層
池化層一般置于卷積層之后,其作用是將感受野中最重要的區域提取出來,同時減小特征圖的尺寸,進一步篩選物體的特征,剔除不重要的數據信息[9]。有利于減輕神經網絡的負擔并降低過擬合的概率,但由于其縮小了圖像的大小,可能會降低網絡的精確度。池化層通過在特征圖的局部區域進行某種統計操作(如取最大值)來生成其輸出。
4.3 全連接層
全連接層的功能是將卷積層和池化層提取的數據進行進一步分析,并通過回歸函數進行分類整理。圖像在經過卷積層與池化層后,其輸出的特征會被打平并進入全連接層,二維圖像結構會展開變為一維向量。全連接層與卷積層不同,其每個連接都有一個權重參數,總體的參數量較大。這也使得全連接層能夠捕捉到通過卷積層和池化層提取特征之間的復雜關系,進行最終的分類操作。
4.4 訓練結果
本文使用了從中國31個省份中收集到的車牌圖像,將其預處理并分割后得到共12020張20*20的二值化車牌字符數據集。按照9:1的比例分割為訓練集與數據集。使用卷積神經網絡,共訓練20輪,最終在測試集上對單個字符的準確率為0.96。
5 結語
本文采用了均值灰度化對圖像進行處理,分別采用了高斯濾波和中值濾波平滑圖像,并對平滑后的圖像進行了邊緣檢測,二值化和開閉處理來預處理圖像。通過形狀和顏色屬性篩選出車牌輪廓,并進行車牌傾斜和分割。最后通過卷積神經網絡對分割出來的字符進行識別,提升了車牌識別的準確性。
基金項目:廣州軟件學院科研項目(ky202220)。
參考文獻:
[1]楊金鑫,顏湘炎,王子寧.基于深度學習的復雜場景下車牌識別算法研究[J].智能計算機與應用,2023,13(03):33-38.
[2]薛文格,鄺天福.基于Sobel算子和灰色關聯分析的圖像邊緣檢測[J].楚雄師范學院學報,2023,38(03):135-140.
[3]高薪,胡月,杜威等.腐蝕膨脹算法對灰度圖像去噪的應用[J].北京印刷學院學報,2014,22(04):63-65.
[4]王建明,毛一鳴,晏濤等.光場圖像透視變換算法[J].激光與光電子學進展,2019,56(15):73-80.
[5]余偉.基于卷積神經網絡的車牌圖像識別技術實現[J].信息記錄材料,2022,23(05):154-156.
[6]白明雷. 基于神經網絡的車牌號識別方法研究[D].中國石油大學(華東),2018.
[7]曹文平,陳厚錦.一種基于輪廓特征的車牌定位算法[J].汽車實用技術,2023,48(12):44-47.
[8]王世芳,李玉龍.基于卷積神經網絡的車牌號碼識別方法[J].長安大學學報(自然科學版),2023,43(04):106-117.
[9]李磊.基于卷積神經網絡的車輛特征識別技術研究[J].交通世界,2022(09):4-5+12.
[10]張珂,馮曉晗,郭玉榮等.圖像分類的深度卷積神經網絡模型綜述[J].中國圖象圖形學報,2021,26(10):2305-2325.