陳子言,丁楊軍
(1 武漢東湖學(xué)院 湖北 武漢 430212)
(2 南京審計(jì)大學(xué) 江蘇 南京 211815)
車牌識別在車輛定位、高速公路自動化監(jiān)管以及公路收費(fèi)站等方面廣泛應(yīng)用,提高了智慧交通的管理效率。隨著經(jīng)濟(jì)發(fā)展和人民生活水平提高,越來越多的人使用汽車作為出行工具,這使得汽車數(shù)量迅速增加,從而給交通管理帶來了巨大壓力。為了規(guī)范車輛行駛以及合理引導(dǎo)車流,對車輛精準(zhǔn)識別尤為重要。車牌號作為汽車的“身份證號”,對于車輛的識別主要是對車牌號的識別,因此采用何種技術(shù)識別車輛已成為相關(guān)部門和企業(yè)所關(guān)注的熱點(diǎn)問題。本文分析了當(dāng)前車牌識別的主流方法,在此基礎(chǔ)上將車牌識別處理過程分為車牌圖像預(yù)處理、車牌定位、字符分割和字符識別4個步驟,并搭建了車牌識別系統(tǒng)。
車輛圖片樣本一般是包含大量顏色數(shù)據(jù)的彩色圖像,雖然在人眼看來色彩豐富,但在機(jī)器處理時由于含有多余顏色數(shù)據(jù)而降低處理效率。在圖像中,每個像素點(diǎn)RGB值可能都不同,當(dāng)R=G=B=Gray時,Gray的值為灰度值,灰度化就是把圖像中的所有像素值的RGB值統(tǒng)一轉(zhuǎn)化為灰度值[1]。將彩色圖像轉(zhuǎn)換為灰度圖主要有三種計(jì)算方法,分別是平均值法、加權(quán)平均值法和最大值法[2]。采用加權(quán)平均值法將圖像灰度化,圖像灰度化效果對比圖如圖1所示。
圖1 車輛灰度化對比效果圖
由于圖像經(jīng)過灰度化處理而失去顏色,圖像中的車牌區(qū)域在圖像中不突出,若采集的圖片是昏暗或明亮環(huán)境,會影響后續(xù)的車牌定位效果,故要使用圖像增強(qiáng)技術(shù),提高車牌區(qū)域的對比度,減弱干擾信息。為了盡可能地降低噪聲,要對圖像做平滑處理。一般來說,車牌內(nèi)容大部分都在圖像的高頻區(qū)域,而此區(qū)域也存在一些高頻干擾,且噪聲的頻率與特征信息的頻率不同,使用低通濾波器將車牌內(nèi)容與其他噪聲頻率區(qū)分開,減少車牌區(qū)域內(nèi)非車牌信息的噪聲[3-4]。圖像增強(qiáng)與去噪后的效果圖如圖2所示。
圖2 去噪后的增強(qiáng)圖
邊緣通常有兩種類型,一種是指在邊緣兩側(cè)灰度值急劇變化的階躍狀邊緣,另外一種是屋頂狀邊緣,邊緣處于灰度值從小到大再到小的變化轉(zhuǎn)折點(diǎn)處[5]。圖片邊緣是圖像最基本的特征,也是圖像中灰度值變化較大的區(qū)域。經(jīng)典的邊緣檢測算法的研究過程是以某個像素為原點(diǎn),和周圍的像素構(gòu)成邊緣檢測算子,計(jì)算其微分值的高低來表明該區(qū)域灰度的強(qiáng)弱[6]。邊緣檢測的目的是對圖像中亮度變化明顯的像素點(diǎn)進(jìn)行標(biāo)注,而車牌底色和車牌字符有著明顯的灰度變化,所以通過邊緣檢測的方法將車牌區(qū)域從整幅圖中凸顯出來。
圖像二值化是將背景區(qū)域與前景分離的過程[7]。首先將像素點(diǎn)的灰度值設(shè)為0或255,根據(jù)設(shè)定的圖像閾值進(jìn)行分割,確定當(dāng)前像素是背景區(qū)域還是前景區(qū)域,從而將圖像呈現(xiàn)出黑白效果,實(shí)現(xiàn)將整個圖像像素點(diǎn)的灰度值轉(zhuǎn)化為只有0或255兩種級別的二值化圖像。經(jīng)過二值化后,圖像既保留了車牌區(qū)域的特征,又減少了背景干擾,從而突出目標(biāo)位置的輪廓。圖像二值化效果如圖3所示。
圖3 二值化圖像
對車輛圖像進(jìn)行二值化處理后,用白點(diǎn)將特征區(qū)域及其內(nèi)容清晰地描繪出來,但是這些線條還是不夠細(xì),不容易用這些特征來定位車牌位置,下一步的處理要將二值圖像生成邊緣點(diǎn)圖,這樣可以將圖像的特征區(qū)域的線條變成由一個個白點(diǎn)組成的邊緣點(diǎn)圖,之后可以利用生成的邊緣點(diǎn)圖定位車牌區(qū)域[8]。I是行數(shù),設(shè)初始時I=1,求邊緣點(diǎn)的算法描述如下:
(1)檢查I行的每一個像素點(diǎn),若像素點(diǎn)的像素值為0(黑色),則繼續(xù)向后檢查;若像素點(diǎn)的像素值為255(白色),則檢查該點(diǎn)左邊相鄰點(diǎn)的像素值:若值為0,不做處理;若值為255,則將當(dāng)前點(diǎn)像素值設(shè)為0。繼續(xù)向后掃描,直到掃描完該行最后一個像素點(diǎn)。
(2)若I為最后一行,結(jié)束掃描;否則I++,繼續(xù)執(zhí)行第一步。
執(zhí)行完以上算法,能夠得出邊緣點(diǎn)圖。生成的邊緣點(diǎn)圖如圖4所示。
圖4 邊緣點(diǎn)圖
根據(jù)邊緣點(diǎn)圖定位車牌,車牌定位的過程如下:
(1)尋找車牌的可能范圍。掃描整個圖片,從第一行開始,搜索可能邊點(diǎn)數(shù),以確定車牌可能的范圍,首先確定閾值N,若存在連續(xù)N行均有一個大于等于車牌長度的線段,則找到一個可能的車牌區(qū)域,記錄該區(qū)域的起始行數(shù)和尾行數(shù);然后在此范圍做到掃描,再確定該車牌候選區(qū)域的起始列坐標(biāo)和結(jié)尾列坐標(biāo),這樣就確定了一個可能的車牌區(qū)域[9]。
(2)繼續(xù)掃描圖片,尋找其他的可能區(qū)域,直至掃描整個圖片。
(3)找到真正的車牌位置。經(jīng)過以上兩個步驟后,會發(fā)現(xiàn)一組可能是車牌的范圍,這就需要排除干擾范圍區(qū)域,找出唯一的最可能的車牌位置。國內(nèi)的車牌的長寬比例是固定的,可以根據(jù)這個特點(diǎn)相應(yīng)地找出實(shí)際的車牌范圍。
經(jīng)過以上步驟,從而發(fā)現(xiàn)車牌區(qū)域位置。
當(dāng)存在定位車牌圖像傾斜現(xiàn)象的時候,調(diào)整車牌的傾斜度至關(guān)重要,讓車牌內(nèi)的字符處于同一水平位置,這樣可以保證后面字符分割的完整性。算法思想是基于左側(cè)和右側(cè)的白色像素點(diǎn)的平均高度,若字符兩側(cè)的像素點(diǎn)的平均高度值差值過大,則該車牌角度傾斜,需要調(diào)整車牌的角度。調(diào)整過程主要是通過計(jì)算圖像左右兩半邊的像素值為255的像素點(diǎn)的平均高度,再找到斜率,依據(jù)斜率重建圖像。組建思想是:若新圖像的像素被映射到原圖像時,沒有在原圖像范圍內(nèi),則把新圖像像素置為0[10]。
基于垂直投影的車牌字符分割方法算法思想是:根據(jù)在此前處理的二值化圖像,從左到右依次檢測每一個坐標(biāo)投影數(shù)值,將第一個投影數(shù)值不為0所屬的像素點(diǎn)作為第一個投影區(qū)域的左邊界;然后向右檢測,將檢測到的第一個投影數(shù)值為0所屬的像素點(diǎn)作為第一個投影區(qū)域的右邊界[11]。根據(jù)此算法再找到其余六個投影區(qū)域的左右邊界,然后根據(jù)這些區(qū)域來對整個車牌字符進(jìn)行分割,最后得到一個個的單獨(dú)的字符。應(yīng)用投影法進(jìn)行字符分割的結(jié)果如圖5所示。
圖5 車牌字符分割結(jié)果
通過pycharm平臺,選取不同拍攝場景拍攝的車牌樣本圖片400張,其中正確定位車牌位置的圖片有390張,車牌定位正確率為97.5%。對正確定位的390個車牌進(jìn)行字符識別,識別效果如圖6所示,識別結(jié)果統(tǒng)計(jì)如表1所示。
圖6 車牌識別結(jié)果頁面
表1 車牌識別結(jié)果統(tǒng)計(jì)表
由表1可知,待檢測字符共2 730個,正確識別的字符個數(shù)為2 593個,系統(tǒng)對字符的識別正確率為94.98%,其中漢字字符識別正確率為93.85%,英文字符識別正確率為94.43%,數(shù)字字符識別正確率為96.10%,由于漢字的復(fù)雜性,正確識別率低于英文和數(shù)字字符。通過對識別不正確的車牌進(jìn)行分析,發(fā)現(xiàn)主要是兩種原因所導(dǎo)致,一是由于圖片質(zhì)量低,二是車牌存在污染導(dǎo)致字符分割和識別受影響。
本文設(shè)計(jì)并實(shí)現(xiàn)了車牌識別系統(tǒng),解決了在復(fù)雜環(huán)境下無法準(zhǔn)確識別車牌字符的弊端。實(shí)驗(yàn)表明,車牌識別系統(tǒng)可有效應(yīng)用于不同光照條件及不同顏色車牌等復(fù)雜場景,并能夠?qū)嚺莆恢脺?zhǔn)確定位以及對畸變車牌矯正,提高了車牌字符識別準(zhǔn)確率,具有較大實(shí)用價值。但由于本人學(xué)識受限,對于車牌識別算法的研究還并未完善,在之后研究中需要進(jìn)一步優(yōu)化算法,提高車牌字符識別率,提升系統(tǒng)的整體性能。