齊佳鑫,張志華,付金尉,賀紫菡,司志廣,王藝雄
(遼寧科技大學電子與信息工程學院,遼寧 鞍山 114051)
隨著城市交通的快速發展和車輛數量的不斷增加,交通管理和安全監控需求增加,車牌識別技術在智能交通系統中變得至關重要,扮演著重要的角色。車牌識別技術可以實現對車輛的自動識別和追蹤,為交通管理、安全監控、道路收費等領域提供了有效的解決方案。因此,車牌識別技術尤為重要,本文將利用卷積神經網絡(Convolutional Neural Network,CNN)設計一種準確率較高的車牌識別系統。車牌識別的流程主要包括以下3 個部分:圖像預處理、車牌定位與分割、車牌字符識別。圖1 為車牌識別流程。

圖1 車牌識別流程
在圖像預處理階段,噪聲去除和圖像增強是重要的步驟,可以提高車牌識別系統的準確性和穩定性。圖2 為汽車圖像的原圖。

圖2 汽車圖像的原圖
常見濾波降噪的方式包括中值濾波、均值濾波以及高斯濾波等。本文采用的方式為高斯濾波[1]。高斯濾波是一種常用的線性圖像濾波方法,用于平滑圖像并去除高頻噪聲。其原理是使用高斯函數對像素周圍鄰域內的像素進行加權平均,以降低圖像中的高頻成分。對于圖像中的每個像素,高斯濾波器會取該像素周圍鄰域的像素值,并根據高斯函數的權重對鄰域內的像素進行加權平均。在高斯濾波中,像素周圍鄰域內的像素值與高斯函數的權重進行加權平均,以得到平滑后的像素值。高斯濾波的公式為
式中:I'(x,y)是經過高斯濾波后的圖像的像素值;(x,y)是當前像素的坐標;(a,b)是鄰域內的像素的坐標;I(a,b)是鄰域內的像素的原始值;G(a,b)是高斯函數的權重,表示鄰域內的像素與當前像素的距離和標準差的關系。高斯函數的公式為
式中:σ 為高斯函數的標準差,其大小決定了函數曲線的寬度;π 為圓周率。圖3 為高斯濾波后的效果圖像。

圖3 高斯濾波后的效果圖像
顏色空間轉換可以將圖像從原始顏色空間轉換到更適合車牌識別的顏色空間。常用的顏色空間包括RGB、HSV、YUV 等。本文采用的是從RGB 到灰度的轉換[2]:將彩色圖像轉換為灰度圖像,可以減少計算復雜度,并且在一些情況下,灰度圖像對車牌區域的邊緣和紋理信息更加敏感。圖4 為灰度圖像。

圖4 灰度圖像
1)邊緣檢測。邊緣檢測是車牌定位[3]與分割的重要步驟,常用的方法有Sobel 算子、Canny 算子、Laplacian 算子等。根據Sobel 算子[4-5]的原理,對圖像像素點做卷積,卷積核見圖5。

圖5 Sobel 算子的卷積核
然后,對生成的新像素灰度值做閾值運算,其公式為
以此來確定邊緣信息。本文采用Sobel 算子進行邊緣檢測,Sobel 算子邊緣檢測后的效果圖像見圖6。

圖6 Sobel 算子邊緣檢測后的效果圖像
2)圖像形態學處理[6]。邊界定位是在檢測到邊緣后,對于邊緣檢測后的圖像進行閉運算,進行先膨脹再腐蝕的操作,將白色部分煉成一個整體。圖7 為閉運算后的效果圖像。
3)輪廓檢測。輪廓檢測方法:利用OpenCV庫中的FindContours () 函數檢測到閉運算處理后的連續邊緣,并在原圖中繪制出可能為車牌圖像的外輪廓。圖8 為輪廓檢測效果圖像。

圖8 輪廓檢測效果圖像
4)車牌定位。根據車牌的面積、長寬比等特征,識別出車牌位置,并進行切割。車牌定位結果圖像見圖9。

圖9 車牌定位結果圖像
字符分割[7]是將圖片圖像中的每一個字符分割出來,以便于后期進行字符的識別。在車牌字符分割部分,本文主要運用邊緣檢測方法,首先使用中值濾波方法對圖像進行降噪;其次對圖像進行二值化處理,形成非黑即白的圖像,減小數據量;最后采用輪廓檢測方法對字符進行分割,并且存儲到同一文件夾下。圖10 為中值濾波后的二值化圖像;圖11 為邊緣檢測結果圖像;圖12 為字符分割結果圖像。

圖10 中值濾波后的二值化圖像

圖11 邊緣檢測結果圖像

圖12 字符分割結果圖像
卷積層是卷積神經網絡[8]的核心組件之一。它通過濾波器在輸入圖像上進行卷積操作,提取圖像中的特征。卷積操作可以捕捉到局部特征和空間關系,實現特征的平移不變性。卷積層通常包括多個濾波器,每個濾波器可以學習不同的特征。在卷積過程中,通過設置步長(stride)和填充(padding)來控制輸出特征圖的大小。如果輸入的圖像的大小為X1×Y1×Z1,則輸出的特征圖的大小為X2×Y2×Z2.,特征圖的大小可以用公式表示為
式中:F 為卷積核的大??;P 為填充值;S 為步長;numbers 為卷積核的數量。假設輸入為3×3 的圖像,用2×2 的卷積核進行卷積運算,步長為1,最終生成2×2 的特征圖。圖13 為卷積過程示意圖。

圖13 卷積過程示意圖
池化層[9]用于減小特征圖的尺寸,并提取更加顯著的特征。常用的池化操作包括最大池化和平均池化,它們分別從局部區域中選擇最大值或平均值作為輸出。池化層可以降低特征圖的維度,減少計算量,并且增強模型的魯棒性。圖14 池化過程示意圖。

圖14 池化過程示意圖
激活函數(activation functions)是卷積神經網絡中不可缺少的組成部分,增強了神經網絡的非線性表達能力,通常使用非線性方式激活特征提取單元,傳遞提取到的特征信息,提升了卷積神經網絡的泛化學習能力。常用的激活函數有RELU 函數、Sigmoid 函數、Tanh 函數,其計算公式分別為
全連接層通常位于卷積神經網絡的末尾,用于將卷積層和池化層的輸出連接到最終的輸出層。全連接層的神經元之間的連接是密集連接的,每個神經元都與前一層的所有神經元相連。全連接層可以學習更高級別的特征表示,并進行最終的分類或回歸。圖15 為全連接層示意圖。

圖15 全連接層示意圖
本文車牌數據集總共16 149 張圖片,數據集中包含31 個漢字(內地各省、自治區、直轄市簡稱),以及24 個英文字母(其中不包含O 和I)和9 個數字。本文首先采用TensorFlow 庫對漢字、數字和字母搭建卷積神經網絡,然后進行訓練,最后利用神經網絡模型進行車牌識別。圖16 為卷積神經網絡結構圖。

圖16 卷積神經網絡結構圖
輸入圖像尺寸為20×20 像素,第一層卷積設定32 個大小為3×3 的卷積核;第二層為最大池化層,減小特征圖的尺寸;第三層卷積設定32 個大小為3×3 的卷積核;第四層采用最大池化操作。全連接層用Softmax 激活函數實現特征分類。
數據集中包含2 973 張漢字圖片,13 176 張字母和數字圖片,訓練集選取其中80%的數據,測試集選取其中20%的數據,最終漢字識別的準確率為91.4%,數字和字母識別的準確率為95.5%。圖17為車牌識別結果。

圖17 車牌識別結果
本文充分利用了OpenCV 模塊實現對汽車圖像進行預處理,采用形態學運算、邊緣檢測方法實現對車牌定位以及字符分割,搭建卷積神經網絡模型分別對漢字、數字和字母進行訓練和評估,經檢驗模型識別準確率較高。在整個車牌識別流程中發現,形態學運算參數設置比較關鍵,會嚴重影響到車牌定位以及字符分割的效果。此外,本文分別對漢字、數字和字母搭建了神經網絡模型,測試結果表明漢字的識別率為91.4%,數字和字母的識別率為95.5%,顯示漢字的識別率比較低。在后期的研究中會對神經網絡結構進行調整,并進一步優化。