基于DM6446的視頻運(yùn)動(dòng)車輛檢測(cè)系統(tǒng)設(shè)計(jì)
摘 要: 給出了一種基于DM6446 處理器的視頻運(yùn)動(dòng)車輛檢測(cè)系統(tǒng)的技術(shù)實(shí)現(xiàn)方法,介紹了系統(tǒng)的硬件結(jié)構(gòu)及軟件設(shè)計(jì)思路。結(jié)合DM6446 雙核處理器的特點(diǎn),給出了處理器ARM 端與DSP 端通信及雙緩沖區(qū)切換的具體方法。在視頻運(yùn)動(dòng)車輛檢測(cè)算法上,采用差異積累法對(duì)DM6446 實(shí)時(shí)獲取的交通視頻數(shù)據(jù)進(jìn)行背景建模,用背景差法檢測(cè)車輛運(yùn)動(dòng)區(qū)域,再結(jié)合Otsu 閾值化、形態(tài)學(xué)濾波及區(qū)域生長(zhǎng)等算法,最終在DM6446 硬件平臺(tái)上實(shí)現(xiàn)視頻運(yùn)動(dòng)車輛的實(shí)時(shí)檢測(cè)。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)具有良好檢測(cè)效果。
隨著現(xiàn)代交通運(yùn)輸業(yè)的快速發(fā)展,道路上的車輛日益增多,而伴隨而來的交通擁堵、道路使用效率不高等問題卻給日常交通管理帶來了重重困難。融合了計(jì)算機(jī)、電子等現(xiàn)代高新科技的智能交通系統(tǒng)(ITS:Intelligent Transport System)提供了解決方法。
運(yùn)動(dòng)車輛檢測(cè)是ITS 的重要組成部分,本文探討了以TI 的TMS320DM6446(簡(jiǎn)稱DM6446)為嵌入式開發(fā)平臺(tái)的交通視頻信息采集和處理系統(tǒng)的設(shè)計(jì),通過分析實(shí)時(shí)交通視頻序列,采用差異積累背景建模、Otsu 自動(dòng)閾值選取、形態(tài)學(xué)濾波及區(qū)域生長(zhǎng)定位等技術(shù),最終實(shí)現(xiàn)交通場(chǎng)景視頻運(yùn)動(dòng)車輛的檢測(cè)。
1 系統(tǒng)硬件構(gòu)成
本系統(tǒng)選用的TMS320DM6446 是基于ARM926 和TMS320C64x+兩個(gè)核心的、高度集成的數(shù)字媒體處理器。ARM926EJ-S 采用管道化流水線可以執(zhí)行32bit/16bit 指令集,并提供了獨(dú)立的16KB的指令Cache 和8KB 的數(shù)據(jù)Cache,可有效控制和管理外部中斷、各種接口及外設(shè)。TMS320C64x+屬TMS320C6000 系列高性能的定點(diǎn)DSP 處理器,集成了64 個(gè)32 位通用寄存器和8 個(gè)功能單元,硬件支持塊循環(huán)操作,采用二級(jí)Cache 結(jié)構(gòu):L1 程序/數(shù)據(jù)Cache 和L2 存儲(chǔ)/Cache.ARM 和DSP 共享外部256MB DDR SDRAM 存儲(chǔ)器,64MB NAND Flash用于存放ARM 和DSP 代碼。
系統(tǒng)硬件平臺(tái)還包含視頻處理子系統(tǒng)(VPSS)和眾多外設(shè)資源。VPSS 是DM6446 中專門負(fù)責(zé)視頻輸入輸出的硬件模塊,由視頻處理前端(VPFE)和視頻處理后端(VPBE)組成,系統(tǒng)模擬視頻信號(hào)經(jīng)由TVP5150解碼器解碼成YUV422 格式的視頻數(shù)據(jù)后傳送給VPFE 的CCD 控制器,然后通過EMIF 接口將暫存在VPSS 內(nèi)部Buffer 中的數(shù)據(jù)傳送到外部DDR SDRAM中。VPBE 的屏幕顯示(OSD)模塊將視頻數(shù)據(jù)以YCbCr形式提交給視頻編碼器(VENC),通過視頻編碼器輸出到VGA 或CVBS 接口。本文處理系統(tǒng)的硬件拓?fù)浣Y(jié)構(gòu)如圖1 所示。
圖1 DM6446 系統(tǒng)平臺(tái)硬件結(jié)構(gòu)示意圖
2 系統(tǒng)軟件設(shè)計(jì)
圖2 示意了系統(tǒng)硬件平臺(tái)軟件處理模塊的組成結(jié)構(gòu)。如圖2 所示,軟件部分主要完成3 個(gè)任務(wù):圖像的采集與存放、ARM 與DSP 通信和視頻圖像處理。
圖2 DM6446 系統(tǒng)平臺(tái)軟件模塊構(gòu)成框圖。
ARM 端負(fù)責(zé)初始化系統(tǒng)并控制數(shù)據(jù)的采集和存放。系統(tǒng)初始化時(shí)VPSS 被配置為場(chǎng)模式,VPFE 負(fù)責(zé)將采集到的視頻數(shù)據(jù)連續(xù)傳送到內(nèi)存緩沖區(qū)。由于ARM 端在向內(nèi)存中存放圖像時(shí)DSP 端不能同時(shí)讀取,為了保證數(shù)據(jù)處理的正確性,本文采用雙緩沖機(jī)制,即:設(shè)定兩個(gè)各自連續(xù)的幀緩沖區(qū)VIDEO BUF0 和video BUF1,視頻數(shù)據(jù)交替的向這兩個(gè)區(qū)域緩沖刷新。
ARM 與DSP 兩核之間的通訊通過內(nèi)存共享和中斷的方式實(shí)現(xiàn)。ARM 通過寄存器ARM2DSP0 向DSP發(fā)出中斷信號(hào),DSP 使用寄存器DSP2ARM0 給ARM發(fā)送中斷信號(hào)。發(fā)中斷的一方在中斷信號(hào)發(fā)出前向共享內(nèi)存填寫命令,接收中斷的一方在中斷函數(shù)中讀取命令,其他模塊按照當(dāng)前的命令執(zhí)行相應(yīng)任務(wù)。
視頻圖像的處理在DSP 核上進(jìn)行,采集到的視頻圖像數(shù)據(jù)為YUV422 格式,算法處理時(shí)僅讀取視頻數(shù)據(jù)的Y 分量,緊接將視頻數(shù)據(jù)進(jìn)行差異積累背景建模、運(yùn)動(dòng)區(qū)域檢測(cè)等操作以實(shí)現(xiàn)對(duì)視頻序列運(yùn)動(dòng)目標(biāo)的檢測(cè)。最后DSP 負(fù)責(zé)將檢測(cè)完的視頻數(shù)據(jù)存放至固定顯示緩存區(qū),由VPBE 讀取后顯示。
3 視頻運(yùn)動(dòng)目標(biāo)檢測(cè)算法設(shè)計(jì)
在獲得視頻數(shù)據(jù)后,需進(jìn)一步對(duì)視頻運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)(運(yùn)動(dòng)車輛)。對(duì)固定相機(jī)的應(yīng)用場(chǎng)合,一般采用背景差技術(shù)檢測(cè)視頻運(yùn)動(dòng)目標(biāo),而背景差法又受背景建模效果的約束。目前存在如基于光流場(chǎng)、目標(biāo)模型以及差分圖像等多種視頻運(yùn)動(dòng)目標(biāo)檢測(cè)方法?;诠饬鲌?chǎng)的目標(biāo)檢測(cè)法對(duì)噪聲敏感、計(jì)算量大,導(dǎo)致算法實(shí)時(shí)性較差。基于目標(biāo)模型的檢測(cè)方法一般須建立目標(biāo)的三維模型,再將模型投影至二維平面,再在圖像中進(jìn)行匹配。基于差分圖像的檢測(cè)方法較為常用,可分為鄰幀差和背景差兩種方法,背景差法是視頻運(yùn)動(dòng)目標(biāo)檢測(cè)中的流行方法。本文即采用背景差法對(duì)目標(biāo)運(yùn)動(dòng)區(qū)域進(jìn)行檢測(cè),本文針對(duì)嵌入式應(yīng)用,從檢測(cè)算法的處理效率出發(fā),場(chǎng)景背景模型的獲取采用文獻(xiàn)[4]所述的基于差異積累的背景建模法。對(duì)視頻運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)主要經(jīng)過四個(gè)步驟:差異積累背景建模、運(yùn)動(dòng)區(qū)域檢測(cè)、形態(tài)學(xué)濾波和區(qū)域生長(zhǎng)法視頻運(yùn)動(dòng)目標(biāo)定位。
3.1 差異積累背景建模
差異積累背景建模法首先要建立差異圖像,設(shè)差異圖像為F(i,j,t),當(dāng)前視頻幀為f(i,j,tc),基準(zhǔn)幀為f(i,j,tb), 則由當(dāng)前幀與基準(zhǔn)幀比對(duì)可以得到一幅差異圖像,可表示為公式(1):
這里的Tf 是一個(gè)特定的門限,決定著差異的程度。
若兩幅圖像間灰度差在其坐標(biāo)上有較大的不同時(shí),F(xiàn)(i,j,t)的值被賦為1,否則為0.這樣可以生成一個(gè)像素值為0 或1,大小與輸入圖像一致的圖像矩陣,稱為差異圖像?,F(xiàn)在考慮一組m 幀視頻序列{f(i,j,t1),f(i,j,t2), …, f(i,j,tm)},本文選取視頻的第f(i,j,tc-3)幀作為基準(zhǔn)幀,系統(tǒng)初始化時(shí)將讀取的第一幀視頻數(shù)據(jù)賦予基準(zhǔn)幀,基準(zhǔn)幀隨著視頻的輸入不斷迭代,程序?qū)崿F(xiàn)時(shí)可按如下方式進(jìn)行迭代:
差異圖像描述了視頻圖像中物體的運(yùn)動(dòng),若在連續(xù)圖像序列中存在相對(duì)穩(wěn)定的非運(yùn)動(dòng)區(qū)域則可考慮作為背景。差異圖像矩陣隨視頻幀變化而不斷改變,根據(jù)差異圖像每個(gè)像素值的變化程度可以得到一個(gè)差異積累動(dòng)態(tài)矩陣D(i,j,t)。 如公式(2)所示:
λ記錄每個(gè)像素差異積累的深度,動(dòng)態(tài)矩陣的單元數(shù)量和高寬比例與差異圖像矩陣相同,當(dāng)差異圖像某位置處的值為0時(shí)使動(dòng)態(tài)矩陣相同位置處的計(jì)數(shù)器加1,這種計(jì)數(shù)器在動(dòng)態(tài)矩陣每個(gè)單元位置各有一個(gè)。在對(duì)視頻序列連續(xù)處理過程中,若動(dòng)態(tài)矩陣元素的計(jì)數(shù)器值等于λ時(shí),就認(rèn)為對(duì)應(yīng)位置的像素灰度值在規(guī)定范圍內(nèi)無變化,可以作為背景像素。
背景的更新采用加權(quán)平均法,設(shè)更新前背景為Bold(i,j,t),新背景為Bnew(i,j,t),結(jié)合系數(shù)利用公式(3)可獲得當(dāng)前更新的背景。應(yīng)用場(chǎng)景的背景會(huì)隨著新視頻幀的輸入而不斷進(jìn)行自動(dòng)更新,圖3 示意了差異積累法的背景更新效果。
圖3 差異積累背景建模過程示意圖
3.2 運(yùn)動(dòng)區(qū)域檢測(cè)
在獲得背景模型后,采用背景差法即可獲得背景差圖,設(shè)背景差圖為Bd(i,j,t),則有:
對(duì)背景差圖做二值化處理即可獲得視頻運(yùn)動(dòng)車輛區(qū)域。本文二值化閾值選取采用文獻(xiàn)[5]的Otsu 法(最大類間方差法)。Otsu 法根據(jù)圖像的灰度特性,將圖像分成前景和背景兩部分。前景和背景之間的類間方差越大,說明構(gòu)成圖像的兩部分差別越大,當(dāng)部分前景錯(cuò)分為背景或部分背景錯(cuò)分為前景時(shí)都會(huì)導(dǎo)致兩部分差異變小,因此,使類間方差最大的分類意味著錯(cuò)分概率最小,選取使類間方差最大和類內(nèi)方差最小的圖像灰度值作為最佳閾值。
3.3 形態(tài)學(xué)濾波
僅對(duì)背景差圖像做二值化處理是不夠的,在二值圖中可能出現(xiàn)因錯(cuò)判而導(dǎo)致的空洞和細(xì)小的噪聲,須進(jìn)一步經(jīng)形態(tài)學(xué)濾波處理以連接相關(guān)區(qū)域和去噪,具體的操作是腐蝕和膨脹。腐蝕的作用是從二值圖像中消除不相關(guān)的細(xì)節(jié),膨脹可以使裂縫橋接起來。先腐蝕后膨脹的過程具有消除細(xì)小物體,在纖細(xì)點(diǎn)處分離物體和平滑較大的邊界時(shí)又不明顯地改變其面積的作用。先膨脹后腐蝕的過程具有填充物體內(nèi)部細(xì)小空洞、連接鄰近物體、在不明顯改變面積的情況下平滑其邊界的作用。本文中選擇3×3 像素大小的結(jié)構(gòu)元素先后對(duì)二值圖進(jìn)行腐蝕和膨脹操作。
3.4 區(qū)域生長(zhǎng)法目標(biāo)定位
定位是指獲取視頻運(yùn)動(dòng)目標(biāo)的空間位置,本文采用區(qū)域生長(zhǎng)法對(duì)目標(biāo)進(jìn)行位置標(biāo)記。區(qū)域生長(zhǎng)法(Region Growing)是一種有效的圖像分割算法,算法將有相似性質(zhì)的像素或子區(qū)域集合起來構(gòu)成區(qū)域并不斷擴(kuò)大區(qū)域范圍?;痉椒ㄊ且砸唤M種子點(diǎn)開始將與種子性質(zhì)相似的相鄰像素附加到生長(zhǎng)區(qū)域的每個(gè)種子上,逐步構(gòu)成區(qū)域,在沒有像素滿足加入某個(gè)區(qū)域的條件時(shí)停止生長(zhǎng)。種子點(diǎn)的自動(dòng)選擇應(yīng)滿足3 條準(zhǔn)則:
?、?種子與其鄰域必須有高相似度;② 在想得到的區(qū)域內(nèi),至少要能產(chǎn)生一顆種子;③ 不同區(qū)域的種子不能連接。
經(jīng)形態(tài)學(xué)濾波處理后,二值圖的視頻運(yùn)動(dòng)車輛區(qū)域有了較好的空域連通性,采用區(qū)域生長(zhǎng)法進(jìn)行定位的目的就是要確定出前景目標(biāo)區(qū)域并給予標(biāo)記。本文對(duì)前景區(qū)域采用矩形框進(jìn)行標(biāo)記:在四鄰域連通區(qū)域內(nèi)尋找坐標(biāo)的最大值max(x,y)和最小值min(x,y),據(jù)此在圖像中繪制白色直線段并連接成矩形框。區(qū)域生長(zhǎng)法目標(biāo)定位可簡(jiǎn)單總結(jié)為以下4 個(gè)步驟[4]:
① 將標(biāo)記矩陣C(x,y,tk)初始化為待標(biāo)記的二值圖像(設(shè)種子點(diǎn)灰度值為255);② 根據(jù)種子點(diǎn)灰度值逐行掃描C(x,y, tk)圖像,若搜索到符合條件的像素點(diǎn)則以其為中心檢查鄰域像素,滿足合并條件的鄰域像素坐標(biāo)壓入堆棧,并設(shè)置為背景點(diǎn);③ 利用步驟②的前景點(diǎn)位置坐標(biāo)得到目標(biāo)矩形框位置坐標(biāo)(xman,yman)、(xmax,ymax),矩形框坐標(biāo)入棧,返回②;④ 逐個(gè)取出矩形框位置坐標(biāo),進(jìn)行矩形框繪制。
4 實(shí)驗(yàn)結(jié)果與分析
為進(jìn)一步說明本文基于DM6446 實(shí)時(shí)視頻運(yùn)動(dòng)車輛檢測(cè)系統(tǒng)的實(shí)際檢測(cè)效果,本文針對(duì)不同交通視頻序列進(jìn)行了檢測(cè)實(shí)驗(yàn)。由于不便在實(shí)際交通現(xiàn)場(chǎng)進(jìn)行效果測(cè)試,實(shí)驗(yàn)時(shí)使用"新浪S008"DVD 機(jī)提供視頻輸入信號(hào),DVD 機(jī)播放指定的交通視頻序列。DVD 的輸出通過AV 線連接到視頻板的復(fù)合視頻信號(hào)接口,處理結(jié)果由連接在VGA 口的液晶顯示器顯示。本文共用到3組視頻序列: Highway 、Video.long.mjpg 和Hzhighway.其中Highway 來自http://cvrr.ucsd.
edu/aton/testbed/,video. long.mjpg 為劉瑞禎編寫的《OpenCV 教程:基礎(chǔ)篇》光盤所提供的測(cè)試序列,Hzhighway 為自拍視頻序列。
圖4(a)~(d)示意了在DM6446 上進(jìn)行視頻運(yùn)動(dòng)目標(biāo)檢測(cè)的處理流程。圖5(a)、(b)和(c)分別給出了對(duì)Highway、Video.long.mjpg 及Hzhighway 各視頻測(cè)試序列的運(yùn)動(dòng)車輛進(jìn)行檢測(cè)的效果。
Highway 背景較為簡(jiǎn)單,車輛都處于運(yùn)動(dòng)狀態(tài)且行進(jìn)方向與攝像機(jī)鏡頭朝向相同,檢測(cè)效果較好,雖然存在少量連體問題,但基本定位準(zhǔn)確,如圖5(a)所示,可以看到白色矩形框?qū)④囕v包含在其中,并隨著車輛遠(yuǎn)離攝像機(jī)而逐漸縮小。
Video.long.mjpg 取景范圍較小,同時(shí)車輛行駛速度較快,有時(shí)不能完整框住車輛。在自拍序列Hzhighway 中車輛定位準(zhǔn)確但有時(shí)存在矩形框不能框住單一車輛和大小不穩(wěn)定的情況,如圖5(c)所示。經(jīng)過綜合分析得到如下結(jié)論:① 倘若背景更新速度不夠快,易導(dǎo)致當(dāng)停駛車輛變?yōu)楸尘昂笥只謴?fù)運(yùn)動(dòng)狀態(tài)時(shí)背景不能及時(shí)更新為路面的情況。②有些車輛車體顏色與路面相近,在更新時(shí)部分車體會(huì)被誤當(dāng)成背景。
圖4 視頻運(yùn)動(dòng)車輛檢測(cè)過程示意圖
圖5 DM6446 視頻運(yùn)動(dòng)車輛檢測(cè)系統(tǒng)實(shí)驗(yàn)測(cè)試效果圖。
5 結(jié)語
本文給出了一種基于DM6446 的視頻運(yùn)動(dòng)車輛檢測(cè)系統(tǒng)的技術(shù)實(shí)現(xiàn)方案,描述了系統(tǒng)軟硬件平臺(tái)的搭建思路。本文所給出的實(shí)驗(yàn)效果說明了本系統(tǒng)的技術(shù)可行性及其良好檢測(cè)性能。雖然本系統(tǒng)在幾組視頻測(cè)試序列中獲得良好的檢測(cè)效果,但本系統(tǒng)對(duì)環(huán)境光照的突變、樹枝搖擺的干擾等仍缺乏適應(yīng)性,算法需做進(jìn)一步考慮,同時(shí)程序也需針對(duì)DM6446 硬件平臺(tái)做進(jìn)一步優(yōu)化,這也是作者進(jìn)一步的研究工作。
評(píng)論