王江濤,陳得寶,鄒 峰
(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)
隨著數(shù)字信息和多媒體技術(shù)的迅速發(fā)展,視頻圖像處理系統(tǒng)正得到日益廣泛的應(yīng)用,特別是基于攝像頭的實(shí)時(shí)視頻采集與處理系統(tǒng)在智能監(jiān)控、智能人機(jī)交互、虛擬現(xiàn)實(shí)、計(jì)算機(jī)視覺(jué)等領(lǐng)域得到越來(lái)越多的關(guān)注[1-4],如何高效地對(duì)攝像頭進(jìn)行視頻采集和壓縮保存對(duì)加快上述領(lǐng)域的發(fā)展有著重要的意義。筆者從Windows系統(tǒng)軟件環(huán)境的角度探討了當(dāng)前通用的視頻采集與保存技術(shù),分析了這些技術(shù)的優(yōu)缺點(diǎn),在此基礎(chǔ)上集成OpenCV,VFW和VCM三種軟件開(kāi)發(fā)技術(shù)設(shè)計(jì)了一種快捷、穩(wěn)健的實(shí)時(shí)視頻采集與處理方案。
OpenCV是Intel資助的開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。它由一系列C函數(shù)和少量C++函數(shù)構(gòu)成,可以實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。OpenCV擁有包括300多個(gè)C函數(shù)的跨平臺(tái)的中、高層API,不依賴于其他的外部庫(kù),對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)的。它具有以下特點(diǎn):1)開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù)采用C/C++編寫;2)使用目的是開(kāi)發(fā)實(shí)時(shí)應(yīng)用程序;3)獨(dú)立于操作系統(tǒng)、硬件和圖形管理器;4)具有通用的圖像/視頻載入、保存和獲取模塊;5)具有底層和高層的應(yīng)用開(kāi)發(fā)包。由此可見(jiàn),OpenCV擁有強(qiáng)大的圖像/視頻處理功能[1,3],同時(shí)開(kāi)放源代碼非常方便程序員使用,在視頻處理系統(tǒng)中,其突出的優(yōu)點(diǎn)是在計(jì)算機(jī)與攝像頭之間提供了一個(gè)方便的軟件接口,可以采用簡(jiǎn)單的函數(shù)來(lái)實(shí)現(xiàn)對(duì)攝像頭的驅(qū)動(dòng)和圖像采集,且由于其集成了DirectShow技術(shù),視頻采集時(shí)可以達(dá)到很高的實(shí)時(shí)性能。然而,在對(duì)采集的視頻進(jìn)行保存時(shí),需要設(shè)計(jì)視頻壓縮格式的關(guān)鍵字,由于不同的操作系統(tǒng)中安裝的視頻壓縮驅(qū)動(dòng)不同,在保存設(shè)置壓縮格式時(shí)往往不成功,這導(dǎo)致基于OpenCV的視頻處理系統(tǒng)穩(wěn)定性下降。
VFW(Video For Windows)是微軟公司為開(kāi)發(fā)Windows平臺(tái)下的視頻應(yīng)用程序提供的軟件工具包,提供了一系列應(yīng)用程序編程接口(API),可以很方便地實(shí)現(xiàn)視頻捕獲、視頻編輯及視頻播放等通用功能[2],還可利用回調(diào)函數(shù)開(kāi)發(fā)更復(fù)雜的視頻應(yīng)用程序。它的特點(diǎn)是播放視頻時(shí)不需要專用的硬件設(shè)備,而且應(yīng)用靈活,可以滿足視頻應(yīng)用程序開(kāi)發(fā)的需要。Windows操作系統(tǒng)攜帶了VFW,安裝系統(tǒng)時(shí),會(huì)自動(dòng)安裝VFW的相關(guān)組件。VC++自4.0版本就支持VFW,大大簡(jiǎn)化了視頻應(yīng)用程序的開(kāi)發(fā)。目前,PC機(jī)上多媒體應(yīng)用程序的視頻部分,大都是利用VFW API開(kāi)發(fā)的。
VFW的優(yōu)點(diǎn)是提供了對(duì)視頻進(jìn)行讀寫的接口,可以方便地將視頻流數(shù)據(jù)保存為AVI格式的視頻。其缺點(diǎn)是在連續(xù)抓取圖像時(shí)實(shí)時(shí)性能不足,另外,在保存視頻時(shí),每次都需要彈出對(duì)話框來(lái)選擇當(dāng)前的視頻壓縮格式,這也導(dǎo)致視頻處理系統(tǒng)的不方便。
由于視頻數(shù)據(jù)的巨大容量,在保存視頻文件時(shí),采用一定的壓縮格式對(duì)視頻文件進(jìn)行壓縮是必不可少的步驟。Windows中提供了視頻壓縮管理器(Video Compression Manager,VCM),通過(guò)該接口可以訪問(wèn)Windows系統(tǒng)已經(jīng)安裝了的壓縮器,從而獲取當(dāng)前可用的壓縮格式信息。VCM提供了ICGetInfo函數(shù)來(lái)得到壓縮器或解碼器的信息,這個(gè)函數(shù)把解碼器和壓縮器的信息寫入一個(gè)ICINFO的數(shù)據(jù)結(jié)構(gòu)中。ICINFO數(shù)據(jù)結(jié)構(gòu)體中可以提供很多關(guān)于壓縮器或者解碼器性能的信息。由于在不同的系統(tǒng)中可能存在不同的壓縮器格式,引入VCM模塊就可以采用首先遍歷系統(tǒng)中存在的壓縮器格式,然后選取其中的一種進(jìn)行壓縮的方法,避免了壓縮格式不存在而導(dǎo)致的壓縮不成功。
集合OpenCV,VFW和VCM的優(yōu)點(diǎn),筆者設(shè)計(jì)一種實(shí)時(shí)性能高、穩(wěn)定性好的視頻處理系統(tǒng)。系統(tǒng)流程見(jiàn)圖1。
圖1 實(shí)時(shí)視頻處理系統(tǒng)流程
在該系統(tǒng)框架中計(jì)算機(jī)與攝像頭的驅(qū)動(dòng)接口部分采用了OpenCV技術(shù),該技術(shù)集成的DirectShow模塊可以方便地驅(qū)動(dòng)攝像頭并實(shí)時(shí)抓拍圖像。在抓取圖像后系統(tǒng)進(jìn)入圖像處理流程,在該流程后采用VFW技術(shù)建立視頻文件保存所抓取的圖像。為了克服VFW每次都需要彈出對(duì)話框選擇視頻壓縮格式的缺點(diǎn),引入VCM接口自動(dòng)選擇視頻壓縮格式,避免了OpenCV設(shè)置壓縮格式時(shí)導(dǎo)致的不穩(wěn)定性。
下面給出實(shí)現(xiàn)所設(shè)計(jì)視頻處理系統(tǒng)關(guān)鍵步驟的部分代碼:
為了驗(yàn)證上述視頻采集與保存構(gòu)架的可靠性和實(shí)時(shí)性,筆者采用上述思路設(shè)計(jì)了基于視頻的動(dòng)物迷宮行為分析軟件,圖2為該軟件的示意圖。該軟件用攝像頭以25 f/s(幀/秒)的速度采集圖像進(jìn)行實(shí)時(shí)處理,得到圖像中動(dòng)物的運(yùn)動(dòng)信息,同時(shí)自動(dòng)選擇壓縮格式對(duì)視頻進(jìn)行保存。實(shí)驗(yàn)表明,軟件完全可以滿足實(shí)際應(yīng)用的要求。
從提高視頻處理框架的實(shí)時(shí)性和穩(wěn)健性出發(fā),設(shè)計(jì)了一種視頻實(shí)時(shí)處理框架,該框架以O(shè)penCV作為攝像機(jī)接口,在對(duì)視頻進(jìn)行保存時(shí)采用了VFW與VCM相結(jié)合的功能結(jié)構(gòu),這為基于攝像頭的實(shí)時(shí)視頻處理任務(wù)提供了一套高效的解決方案。實(shí)驗(yàn)表明該框架可以穩(wěn)健地應(yīng)用在實(shí)時(shí)環(huán)境中,采用該框架設(shè)計(jì)的視頻處理軟件已得到成功的應(yīng)用。
:
[1]常丹華,楊冬冬,韓夏.OpenCV在智能監(jiān)控方面的應(yīng)用研究[J].電視技術(shù),2009,33(9):101-103.
[2]許成亮,胡劍凌,徐盛.基于VFW的人臉監(jiān)控系統(tǒng)實(shí)現(xiàn)[J].電視技術(shù),2005,29(5):93-96.
[3]劉瑞禎,于仕琪.OpenCV教程——基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2007.
[4]WANG Jiangtao,YANG Jingyu.Relative discriminative coefficient based multi-cue fusion for Robust object tracking[J].Frontiers of Electrical and Electronic Engineering in China,2008,3 (3):274-282.