嵌入式多目標(biāo)跟蹤(上)
1 設(shè)計(jì)概述
目標(biāo)跟蹤在視頻監(jiān)控領(lǐng)域有廣泛的應(yīng)用。跟蹤目標(biāo)的 選擇可以分為自動(dòng)檢測(cè)與主動(dòng)選擇。自動(dòng)檢測(cè)能夠檢測(cè)出畫 面中所有運(yùn)動(dòng)物體,再通過(guò)目標(biāo)跟蹤算法,對(duì)檢測(cè)到的目標(biāo) 進(jìn)行跟蹤處理。在市區(qū)繁忙路段,通過(guò)運(yùn)動(dòng)目標(biāo)自動(dòng)檢測(cè)與 跟蹤統(tǒng)計(jì)每日車流量。當(dāng)畫面中存在眾多運(yùn)動(dòng)物體,而只需 要跟蹤某些特定目標(biāo)時(shí),為減少干擾,主動(dòng)選擇目標(biāo)后對(duì)特 定目標(biāo)進(jìn)行跟蹤。在目標(biāo)跟蹤算法中,判斷運(yùn)動(dòng)目標(biāo)丟失狀態(tài)是一個(gè)值 得研究的課題。本設(shè)計(jì)改進(jìn)了經(jīng)典的粒子濾波算法,通過(guò)設(shè) 置粒子權(quán)重門限與重采樣粒子數(shù)目閾值,進(jìn)行粒子權(quán)重比較 與重采樣粒子個(gè)數(shù)比較,實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)跟蹤與丟失狀態(tài)判斷。
在現(xiàn)實(shí)應(yīng)用中,往往需要同時(shí)跟蹤多個(gè)目標(biāo)。本設(shè)計(jì) 提出了一種基于粒子濾波的嵌入式多目標(biāo)跟蹤硬件結(jié)構(gòu)設(shè) 計(jì),該結(jié)構(gòu)跟蹤性能優(yōu)秀,具有實(shí)時(shí)性強(qiáng)、抗干擾、可復(fù)用 性強(qiáng)的特點(diǎn)。針對(duì)多個(gè)目標(biāo)采用同一種跟蹤算法,設(shè)計(jì)一種 可復(fù)用性強(qiáng)的跟蹤算法能節(jié)省設(shè)計(jì)與開(kāi)發(fā)的時(shí)間。因此,設(shè) 計(jì)并生成了可復(fù)用的粒子濾波目標(biāo)跟蹤IP核。本設(shè)計(jì)采用IP固核的形式。設(shè)計(jì)者不以開(kāi)源形式復(fù)用
圖1 嵌入式多目標(biāo)跟蹤系統(tǒng)
圖2 FPGA資源消耗
圖3 總體設(shè)計(jì)框圖
開(kāi)發(fā)的數(shù)字邏輯電路模塊,而是將其封裝起來(lái),生成一個(gè)輸入輸出端口固定、功能正確的模塊。該模塊的具體數(shù)字電路 實(shí)現(xiàn)無(wú)法查看,只要在工程中添加該模塊,并連接模塊的輸 入輸出管腳,便可以實(shí)現(xiàn)IP核調(diào)用。本設(shè)計(jì)調(diào)用了自行設(shè)計(jì) 與開(kāi)發(fā)的粒子濾波IP核。根據(jù)FPGA的并行運(yùn)算機(jī)制,所有 目標(biāo)能同時(shí)進(jìn)行粒子濾波處理,實(shí)現(xiàn)多目標(biāo)跟蹤。實(shí)驗(yàn)結(jié)果 表明,設(shè)計(jì)與開(kāi)發(fā)的粒子濾波IP核調(diào)用方便,不僅保護(hù)了設(shè) 計(jì)者的知識(shí)產(chǎn)權(quán),且跟蹤性能穩(wěn)定。
本設(shè)計(jì)采用友晶科技的DE2-115開(kāi)發(fā)板,其板載的Altera 公司Cyclone IV芯片資源豐富,滿足視頻處理的需要,片外 的SDRAM為圖像緩存提供保障,并提供了與攝像頭相連的 BNC接口,以及與顯示器相連的VGA接口。
2 功能描述
嵌入式多目標(biāo)跟蹤系統(tǒng)如圖1所示。CCD攝像頭采集模 擬視頻信號(hào),DE2-115開(kāi)發(fā)板對(duì)采集到的信號(hào)進(jìn)行圖像格式 轉(zhuǎn)換與多個(gè)運(yùn)動(dòng)目標(biāo)的檢測(cè)、選擇與跟蹤,將處理過(guò)的視頻 信號(hào)輸出到VGA顯示器上。
2.1 視頻信號(hào)采集
FPGA對(duì)ADV7180進(jìn)行IIC總線配置,ADV7180將CCD攝像頭輸入的PAL制式模擬視頻信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)。數(shù)字視
頻信號(hào)輸入FPGA進(jìn)行ITU656解碼,將解碼后的奇場(chǎng)與偶場(chǎng) 數(shù)據(jù)緩存在SDRAM中,通過(guò)SDRAM的讀寫控制,輸出奇偶 場(chǎng)合并的整幀圖像。再將其進(jìn)行格式轉(zhuǎn)換,輸出符合VGA顯 示要求的RGB信號(hào),并構(gòu)造VGA行同步與場(chǎng)同步控制信號(hào)。
2.2 運(yùn)動(dòng)目標(biāo)自動(dòng)檢測(cè)
在邊緣檢測(cè)的基礎(chǔ)上,通過(guò)幀間差分,鎖定剛進(jìn)入畫 面的運(yùn)動(dòng)物體目標(biāo),為后面的跟蹤提供物體的中心位置和輪 廓大小等基本信息。
2.3 運(yùn)動(dòng)目標(biāo)選擇
圖4 運(yùn)動(dòng)目標(biāo)檢測(cè)框
圖5 Sobel卷積因子
圖6 腐蝕(膨脹)示意圖
紅外遙控器向DE2-115開(kāi)發(fā)板上的IR接收器發(fā)送遙控掃碼信號(hào)。FPGA解碼掃描信號(hào),控制每個(gè)目標(biāo)選擇框的上下左右移動(dòng)、大小改變與跟蹤狀態(tài)的開(kāi)始與結(jié)束。
2.4 多目標(biāo)跟蹤
同時(shí)跟蹤多個(gè)目標(biāo),判斷目標(biāo)的跟蹤與丟失狀態(tài),目 標(biāo)丟失后再次找回。當(dāng)目標(biāo)在畫面中運(yùn)動(dòng)時(shí),多目標(biāo)跟蹤系 統(tǒng)能準(zhǔn)確穩(wěn)定地跟蹤目標(biāo),屏幕顯示Tracking字幕。當(dāng)目標(biāo) 從畫面中離開(kāi),屏幕顯示Lost字幕。當(dāng)目標(biāo)從畫面中任意位 置再次出現(xiàn)時(shí),系統(tǒng)找回運(yùn)動(dòng)目標(biāo),屏幕顯示Tracking。
3 性能參數(shù)
3.1 系統(tǒng)參數(shù): 目標(biāo)個(gè)數(shù):2個(gè); 原始圖像大?。?40*480; 目標(biāo)跟蹤區(qū)域:640*480; 每個(gè)目標(biāo)使用粒子個(gè)數(shù):64個(gè)。
運(yùn)動(dòng)目標(biāo)在采集到的視頻圖像640*480區(qū)域內(nèi)移動(dòng)時(shí),多目標(biāo)跟蹤系統(tǒng)能準(zhǔn)確定位目標(biāo)。幀間差分算法中的圖像數(shù)據(jù)緩存,與粒子濾波算法中粒子的直方圖統(tǒng)計(jì)均需占用 FPG A的片內(nèi)R AM。因此,在保證檢測(cè)與跟蹤效果的前提 下,系統(tǒng)可同時(shí)跟蹤兩個(gè)目標(biāo),每個(gè)目標(biāo)使用64個(gè)粒子。在 FPGA片內(nèi)RAM允許的情況下,利用FPGA的并行運(yùn)算機(jī)制 與模塊可復(fù)用性強(qiáng)的特點(diǎn),可以增加目標(biāo)個(gè)數(shù)與粒子個(gè)數(shù)。
3.2 FPGA資源使用情況如圖2所示
4 設(shè)計(jì)結(jié)構(gòu)
如圖3所示,CCD攝像頭輸 入模擬信號(hào), 通過(guò)I IC總線配置 的 A D V 7 1 8 0 做 模 數(shù) 轉(zhuǎn) 換 , 數(shù) 據(jù) 經(jīng)過(guò)ITU656解碼存入SDR AM緩 存 , 再 經(jīng) 過(guò) 格 式 轉(zhuǎn) 換 成 R G B 圖 像。對(duì)自動(dòng)檢測(cè)或者紅外遙控器 手 動(dòng) 選 擇 的 目 標(biāo) 進(jìn) 行 粒 子 濾 波 算 法 處 理 后 , 將 跟 蹤 結(jié) 果 送 入 ADV7123,經(jīng)過(guò)數(shù)模轉(zhuǎn)換后顯示 在VGA顯示器上。
5 設(shè)計(jì)方法
5.1 運(yùn)動(dòng)目標(biāo)檢測(cè)
圖4為運(yùn)動(dòng)目標(biāo)檢測(cè)的框圖。RGB圖像轉(zhuǎn)灰度圖后進(jìn)行 邊緣檢測(cè),再做幀間差分,通過(guò)腐蝕和膨脹圖像形態(tài)學(xué)處理 后,檢測(cè)運(yùn)動(dòng)目標(biāo)的位置和大小。
Sobel算法是一種常用的邊緣檢測(cè)算法。首先利用經(jīng)典 的RGB轉(zhuǎn)灰度值公式把圖像轉(zhuǎn)變成灰度圖。圖5是Sobel卷積 因子,Gx和Gy分別代表橫向和縱向的3x3矩陣,與圖像作平 面卷積后即可得出橫向和縱向的灰度差分。在FPGA上,為 了提高運(yùn)算效率,直接把兩個(gè)差分值相加得到灰度梯度G。 當(dāng)G大于閾值時(shí),則認(rèn)為該點(diǎn)是邊緣點(diǎn)。
圖像經(jīng)過(guò)邊緣檢測(cè)后,再進(jìn)行幀間差分。幀間差分是 一種常用的靜態(tài)背景下運(yùn)動(dòng)目標(biāo)的檢測(cè)方法,通過(guò)比較相鄰 兩幀圖像的場(chǎng)景變化得到運(yùn)動(dòng)目標(biāo)。為了檢測(cè)剛進(jìn)入畫面的 目標(biāo),并節(jié)省FPGA的片內(nèi)存儲(chǔ)資源,本設(shè)計(jì)僅在圖像周邊 區(qū)域內(nèi)進(jìn)行差分運(yùn)算,且對(duì)檢測(cè)到的運(yùn)動(dòng)像素點(diǎn)進(jìn)行標(biāo)記。
(未完待續(xù))
評(píng)論