胡艷茹
(寧夏師范學(xué)院 物理與電子信息工程學(xué)院,寧夏 固原 756000)
車牌檢測技術(shù)是智慧交通管理系統(tǒng)的重要組成部分,是計算機(jī)視覺處理技術(shù)、圖像增強(qiáng)算法技術(shù)以及數(shù)字通信技術(shù)的融合,它能夠在停車場、高速公路、智能制造方面產(chǎn)生重要影響,是針對車輛實(shí)時檢測的基礎(chǔ)。本文主要介紹車牌圖像獲取、車牌圖像定位的檢測技術(shù)。目前車牌的檢測技術(shù)還存在受復(fù)雜天氣、光照度、車牌磨損、車牌傾斜等因素影響的問題,但總體仍朝著系統(tǒng)化、簡單化的方向發(fā)展[1]。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)是隨著定制式數(shù)字邏輯電路而出現(xiàn)的集成化可編程開發(fā)平臺,它能夠解決數(shù)字電路的功能簡單化問題,又能夠克服原有的數(shù)字邏輯門數(shù)量少、體積大、成本低等缺點(diǎn)。作為搭載算法的硬件實(shí)現(xiàn)平臺,F(xiàn)PGA 的并行處理能力突出,有著流水線般的處理過程,具有體積小、成本低、速度快等明顯優(yōu)勢[2]。
因此,本文設(shè)計一種基于FPGA 的智能車牌檢測系統(tǒng),該系統(tǒng)采用邊緣檢測、傾斜矯正、腐蝕膨脹等算法技術(shù),通過FPGA 集成化開發(fā)環(huán)境平臺進(jìn)行硬件實(shí)現(xiàn)。相比于單片機(jī)技術(shù)、MATLAB 技術(shù)等,該系統(tǒng)能夠顯著提高并行處理效率和檢測速度,在復(fù)雜的環(huán)境中快速實(shí)現(xiàn)車牌的圖像采集以及定位。
OV5640 攝像頭拍攝到的車牌圖像為RGB(紅、綠、藍(lán))彩色圖像格式,該格式占用存儲空間較大,進(jìn)行圖像處理時比較耗時。此外,實(shí)際傳輸?shù)男盘枮閅CbCr(亮度、色度)格式,圖像信息顯示時還需要轉(zhuǎn)化為RGB 三原色格式。因此,需要對車牌圖像信息作進(jìn)一步處理[3]。
RGB 轉(zhuǎn)化為YCbCr 的公式如下:
由于FPGA 直接進(jìn)行浮點(diǎn)數(shù)計算比較麻煩。因此,要先做整數(shù)化處理,公式如下:
為了提高車牌圖像檢測定位的效率,需要將RGB(紅、綠、藍(lán))模式的車牌圖像進(jìn)行灰度化處理。因此,可以將RGB(紅、綠、藍(lán))設(shè)為同一格式,采集到的圖像信息就只有一種格式,不含有其他的顏色格式,就可以轉(zhuǎn)化為灰度化的單色車牌圖像。圖像的灰度化過程是圖像信息的最優(yōu)化處理過程,這樣的處理方式簡單容易,此外,還能夠提高定位檢測的準(zhǔn)確度。灰度值可以用數(shù)字表示,其大小代表著灰色圖像的深淺程度[4]。
本設(shè)計進(jìn)行圖像處理時,采用的是求平均值方式,按照一定的權(quán)數(shù)將R、G、B的值加權(quán),然后求平均值的大小。
式中:r、g、b表示R、G、B的權(quán)值大小。由于對顏色的敏感程度不同,因此配置r>g>b效果更好。
圖像增強(qiáng)是為了凸顯所需圖像的邊緣特征而進(jìn)行的圖像處理方式,能夠去除圖像中的某些雜點(diǎn)部位,使后續(xù)邊緣檢測更加明顯[5]。中值濾波能夠去除各種小噪聲,得到一個噪點(diǎn)較小的車牌圖像,而且程序算法在硬件上實(shí)現(xiàn)簡單,適用于本設(shè)計。因此,本設(shè)計采用的圖像增強(qiáng)方法為中值濾波。中值濾波是利用圖像信息數(shù)據(jù)的緩存,用一個3×3 的窗口數(shù)據(jù)信息進(jìn)行掃描,比較窗口內(nèi)的數(shù)據(jù)灰度值大小,選取中間的那個灰度值作為該3×3 數(shù)據(jù)中心像素的灰度值。
1.4.1 基于灰度特征的邊緣檢測
車牌的定位檢測就是在獲取的整個圖像中,檢測出車牌的位置區(qū)域。由于獲取的圖像中包含了許多干擾識別的因素,因此本設(shè)計對檢測圖像進(jìn)行灰度化處理后,車牌相比于圖像中其他干擾因素容易被識別,車牌位置區(qū)域則能夠得到準(zhǔn)確定位。
灰度化處理后的圖像類似于黑白照片的圖像,是攝像頭采集的彩色圖像去除各種色彩信息后,留下的單一色彩圖像。而采用灰度圖像定位檢測的方式只用到了灰度圖像。因此,將圖像色彩設(shè)為單一色彩可以降低硬件平臺的處理信息量,提高硬件處理速率[6]。
此外,環(huán)境因素、光照條件等也會影響車牌檢測的效率,利用基于灰度特征的圖像檢測方式能夠很好地克服這些因素。由于獲取的圖像中兩種不同區(qū)域的交界處灰度值有明顯的變化趨勢,因此利用該變化趨勢以及邊緣檢測算法能夠找到這些邊緣信息,從而找到車牌位置區(qū)域。
1.4.2 Sobel 算子邊緣檢測
常用的邊緣檢測算子方式包括Roberts 檢測方式、Sobel檢測方式、Prewitt 檢測方式等。本設(shè)計是基于微分算子Sobel 對車牌圖像進(jìn)行處理,與其他邊緣檢測算子檢測方式對比,提取邊緣輪廓信息后,車牌位置的邊緣輪廓會更加清晰、明顯[7]。
Sobel 邊緣輪廓檢測算子擁有2 組卷積因子。計算方法是利用結(jié)果與設(shè)定的對照值對比,若大于對照值,則為邊緣部分;否則就不是邊緣部分。
Sobel 算子水平、垂直方向上的2 組矩陣因子為:
利用矩陣因子分別與圖像X像素的x、y方向做卷積,可以得到該像素x和y兩個方向的梯度值。
然后對Gx與Gy分別平方求和,則該像素的梯度值為:
最后將結(jié)果與設(shè)置的對照值進(jìn)行比較,如果計算的結(jié)果大于設(shè)置的比較值則為邊界,否則不是。由此,就可判斷像素點(diǎn)是不是該車牌圖像的邊界區(qū)域部分。
1.5.1 腐蝕原理
采用腐蝕算法對車牌圖像進(jìn)行腐蝕操作,腐蝕是基本的數(shù)學(xué)形態(tài)學(xué)處理方式。經(jīng)過Sobel 算子檢測后,首先要去除車牌圖像中的噪聲點(diǎn)。利用矩陣中像素點(diǎn)的值進(jìn)行“與”運(yùn)算,之后車牌區(qū)域形成一個連通的區(qū)域。這一步可以去除一些噪聲點(diǎn),圖像中就只剩下車牌和一些細(xì)小的噪聲點(diǎn)。腐蝕的結(jié)果使得車牌原來的圖像縮小一圈[8]。
1.5.2 膨脹原理
膨脹是基本的數(shù)學(xué)形態(tài)學(xué)處理方式,其原理是用結(jié)構(gòu)化的元素模板去處理圖像中的每一個像素點(diǎn),如果結(jié)構(gòu)化元素模板覆蓋的車牌圖像區(qū)域的像素點(diǎn)為黑色,結(jié)構(gòu)化模板覆蓋的對應(yīng)區(qū)域也為黑色,則該像素點(diǎn)就為標(biāo)記為黑色,否則為白色。膨脹結(jié)果使車牌邊界區(qū)域會更加明顯[9]。
投影定位就是對車牌的位置區(qū)域向水平方向和垂直方向進(jìn)行投影,確定車輛牌照的位置。向x方向和y方向投影后會形成陰影上、下和左、右的區(qū)域。投影定位模塊可設(shè)為空閑狀態(tài)、清零狀態(tài)、投影狀態(tài),向x、y方向進(jìn)行投影,則投影處于空閑狀態(tài)。對投影狀態(tài)的車牌區(qū)域位置的寄存器設(shè)置合適的參照值,當(dāng)投影到車牌位置的像素點(diǎn)時,則認(rèn)為是該車牌位置區(qū)域的邊界,然后繼續(xù)尋找下一個位置點(diǎn)。按照上述方法一直投影,直至x、y方向上的整個車牌位置區(qū)域全部被掃描[10]。
車牌檢測系統(tǒng)可分為車牌圖像信息的采集、車牌圖像信息的處理以及車牌圖像信息定位顯示。FPGA 作為整個車牌定位檢測系統(tǒng)的核心,有著較高的圖像信息處理速率。圖1為基于FPGA 的車牌檢測系統(tǒng)的總體結(jié)構(gòu)圖。
圖1 車牌系統(tǒng)的總體框圖
首先OV5640 攝像頭采集車牌圖像,在FPGA 芯片中完成對OV5640 攝像頭的配置,圖像數(shù)據(jù)信息進(jìn)入FPGA 芯片后,經(jīng)過視頻圖像解碼模塊將車牌圖像數(shù)據(jù)轉(zhuǎn)化為數(shù)字信號YUV,SDRAM 控制模塊驅(qū)動SDRAM 以乒乓式操作緩存車牌圖像數(shù)據(jù)。然后進(jìn)行中值濾波處理,去除各種孤立的小噪聲點(diǎn),使圖像邊緣輪廓更加清晰,達(dá)到圖像增強(qiáng)的效果。接著利用車牌灰度化后的特征區(qū)別于圖像中其他部分的特點(diǎn),準(zhǔn)確快速定位出圖像中車牌的位置。之后進(jìn)行腐蝕操作,去除車牌區(qū)域的噪聲干擾點(diǎn);進(jìn)行膨脹操作,使車牌位置的區(qū)域更加明顯。最后,對處理后的車牌圖像進(jìn)行投影,確定車牌的位置區(qū)域,實(shí)現(xiàn)相關(guān)預(yù)設(shè)功能。
由于圖像中兩種不同區(qū)域的交界處,灰度值有明顯的變化,利用該變化趨勢可以找到這些邊緣信息,從而能夠快速準(zhǔn)確地找到車牌位置區(qū)域。此外,攝像頭拍攝到的車牌圖像為RGB565 格式,該格式占用存儲空間較大,進(jìn)行圖像處理時比較耗時,因此本設(shè)計采用了灰度化處理。本設(shè)計采用的灰度化方法為RGB565 轉(zhuǎn)化成RGB888 圖像格式,接著RGB 888 轉(zhuǎn)化成YCbCr 模式,最后提取Y,完成灰度化設(shè)計。
本設(shè)計采用Sobel 的檢測方式進(jìn)行邊緣檢測,采用先入先出方式(FIFO)實(shí)現(xiàn)并行輸入。首先需要利用9 個像素數(shù)據(jù)組成緩存3×3 的數(shù)據(jù)窗口,由于提取的像素數(shù)據(jù)有3 行,因此需要建立2 個FIFO 來緩存圖像像素數(shù)據(jù)。這樣就可以實(shí)現(xiàn)并行輸出,最后將其提取的數(shù)據(jù)分別與x方向的橫向矩陣因子以及y方向上的縱向矩陣因子做卷積運(yùn)算,從而實(shí)現(xiàn)Sobel 邊緣檢測。
腐蝕模塊的設(shè)計是利用30×60 的緩存數(shù)據(jù)進(jìn)行“與”操作,如果找到“1”,則輸出第一次運(yùn)算的結(jié)果為“1”,否則為“0”。因?yàn)楸疚倪x擇的膨脹運(yùn)算模板有30 行,因而需要29 個行緩存,即29 個FIFO,F(xiàn)IFO1 緩存第一次REG 的結(jié)果,F(xiàn)IFO2 緩存第二次的輸出結(jié)果,F(xiàn)IFO3 緩存第三次的輸出數(shù)據(jù),其他FIFO 以此類推。對FIFO1,F(xiàn)IFO2,…,F(xiàn)IFO29 的數(shù)據(jù)進(jìn)行“與”運(yùn)算,當(dāng)結(jié)果等于1 時,則腐蝕結(jié)果為1,否則為0,則整個腐蝕過程結(jié)束。腐蝕使整個圖像縮小。圖2 為實(shí)現(xiàn)腐蝕模塊流程。
圖2 腐蝕模塊設(shè)計流程
膨脹模塊的設(shè)計是對模板為9×19 的數(shù)據(jù)進(jìn)行緩存,首先對這19 bit 數(shù)據(jù)進(jìn)行“或”運(yùn)算操作,尋找“1”,如果找到“1”,則輸出第一個結(jié)果為“1”,否則為“0”。FIFO1 緩存第一次REG 的輸出結(jié)果,如果第二次的結(jié)果為“1”,則FIFO2 緩存第二次的輸出結(jié)果,其他FIFO 依此類推。將FIFO1,F(xiàn)IFO2,…,F(xiàn)IFO8 的輸出數(shù)據(jù)進(jìn)行“或”運(yùn)算,當(dāng)結(jié)果等于0 時,則膨脹結(jié)果為0,否則為1。膨脹后圖像明顯變大。圖3 為膨脹模塊設(shè)計流程。
圖3 膨脹模塊設(shè)計流程
投影定位就是向x、y方向進(jìn)行投影,則投影狀態(tài)處于空閑,對車牌區(qū)域位置的寄存器設(shè)置合適的參照值,當(dāng)投影到車牌位置的像素點(diǎn)時,則認(rèn)為是該車牌位置區(qū)域,然后繼續(xù)尋找下一個像素點(diǎn),按照上述方法一直投影,直至x、y方向上顯示出車牌位置區(qū)域。
車牌定位檢測系統(tǒng)的實(shí)現(xiàn)是采用軟件開發(fā)平臺QuartusⅡ進(jìn)行綜合分析,仿真驗(yàn)證算法程序。本文以“粵A·2123A”車牌圖像為例進(jìn)行分析。本設(shè)計的全部算法都是利用Verilog語言實(shí)現(xiàn),將程序下載到FPGA 開發(fā)板后,進(jìn)行模塊測試,驗(yàn)證系統(tǒng)性能。引腳分配完成后再次進(jìn)行一次全編譯,下載程序進(jìn)行FPGA 開發(fā)板的整體測試。FPGA 擁有多種程序輸入方式,本設(shè)計采用的是直接方式,直接下載文件到FPGA的RAM(存儲器)中,通過USB Blaster 程序下載電纜直接下載到FPGA 芯片。
相比于其他邊緣檢測方式,經(jīng)攝像頭采集到的圖像經(jīng)過Sobel 檢測,車牌圖像的邊緣輪廓會更加清晰可見,實(shí)驗(yàn)結(jié)果如圖4 所示。
圖4 圖像邊緣檢測效果圖
經(jīng)過邊緣檢測后進(jìn)行腐蝕操作。腐蝕的目的是去除車牌圖像背景中的干擾點(diǎn)以及一些噪聲點(diǎn)。腐蝕操作后車牌圖像明顯縮小一圈,圖像中只剩下車牌位置和一些細(xì)小的雜點(diǎn),符合預(yù)期結(jié)果。實(shí)驗(yàn)效果圖如圖5 所示。
膨脹的目的是使車牌區(qū)域更加明顯。車牌區(qū)域明顯,則可以觀察到字符的邊粘連在一起,形成連通區(qū)域。但車牌圖像背景中存在雜物,對于車牌區(qū)域的確定會產(chǎn)生很大的影響。膨脹效果圖如圖6 所示。
算法程序通過仿真編譯后,通過USB 串口直接下載到主控芯片中,之后進(jìn)行FPGA 開發(fā)板的整體測試。為了測試本系統(tǒng)的可靠性,采用光照度因素模擬復(fù)雜的天氣條件,隨機(jī)選取了50 多張車輛圖像,對車牌定位檢測效果進(jìn)行分析。光照度較強(qiáng)的情況下,定位率達(dá)到90.5%;光照度中等的情況下,定位率達(dá)到91.5%;光照度較弱的情況下,定位率達(dá)到85.0%。圖7 為車牌定位的總體效果圖。從圖中可以看出,車牌的上下邊界被準(zhǔn)確地定位出來,由此可見在相對復(fù)雜的環(huán)境下,車牌定位效果基本上符合預(yù)想結(jié)果。
圖7 車牌定位效果圖
本文設(shè)計一種基于FPGA 的智能車牌檢測系統(tǒng)。該系統(tǒng)采用灰度化、邊緣檢測、腐蝕、膨脹、投影定位等模塊進(jìn)行圖像處理,采用搭載FPGA 的Verilog 語言進(jìn)行整體設(shè)計。本設(shè)計的性能主要取決于車牌的邊緣檢測和投影的相對位置關(guān)系。未來將改進(jìn)算法以提高車牌的檢測速率。