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