邵剛
【摘要】運動物體自動識別是視覺識別中的重要研究內容之一。本文通過介紹DirectShow的視頻圖像處理技術,闡述了DirectShow系統架構,構造了一種目標識別運動物體系統模型。通過采用過濾技術實現復雜環境準確自動物體識別功能,結合實驗論證了基于DirectShow的目標識別物體系統的可行性。最后探討了下一步的研究方向。
【關鍵詞】視頻圖像處理;DirectShow;目標識別;過濾技術
引言
在社會信息化日益發展的今天,信息技術、網絡技術、通信技術以及多媒體技術已經滲透到人類生活的各個領域中,視頻監控以其直觀、方便和內容豐富等特點,日益受到人們的青睞。視頻監控是多媒體、計算機網絡、工業控制和人工智能等多種技術的綜合運用,目前正從傳統的圖像采集朝著音視頻的數字化、系統的網絡化和管理的智能化方向發展。
人體檢測和跟蹤是智能視覺監控中的重要研究內容之一,也是近年來計算機視覺領域中備受關注的前沿方向。對圖像序列中的運動人體快速而準確的檢測和跟蹤是一項十分重要且極具挑戰性的工作,同時準確的檢測和跟蹤也是對行為進行有效理解的基礎除了視覺監控之外,人體檢測和跟蹤在高級人機交互動畫制作等方面也有著廣泛的應用。
基于智能空間的機器視覺是計算機視覺領域一個新興的研究方向,它與傳統意義上的系統的區別在于其智能性。簡單而言,不僅用攝像機代替人眼,而且用計算機替代人協助人,來完成監視或控制任務,從而減輕人的負擔。本論文工作的主要任務就是基于DirectShow技術的智能識別系統對攝像機拍錄的圖像序列進行自動分析來對被場景中人物的變化進行定位、跟蹤和識別,并結合人體朝向等分析的基礎上判斷有關目標的行為。
1.DirectShow系統原理
DirectShow是一套高效的多媒體開發系統,與DirectX開發包一起發布。它是建立在組建對象模型(COM)基礎上的,由許多模塊化的組件組成。DirectShow將應用程序、復雜的數據傳輸、硬件設備的差異以及同步等問題隔離開,多媒體軟件開發者只需要按照統一的COM接口來編寫應用程序,從而簡化了在Windows平臺上數字媒體應用程序的開發任務,DirectShow系統框架應用程序與DirectShow系統以及DirectShow所支持的軟件、硬件之間的關系如圖1所示。
圖1 DirectShow系統架構
DirectShow主要由Filter Graph構成,Filter Graph中包含了各種Filter,這些Filter在Filter Graph Manager的統一控制下,按一定順序連接在一起,從而使數據在由Filte組成的鏈表中流動,圖1中的箭頭表示Filter鏈表中的數據流的方向。在DirectShow系統框架外,是與用戶直接交互的應用程序。應用程序要根據實際的功能需求引入相應的Filter, 建立Filter Graph, 然后通過Filter GraphManager來控制系統的數據處理過程。DirectShow通過事件通知機制,實現應用程序與Filter Graph Manager之間的交互控制。Filter Graph運行的時候接收到各種事件,通過消息的方式發送到用戶應用程序,用戶應用程序則根據事件類型做出相應的處理。
2.基于DirectShow目標識別系統
2.1 目標是識別系統總體框架
采集圖像端創建一個Source Filter讀取內存緩沖區數據,并加入到Filter Graph Manager,Filter Graph Manager負責視頻信息采集,同時通過數據發送線程將從數據流發送。圖像處理端接受采集端傳送的視頻信息,通過Filter Graph Manager創建一個filter graph來對圖像幀進行控制,見圖2。
圖2 自動識別系統總體架構
2.2 圖像過濾
圖像采集和后端圖像處理兩個部分組成(如圖2)所示。前端圖像采集部分包括:高清攝像機、傳輸線纜、后端圖像處理部分、數據管理和圖像顯示。采用DirectShow提供的輔助組件Capture Graph Builder來創建Filter Graph,流程如圖3所示。
圖3 Filter Graph Manager創建過程
在Filter Graph Manager創建完成后,調用該組件的QueryInterfaces接口,獲取并存儲IMediaControl、IMediaEventEx、IBasicVideo、IBasicAudio、IVideoWindow等接口對象。在多媒體軟件中,利用這些接口對象可以開發出如圖像預覽、圖片快照、音視頻播放控制、屏幕控制等具體應用。
用Filter鏈路建立調用Capture Graph Builder組件的RenderStream接口對PIN_CATEGORY_PREVIEW類型的Pin完成后續連接,代碼如下:
ICaptureGraphBuilder *pBuild;
//第二步獲取的對象
Capture Graph BuilderIBaseFilter *pCap;
//第三步獲取的對象
Videocapture filterhr=pBuild->RenderStream
(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,
pCap,NULL,NULL);
視頻顯示部分調用IVideoWindow對象進行指定窗口的顯示,調用IMediaControl對象的Run方法控制Filter Graph開始運行, 代碼如下:
RECT winRect;
//應用程序傳入的窗口對象
IVideoWindow *pIVideoWin;
//第三步獲取的
IVideoWindow 對象
IMediaControl *pIMediaCtrl;
//第三步獲取的
IMediaControl對象
pIVideoWind->put_Left(0);
pIVideoWind->put_Top(0);
pIVideoWind->put_Width(winRect.right
-winRect.left);
pIVideoWind->put_Height(winRect.bottom
-winRect.top);
pIVideoWind->put_WindowStyle(WS_CHILD|WS
_CLIPCHILDREN|WS_CLIPSIBLINGS);
pIMediaCtrl->Run();
目標識別系統將上述開發過程的DirectShow部分封裝為一個獨立的類,包括Filter Graph Manager的創建、系統設備的枚舉以及對設備各種控制接口的操作等,上層應用程序只需實例化該類的對象,即可調用該類提供的公共接口。
2.3 圖像目標識別處理
DirectShow采集進來的圖像是BMP格式的。圖像處理的大致流程是:一是灰度化;二是二值化;三是標記;四是計算目標區域位置;五是判決當前目標是否被命中。本系統的圖像處理采用基于DirectShow系統架構的圖像處理流程。圖象處理主要實現步驟如下:
(1)初始化COM。
(2)創建Capture Graph Builder組件 , 獲取 CaptureGraph接口。
(3)在Filter Graph加入視頻源過濾器。
(4)在Filter Graph加入AVI Decompressor Filter。
(5)在Filter Graph加入Sample Grabber Filter并設置媒體類型、緩沖模式。
(6)連接各Filter pBuilder->RenderStre
am(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,m_pFilter,pAviDecompressorF,pGrabberF);
pBuilder->RenderStream(NULL,&MEDIATY
PE_Video,pGrabberF,NULL,NULL);
pBuilder->Release();
(7)定義一個類 CSampleGrabberCB: public IsampleGrabberCB在該類中重載 BufferCB方法。在BufferCB中可以加入用戶具體的圖像處理函數。在類中可以定義一些公用屬性, 用于傳遞相關參數。
(8)設置Sample Grabber回調模式CSample-
GrabberCB CB;//向類CsampleGrabberCB傳遞圖像類型信息。
CB.Width = vih- >bmiHeader.biWidth;
CB.Height = vih- >bmiHeader.biHeight;
FreeMediaType(mt);
pGrabber- >SetBufferSamples(true);
pGrabber- >SetOneShot(false);
pGrabber- >SetCallback(&CB,1);
(9)用接口對Filter Graph進行控制。
3.實驗結果與分析
本實驗使用采集人體運動視頻來驗證系統的有效性,視頻1是一段正對面向攝像頭行進的運動人體序列。視頻采集處理的圖像如下圖4所示。從圖上可以清晰的看出人體被標黑,并且可以準確的跟蹤人體運動,達到預期的目標。
圖4 正對面向鏡頭行進的運動人體識別圖
為了進一步測試自動識別系統對圖像的處理識別能力,下圖5所示為垂直于鏡頭的運動人體序列的情況,自動識別系統依然可以正確識別人體。
實驗表明采用基于DirectShow的自動人體識別系統可以在不同的角度對運動的物體進行識別捕獲,具有較好的識別能力和推廣使用價值。
4.結束語
本文介紹了基于DirectShow的自動識別運動系統,通過分析DirectShow的視頻圖像處理技術,闡述了DirectShow系統架構,構造了一種目標識別物體物體系統。采用過濾技術實現復雜環境準確人體識別功能,結合實驗論證了基于DirectShow的目標識別運動物體系統的可行性。下一步我們將對圖像處理過濾部分進行優化設計,提高過濾效率。
參考文獻
[1]Kalman R E.A new approach to linear filtering and prediction problems[J].Journal of Basic Engineering,1960,82D:34-45.
[2](美)Simon Haykin,鄭寶玉譯.自適應濾波器原理[M].北京:電子工業出版社,2008.
[3]DirectX 9.0 SDK Document[M].US:Microsoft Corporation,2002.