楊新年,蘇 暢,高冠福,魏喜雯
(黑龍江工業(yè)學(xué)院 電氣與信息工程學(xué)院,黑龍江 雞西 158100)
當(dāng)前,智能交通系統(tǒng)已被廣泛應(yīng)用于人們的生活中。其中,車牌檢測(cè)識(shí)別系統(tǒng)作為智能交通系統(tǒng)的組成部分,在高速公路、小區(qū)入口和停車場(chǎng)等場(chǎng)所被頻繁使用[1-2]。因此,設(shè)計(jì)具有強(qiáng)魯棒性,可適應(yīng)多種環(huán)境的車牌檢測(cè)識(shí)別系統(tǒng)具有重要意義。目前,車牌檢測(cè)識(shí)別系統(tǒng)的研究方法多種多樣,但大致流程基本一致。車牌檢測(cè)識(shí)別系統(tǒng)通常由圖像輸入、車牌定位、字符分割、字符識(shí)別和字符輸出5部分組成,主要流程如圖1所示。本文根據(jù)該流程設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)能夠?qū)?fù)雜環(huán)境下車牌進(jìn)行檢測(cè)識(shí)別的系統(tǒng),并取得了較好的效果。
圖1 車牌檢測(cè)識(shí)別流程
在將圖像輸入到車牌檢測(cè)識(shí)別系統(tǒng)之后,首先確定圖像中車牌的位置,為之后的車牌字符分割和識(shí)別提供基礎(chǔ)。目前,車牌定位一般選用邊緣特征定位車牌的算法、利用匹配模板定位車牌位置的算法和利用顏色特征定位車牌的算法等[3-4]。每種算法都存在優(yōu)缺點(diǎn),本文綜合考慮后,選擇經(jīng)過邊緣檢測(cè)后進(jìn)行形態(tài)學(xué)處理以通過車牌形狀進(jìn)行定位的方法,若該方法仍無法精準(zhǔn)定位,則進(jìn)一步通過車牌的顏色特征進(jìn)行定位,以提高車牌定位的準(zhǔn)確率。
在進(jìn)行邊緣檢測(cè)之前首先進(jìn)行圖像預(yù)處理,此舉使得后續(xù)步驟在取得較好處理效果的同時(shí),能夠加快處理速度。圖像預(yù)處理包括圖像去噪和灰度化兩部分。
圖像去噪:因原始圖像在拍攝過程中受多種因素的影響會(huì)產(chǎn)生噪聲,所以需通過濾波對(duì)原始圖像進(jìn)行降噪處理。本文選用高斯濾波的方法對(duì)圖像進(jìn)行處理。高斯濾波是一種線性平滑濾波方法,可使用該方法對(duì)整幅圖像進(jìn)行加權(quán)平均。
灰度化:因原始圖像是彩色圖像,其所占用空間較灰度圖像大,為了提高系統(tǒng)的運(yùn)行速度,需要將原始圖像轉(zhuǎn)化為灰度圖像,以提高后續(xù)車牌定位準(zhǔn)確率和系統(tǒng)識(shí)別效率。
對(duì)圖像預(yù)處理之后,因車牌與周圍環(huán)境有明顯的區(qū)分度,所以本文采用Canny算子對(duì)圖像進(jìn)行邊緣檢測(cè),以確定車牌可能存在的位置。Canny算子是一種多級(jí)檢測(cè)算法,適用于不同的場(chǎng)合,其參數(shù)可根據(jù)不同的要求進(jìn)行調(diào)整,從而達(dá)到較好的邊緣檢測(cè)效果。
在進(jìn)行邊緣檢測(cè)之后,提取的邊緣附近仍存在干擾點(diǎn)和不閉合的邊緣區(qū)域,通過形態(tài)學(xué)的膨脹、腐蝕、開運(yùn)算和閉運(yùn)算處理,可消除邊緣區(qū)域的大部分噪聲點(diǎn),同時(shí)將車牌的邊緣區(qū)域閉合,以提高車牌定位的準(zhǔn)確率。
經(jīng)邊緣檢測(cè)和形態(tài)學(xué)處理之后,基本可提取出車牌區(qū)域的大致輪廓,但仍然可能存在孤立的噪聲點(diǎn),影響車牌輪廓的精準(zhǔn)確定,因此可對(duì)圖像進(jìn)行平滑處理,以消除孤立的噪聲點(diǎn)。
對(duì)圖像進(jìn)行平滑處理之后會(huì)存在多個(gè)閉合區(qū)域,需要?jiǎng)h除其中的非車牌區(qū)域。具體方法:獲取這些位置的左上點(diǎn)坐標(biāo)和右下點(diǎn)坐標(biāo),大致計(jì)算該區(qū)域的面積,將該區(qū)域面積與設(shè)定面積值進(jìn)行比較,排除其中的不可能因素,以確定車牌圖像的位置。
在移除小對(duì)象之后,便可大致確定車牌的位置,但若仍存在定位不準(zhǔn)的情況,則再次根據(jù)車牌的顏色值排除[5]。由于我國(guó)的車牌顏色是固定的,因此可根據(jù)設(shè)定的顏色閾值進(jìn)行顏色定位,以精準(zhǔn)定位車牌位置。
因拍攝角度問題,所得到的車牌有可能是傾斜的,不利于后續(xù)字符提取、分割和識(shí)別[6]。利用仿射變換法可將該部分圖像進(jìn)行傾斜矯正,以保證二維圖像的平行性及平直性。
車牌由7個(gè)字符構(gòu)成,包括1個(gè)漢字,1個(gè)英文字母以及數(shù)字或者英文字母(共計(jì)5個(gè))。為識(shí)別這些字符,首先需要對(duì)其分割。常用于字符分割的方法包括基于圖像直方圖的垂直投影法、基于車牌字符固定間隔的車牌尺寸法以及基于輪廓的車牌字符輪廓檢測(cè)法等[7-8]。本文根據(jù)國(guó)家標(biāo)準(zhǔn)設(shè)置字符的間隔范圍,然后通過垂直、水平投影相結(jié)合的方法進(jìn)行字符分割。具體步驟如下:
(1)對(duì)車牌圖像進(jìn)行二值化處理;
(2)對(duì)圖像進(jìn)行垂直投影,獲取對(duì)應(yīng)數(shù)值;
(3)比對(duì)數(shù)值,獲取第一個(gè)局部最小值的位置,該位置為車牌在水平方向的邊界;
(4)從左至右重復(fù)上述步驟,找到單個(gè)字符的水平邊界;
(5)在水平方向上通過重復(fù)步驟(2)和步驟(3)來確定垂直方向的邊界,直至完成字符分割。
字符分割效果如圖2所示。
圖2 字符分割效果
為減少計(jì)算量,本文采用一對(duì)多分類器。根據(jù)車牌的實(shí)際情況,排在首位的漢字部分使用31個(gè)分類器進(jìn)行識(shí)別,排在后面的數(shù)字和英文字符使用34個(gè)分類器進(jìn)行識(shí)別。訓(xùn)練之前,首先提取每個(gè)字符的特征并將之保存在.dat文件中,方便后續(xù)程序讀取。然后對(duì)上述分割好的字符圖像提取對(duì)應(yīng)的特征參數(shù)并代入分類函數(shù),由此計(jì)算、比較得出相應(yīng)的預(yù)測(cè)值。
本文基于Python+OpenCV實(shí)現(xiàn)車牌檢測(cè)識(shí)別系統(tǒng),具體結(jié)果如圖3所示。圖3(a)為通過車牌形狀進(jìn)行車牌定位識(shí)別的結(jié)果,圖3(b)為通過顏色進(jìn)行車牌定位識(shí)別的結(jié)果。優(yōu)先進(jìn)行形狀定位,若經(jīng)過形狀定位后仍無法排除噪聲影響,則使用顏色定位,定位后進(jìn)行識(shí)別。
圖3 系統(tǒng)識(shí)別效果
為了能夠解決復(fù)雜環(huán)境下的車牌檢測(cè)和識(shí)別問題,文中設(shè)計(jì)了一個(gè)具有較強(qiáng)魯棒性的車牌檢測(cè)識(shí)別系統(tǒng),并基于Python+OpenCV實(shí)現(xiàn)。其中車牌定位部分通過車牌顏色和車牌形狀相結(jié)合的方法精準(zhǔn)定位車牌;字符分割通過垂直、水平投影相結(jié)合的方法實(shí)現(xiàn);字符識(shí)別使用SVM方法完成,在識(shí)別后輸出相關(guān)信息。經(jīng)驗(yàn)證,系統(tǒng)識(shí)別取得了較好的效果。