陶冶 楊喜娟
摘 要:視頻追蹤技術(shù)可有效保障人民與社會(huì)的財(cái)產(chǎn)安全,并大大降低犯罪率,因此以C語言為基礎(chǔ),利用Mean Shift算法設(shè)計(jì)了視頻中特定目標(biāo)追蹤系統(tǒng)。通過特征點(diǎn)的選取匹配到匹配度最高的模板并更新,可在一段運(yùn)動(dòng)視頻序列中跟蹤指定車輛、行人或其他移動(dòng)物品,并在目標(biāo)移動(dòng)過程中鎖定這一目標(biāo),避免丟失跟蹤狀態(tài),直至跟蹤目標(biāo)在此段運(yùn)動(dòng)視頻序列中消失。經(jīng)驗(yàn)證,系統(tǒng)具有較高的準(zhǔn)確度,推廣前景廣闊。
關(guān)鍵詞:視頻目標(biāo)追蹤;Mean Shift算法;特征點(diǎn)選取;模板匹配;C語言;概率密度
中圖分類號:TP39文獻(xiàn)標(biāo)識(shí)碼:A文章編號:2095-1302(2019)09-00-03
0 引 言
自21世紀(jì)以來,全球進(jìn)入信息時(shí)代,而信息安全以及人身財(cái)產(chǎn)一直是大多數(shù)人關(guān)注的對象,行車記錄儀、航拍無人機(jī)、手機(jī)等可以記錄視頻的科技產(chǎn)品已經(jīng)融入我們的生活。這些視頻信息主要用于安防和保障公民的人身財(cái)產(chǎn)安全。若單純依靠視頻信息無法快速、直接處理問題,但在一段監(jiān)控視頻中,追蹤信息能夠更加直觀地將視頻信息傳遞給人們。
視頻運(yùn)動(dòng)目標(biāo)的追蹤程序通過Mean Shift算法實(shí)現(xiàn)視頻中運(yùn)動(dòng)目標(biāo)的追蹤[1],Mean Shift算法是迭代算法,每次迭代特征點(diǎn)的選取模板都會(huì)移動(dòng)到概率密度大的方向,因此在概率密度圖上使用Mean Shift算法。
1 Mean Shift算法原理
Mean Shift算法利用概率密度的梯度尋找局部最優(yōu)的模板圖像。Mean Shift算法輸入圖像范圍,然后迭代,直到達(dá)到追蹤目標(biāo)的要求為止。
運(yùn)動(dòng)目標(biāo)的追蹤就是觀察者想從視頻信息中追蹤的目標(biāo),程序會(huì)鎖定運(yùn)動(dòng)目標(biāo)區(qū)域,實(shí)現(xiàn)目標(biāo)追蹤[2]。給定追蹤運(yùn)動(dòng)目標(biāo)的過程:在圖像區(qū)域中設(shè)置一個(gè)ROI,將得到的ROI傳送至程序,由程序在下一幀圖像中尋找移動(dòng)狀態(tài)下的ROI。在計(jì)算機(jī)視覺中采用如下解決方法。
(1)描述追蹤目標(biāo)區(qū)域轉(zhuǎn)換為顏色HSV空間(HSV為格式圖片的各通道取值范圍,H:0~360;S:0~1;V:0~1。H通道時(shí)保存的色調(diào)中每一個(gè)取值代表一個(gè)色調(diào),但分布不均勻;S通道時(shí),當(dāng)S小于0.1可以算為灰度圖像,大于0.65時(shí)亮度較高;V通道時(shí),當(dāng)V小于0.15,則在視覺上算黑色,大于0.9時(shí),在視覺上算白色)。
(2)得到H通道的分布直方圖,通過該相似函數(shù)的運(yùn)算發(fā)現(xiàn),相似函數(shù)值越大,算法找到的運(yùn)動(dòng)目標(biāo)區(qū)域和追蹤目標(biāo)區(qū)域越相似,所以對應(yīng)最大相似值的區(qū)域就是我們要追蹤的運(yùn)動(dòng)目標(biāo)[3]。此時(shí)需要用Mean Shift算法通過迭代得到有最大相似值區(qū)域,向兩個(gè)模型相比顏色變化最大的方向不斷移動(dòng)搜索窗口,直到最后兩次的移動(dòng)距離小于閾值(在自動(dòng)控制系統(tǒng)中,能夠產(chǎn)生一個(gè)可以校正動(dòng)作的最小輸入值),即找到需要追蹤的運(yùn)動(dòng)目標(biāo)的當(dāng)前幀位置,并將這一幀的位置作為下一幀的起始搜索窗口中心,然后重復(fù)該過程就可以實(shí)現(xiàn)目標(biāo)追蹤。在這個(gè)重復(fù)的過程中,每兩幀的間隔都會(huì)產(chǎn)生一個(gè)Mean Shift向量,但在整個(gè)過程中,所有的Mean Shift向量連起來就是需要追蹤的目標(biāo)運(yùn)動(dòng)路徑[4]。
Mean Shift算法流程如圖1所示。
1.1 基于Mean Shift算法視頻中的運(yùn)動(dòng)目標(biāo)追蹤程序
1.1.1 系統(tǒng)簡介
在一段正在運(yùn)動(dòng)的視頻中,提取到處于運(yùn)動(dòng)狀態(tài)中的目標(biāo)輪廓,達(dá)到追蹤被選中運(yùn)動(dòng)目標(biāo)(車輛、行人、物品等)的要求,直到目標(biāo)消失在視頻中或者有較大的干擾導(dǎo)致追蹤失敗。
1.1.2 系統(tǒng)的基本技術(shù)要求
輸入視頻,對運(yùn)動(dòng)物體進(jìn)行跟蹤,步驟如下:
(1)使用運(yùn)動(dòng)檢測算法將處在運(yùn)動(dòng)狀態(tài)下的物體與物體所處背景拆分;
(2)提取出運(yùn)動(dòng)狀態(tài)下目標(biāo)物體的輪廓,并從視頻幀數(shù)中獲取運(yùn)動(dòng)圖像的數(shù)據(jù)信息;
(3)對運(yùn)動(dòng)目標(biāo)所處的圖像范圍進(jìn)行反向投影,獲取此目標(biāo)所處圖像的反向投影圖;
(4)根據(jù)目標(biāo)所處圖像的反向投影圖和運(yùn)動(dòng)目標(biāo)的輪廓進(jìn)行Mean Shift算法迭代,由于信息圖像向重心移動(dòng),即向反向投影圖中概率密度大的地方移動(dòng),所以會(huì)移動(dòng)至運(yùn)動(dòng)目標(biāo)的真實(shí)位置[5];
(5)在得到下一幀信息圖像時(shí),用上一幀圖像信息輸出的窗口迭代即可。
1.2 Mean Shift算法跟蹤原理
Mean Shift算法從本質(zhì)上來說是一種核密度估計(jì)法,直方圖法可以從一組采樣數(shù)據(jù)中把信息數(shù)據(jù)的值域拆分成若干相等的區(qū)間,信息數(shù)據(jù)又可以按區(qū)間拆分成若干組,每組信息數(shù)據(jù)的個(gè)數(shù)與總信息數(shù)據(jù)的個(gè)數(shù)之比就是每個(gè)信息單元的概率值。核密度估計(jì)法的原理與直方圖法的原理相似,唯一的區(qū)別在于核密度估計(jì)法多了一個(gè)可以用來平滑數(shù)據(jù)信息的核函數(shù)。在應(yīng)用核函數(shù)估計(jì)法時(shí),只要在采樣信息數(shù)據(jù)足夠充分的前提下,此方法就可以收斂于任一密度函數(shù),即可對任意分布的信息數(shù)據(jù)進(jìn)行分析運(yùn)算,得到密度估計(jì)值[6]。
運(yùn)用Mean Shift算法對運(yùn)動(dòng)目標(biāo)進(jìn)行追蹤。首先要對被追蹤的運(yùn)動(dòng)目標(biāo)進(jìn)行初始化,這一過程可以通過鼠標(biāo)進(jìn)行手工選取,然后計(jì)算得出搜索窗口的直方圖,該搜索窗口為核函數(shù)加權(quán)下的搜索窗口,再用同樣的方法計(jì)算出每一幀對應(yīng)搜索窗口的直方圖分布[7],需要注意的是:我們選擇相似值最大的兩個(gè)相鄰幀數(shù)的模板來提高追蹤目標(biāo)的精確度。搜索窗口沿著概率密度函數(shù)密度增加最大的方向移動(dòng),最終得到下一幀運(yùn)動(dòng)目標(biāo)所處的真實(shí)位置。
Mean Shift算法的追蹤步驟如下:
(1)計(jì)算運(yùn)動(dòng)目標(biāo)所處模板的概率密度函數(shù);
(2)運(yùn)動(dòng)目標(biāo)通過估計(jì)方法得到核函數(shù)寬度窗口[8];
(3)初始化當(dāng)前幀運(yùn)動(dòng)目標(biāo)所處的真實(shí)位置,計(jì)算候選目標(biāo)所在模板;
(4)根據(jù)公式計(jì)算當(dāng)前窗口內(nèi)各點(diǎn)的權(quán)重值[9];
(5)計(jì)算目標(biāo)的新位置。
2 程序的實(shí)現(xiàn)
2.1 軟件的安裝與配置
下載安裝包VS 2015后,選擇安裝路徑并安裝,啟動(dòng)進(jìn)入其他配置界面,勾選C++開發(fā)設(shè)置,然后點(diǎn)擊“確定”啟動(dòng)。
下載好Open CV壓縮包解壓到自定義的安裝路徑下,安裝完成后為Open CV配置環(huán)境變量:PATH:D:\File Program\Open CV\build\x64\vc11\bin。系統(tǒng)在VS 2015中配置Open CV的環(huán)境。
(1)在文件選項(xiàng)中選擇并打開項(xiàng)目。
(2)在VS 2015的主界面點(diǎn)擊視圖與屬性管理器。
(3)選擇位于主界面左側(cè)的Debug|Win32文件,并右擊鼠標(biāo)右鍵選擇屬性進(jìn)行環(huán)境變量配置,如圖2所示。
(4)為程序添加包含目錄,在點(diǎn)擊進(jìn)入的屬性頁中,點(diǎn)擊“VC++目錄”,輸入Open CV build文件夾中的include文件路徑與include中兩個(gè)子文件夾的路徑,如圖3
所示。
(5)在頁面中的庫目錄中添加Open CV中build文件下x86中包含的vc11內(nèi)的lib文件路徑,如圖4所示。
(6)進(jìn)入鏈接庫,點(diǎn)擊“輸入”,在輸入中給附加依賴項(xiàng)添加環(huán)境變量。
2.2 程序的實(shí)現(xiàn)
從圖5中可以看出程序的運(yùn)行流程,通過手動(dòng)方式截取需要追蹤的目標(biāo)區(qū)域,利用圖像處理技術(shù)方便Mean Shift方法的計(jì)算,快速得到模板,之后重復(fù)計(jì)算方法,更新下一幀的模板位置。模板的更新隨著視頻幀數(shù)的走動(dòng)而變化,最終達(dá)到目標(biāo)追蹤的效果[10]。
3 系統(tǒng)使用說明及測試結(jié)果
3.1 系統(tǒng)使用說明
(1)將視頻暫停。
(2)采用手動(dòng)選取的方式使用鼠標(biāo)選定追蹤目標(biāo)區(qū)域。
(3)運(yùn)行視頻。
(4)觀察目標(biāo)區(qū)域的追蹤結(jié)果。
3.2 系統(tǒng)測試結(jié)果
系統(tǒng)針對跟蹤人和跟蹤車輛進(jìn)行測試,測試結(jié)果如圖6所示。
4 結(jié) 語
系統(tǒng)使用Mean Shift算法滿足追蹤需求。算法的本質(zhì)是迭代,因?yàn)樽粉櫟哪0逶谝曨l中一幀一幀走,所以需要重復(fù)計(jì)算,而為了更好地追蹤,則對圖片進(jìn)行反向投影圖和直方圖處理,更利于算法計(jì)算,利用VS.NET和OPEN CV搭建平臺(tái)運(yùn)行程序,在對特定人和車的跟蹤測試中實(shí)現(xiàn)目標(biāo)具有較高的準(zhǔn)確度,可研究推廣。
參 考 文 獻(xiàn)
[1]林杰.基于視頻監(jiān)控的實(shí)驗(yàn)室實(shí)時(shí)預(yù)警系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀器儀表,2019(3):70-74.
[2]王公儒.視頻監(jiān)控系統(tǒng)工程實(shí)用技術(shù)[M].北京:中國鐵道出版社,2018.
[3]蘇康友,陳家棟,王佳穎,等.基于S5P6818無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2019,9(3):25-26.
[4]張若楊,賈克斌,劉鵬宇.視頻監(jiān)控中私自攬客違法行為檢測[J].計(jì)算機(jī)應(yīng)用與軟件,2019(3):168-173.
[5]孫嫻.基于視頻監(jiān)控的異常行為檢測研究[D].南京:南京郵電大學(xué),2018.
[6]王愛麗,董寶田,孫遠(yuǎn)運(yùn),等.基于聯(lián)合多特征直方圖的Mean Shift行人跟蹤方法研究[J].鐵道學(xué)報(bào),2016(12):76-85.
[7]朱浩楠,許明敏,沈瑛.基于Mean Shift的多視頻車輛跟蹤研究
[J].計(jì)算機(jī)科學(xué),2018,45(6A):220-226.
[8] CL?MENT B,YANN B,BRUNO C,et al. Modelling camera viewing angle deviation to improve nearshore video monitoring? Coastal Engineering [Z]. 2019:99-106.
[9]余毅.一種基于物聯(lián)網(wǎng)的改進(jìn)型智能視頻監(jiān)控設(shè)備的設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2019,9(2):60-61.
[10]李穎,鄭明杰.視頻監(jiān)控圖像高速運(yùn)動(dòng)物體穩(wěn)定特征識(shí)別仿真
[J].計(jì)算機(jī)仿真,2018(12):342-345.