嵌入式多目標(biāo)跟蹤(下)
接上篇
差分后直接得到的圖像包含噪點,會影響真實目標(biāo)的 判斷,在本設(shè)計中對差分圖像經(jīng)過了腐蝕和膨脹兩個形態(tài)學(xué) 處理。腐蝕和膨脹均為3x3大小的檢測窗口,按順序掃描差 分圖像,示意圖如圖6。腐蝕的目的是去除孤立的運動像素 點或塊,在3x3畫面中,檢測到任何一個沒有被標(biāo)記的像素 點,則全部去掉標(biāo)記。膨脹是為了增強(qiáng)運動目標(biāo)的連通性, 與腐蝕相反,檢測到任意一個標(biāo)記點,則全部標(biāo)記。
在圖像周邊檢測區(qū)域內(nèi),設(shè)置等間隔的掃描線,只有 運動的物體會被掃描到,并根據(jù)掃描線的數(shù)量和掃描到的運 動像素點位置,確定目標(biāo)進(jìn)入畫面的位置和輪廓大小,同時 給出發(fā)現(xiàn)目標(biāo)的標(biāo)志信號,啟動下一級粒子濾波算法對已有 目標(biāo)的跟蹤。
5.2 目標(biāo)選擇
紅外遙控信號如圖7所示。 按下紅外遙控器按鍵后, 紅外遙控器向DE2-115板上的IR接收器發(fā)送紅外遙控信號。 FPGA對IR接收器收到的信號進(jìn)行解碼處理。默認(rèn)狀態(tài)為空 閑狀態(tài),當(dāng)IR DATA在空閑狀態(tài),出現(xiàn)230000個低電平,進(jìn) 入Guidance狀態(tài)。Guidance狀態(tài)下,出現(xiàn)210000個低電平, 進(jìn)入數(shù)據(jù)解碼狀態(tài)。當(dāng)檢測到低電平時,計數(shù)清零;檢測到 高電平時開始計數(shù),一旦計數(shù)到20000,則將比特位數(shù)加1。 高電平數(shù)若超過41500,則判斷該比特位是1。反之,比特位 為0。比特位數(shù)共32位,高八位是次八位的反碼,用于檢驗
圖7 紅外遙控
圖8 基于粒子濾波的多目標(biāo)跟蹤硬件結(jié)構(gòu)設(shè)計
數(shù)據(jù)的正確性。
5.3 基于粒子濾波的多目標(biāo)跟蹤算法
基于粒子濾波的多目標(biāo)跟蹤硬件結(jié)構(gòu)設(shè)計如圖8所示。 首先,介紹對于單一運動目標(biāo)通過粒子濾波算法,實現(xiàn)運動 目標(biāo)跟蹤的流程。
初始化,將計算目標(biāo)與各粒子的顏色直方圖的RAM清 零。進(jìn)入自動檢測模塊,一旦檢測到運動物體,將物體的中心位置與目標(biāo)框的長寬輸入到目標(biāo)顏色直方圖統(tǒng)計模塊。
將RGB信號轉(zhuǎn)化為HSV顏色空間中的H分量,以H分量 為目標(biāo)的特征,統(tǒng)計目標(biāo)H分量出現(xiàn)的次數(shù),生成目標(biāo)顏色 直方圖統(tǒng)計模塊。H分量在0-360間變化,將H分量的值作為 RAM地址,每出現(xiàn)一個H分量,將其對應(yīng)的RAM地址中的內(nèi) 容讀出,然后加一,再寫入該地址,完成第一幀目標(biāo)H分量 直方圖統(tǒng)計。第 一 幀 統(tǒng) 計 完 目 標(biāo) 直 方 圖 后 , 在 目 標(biāo) 周 圍 撒 隨 機(jī) 粒 子。第二幀統(tǒng)計隨機(jī)粒子直方圖,統(tǒng)計完成后,將每個粒子 與目標(biāo)粒子的對應(yīng)地址內(nèi)的數(shù)據(jù)相乘后開根號再相加,獲得 隨機(jī)粒子的權(quán)重。找到權(quán)重最大的粒子,輸出該粒子的中心 點,作為目標(biāo)中心點。
設(shè)置權(quán)重閾值,將每一個粒子的權(quán)重與閾值比較,若 小于該閾值,說明該粒子是目標(biāo)的可能性非常小,下一幀的 隨機(jī)粒子預(yù)測中刪除該粒子,并將上述的最大權(quán)重粒子的中 心位置賦給該隨機(jī)粒子,這一過程稱為粒子重采樣。同時, 統(tǒng)計需要重采樣的粒子個數(shù),若需要重采樣的粒子大于所設(shè) 置的閾值,則說明目標(biāo)已丟失,跟蹤框消失,字幕提示Lost 字樣。反之,重采樣粒子小于閾值,系統(tǒng)判定目標(biāo)仍在畫面 中,將權(quán)重最大的粒子中心作為跟蹤框中心,再根據(jù)自動 檢測輸出的跟蹤框長寬,畫出跟蹤框,字幕顯示Tracking字 樣。設(shè)置的重采樣粒子閾值越大,系統(tǒng)判斷目標(biāo)丟失的可能 性越大。當(dāng)目標(biāo)處于跟蹤狀態(tài)時,在目標(biāo)周圍撒隨機(jī)粒子; 當(dāng)目標(biāo)處于丟失狀態(tài)時,全屏撒隨機(jī)粒子,等待目標(biāo)再次從 畫面中任意位置出現(xiàn)。
根據(jù)所設(shè)計的粒子濾波模塊導(dǎo)出QXP文件,生成對應(yīng) 的IP核。在工程中添加QXP文件,通過.v文件將QXP文件中 輸入輸出端與工程中的模塊連接起來,實現(xiàn)IP核的調(diào)用。編 譯后生成的網(wǎng)表里,該模塊只顯示輸入輸出管腳,而無具體 的數(shù)字時序邏輯電路實現(xiàn),但其能完成原先設(shè)計的數(shù)字電路 功能。系統(tǒng)中的其它運動目標(biāo)可調(diào)用設(shè)計生成的粒子濾波 模塊,實現(xiàn)基于粒子濾波的多目標(biāo)跟蹤硬件結(jié)構(gòu)設(shè)計。在 FPGA片內(nèi)資源允許的情況下,可復(fù)用多個粒子濾波模塊, 實現(xiàn)任意數(shù)量的目標(biāo)跟蹤。
6 設(shè)計特點
6.1 基于邊緣檢測與幀間差分的運動目標(biāo)檢測
使用邊緣檢測保留物體輪廓,減少圖像原始信息,減 少光照和陰影的干擾,并通過腐蝕和膨脹形態(tài)學(xué)處理,進(jìn)一步提高幀間差分對運動目標(biāo)判斷的準(zhǔn)確性。幀間差分法計算
簡單,適合在FPGA上實現(xiàn)。由于本設(shè)計中只需要檢測剛進(jìn) 入畫面的目標(biāo),所以幀間差分區(qū)域限定在畫面周邊區(qū)域,節(jié) 約FPGA的片內(nèi)資源。
6.2 基于粒子濾波的改進(jìn)目標(biāo)跟蹤算法
在FPGA上實現(xiàn)粒子濾波算法,增加了粒子直方圖權(quán)重 閾值比較與重采樣粒子個數(shù)閾值比較。通過閾值比較,可以 判斷目標(biāo)跟蹤與丟失狀態(tài)。當(dāng)目標(biāo)正在跟蹤時,只需在目標(biāo) 周圍產(chǎn)生隨機(jī)粒子;當(dāng)目標(biāo)丟失時,在全屏范圍內(nèi)產(chǎn)生隨機(jī) 粒子,若目標(biāo)從屏幕中任意位置再次出現(xiàn)時,可以快速捕捉 到目標(biāo)所在位置,繼續(xù)跟蹤目標(biāo)。
6.3 目標(biāo)跟蹤模塊的可復(fù)用性
生成基于粒子濾波的目標(biāo)跟蹤算法的IP核,并對每一 個目標(biāo)都調(diào)用該IP核,實現(xiàn)目標(biāo)跟蹤模塊的復(fù)用。IP核的生 成與調(diào)用,不僅體現(xiàn)了目標(biāo)跟蹤模塊的可復(fù)用性,而且體現(xiàn) 了目標(biāo)數(shù)目的可擴(kuò)展性。只要在FPGA片內(nèi)資源允許的情況 下,可以增加需要跟蹤的目標(biāo)的數(shù)目。借助FPGA的并行運 算機(jī)制,對多個目標(biāo)同時進(jìn)行粒子濾波處理,實現(xiàn)多目標(biāo)跟 蹤。
6.4 友好的人機(jī)交互界面
在VGA顯示器上顯示多目標(biāo)檢測與跟蹤結(jié)果,使用不 同顏色的跟蹤框與字幕,區(qū)分不同目標(biāo)。將字幕與各目標(biāo)當(dāng) 前的跟蹤狀態(tài)同步,實時顯示各目標(biāo)的跟蹤狀態(tài)。
7 總結(jié)
友晶科技的DE2-115開發(fā)板,提供了視頻輸入輸出接 口,板載的Altera公司Cyclone IV系列FPG A芯片與片外的 SDRAM為視頻處理提供了強(qiáng)大的處理能力和存儲空間,是 非常出色的FPGA多媒體教學(xué)與開發(fā)平臺。
通過四個月的學(xué)習(xí),不僅研究了運動目標(biāo)檢測與多目 標(biāo)跟蹤的理論知識,而且將其應(yīng)用到FPGA。加深了對FPGA 邏輯、時序、實時操作、并行機(jī)制等概念的理解,并通過實 踐掌握了狀態(tài)機(jī)、流水線操作、FPGA IP核使用、設(shè)計、調(diào) 用與Signal Tap II的使用。
在完成設(shè)計的過程中,通過查閱文獻(xiàn)、與組員以及指 導(dǎo)老師積極討論與溝通,解決了許多技術(shù)難題,培養(yǎng)了自學(xué) 精神、動手能力與團(tuán)隊合作意識。
最后,再次感謝Altera與友晶科技提供了這次FPGA學(xué)
習(xí)、展示與交流的機(jī)會。
評論