,,
(福建工程學院 信息科學與工程學院,福建 福州,350118)
隨著視頻監(jiān)控技術的發(fā)展,從最初需要人力監(jiān)控完成到現在可使用智能化監(jiān)控系統(tǒng)進行自動監(jiān)測。智能視頻監(jiān)控的優(yōu)點在于它幾乎不需要人為干預的情況下即可通過分析攝像頭采集的圖像,對靜態(tài)背景下動態(tài)物體進行識別,并能夠處理異常發(fā)生的情況[1]。視頻監(jiān)控系統(tǒng)可應用于普通場合上的倉庫管理中。
對于圖像序列或者視頻流,目前移動物體檢測算法主要有利用幀間關系進行目標檢測和利用單幀進行統(tǒng)計分析進行目標分類的兩大類[2]。傳統(tǒng)的視頻監(jiān)控系統(tǒng)中,對于監(jiān)測動態(tài)物體的主要算法有:幀差法、光流法、平均背景法、背景建模等;固定背景下的方法常見的有相減法和建模法[3]。Horn 和 Schunck[4]在 1981 年率先提出物體運動光流的計算方法,將物體的二維運動速度和灰度結合,通過光流的變化來檢測運動物體的運動速率,但其擁有明顯的缺點就是光流法必須假設檢測物體的亮度條件不變[2,4-6], 在倉庫管理等自動監(jiān)控場合中,很難做到此點,因此僅利用光流法將無法進行實時運算。而背景建模法能夠很好的避免以上缺點,其可應用在無需提前截取背景幀以及背景光照條件變化的場合,其主要有單高斯模型建模等[7]。硬件方面,普通的動態(tài)監(jiān)控系統(tǒng)大都直接調用opencv視覺庫進行運算,但難以適用嵌入式監(jiān)控的環(huán)境[1,8-9],鑒于以上的問題,在普通倉庫管理應用前提下,系統(tǒng)對比傳統(tǒng)動態(tài)物體檢測中幀差法等算法,采用高斯混合算法提取前景目標,再利用前景二值化圖像計算其輪廓特征,隨后為避免因噪聲等因素產生的誤差,系統(tǒng)計算其輪廓面積和周長,排除周長及面積較小的噪聲點,對于超過一定閾值的動態(tài)物體才進行預警。
目前流行的幀差法,主要由背景差分法與幀間差分法兩種,幀間差分法是一種通過對視頻圖像序列中相鄰兩幀作差分運算來獲得運動目標輪廓的方法,而背景差分法通常選取視頻信號中的第一幀做為背景幀,而后在視頻序列中間隔固定的時間選取視頻幀與背景幀進行差分比較,最后得到運動目標的輪廓。
背景建模的主要思想是利用概率學原理,統(tǒng)計視頻幀中像素分布的不同從而辨別出前景和背景,其中高斯混合模型算法是對樣本的概率密度分布進行估計,而估計采用的模型是幾個高斯模型的加權和。每個模型就代表了一個類,然后利用樣本數據對模型進行投影,從而得到在各個類上的概率。然后選取概率最大的類為判決結果?;旌细咚鼓P偷亩x為:
(1)
其中K為模型的個數;πk為第k個高斯的權重;p(x|k)則為第k個高斯概率密度,若均值為uk,方差為σk。那么估計概率密度的值就是要求出πk,uk和σk各個變量。最后p(x)的表達式中,求和式的各項的結果就分別代表樣本x屬于各個類的概率。其中在做參數估計的時候,采用的是最大似然方法,使樣本點在估計的概率密度函數上的概率值最大。為避免浮點數下溢,通常將概率值取log,即將目標改寫成:
(2)
也就是最大化對數似然函數,完整形式為:
(3)
主要的步驟可以分為2步:其中第1步,假設已知各個高斯模型的參數,然后估計每個高斯模型的權值;第2步,基于估計的權值,再次去確定高斯模型的參數。重復這2個步驟,直到波動很小,近似達到極值。具體表達如下:
(1)第1步
假設高斯模型的參數和是已知的,對于第i個樣本xi來說,它由第k個model 生成的概率為:
(4)
(2)第2步
(5)
(6)
(7)
系統(tǒng)為適應各種不同硬件的要求及提高視頻采集速率,整體采用分層結構來實現。底層使用V4L2的驅動編程接口,直接對攝像頭數據進行采集,避免了opencv庫因不同硬件平臺攝像頭型號的不同而導致的視頻幀數據類型無法識別的問題,從而提高了視頻幀采集的速率,并提高整體系統(tǒng)監(jiān)控的兼容性。
V4L2是在Linux的底層視頻驅動,系統(tǒng)將其封裝成video_init自定義類,用于實現視頻采集,其配合相關的驅動程序以及攝像頭設備,可實現視頻采集。V4L2內部主要是采用相關的回調函數來完成,具體流程如圖1。
圖1 V4L2采集視頻流程圖Fig.1 Flow chart of video collection through V4l2
利用V4L2編程將采集的視頻數據的內容封裝進自定義的video_init類中,通過成員函數分別實現:打開設備、設置參數、申請幀緩沖、開始采集、用戶內存映射、將幀緩沖放入隊列等過程。其中打開設備文件,設備名以設備驅動安裝后的設備名“/dev/video0”;查詢設備主要調用VIDIOC_QUERYCAP命令實現,并根據開發(fā)板硬件要求,設計將視頻采集參數設置為640*480、編碼格式設置為MJPEG ,以上的設置需調用VIDIOC_S_FMT命令通過ioctl進行設置;設計采用VIDIOC_REQBUF命令申請4個幀緩存,并使用mmap函數將其映射到用戶內存中;并通過VIDIOC_QUERY命令將申請到的幀緩沖放入采集輸出隊列;隨后可通過VIDIOC_STREAMON開始視頻數據采集,采集到數據后可采用VIDIOC_DQBUF命令取出幀緩沖,再通過VIDIOC_QBUF將幀緩沖重新排入輸入隊列,完成步驟后按照需求停止設備采集及關閉設備。
系統(tǒng)采用opencv視覺庫聯合V4l2視頻接口分層編程方式,完成視頻數據的采集及分析。攝像頭底層數據的采集通過V4l2的驅動編程實現,并結合qt將其封裝成自定義的video_init類,采集視頻幀數據,采集后的數據定義為3通道、8位無符號整型數據,即CV_8CU3。采集完的視頻數據可采用opencv的視覺庫進行數據類型轉換后,調用相應函數循環(huán)分離前景圖像,并通過腐蝕降噪后,顯示于界面上,同時更新背景,流程如圖2。
圖2 改進后高斯算法處理流程Fig.2 Processing flow of the improved Gaussian algorithm
設計在實現過程中,將采集后CVmat格式的視頻幀需先轉換成mat格式,然后調用opencv庫中的backgroundmog2構造函數分離背景及前景,并將前景信號進行腐蝕、dliate、而后對前景圖片的二值化結果調用cvFindContours進行輪廓描述,并使用cvArcArea以及cvArclength計算前景輪廓面積及周長大小,對于面積及周長超過閾值,進行預測。
系統(tǒng)利用opencv2.4.9版本,使用qt4.7.0庫進行界面程序的設計,對比幀差法以及改進后調用高斯混合模型提取背景的結果如下。
在白天正常光照情況下,見圖3、圖4。
圖3 正常視頻監(jiān)控界面Fig.3 Normal video monitoring interface
圖4 提取前景圖片對比結果Fig.4 Comparison results of extracted foreground pictures
圖3為視頻采集后播放的結果,圖4為提取前景的結論對比,左側是高斯背景提取后的結果,右側為幀差法提取背景的結果,從圖3、圖4可知,在日常光照的情況下,改進后的高斯背景能夠更完整的提取前景目標。
圖5為輪廓描述后的結果,左側為混合高斯模型法提取出的前景圖片,右側為描述出的前景目標的輪廓,在描述輪廓的過程中,系統(tǒng)通過計算輪廓的周長以及面積,將小面積和周長的噪聲濾除,得出前景目標的輪廓。
系統(tǒng)在黑夜或者光照條件弱的情況下,見圖6、圖7。
圖5 輪廓描述結果Fig.5 Contour description results
圖6為光照弱的情況下視頻幀采集后播放的結果,圖7為提取前景的運算結果,其中左側為幀差法經過二值化后的結果,右側圖片為采用混合高斯背景分離后提取的前景圖像,經過對比可以得到在光照弱的情況下,混合高斯背景法能夠更好的提取前景圖像。
圖6 正常視頻監(jiān)控界面(光照弱)Fig.6 Normal video monitor interface (weak illumination)
圖7 提取前景結果對比(光照弱)Fig.7 Comparison results of extracted foreground pictures(weak illumination)
經過高斯背景提取出的前景圖像經過輪廓描述(見圖8),可得到完整的輪廓描述結果,同時將計算其面積和周長并報警。
圖8 描述前景輪廓的結果Fig.8 Contour description results of foreground objects
基于倉庫存儲應用背景下設計的自動監(jiān)控系統(tǒng),采用分層的軟件結構完成,無論在光照條件好或者差的情況下,通過混合高斯背景模型截取的前景目標都更為完整。混合高斯模型雖然能較好的提取前景目標,但開始監(jiān)測時需要經過10幀的計算時間,并在光照條件強的情況下會出現較多噪點,因此系統(tǒng)在后續(xù)的輪廓提取過程中通過計算輪廓而將噪聲濾除。