嵌入式車(chē)牌識別系統的設計及實(shí)現
1、引言
本文引用地址:http://dyxdggzs.com/article/196662.htm隨著(zhù)我國國民經(jīng)濟的高速發(fā)展,國內高速公路、城市道路、停車(chē)場(chǎng)建設越來(lái)越多,對交通控制、安全管理的要求也日益提高,智能交通系統(Intelligent Transportation Systems,簡(jiǎn)稱(chēng)ITS)已成為當前交通管理發(fā)展的主要方向,而車(chē)牌識別(License Plate Recognition,簡(jiǎn)稱(chēng)LPR)系統技術(shù)作為智能交通系統的核心,起著(zhù)舉足輕重的作用,它在高速公路、城市道路和停車(chē)場(chǎng)等項目管理中占有無(wú)可取代的重要地位[1-2]。
本文所研究的車(chē)牌識別系統,正是在這樣的背景下提出來(lái)的,對于目前LPR作為ITS中的核心關(guān)鍵技術(shù),具有相當大的理論和現實(shí)意義。本系統所設計的是一個(gè)基于DSP和FPGA的嵌入式車(chē)牌識別系統[3-4],該系統不同于傳統的車(chē)牌識別系統,具體實(shí)現過(guò)程將在下文詳細描述。
2、系統結構設計
傳統的車(chē)牌識別系統主要采用攝像頭、視頻采集卡、工控機幾個(gè)主要模塊搭建出來(lái)的方法來(lái)實(shí)現,其優(yōu)勢是實(shí)現容易,但是成本高、實(shí)時(shí)性不強、安裝和維護不便。而在本文系統設計中,摒棄了傳統的模式,采用TI公司的TMS320C6713B高性能(強大的并行運算能力)DSP作為識別算法的運行硬件平臺,Altera公司性?xún)r(jià)比很高的Cyclone系列EP1C12Q240型號的FPGA作為協(xié)調整個(gè)系統的工作與相關(guān)的圖像采集及控制,再加上一些外圍器件(FLASH、SDRAM等)共同構成本嵌入式車(chē)牌識別系統硬件平臺,如圖1所示。
與傳統的車(chē)牌識別系統不同,該系統無(wú)需計算機即可實(shí)現車(chē)牌圖像的采集、識別、輸出結果,具有識別性能高、環(huán)境適應性強、安裝維護簡(jiǎn)單、成本低等特點(diǎn)。其中采用以DSP和FPGA作為核心的系統設計最大優(yōu)點(diǎn)是結構靈活、通用性強、適合于模塊化設計,從而能夠實(shí)現高效率的算法和實(shí)時(shí)控制;同時(shí)其開(kāi)發(fā)過(guò)程可以并行進(jìn)行。
圖1 車(chē)牌識別硬件框圖
2.1 視頻輸入模塊
目前,世界上實(shí)際應用的電視信號制式主要有NTSC制、PAL制和SECAM制3種,世界上大多數國家采用PAL制,我國也采用PAL制,此系統采用的攝像頭輸出的視頻信號就是標準的PAL制式。
PAL電視制式規定,場(chǎng)掃描頻率為50Hz,每秒掃描25幀圖像,每幀包括奇、偶兩場(chǎng)圖像,每幀圖像的掃描行數為625行。電視信號由“圖像信號”和確保同步的“復合同步信號”以及消除掃描逆程回掃線(xiàn)的“復合消隱信號”等輔助信號構成。PAL制電視信號轉化為數字視頻信號后,一般輸出數據格式符合ITU656 YUV4:2:2標準,輸出一幀圖像的625行數據中,其中有效圖像數據占572行,其他為場(chǎng)消隱信號;同樣,每行有效的圖像數據也只有720個(gè)象素。
本系統中輸入是PAL制式的模擬圖像數據,必須要經(jīng)過(guò)A/D轉換才能供后續系統處理。此系統選用的視頻解碼芯片(A/D)是Philips公司的SAA7113H[5],支持標準的PAL制式視頻信號輸入。輸入可以為4路CVBS或2路S視頻(Y/C)信號,通過(guò)內部寄存器的不同配置可以對輸入進(jìn)行轉換,輸出8位VPO總線(xiàn)及一些場(chǎng)、行同步控制信號,其中輸出圖像數據為標準的ITU656 YUV4:2:2格式。SAA7113H內部具有一系列寄存器,可以配置為不同的參數,對色度、亮度等的控制都是通過(guò)對相應寄存器改寫(xiě)不同的值,寄存器的讀寫(xiě)需要通過(guò)I2C總線(xiàn)進(jìn)行。由于TMS320C6713有自帶的I2C總線(xiàn)接口,所以系統設計里,利用DSP通過(guò)I2C總線(xiàn)對SAA7113H進(jìn)行配置控制,簡(jiǎn)易了系統的設計[6]。
SAA7113H的VPO[7:0]總線(xiàn)以及RTS0、RTS1、LLCLK與FPGA相連,通過(guò)DSP的I2C總線(xiàn)把其中的RTS1、RTS0分別配置成場(chǎng)、行同步信號,只有在行場(chǎng)同步信號都同時(shí)有效時(shí),才是有效的圖像數據輸出,否則一般為圖像的消隱信號。此時(shí)我們只要根據LLC時(shí)鐘來(lái)對VPO總線(xiàn)上的數據來(lái)采集即可得到完整的圖像數據(720*572大小)。SAA7113H與DSP和FPGA的連接方式如圖2所示。
圖2 SAA7113H與DSP和FPGA的連接示意圖
經(jīng)過(guò)實(shí)際操作,通過(guò)DSP的I2C總線(xiàn)對其進(jìn)行正確配置,然后由Verilog編寫(xiě)的FPGA程序來(lái)進(jìn)行圖像數據的采樣,再用Quartus II自帶的SignalTap II Logic Analyzer(邏輯分析儀)對波形進(jìn)行相應的分析,驗證了系統中一些重要的信號,結果顯示是正確可行的。圖3顯示的行、場(chǎng)同步信號RTS0、RTS1與VPO數據輸出的關(guān)系,達到了預期的結果。
圖3 行場(chǎng)同步信號(RTS0、RTS1)及VPO波形
2.2 DSP功能模塊
DSP作為本系統的核心芯片,主要有兩方面的關(guān)鍵技術(shù):一是DSP硬件平臺的搭建;二是DSP程序的開(kāi)發(fā),包括DSP的算法移植及底層驅動(dòng)編寫(xiě)。
2.2.1 DSP硬件搭建
TMS320C6713B是TI公司的一款高性能的32位浮點(diǎn)DSP[7]。其工作頻率最高可達300MHz,每秒可執行2400MIPS和1800MFLOPS,非常適合在大數據量的圖像處理場(chǎng)合中使用。集成了豐富的片上外設,包括PLL、多通道EDMA控制器、多通道緩沖串口(MCBSP)、I2C接口、HPI接口、EMIF接口等。其中32位高性能外部存儲器接口(EMIF)能與SRAM、SDRAM、SBSRAM等同步/異步存儲器進(jìn)行很方便的無(wú)縫連接接口,兼容8/16/32位外部存儲器總線(xiàn)[7]。本系統上的FLASH、SDRAM及FPGA都掛在DSP的EMIF總線(xiàn)上,方便DSP對其訪(fǎng)問(wèn)和操作:
(1)DSP與FLASH接口:FLASH是一種高密度、非易失性的電可擦寫(xiě)存儲器,主要用來(lái)存放一些應用程序和其他信息,保證掉電不丟失數據。本系統采用的FLASH芯片為SST公司的SST39LF1601,其容量為2M字節,可在3V~3.6V電壓下工作,存取速度為70ns。并把FLASH映射在DSP的CE1空間上,對應的映射地址為0x90000000-0x901FFFFF。其中映射到CE1空間的好處是方便程序的BOOTLOADER,因為DSP上電復位后,DSP內部的EDMA控制器默認會(huì )把CE1空間的1KB數據拷貝到地址0處的內部存儲器中去,然后運行。所以只要把應用程序燒寫(xiě)到FLASH中,系統就可以脫離計算機正常運行。這里FLASH的另一個(gè)作用是保存用于車(chē)牌處理算法的一些字符模板信息、特征點(diǎn)信息以及一些用戶(hù)信息。
(2)DSP與SDRAM接口:SDRAM是同步動(dòng)態(tài)隨機存取存儲器(Synchronous Dynamic RAM)的縮寫(xiě),其主要特點(diǎn)為:一是同步訪(fǎng)問(wèn),讀寫(xiě)操作都需要時(shí)鐘;二是動(dòng)態(tài)存儲,芯片需要定時(shí)刷新。TMS320C6713的內部存儲空間容量無(wú)法滿(mǎn)足系統程序的需要,而需要外擴高速存儲器來(lái)提供系統程序的運行空間。此系統中,使用了一片Hydix公司的16位SDRAM HY57V641620,其容量為8M,用于DSP對車(chē)牌進(jìn)行處理時(shí)的數據暫存,并把它映射到DSP的CE0空間上,對應的地址為:0x80000000-0x807FFFFF。其工作時(shí)鐘由DSP提供,本系統設置為100MHz。通過(guò)配置DSP的EMIF控制寄存器,可以設置SDRAM的各種參數。
(3)DSP與FPGA的連接:FPGA從視頻流中捕獲了車(chē)牌圖像,如何讓DSP獲取該圖像信息進(jìn)行處理工作,也是本系統設計的一個(gè)重點(diǎn)。SBSRAM (Synchronous Burst Static RAM),即同步突發(fā)靜態(tài)存儲器,其最大的優(yōu)點(diǎn)就是支持同步突發(fā)訪(fǎng)問(wèn),訪(fǎng)問(wèn)速度高,而且屬于靜態(tài)RAM,不需要刷新。所以,相對DSP來(lái)說(shuō),本系統把FPGA配置成SBSRAM來(lái)進(jìn)行訪(fǎng)問(wèn),會(huì )相對簡(jiǎn)單些,并把其映射到DSP的外部CE3空間。由于本系統設計時(shí),對從FPGA讀取的圖像數據是以行單位來(lái)計算的,每次在FPGA內部存滿(mǎn)一行數據,FPGA就發(fā)一個(gè)中斷信號給DSP,讓DSP從中把數據通過(guò)EMIF口讀走,而這里一行的圖像數據的信息量為720*8bit,所以系統設計中,地址總線(xiàn)只用到了10位,而數據總線(xiàn)只用到了8位,對應的映射到DSP的存儲地址為0xA0000000-0xA00003FF(1K Byte大小),這種設計方法很大程度上方便了DSP對FPGA的訪(fǎng)問(wèn)操作,FPGA與DSP的連接如圖4所示。
圖4 FPGA與DSP硬件連接示意圖
2.2.2 DSP軟件編寫(xiě)
DSP作為信號處理芯片,在處理各種信號方面都有著(zhù)強大的優(yōu)勢。本系統中,大部分圖像處理算法(車(chē)牌定位、分割、字符識別等)都在其上實(shí)現。在搭建好良好的硬件平臺后,接下來(lái)要做的就是對DSP的編寫(xiě),這里主要有兩塊程序的編寫(xiě):算法的移植和底層驅動(dòng)的開(kāi)發(fā)。
CCS(Code Composer Studio)是TI公司推出的一套集成開(kāi)發(fā)環(huán)境,用它來(lái)開(kāi)發(fā)TI的DSP芯片應用程序;其中CCS 中集成的DSP/BIOS[8]是TI公司為C5000系列和C6000系列數字信號處理芯片量身定制的一個(gè)嵌入式實(shí)時(shí)操作系統內核,具有圖形化界面、代碼快速成型功能以及完備的API函數庫等優(yōu)勢,可極大的方便應用系統的開(kāi)發(fā)和在線(xiàn)調試。本系統就是采用CCS2.2中自帶的DSP/BIOS操作系統進(jìn)行程序的開(kāi)發(fā),使用任務(wù)、線(xiàn)程、旗語(yǔ)、郵箱等進(jìn)行一系列編程,方便的控制程序的實(shí)時(shí)調度運行。
(1)算法移植:一般算法的編寫(xiě)都會(huì )在Matlab上實(shí)現,雖然它是一種類(lèi)C語(yǔ)言,但和標準的C相比還是有著(zhù)很多的差異,而且Matlab中往往提供了各種信號處理的工具箱,如圖像處理、神經(jīng)網(wǎng)絡(luò )、小波變換等等。我們只要簡(jiǎn)單的調用這些函數來(lái),帶入幾個(gè)參數即可以方便的進(jìn)行各種信號處理。所以,當把這些算法移植到本系統的DSP中時(shí),一些函數還得重新編寫(xiě),還有編程格式、風(fēng)格都要有所更改,有些地方為了提高算法的效率,充分利用DSP的資源,還應該把部分代碼編寫(xiě)成匯編語(yǔ)言等等。當把整個(gè)算法都移植完后,最后封裝成一個(gè)函數,這樣更易于整個(gè)算法的維護及調用。然后,當觸發(fā)條件滿(mǎn)足時(shí),用DSP/BIOS中的某個(gè)任務(wù)來(lái)調用這個(gè)算法處理函數來(lái)完成對車(chē)牌圖像的識別。
(2)底層驅動(dòng)的開(kāi)發(fā):底層驅動(dòng)的編寫(xiě)采用CCS自帶的CSL(Chip Support Library)來(lái)進(jìn)行底層驅動(dòng)開(kāi)發(fā),CSL提供一系列應用程序接口(API,Application Programming Interface)用于配置和控制DSP片上外設,從而簡(jiǎn)化了DSP片上外設的開(kāi)發(fā)工作,大大縮短了開(kāi)發(fā)周期。
2.3 FPGA功能模塊
FPGA是英文Field Programmable Gate Array的縮寫(xiě),即現場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上進(jìn)一步發(fā)展的產(chǎn)物。FPGA的使用非常靈活,同一片FPGA通過(guò)不同的編程數據可以產(chǎn)生不同的電路功能。FPGA在通信、數據處理、網(wǎng)絡(luò )、軍事和航空航天等眾多領(lǐng)域得到了廣泛應用。
本系統設計中,FPGA作為圖像采集、存儲以及傳輸的核心模塊,協(xié)調及控制著(zhù)整個(gè)系統的正常運行,起著(zhù)非常重要的作用。本系統選用了Altera公司性?xún)r(jià)比較高的Cyclone系列中的EP1C12Q240型號FPGA。該FPGA共有52個(gè)存儲塊,共239616bits。通過(guò)QUARTUS II自帶的MegaWizard工具可以將每個(gè)塊配置成不同的存儲模式,如單口RAM、簡(jiǎn)單雙口RAM、移位寄存器、ROM和FIFO等,這樣有利于本系統在采集圖像時(shí)暫存圖像數據及把FPGA作為SBSRAM供DSP訪(fǎng)問(wèn)的設計。該FPGA有著(zhù)片上足夠多的IO口也為本系統以后擴展留下了空間。
這里與FPGA相連的器件有:SAA7113H、SDRAM、DSP以及MAX3232。由于FPGA純粹是一個(gè)編程器件,其IO腳可以配置成任何我們需要的信號,與任何接口可以相接,所以硬件接口設計上比較簡(jiǎn)單。難點(diǎn)在于編寫(xiě)各種通信協(xié)議和不同的接口進(jìn)行無(wú)縫傳輸。整個(gè)FPGA的程序設計總體框圖5所示:方框內的部分為FPGA的各個(gè)模塊以及它們之間的相互連接。方框以外的部分是FPGA的外圍器件。
圖5 FPGA的程序設計總體框圖
該FPGA系統在整個(gè)車(chē)牌識別系統中起到圖像的采集、緩存和傳輸的功能。當車(chē)輛檢測器的感應信號sensor_cmd信號有效時(shí),啟動(dòng)SAA7113H_INTERFACE模塊內部的狀態(tài)機進(jìn)行圖像的采集工作,SAA7113H_INTERFACE模塊從SAA7113H的視頻流中檢測到場(chǎng)開(kāi)始信號時(shí),開(kāi)始一幀圖像數據的傳輸。由于視頻流為PAL制,所以一幀圖像分為奇場(chǎng)和偶場(chǎng)兩場(chǎng)圖像數據。
系統采用了乒乓結構的設計方法,這種典型的設計方法在“以面積換速率”的FPGA設計方法中經(jīng)常得到應用。由于EP1C12Q240C8內部共有52個(gè)存儲塊,共239616bits,所以在FPGA內部設計一個(gè)小存儲量的RAM是可行的。系統中設計了兩塊720*8bits(每行圖像數據大小)的空間,這兩個(gè)存儲器的寫(xiě)時(shí)鐘信號是SAA7113H輸出時(shí)鐘LLC的2倍。SAA7113H INTERFACE模塊通過(guò)與SAA7113相連的VPO總線(xiàn),采集標準的YUV4:2:2的Y分量(只采集Y分量目的是得到灰度圖像),即其中的亮度信號,一行的圖像含有720個(gè)亮度信息,亮度信息的位寬為8位。當FPGA_RAM1的圖像行滿(mǎn)時(shí),發(fā)出行滿(mǎn)信號ram1_full給DSP_INTERFACE模塊,在DSP_INTERFACE模塊中將該信號轉好為中斷信號n_int_pulse以通知DSP調用EDMA獲取該行的圖像。同時(shí)進(jìn)行內部RAM的切換,把下一行數據寫(xiě)入FPGA_RAM2中,保證一邊DSP在讀取一行圖像數據,一邊FPGA在寫(xiě)入下一行圖像數據給另一個(gè)RAM ,以完成一次乒乓操作。
DSP在完成車(chē)牌圖像的處理后,將車(chē)牌圖像的識別結果通過(guò)EMIF寫(xiě)回到FPGA的DSP_INTERFACE模塊內部的寄存器里,并通過(guò)UART模塊獲取這些寄存器的值,通過(guò)UART傳到PC。
圖6所示波形是圖5內部框圖中的其中一個(gè)SAA7113_INTERFACE模塊在Modelsim上的仿真波形,從仿真波形中看出,與實(shí)際SAA7113輸出波形是符合的,達到我們預期的結果。
圖6 SAA7113_INTERFACE仿真波形
3、結論
本文所設計的基于DSP和FPGA的嵌入式車(chē)牌識別系統,具有速度快、穩定性高、體積小、功耗低等特點(diǎn),為車(chē)牌識別算法提供一個(gè)較好的驗證平臺,如圖7所示。經(jīng)過(guò)驗證,該車(chē)牌識別系統能夠實(shí)現實(shí)時(shí)的圖像采集、傳輸、識別。從時(shí)間上來(lái)考慮,在DSP內部單對一幅車(chē)牌圖像完成處理(定位、歸一化、特征提取與編碼)只需不足400ms的時(shí)間,速度上來(lái)說(shuō)是非??斓?從識別率上來(lái)考慮,只要算法達到一定的要求,經(jīng)過(guò)該車(chē)牌識別系統運算后,識別率也是能達到非常高的??傊?,該系統在車(chē)牌識別方面有著(zhù)一定的應用價(jià)值。
最后,作為一個(gè)可以實(shí)際使用的車(chē)牌識別系統,在以后的系統設計中,還需要增加用于網(wǎng)絡(luò )通訊的部分、及一些更智能化的功能,如液晶顯示、聲音提示等等??傊?,嵌入式車(chē)牌識別系統是當前智能交通應用領(lǐng)域的重要研究課題之一,擁有廣闊的應用前景。
圖7 車(chē)牌識別系統實(shí)物圖
參考文獻
[1] 陳友仁.圖像中車(chē)牌自動(dòng)識別的研究[D].上海: 上海交通大學(xué),2001: 1-10.
[2] 劉玲, 張興會(huì ). 智能化車(chē)牌識別系統研究[J]. 儀器儀表學(xué)報, 2004, 25(4)增刊:565-567.
[3] 蘇厚勝. 車(chē)牌識別系統的設計與實(shí)現[J]. 機器視覺(jué), 2006, (3): 103-107.
[4] 洪健, 陳繼榮. 基于DSP+CPLD的車(chē)牌實(shí)時(shí)識別系統的設計[J]. 計算機應用研究, 2007, 24(7): 218-219.
[5] 孔祥剛, 諸靜, 陽(yáng)濤.SAA7113H在視頻采集接口設計中的應用[J]. 電子技術(shù), 2003, (12): 26-29.
[6] 張占鵬, 蘇秀琴, 呂帥華. 基于TMS320C620X系列DSP的SAA7113H控制實(shí)現[J]. 科學(xué)技術(shù)與工程, 2006, 6(12): 1693-1695.
[7] 李方慧, 王飛, 何佩琨.TMS320C6000系列DSPs原理與應用[M]. 北京:電子工業(yè)出版, 2005: 337-380.
[8] 宋勝利, 曾巒. DSP/BIOS在數字圖像處理中的應用[J]. 國外電子測量技術(shù), 2005,24(12):33-36.
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)存儲器相關(guān)文章:存儲器原理
評論