盛仲飆
摘要:智能視頻內(nèi)容分析系統(tǒng)已經(jīng)在許多領(lǐng)域得到了廣泛的應(yīng)用,已經(jīng)成為智能化處理的一個(gè)熱點(diǎn)。該系統(tǒng)的主要任務(wù)是對(duì)于一段給定的視頻,檢測(cè)出其中的運(yùn)動(dòng)物體,再從眾多的運(yùn)動(dòng)物體中識(shí)別出滿足特定要求的物體,最后完成對(duì)識(shí)別出的運(yùn)動(dòng)物體的跟蹤。針對(duì)背景減去法和幀差法的缺點(diǎn),采用背景減去法與幀差法相結(jié)合的方法進(jìn)行目標(biāo)檢測(cè);采用基于kalman濾波器的Camshift跟蹤算法進(jìn)行跟蹤。該系統(tǒng)有效地提高了跟蹤的準(zhǔn)確度和運(yùn)行速度,真正實(shí)現(xiàn)視頻監(jiān)控的智能化。
關(guān)鍵詞:運(yùn)動(dòng)目標(biāo)檢測(cè);運(yùn)動(dòng)目標(biāo)識(shí)別;Camshift算法;kalman濾波器
中圖分類號(hào):TP311? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)33-0083-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Design and Implementation of Intelligent Video Content Analysis System
SHENG Zhong-biao
(School of Computer Science and Technology, Weinan Normal University, Weinan 714019, China)
Abstract: Intelligent video content analysis system has been widely used in many fields and has become a focus in the intelligent processing. The main task of the system is to detect the moving objects in a given video, and then to identify to objects that meet the specific requirements from a number of moving objects, and finally to complete the tracking of the identified moving objects. Aiming at the shortcomings of background subtraction and frame difference method, background subtraction and frame difference method are combined to detect the target. The system adopts Camshift tracking algorithm based on Kalman filter for tracking. The system improves the tracking accuracy and running speed effectively, and realizes the intelligentization of video surveillance.
Key words: moving target detection; moving target tracking; Camshift algorithm; kalman filter
1 前言
伴隨著人們安全意識(shí)的不斷提高,攝像頭等視頻采集設(shè)備數(shù)量不斷增加,人們對(duì)視頻處理的需求也越來越高。生活中,視頻監(jiān)控?zé)o處不在,在交通、銀行、生產(chǎn)生活、公共安全等各個(gè)領(lǐng)域都得到了廣泛的應(yīng)用,視頻監(jiān)控已經(jīng)成為安全防護(hù)中不可或缺的重要組成部分[1]。然而,目前的視頻監(jiān)控平臺(tái)并不能實(shí)現(xiàn)真正意義上的監(jiān)控,只是做到了對(duì)當(dāng)時(shí)場(chǎng)景的錄制以及視頻的存儲(chǔ)。面對(duì)海量的視頻數(shù)據(jù),要想從中找到有價(jià)值的信息將會(huì)消耗大量的人力、物力與財(cái)力。
本文所研究內(nèi)容是對(duì)于一段給定的視頻,檢測(cè)出其中的運(yùn)動(dòng)物體,然后從眾多的運(yùn)動(dòng)物體中識(shí)別出滿足特定要求的物體,最后實(shí)現(xiàn)對(duì)該物體的跟蹤。從而實(shí)現(xiàn)視頻監(jiān)控的真正智能化。
2 系統(tǒng)概要設(shè)計(jì)
首先對(duì)從視頻中提取的每一幀圖像進(jìn)行預(yù)處理,其次,利用背景減去法和幀差法相結(jié)合的方法檢測(cè)出視頻中的運(yùn)動(dòng)物體,然后,利用基于顏色的識(shí)別與基于模板的識(shí)別這兩種方法從眾多的運(yùn)動(dòng)物體中篩選出特定顏色的車,最后利用基于kalman濾波器的Camshift跟蹤算法完成對(duì)識(shí)別出來的車進(jìn)行跟蹤[2]。
(1)圖像預(yù)處理模塊主要是對(duì)視頻序列的每一幀圖像進(jìn)行一些處理,為后續(xù)工作做鋪墊;
(2)運(yùn)動(dòng)目標(biāo)檢測(cè)模塊主要是檢測(cè)出視頻中運(yùn)動(dòng)的人、車、動(dòng)物等;
(3)運(yùn)動(dòng)目標(biāo)跟蹤模塊主要是實(shí)現(xiàn)對(duì)檢測(cè)并識(shí)別出來的特定顏色的車的跟蹤;
(4)運(yùn)動(dòng)目標(biāo)識(shí)別模塊主要是從上一步檢測(cè)到的眾多運(yùn)動(dòng)目標(biāo)中識(shí)別出特定顏色的車。
3 系統(tǒng)詳細(xì)設(shè)計(jì)
3.1 圖像預(yù)處理模塊
該模塊主要用到了圖像灰度化、圖像濾波、圖像二值化、形態(tài)學(xué)濾波等方法。
(1)圖像灰度化
去除彩色圖像中的彩色信息,使圖像只含有亮度信息?;叶葓D像包含的信息量較少,計(jì)算方便簡單,更容易實(shí)現(xiàn)實(shí)時(shí)處理。具體函數(shù):cvCvtColor()。
(2)圖像去噪
圖像去噪是為了減少圖像上的噪聲或者失真。具體函數(shù):cvSmooth()。
(3)圖像二值化
采用閾值法,即:設(shè)置一個(gè)合適的閾值,并用此閾值將圖像分為背景和目標(biāo)兩部分,在實(shí)際中,常用255表示背景,用0表示目標(biāo)。具體函數(shù):cvAdaptiveThreshold()。
(4)形態(tài)學(xué)處理
采用函數(shù):cvMorphologyEx()對(duì)圖像進(jìn)行形態(tài)學(xué)處理。
3.2 運(yùn)動(dòng)目標(biāo)檢測(cè)模塊設(shè)計(jì)
3.2.1背景減去法
首先,可通過均值法來獲得背景模型,其次,計(jì)算當(dāng)前圖像與背景圖像的差值,設(shè)置合適閾值,將差值與該閾值做比較,如果差值大于設(shè)定的閾值,則認(rèn)為是前景點(diǎn),否則認(rèn)為是背景點(diǎn),最后利用公式(1)更新背景模型[3]。
[backk+1x,y=1-a×backkx,y+imagek(x,y)]? (1)
3.2.2幀差法
幀差法就是將相鄰兩幀圖像對(duì)應(yīng)的像素點(diǎn)進(jìn)行減法運(yùn)算,設(shè)置合適的閾值,并將得到的差值與該閾值做比較,如果差值大于設(shè)定的閾值,則認(rèn)為是前景點(diǎn),否則認(rèn)為是背景點(diǎn)[4]。
3.2.3背景減去法與幀差法相結(jié)合的方法
該運(yùn)動(dòng)目標(biāo)檢測(cè)算法的具體實(shí)現(xiàn)過程:首先利用前20幀圖像通過均值法得到背景模型,之后的每一幀圖像減去背景圖像,從而獲得前景圖像fore_image1,并且利用當(dāng)前幀更新背景模型。其次,將當(dāng)前幀與前一幀相減得到前景圖像fore_image2, 最后將前景圖像fore_image1與fore_image2進(jìn)行與操作,得到最終的前景圖像。利用cvfindcontours()函數(shù)提取每個(gè)運(yùn)動(dòng)物體的輪廓。
3.3 運(yùn)動(dòng)目標(biāo)識(shí)別模塊設(shè)計(jì)
3.3.1 基于顏色的識(shí)別
首先將源圖像中需要判斷顏色的圖像塊轉(zhuǎn)化為HSV圖像,這樣可以避免光照等因素的干擾。其次,將該HSV圖像分解為色調(diào)(H),飽和度(S),亮度(V)這三個(gè)通道。最后判斷圖像塊中每個(gè)點(diǎn)的這三個(gè)通道的值是否在指定顏色所對(duì)應(yīng)的范圍之內(nèi),如果有50%以上的點(diǎn)在范圍之內(nèi),則認(rèn)為圖像塊為指定顏色。
3.3.2 基于模板的識(shí)別[5]
整個(gè)過程分為三步:創(chuàng)建樣本、訓(xùn)練Haar分類器、利用Haar分類器判斷是否為車。
(1)創(chuàng)建樣本
樣本包含正樣本和負(fù)樣本,其中正樣本為不同車在不同角度拍攝的照片,負(fù)樣本為周圍背景環(huán)境的照片且不能包含車的特征。所有樣本被歸一化為20×20。
v為正樣本創(chuàng)建描述文件,命令如下:dir \b >positive.txt
再將bmp改為bmp 1 0 0 20 20。
利用OpenCV自帶的opencv_createsamples.exe為正樣本創(chuàng)建向量文件,命令如下:opencv_createsamples.exe –info postive.txt –vec postive.vec -num 2000 -w 20 -h 20
v 為負(fù)樣本創(chuàng)建集合文件
命令如下:dir \b >negative.txt
(2)訓(xùn)練Haar分類器
利用OpenCV自帶的opencv_haartraining.exe來訓(xùn)練Haar分類器。命令為:opencv_haartraining.exe –data cascade -vec postive.vec -bg negative.txt -npos 2000 -nneg 6000 -w 20 -h 20 -mem 1000 -nstages 18 –mode? ALL –nonsym。
(3)利用Haar分類器判斷是否為車
首先使用函數(shù)cvLoad()加載已經(jīng)訓(xùn)練好的分類器mode.xml,其次對(duì)圖像進(jìn)行直方圖均衡化并歸一化到同樣大小,然后使用函數(shù) cvHaarDetectObjects()來尋找與訓(xùn)練目標(biāo)相似的物體(如:本系統(tǒng)中的車),如果該函數(shù)返回的CvSeq序列的長度不為0,則認(rèn)為有車存在,否則認(rèn)為沒有車存在。
3.4 運(yùn)動(dòng)目標(biāo)跟蹤模塊設(shè)計(jì)
3.4.1 Camshift算法
Camshift算法的基本原理是利用目標(biāo)的顏色直方圖來尋找目標(biāo)在圖像序列中出現(xiàn)的位置和大小。在搜索之前,利用目標(biāo)的當(dāng)前位置和大小來初始化搜索窗口,計(jì)算搜索窗口的質(zhì)心,并將窗口的中心移到質(zhì)心處,不斷迭代,直至窗口的中心與計(jì)算得到的質(zhì)心的差值小于一定閾值,此時(shí)就找到目標(biāo)在當(dāng)前圖像中的位置和大小,重復(fù)以上過程實(shí)現(xiàn)目標(biāo)的連續(xù)跟蹤[6]。
3.4.2 基于kalman濾波器的跟蹤算法
kalman 濾波器可以根據(jù)目標(biāo)上一次出現(xiàn)的位置以及跟蹤模型精確地預(yù)測(cè)目標(biāo)將要出現(xiàn)的位置,主要分為兩個(gè)階段[7][8]:
(1)預(yù)測(cè)階段,即:用前面得到的信息來修正跟蹤模型,并預(yù)測(cè)出目標(biāo)在下一幀圖像中將要出現(xiàn)的位置
(2)校正階段,即:利用匹配法得到目標(biāo)位置的測(cè)量值,并與由上一次測(cè)量值預(yù)測(cè)出的預(yù)測(cè)值進(jìn)行調(diào)整。
3.4.3 基于kalman濾波器的Camshift跟蹤算法
基于kalman濾波器的Camshift跟蹤算法的基本過程如下:
(1)假設(shè)在第i幀圖像中檢測(cè)并識(shí)別出特定顏色的車,利用該車的當(dāng)前位置來初始化kalman濾波器,并為該車建立運(yùn)動(dòng)模型。
(2)利用kalman濾波器根據(jù)該車在第i幀圖像中的位置預(yù)測(cè)出該車在下一幀圖像(即第i+1幀圖像)中可能出現(xiàn)的位置,具體函數(shù)為cvKalmanPredict()。
(3)在第i+1幀圖像,根據(jù)該車的預(yù)測(cè)位置來設(shè)置搜索范圍以及搜索窗口,利用Camshift算法在該指定搜索范圍內(nèi)查找該特定顏色的車是否出現(xiàn)以及出現(xiàn)的具體位置。
(4)利用步驟3得到的該車的實(shí)際位置來糾正kalman濾波器,具體函數(shù)為cvKalmanCorrect()。
(5)重復(fù)上述步驟2、3、4直到視頻結(jié)束。
3.5 用戶界面設(shè)計(jì)
4 系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)所采用的環(huán)境是VS2013、OpenCV、QT5.3。配置OpenCV庫的目的是在程序中調(diào)用其中的圖像處理函數(shù)等。
(1)選擇“選擇視頻”按鈕,選擇要分析處理的視頻。
(2)在特征欄選擇要檢測(cè)跟蹤的車的顏色,在功能選擇區(qū)中點(diǎn)擊開始跟蹤按鈕后,視頻將會(huì)開始播放,此時(shí)信息欄的備注信息將顯示“the video is played”,表示視頻正在播放中;當(dāng)點(diǎn)擊重新開始播放按鈕后,視頻將會(huì)從頭開始播放。界面如圖3。
(3)在視頻播放過程中,進(jìn)行運(yùn)動(dòng)目標(biāo)檢測(cè),并判斷運(yùn)動(dòng)的物體是否是特定顏色的車。在某一時(shí)刻檢測(cè)并識(shí)別出視頻中要跟蹤的特定顏色的車后,開始跟蹤該車,并用紅色方框?qū)⒃撥嚇?biāo)記出來,且紅色方框的大小會(huì)隨著該車大小的改變而發(fā)生改變。例如:當(dāng)車輛開向遠(yuǎn)方時(shí),車輛在視頻中將會(huì)逐漸變小,那么紅色方框也會(huì)隨著逐漸變小。此時(shí)信息欄的備注信息將顯示“Tracking target appears !”,表示紅色的車已經(jīng)被檢測(cè)并識(shí)別出來,并且處于跟蹤狀態(tài)中。界面如圖4:
5 結(jié)論
智能視頻內(nèi)容分析系統(tǒng)的主要任務(wù)是對(duì)于給定的一段視頻,檢測(cè)出其中的運(yùn)動(dòng)物體,并從眾多的運(yùn)動(dòng)物體中識(shí)別出紅色車,最終實(shí)現(xiàn)對(duì)紅色車的跟蹤。本系統(tǒng)達(dá)到了預(yù)期的效果,并具有較好的魯棒性與準(zhǔn)確度。
參考文獻(xiàn):
[1] 潘晶晶.網(wǎng)絡(luò)視頻實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.
[2] 趙光磊.視頻監(jiān)控中運(yùn)動(dòng)車輛的檢測(cè)研究[D].石家莊:河北科技大學(xué),2014.
[3] 喻旭勇.基于視頻的車輛檢測(cè)與跟蹤算法研究[D].上海:東華大學(xué),2013.
[4] 嚴(yán)馳.視頻運(yùn)動(dòng)目標(biāo)檢測(cè)算法綜述[J].科教導(dǎo)刊-電子版(中旬),2015(10):130.
[5] 詹群峰.基于OpenCV的視頻道路車輛檢測(cè)與跟蹤[D].廈門:廈門大學(xué),2009.
[6] 陳藝.改進(jìn)Camshift算法的多行人目標(biāo)跟蹤方法[J].導(dǎo)航定位學(xué)報(bào),2019,7(4):30-36.
[7] 梁娟,項(xiàng)俊,侯建華.基于Camshift和Kalman濾波的自動(dòng)跟蹤算法[J].微型機(jī)與應(yīng)用,2011,30(24):28-31.
[8] 徐磊.Camshift與Kalman濾波相結(jié)合的跟蹤技術(shù)研究[D].南京:南京理工大學(xué),2012.
【通聯(lián)編輯:梁書】