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