李震,唐莉萍
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
摘要:文章給出了自行設(shè)計(jì)的在低功耗嵌入式平臺(tái)上實(shí)現(xiàn)車牌定位檢測(cè)的算法。首先通過Sobel水平算子對(duì)車牌圖像進(jìn)行垂直邊緣檢測(cè),運(yùn)用形態(tài)學(xué)方法對(duì)邊緣圖像進(jìn)行閉運(yùn)算得到連通圖塊。然后根據(jù)連通區(qū)域輪廓確定最小外接矩形,解決車牌位置斷節(jié)問題,得到車牌候選區(qū)域。最后根據(jù)車牌特征對(duì)提取出的車牌候選區(qū)域進(jìn)行篩選實(shí)現(xiàn)準(zhǔn)確的車牌定位。實(shí)驗(yàn)結(jié)果證明了該算法的有效性,而且在復(fù)雜背景下也具有較好的魯棒性和自適應(yīng)性。
關(guān)鍵詞:車牌定位;Sobel算子;形態(tài)學(xué);閉運(yùn)算
中圖分類號(hào):TP391.41文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.03.014
引用格式:李震,唐莉萍.基于低功耗嵌入式系統(tǒng)的車牌定位算法[J].微型機(jī)與應(yīng)用,2017,36(3):45-48,58.
0引言
在大型停車場(chǎng)的出入口和停車智能收費(fèi)場(chǎng)所都裝有攝像頭,對(duì)進(jìn)出場(chǎng)所的車輛進(jìn)行圖像拍攝,以獲取車輛的車牌號(hào)。對(duì)含有車輛的圖像進(jìn)行車牌識(shí)別是車輛收費(fèi)管理系統(tǒng)的一個(gè)重要環(huán)節(jié)。在車牌識(shí)別中,要實(shí)現(xiàn)字符的正確分割和識(shí)別,首先需要完成對(duì)車輛車牌的精確定位。車牌定位的精度直接影響監(jiān)控系統(tǒng)的性能[1]。多數(shù)收費(fèi)管理系統(tǒng)采用的方案是攝像頭加PC,由攝像頭采集圖像,由PC通過圖像處理算法得到車牌號(hào)。這種方法不易實(shí)現(xiàn)活動(dòng)場(chǎng)所的車牌識(shí)別。因此基于嵌入式平臺(tái)的移動(dòng)車牌識(shí)別成為一個(gè)新的研究熱點(diǎn)。目前主流的嵌入式平臺(tái)有三種:ARM平臺(tái)、DSP平臺(tái)和FPGA平臺(tái)。
基于ARM平臺(tái)主要使用ARM9、ARM11或者CortexA8處理器,例如文獻(xiàn)[2]用三星的ARM9芯片讀取CMOS攝像頭采集的車輛圖像進(jìn)行車牌區(qū)域判斷;文獻(xiàn)[3]將CortexA8芯片運(yùn)行于Linux操作系統(tǒng),并借助于OpenCV圖形圖像處理庫中成熟的函數(shù)實(shí)現(xiàn)車牌的定位;張海霞選擇ARM11開發(fā)板(S3C6410為微處理器核心)作為嵌入式車牌識(shí)別系統(tǒng)的核心硬件電路[4]?;贒SP平臺(tái)的主流處理器是德州儀器TMS系列,例如左宗鵬等人采用TMS320DM642讀取SAA7113采集的圖像數(shù)據(jù),通過改進(jìn)的BP神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn)車牌定位和識(shí)別[5]?;贔PGA平臺(tái)的內(nèi)核是定制的軟核處理器,如鄭存芳等人用FPGA通過定制的Nios Ⅱ軟核調(diào)用接口讀取CCD攝像頭的圖像數(shù)據(jù),運(yùn)用邊緣檢測(cè)方法進(jìn)行車牌定位[6];鄭存芳對(duì)比基于PC或DSP的車牌識(shí)別系統(tǒng),提出了基于FPGA的車牌識(shí)別系統(tǒng)研究與實(shí)現(xiàn)方案[7]。還有研究人員將FPGA和DSP結(jié)合在一起實(shí)現(xiàn)車牌識(shí)別[8]。
以上文獻(xiàn)給出的嵌入式平臺(tái),硬件平臺(tái)采用的處理器大多為中高端產(chǎn)品,產(chǎn)品的投入成本較高。在軟件方面有的需要運(yùn)行在特定的操作系統(tǒng),有些需要借助特殊的圖形圖像處理軟件,將會(huì)引起處理器內(nèi)存開銷過大,影響系統(tǒng)的運(yùn)行速度。本文研究將低端、低功耗嵌入式處理器引入移動(dòng)車牌識(shí)別系統(tǒng),無需操作系統(tǒng),通過對(duì)相關(guān)圖像處理算法進(jìn)行改進(jìn),直接在硬件電路中完成車牌定位,為后續(xù)字符的正確分割和識(shí)別提供保障。
1系統(tǒng)組成
本系統(tǒng)采用Aptina公司的MT9P031 CMOS傳感器作為圖像采集器件,這種傳感器具有高分辨率、高幀率、與處理器接口簡(jiǎn)單的特點(diǎn)。圖像有效像素為500萬,在全分辨率條件下幀率為14幀/s,在640×480像素下的幀率可達(dá)50幀/s,與處理器連接僅需要兩線串行接口。主控處理器選用意法半導(dǎo)體公司的STM32F429ZGT6,其內(nèi)核為CortexM4,最高主頻達(dá)180 MHz,內(nèi)存容量為256 KB,自帶8~14位并行Camera接口,傳輸速率為54 Mb/s。系統(tǒng)要在硬件中直接對(duì)圖像進(jìn)行各種處理,需要足夠的內(nèi)存交換數(shù)據(jù),因此增加64 KB外部存儲(chǔ)器件SDRAM。為了能保存歷史數(shù)據(jù),硬件部分預(yù)留了SD卡接口。根據(jù)移動(dòng)車牌識(shí)別的特點(diǎn),系統(tǒng)與上位機(jī)采用WiFi通信模式。系統(tǒng)采用鋰電池供電,當(dāng)檢測(cè)的圖像不變時(shí),系統(tǒng)自動(dòng)進(jìn)入休眠狀態(tài),每200 ms自動(dòng)喚醒一次。若檢測(cè)到圖像有變化時(shí),立即執(zhí)行圖像處理算法,這樣可以有效降低移動(dòng)車牌識(shí)別的系統(tǒng)功耗。硬件系統(tǒng)框圖如圖1所示。
2定位算法
車牌定位是從一張拍攝到的圖像中定位出車牌的位置,并提取出車牌圖像。由于CortexM4的硬件資源有限,要求算法的復(fù)雜度不能太高。為了保證定位算法的實(shí)時(shí)性,需要對(duì)CMOS傳感器采集到的圖像進(jìn)行截取,在含有車輛運(yùn)動(dòng)的全景圖像中,截取640×480像素的車輛目標(biāo)圖像作為目標(biāo)車輛的最佳區(qū)域,再在該區(qū)域進(jìn)行車牌定位。定位算法包括以下幾個(gè)步驟:
(1)圖像二值化處理;
(2)二值化圖像快速邊緣檢測(cè);
(3)確定車牌候選區(qū)域;
(4)候選車牌區(qū)的外接矩形劃定;
(5)對(duì)候選車牌區(qū)篩選確定最終車牌區(qū)域。
2.1快速邊緣檢測(cè)的實(shí)現(xiàn)
我國車牌的顏色特征主要分為4類:藍(lán)底白字(藍(lán)牌),黃底黑字(黃牌),白底黑字(白牌),黑底白字(黑牌)。車牌顏色雖然不一,但是它們具有共同的特點(diǎn):(1)都有矩形線段圍成的邊框;(2)邊框內(nèi)的字符呈水平排列,并且分布間隔較均勻;(3)均表現(xiàn)為豐富的紋理特征,很容易捕捉到邊緣信息;(4)車牌具有統(tǒng)一的標(biāo)準(zhǔn)尺寸。針對(duì)以上特點(diǎn),可以運(yùn)用邊緣檢測(cè)算法對(duì)圖像進(jìn)行初步處理。
圖像處理算法中常用的邊緣檢測(cè)算子包括Laplacian算子、Canny算子和Sobel算子。Laplacian算子是一種求圖像的二階導(dǎo)數(shù)算子,它將在圖像邊緣處產(chǎn)生一個(gè)陡峭的交叉。在通常情況下,Laplacian算子也能檢測(cè)出邊緣,但是其檢測(cè)方向不分水平和垂直,算法的復(fù)雜度高。Canny邊緣檢測(cè)算子具有很好的邊緣檢測(cè)性能,在圖像處理中得到了廣泛的應(yīng)用。但是Canny邊緣檢測(cè)需要完成對(duì)圖像的高斯濾波去噪,從原始灰度圖中求出水平、垂直兩個(gè)方向的梯度圖,以及綜合梯度圖,再對(duì)3種梯度圖進(jìn)行非極大抑制,進(jìn)行邊緣連接等步驟,在PC中都非常難以保證算法的實(shí)時(shí)性。Sobel算子原理是對(duì)圖像求一階的水平與垂直方向?qū)?shù),根據(jù)導(dǎo)數(shù)值的大小判斷是否是邊緣。Sobel算子分為垂直邊緣算子和水平邊緣算子,其卷積模版為:
3種邊緣檢測(cè)算法得到的結(jié)果如圖2所示。對(duì)比邊緣檢測(cè)結(jié)果,Canny檢測(cè)獲得的邊緣最清晰,Sobel邊緣檢測(cè)的清晰度結(jié)果介于Canny檢測(cè)和Laplacian之間。雖然Canny檢測(cè)獲得的邊緣最清晰,從車牌定位的目的考慮,邊緣檢測(cè)的最終目的并不是要刻畫出圖像清晰的邊緣,而只是要確定車牌的一個(gè)具體區(qū)域。并且Canny邊緣檢測(cè)算法的復(fù)雜度遠(yuǎn)高于Sobel算子,不僅無法滿足處理器實(shí)時(shí)處理的要求,還會(huì)消耗處理器的大量?jī)?nèi)存,在硬件電路中無法實(shí)現(xiàn),因此邊緣檢測(cè)算法選用Sobel算子。
由于嵌入式系統(tǒng)要求執(zhí)行的圖像處理算法必須運(yùn)算量小,占用RAM少,所以采用以塊代點(diǎn)的方法,將圖像分成大小為64×48的100個(gè)小塊,因車輛是左右對(duì)稱結(jié)構(gòu),按照從圖像底部往上尋找的方式找對(duì)稱塊,這是因?yàn)榇蠖鄶?shù)車牌的位置離圖像的底部較近。經(jīng)實(shí)驗(yàn)數(shù)據(jù)測(cè)定和分析,當(dāng)找到15對(duì)對(duì)稱的圖像小塊后,車牌就能快速鎖定在這30個(gè)區(qū)域塊中。然后對(duì)找到的30個(gè)區(qū)域塊進(jìn)行Sobel算子邊緣檢測(cè)。
由于汽車的車牌邊框是有規(guī)則的邊緣,并且車牌的字符是有規(guī)律的排列,因此相對(duì)于水平邊緣車牌的垂直邊緣更為豐富。而汽車的車身卻有豐富的水平邊緣,垂直邊緣不明顯。根據(jù)車牌和車輛邊緣特征的不同,本文僅使用Sobel算子對(duì)找到的30個(gè)區(qū)域塊進(jìn)行水平方向求導(dǎo),這樣可以大大減小處理器的內(nèi)存開銷,降低算法的復(fù)雜度,提高處理器的運(yùn)算速度,在硬件電路上實(shí)現(xiàn)邊緣檢測(cè)。作為對(duì)比,對(duì)圖像進(jìn)行了垂直方向和水平垂直兩個(gè)方向同時(shí)求導(dǎo),結(jié)果如圖3所示。從檢測(cè)結(jié)果可以看到汽車的前端車牌附近有很多的水平邊緣,這是由車頭位置的排氣孔、汽車廠家標(biāo)志等產(chǎn)生的。這些多余的水平邊緣很容易干擾車牌定位的結(jié)果,導(dǎo)致最終搜索不到真正的車牌位置。因此本文采用Sobel水平算子實(shí)現(xiàn)快速邊緣檢測(cè)?!?/p>
2.2確定車牌候選區(qū)域
在提取車牌圖像中垂直方向的邊緣后,需要得到的二值邊緣圖像進(jìn)行數(shù)學(xué)形態(tài)學(xué)運(yùn)算,將車牌區(qū)域連通為一個(gè)閉合的區(qū)域。圖像處理中常用的數(shù)學(xué)形態(tài)學(xué)運(yùn)算分別為開運(yùn)算和閉運(yùn)算。開運(yùn)算是對(duì)圖像先腐蝕再膨脹,能夠使得圖像的輪廓變得更加光滑,并且可以斷開狹窄的間斷以及消除細(xì)小的突出。閉運(yùn)算是對(duì)圖像先膨脹再腐蝕,與開運(yùn)算相反的是,閉運(yùn)算通常能夠彌補(bǔ)狹窄的間斷以及細(xì)長(zhǎng)的鴻溝,并且能夠消除細(xì)小的空洞,填補(bǔ)輪廓線中的斷裂。針對(duì)2.1節(jié)Sobel水平求導(dǎo)得到的邊緣圖像進(jìn)行開、閉兩種運(yùn)算操作,結(jié)果如圖4所示。
對(duì)比圖4可以發(fā)現(xiàn)由于腐蝕的效果太強(qiáng),導(dǎo)致開運(yùn)算膨脹沒有效果,圖像中幾乎沒有有用信息。而閉運(yùn)算則將圖像中車牌區(qū)域附近的一些邊緣連成圖塊,包括車牌中的字符也被連成圖塊,這些連接成塊的區(qū)域形狀不一,組成了車牌的候選區(qū)域,如圖4(a)所示。
由圖4結(jié)果對(duì)比可知,對(duì)得到的二值邊緣圖像只需要進(jìn)行閉運(yùn)算,就可以完成對(duì)候選區(qū)域的確定。這樣可以進(jìn)一步減少運(yùn)算量,提高車牌定位的實(shí)時(shí)性。
2.3字符外接矩形斷節(jié)處理
我國標(biāo)準(zhǔn)車輛的車牌是由一個(gè)省份漢字、一個(gè)城市字母和5個(gè)字母或阿拉伯?dāng)?shù)字組成的字符序列。每個(gè)字符的寬度為45 mm,高度為90 mm,間隔符的寬度為10 mm,除了第二個(gè)和第三個(gè)字符之間的間距為 34 mm 外,字符之間的間隔寬度為12 mm,如圖5(b)車牌滬F C0439。
圖5(b)中字符F和字符C的距離大于其他相鄰字符的距離。這個(gè)距離越大,字符區(qū)域輪廓就越大,需要的字符外接矩形也就越大。當(dāng)字符外接矩形設(shè)置較小時(shí),導(dǎo)致滬F和C0439分隔開,這樣就只能選中距離較近的字符,如圖5(b)。由于車牌中間的字符斷開,必將影響車牌的準(zhǔn)確定位。經(jīng)過反復(fù)實(shí)驗(yàn),在保證相鄰字符距離最大時(shí),車牌字符之間不發(fā)生斷節(jié)現(xiàn)象,取字符外接矩形的寬度為29個(gè)像素點(diǎn),高度為9個(gè)像素點(diǎn)。
3車牌定位區(qū)篩選
經(jīng)過以上步驟處理后的圖像,能夠定位出幾個(gè)車牌的候選區(qū)域。這些候選區(qū)域中,除了真正的車牌以外,其余的是汽車標(biāo)志、車燈或者排氣孔等,如圖6所示。
圖6車牌候選區(qū)為了在候選區(qū)域中正確定位車牌位置,可以根據(jù)我國車牌的特點(diǎn)以及安裝特征進(jìn)行判斷。實(shí)際車牌的長(zhǎng)寬比為定值約為2.85~3.33,圖像中車牌的像素比也應(yīng)該在此范圍;車牌一般安裝在車輛的正中心偏下位置,外接矩形的角度應(yīng)該小于10度;外接矩形的中心應(yīng)該位于圖像中心線附近。根據(jù)這三個(gè)條件可設(shè)置一個(gè)車牌判別公式:
f(A,R,CX)=Σλixi
其中,A為外接矩形的角度,R為車牌的長(zhǎng)寬比,CX為外接矩形的中心橫坐標(biāo),λi為3個(gè)條件的權(quán)重,xi為限制條件。將候選區(qū)外接矩形的3個(gè)參數(shù)代入這個(gè)公式,滿足f(A,R,CX)>0.9時(shí)就能準(zhǔn)確找到車牌的位置。
4實(shí)驗(yàn)結(jié)果
將本文的車牌定位算法在本設(shè)計(jì)中的硬件平臺(tái)上進(jìn)行車牌定位檢測(cè)。使用的嵌入式處理器為STM32F429,芯片運(yùn)行主頻為180 MHz。圖7給出了該算法在實(shí)際應(yīng)用中檢測(cè)的部分圖片的效果。
為了驗(yàn)證算法的效率和準(zhǔn)確率,本文對(duì)不同時(shí)間段的照片進(jìn)行了實(shí)驗(yàn),白天照片測(cè)試了65張,傍晚的照片測(cè)試了60張,夜晚的照片測(cè)試了62張,實(shí)驗(yàn)結(jié)果如表1所示。
從實(shí)驗(yàn)結(jié)果分析,白天定位準(zhǔn)確率較低,原因是陽光的光線照射對(duì)車牌邊緣檢測(cè)存在干擾,而且更多的邊緣信息導(dǎo)致每張照片定位的平均耗時(shí)也相對(duì)較長(zhǎng)。傍晚的陽光沒有那么強(qiáng)烈,攝像頭能夠捕獲到相對(duì)柔和的照片,光線對(duì)邊緣信息的干擾會(huì)相對(duì)減少,因此準(zhǔn)確率上升的同時(shí)耗時(shí)也有所下降。夜晚時(shí),光線明顯不足,導(dǎo)致車牌邊緣信息存在一定的丟失,導(dǎo)致檢測(cè)耗時(shí)下降和準(zhǔn)確率下降。
5結(jié)束語
本文提出一種基于低功耗嵌入式系統(tǒng)的車牌定位檢測(cè)算法。首先使用Sobel水平算子對(duì)車牌圖像進(jìn)行垂直邊緣檢測(cè),運(yùn)用形態(tài)學(xué)方法對(duì)邊緣圖像進(jìn)行閉運(yùn)算得到連通圖塊。再根據(jù)連通區(qū)域輪廓確定最小外接矩形,解決車牌位置斷節(jié)問題,從而得到車牌候選區(qū)域,最后根據(jù)車牌結(jié)構(gòu)特征對(duì)提取出的車牌候選區(qū)域進(jìn)行篩選,得到準(zhǔn)確的車牌定位。實(shí)驗(yàn)結(jié)果表明該方法有效,而且在復(fù)雜背景下也具有較好的魯棒性和自適應(yīng)性。
參考文獻(xiàn)
?。?] ANAGNOSTOPOULOS C N E, ANAGNOSTOPOULOS I E, LOUMOS V, et al. A license platerecognition algorithm for intelligent transportation system applications[J]. IEEE Transactions on Intelligent transportation systems, 2006, 7(3): 377-392.
?。?] 孔繁榮, 丁志剛. 基于嵌入式的車輛牌照識(shí)別系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2015, 32(10): 223-226.
?。?] 張海霞. 基于ARM的車牌識(shí)別系統(tǒng)的研制[J]. 華北電力大學(xué)學(xué)報(bào), 2012, 18(6): 49-51.