基于DSP的嵌入式視覺客流檢測系統(tǒng)
近些年來,隨著電子元器件價格的不斷降低和數(shù)字信號處理器(Digital Signal Processor,DSP)性能的不斷提升,以DSP為核心的嵌入式實時圖像處理技術(shù)在目標跟蹤、機器人導航、輔助駕駛、智能交通監(jiān)控等領域獲得了越來越廣泛的應用。由于圖像的實時處理與圖像數(shù)據(jù)的實時采集、存儲和傳輸密切相關,因而各模塊間的無縫連接與高效配合是嵌入式圖像處理系統(tǒng)設計過程中的關鍵問題。綜合考慮系統(tǒng)的實現(xiàn)成本、實時性以及實際應用,在嵌入式圖像處理技術(shù)的許多應用領域中,如視頻監(jiān)控以及視覺客流檢測等,由于對圖像質(zhì)量要求不是很高,處理算法相對簡單,采用低端DSP(如Ti公司的C5000系列等)就可以完成相應的圖像處理任務,面向這些實際應用領域的嵌入式圖像處理系統(tǒng)完全可以采用低端DSP作為系統(tǒng)的處理核心,因此將以低端DSP為核心構(gòu)建面向客流檢測實際應用的嵌入式圖像處理系統(tǒng)。另外,與其他圖像數(shù)據(jù)傳輸方式(如串口、并口和USB等)相比,以太網(wǎng)接口具有傳輸速度快,成本低廉,開發(fā)簡便以及可以實現(xiàn)遠程控制等一系列優(yōu)點,因而提出的嵌入式圖像處理系統(tǒng)的圖像傳輸部分將采用基于TCP/IP協(xié)議的以太網(wǎng)傳輸技術(shù)實現(xiàn)系統(tǒng)圖像數(shù)據(jù)的遠程傳輸功能。
1 系統(tǒng)構(gòu)成
這里提出的基于DSP的嵌入式圖像處理系統(tǒng)由圖像采集與存儲、圖像處理和圖像傳輸3部分組成,組成框圖如圖1所示。選用CMOS圖像傳感器OV7141完成系統(tǒng)的圖像采集功能,選用TMS320VC5416DSP完成系統(tǒng)的圖像處理與分析,采用FIFO存儲器IDT72V04作為圖像存儲的緩沖區(qū),采用10兆/lOO兆自適應網(wǎng)絡控制器LAN9115實現(xiàn)圖像數(shù)據(jù)的以太網(wǎng)傳輸功能,系統(tǒng)各模塊間的邏輯控制由CPLI)EPM3064A實現(xiàn)。
2 系統(tǒng)的硬件實現(xiàn)
2.1 芯片介紹
考慮到視覺客流檢測應用中的圖像處理只涉及灰度圖像,因而提出的嵌入式圖像處理系統(tǒng)可以直接采用黑白圖像傳感器。這里選用Omnivision公司的黑白CMOS圖像傳感器OV7141作為圖像采集芯片。該芯片工作電壓為2.5 V,分辨率為640×480,工作頻率為27 MHz,每秒鐘能輸出30幀(VGA模式)或者60幀(QVGA模式),內(nèi)部整合模數(shù)轉(zhuǎn)換(A/D),自動增益控制(AGC),SCCB總線控制端口等,可直接輸出8 b圖像數(shù)據(jù)。
圖像處理芯片采用TI公司的TMS320VC5416定點DSP,其內(nèi)部采用一種改進型的哈佛總線結(jié)構(gòu)(1條程序總線、3條數(shù)據(jù)總線和4條地址總線),數(shù)據(jù)總線寬度為16 b,最大尋址空間為64 K×16 b。程序總線寬度為23 b,最大尋址空間為8 M×16 b。片內(nèi)有128 M×16 b的RAM(其中包括64 M×16 b的單周期雙訪問DARAM和64 M×16 b的單周期單訪問SARAM),6通道DMA傳輸控制器,3個帶緩沖器的串行通信接口(McBSP)。分開的數(shù)據(jù)和指令空間使該芯片具有高度的并行操作能力,在單周期內(nèi)允許指令和數(shù)據(jù)同時存取,再加上其高度優(yōu)化的指令集,使得該芯片具有很高的運算速度,最高可達160 MIPSE。
FIFO采用IDT公司的IDT72V04,它是異步的先進先出緩存器,容量為4096×9 b。供電電壓為3.3 V,它有3個狀態(tài)輸出信號可用于圖像數(shù)據(jù)存儲與讀取控制,即全滿信號/FF、半滿信號/HF和空信號/EF。CPLD采用ALTERA公司的MAX3064A,可使用門數(shù)1250個;宏單元64個;邏輯陣列塊(LAB)4個;最大可使用輸入輸出(I/O)管腳數(shù)64個;最大工作時鐘頻率為222.2 MHz;核供電和I/O供電都為3.3 V。LAN9115是SMSC公司的第二代10兆/100兆非PCI以太網(wǎng)控制器,LAN9115設計有大容量的存儲器緩沖器,快速總線周期時間和內(nèi)置的流控制支持,LAN9115支持高的數(shù)據(jù)速率,幾乎沒有包的損失,支持多種高清晰度視頻。LAN9115的主要性能:功率管理;支持LAN叫醒,使網(wǎng)絡能把消費類電子產(chǎn)品從睡眠狀態(tài)中叫醒;多種低功耗模式;能防止接收存儲器溢出;內(nèi)置支持流控制;簡單SRAM系統(tǒng)接口;能與任何的嵌入處理器接口。
[!--empirenews.page--]
2.2 DSP與FIFO存儲器的無縫連接與圖像采集的實現(xiàn)
FIFO與DSP和OV7141的無縫連接如圖2所示。OV7141的工作頻率是27 MHz,每秒鐘能輸出30幀(VGA模式)或者60幀(QVGA模式)。由于DSP性能有限,而且實際上很多情況下也不需要如此高的幀率,因此并不是所有采集到的圖像數(shù)據(jù)都需要DSP進行處理(例如在視覺客流檢測系統(tǒng)的實際應用中只要求每秒鐘能處理5幀即可),但是必須保證DSF進行處理的圖像為一幅完整的圖像。可以利用OV7141的3個輸出信號來完成這個功能,分別是PCLK(像素時鐘信號)、VSYNC(場同步信號)和HREF(行有效信號)。并且OV7141可通過改變片內(nèi)控制寄存器的值來調(diào)整輸出圖像的窗口大小,窗口可在4×2到652×482像素之間任意選擇。HREF、只在所選擇窗口內(nèi)的像素信號輸出時才置高電平,這使得圖像的非完整模式下的處理也變?yōu)榱丝赡?。另外?V7141的片內(nèi)控制寄存器配置功能由SCCB總線實現(xiàn),由于DSP不具有SCCB總線接口,因而為了通過DSP實現(xiàn)對0V7141的寄存器配置,利用DSP的2根數(shù)據(jù)線DO和D1借助CPLD實現(xiàn)sCcB總線時鐘線SCL和數(shù)據(jù)線SDA的模擬以實現(xiàn)虛擬SCCB總線。
控制FIF0的信號主要是寫信號和讀信號,它們都由DSP根據(jù)FIF0的狀態(tài)信號及DSP對圖像的處理結(jié)果來控制對FIFO的讀/寫。讀/寫操作時序如圖3所示。CM0s圖像傳感器采集獲得的圖像數(shù)據(jù)在CPLD控制下逐行寫入FIFO,當FIFO的存儲容量達到半滿時,F(xiàn)IFO的半滿標志位以外部中斷方式通知DSP,DSP,檢測到外部中斷后開啟DMA,利用DMA通道將FIFo中的圖像數(shù)據(jù)搬移到DSP的片內(nèi)圖像緩沖區(qū)中。需要注意的是,在DMA從FIFO搬運圖像數(shù)據(jù)的過程中CMOS圖像傳感器并沒有停止向FIFO寫入圖像數(shù)據(jù),由于CMOS寫入FIFO速度Vw。比DMA從FIFO中讀出數(shù)據(jù)的速度Vr慢(Vw=(1/2)Vr),使得CMOS和DMA在對FIFO進行雙向訪問時FIFO的實際存儲容量始終保持在0和最大存儲量之間,既不會上溢也不會下溢;從而保證一幀完整的圖像可以被DMA控制器順利的轉(zhuǎn)移至DSP的片內(nèi)圖像緩沖區(qū)中。當一幀完整的圖像搬運完成后,DMA會開啟處理使能標志,當DSP發(fā)現(xiàn)處理使能標志開啟后將從片內(nèi)圖像緩沖區(qū)中獲得圖像數(shù)據(jù)以完成圖像處理算法,在DSP進行圖像處理的同時,DMA控制器可以同時進行下一幀圖像數(shù)據(jù)的搬移工作以提升系統(tǒng)的并行處理能力。DSP對于當前幀圖像處理完成后將等待處理使能標志的再次開啟以繼續(xù)下一幀圖像的處理。DSP對于當前幀圖像的處理結(jié)果將在當前幀處理完成后采用以太網(wǎng)傳輸至接收終端。
此外,DMA在執(zhí)行圖像數(shù)據(jù)搬移功能時,為了保證數(shù)據(jù)搬移過程與DSP圖像處理的并行性,通常需要在DSP片內(nèi)開辟2塊圖像數(shù)據(jù)緩沖區(qū)。由于5416DSP片內(nèi)DARAM在速度上優(yōu)于SARAM,因而通常重要的程序代碼以及算法的堆棧都放在DARAM中,為了節(jié)省DARAM資源并充分利用SARAM,在DSP程序空間所在的SARAM和數(shù)據(jù)空間所在的DARAM中各開辟1塊作為圖像數(shù)據(jù)緩沖區(qū)。SARAM中的緩沖區(qū)用于DMA通道0從FIF0中讀取當前幀圖像數(shù)據(jù),DMA通道1從SARAM緩沖區(qū)中讀取上一幀圖像數(shù)據(jù),兩個DMA通道的數(shù)據(jù)搬移功能都可以在DSP完成某個子算法的過程中并行實現(xiàn)。
2.3 基于TCP/IP協(xié)議的以太網(wǎng)傳輸?shù)膶崿F(xiàn)與圖像的實時傳輸
考慮到實際情況中通常采用圖像處理系統(tǒng)與接收終端采用雙絞線直連的方式傳輸圖像數(shù)據(jù),因而直接采取TCP/IP協(xié)議族中傳輸效率更高的用戶數(shù)據(jù)包協(xié)議(UDP)完成系統(tǒng)與接收終端的數(shù)據(jù)交互。接收終端可采用套接字(Socket)獲取UDP數(shù)據(jù)包,并從UDP數(shù)據(jù)包中還原出圖像數(shù)據(jù)或其他系統(tǒng)參數(shù)。而在圖像處理系統(tǒng)中,UDP數(shù)據(jù)包的發(fā)送主要通過DSP讀寫LAN9115的片內(nèi)寄存器以及FIF0的方式實現(xiàn),具體有以下幾個步驟:
(1)初始化。完成LAN9115的喚醒工作,判別其工作狀態(tài),通過讀寫指定內(nèi)部寄存器,激活他的各項功能。
(2)設置MAC地址。初始化時DSP通過更改LAN9115內(nèi)部寄存器ADDRH和ADDRL的值,完成對網(wǎng)絡MAC地址的設置。
(3)發(fā)送ARP數(shù)據(jù)包。根據(jù)UDP協(xié)議,發(fā)送數(shù)據(jù)時要獲取對方機器的IP地址和MAC地址。該程序根據(jù)ARP協(xié)議,發(fā)送ARP數(shù)據(jù),再接收圖像接收端發(fā)回的RARP數(shù)據(jù)包,分析里面的數(shù)據(jù),即可生成符合要求的UDP數(shù)據(jù)。
(4)發(fā)送圖像數(shù)據(jù)。在發(fā)送數(shù)據(jù)包(Packet)過程中,DSP先更改LAN9115的寄存器TX_CMD_A和Tx_CMD_B的值,其中包含了要發(fā)送的數(shù)據(jù)大小,數(shù)據(jù)包(Packet)長度等信息,該系統(tǒng)目前采取的圖像大小為320×240像素。在實際傳輸中,每幀圖像分20塊(1 Frame=20 Block),每塊又分6個數(shù)據(jù)報傳輸(1 Block=6 Slice),每個數(shù)據(jù)包中圖像數(shù)據(jù)為1 280 B(1 Slice=1 280 B)。這樣做是因為以太網(wǎng)協(xié)議里規(guī)定每個數(shù)據(jù)包大小不能超過1 514 B,Windows系統(tǒng)中Socket套接字的緩沖區(qū)是8 KB。然后DSP利用I/0端口訪問模式將數(shù)據(jù)依次寫入LAN9115中。要中斷當前傳輸過程,可設置寄存器TX—CFG中sTOP—Tx比特為1。這個傳輸過程就將立即結(jié)束。LAN9115與DSP的接口如圖4所示。
[!--empirenews.page--]
3 系統(tǒng)軟件設計
針對客流檢測的實際應用,提出的嵌入式客流檢測系統(tǒng)依據(jù)人體頭部在俯視圖像中近似為圓形的特點采用基于Hough變換的頭部輪廓特征提取和識別方法定位圖像中的行人頭部,并利用基于Kalman濾波和頭部輪廓特征幀間匹配的跟蹤方法實現(xiàn)人體頭部的跟蹤以防止重復計數(shù)情況的出現(xiàn),系統(tǒng)的軟件設計流程圖如圖5所示。
4 實驗結(jié)果
系統(tǒng)軟件算法目前已完全移植入系統(tǒng)硬件平臺并可以進行現(xiàn)場實驗。在某公交公司的配合下,系統(tǒng)平臺在一條實際運營的公交線路上進行了公交客流檢測的現(xiàn)場實驗。為了對系統(tǒng)應付客流高峰的能力進行評估,現(xiàn)場實驗特意挑選了一條終點站為火車站,且包含大量客流高峰情況的公交線路。另外,考慮到公交客流檢測全天候工作的特性,系統(tǒng)平臺在夜間帶有紅外照明的情況下也進行了現(xiàn)場實驗。實驗結(jié)果可見表l。
5 結(jié)語
實踐證明,該圖像處理系統(tǒng)可以很好地進行圖像采集、實時數(shù)據(jù)處理以及輸出。在客流檢測時,準確率較高。作為基于DSP嵌入式系統(tǒng)和以太網(wǎng)傳輸?shù)木W(wǎng)絡測試平臺,有遠程傳輸和控制的能力,有廣泛的應用范圍和推廣價值。該項目的完成,非常感謝浙江大學信息學院劉濟林教授的大力支持和指導。