基于OpenCV的運動目標檢測跟蹤實驗平臺
王力超 2010/3/26
基于OpenCV的運動目標檢測跟蹤實驗平臺
(復旦大學電子工程系,上海 200433)
摘 要:運動目標的檢測跟蹤在機器人視覺、監(jiān)控測量和視頻壓縮編碼等等方面有著廣泛的應用,是近年來的一個研究熱點。本文設計了一個基于OpenCV軟件的運動目標檢測跟蹤實驗平臺,對攝像頭視野中的運動目標進行實時檢測和跟蹤,并留下編程和硬件接口,為利用運動目標跟蹤而進行機器人視覺和基于計算機視覺的測量監(jiān)控研究打下基礎。
關鍵詞:目標跟蹤;OpenCV;實驗平臺;編程接口
中圖分類號:TP391.41 文獻標識碼:A
1 引言
目前,數(shù)字圖像處理在國民生產中起到日益重要的作用,對其的研究也日益廣泛和深入。OpenCV程序庫作為數(shù)字圖像研究的軟件助手,具有簡單易用、功能強大、移植方便等優(yōu)越性能。本實驗設計了一個基于OpenCV的運動目標檢測跟蹤實驗平臺,對從攝像頭采集來的圖像數(shù)據進行實時的分析,從而實現(xiàn)對運動物體的檢測與跟蹤。本實驗旨在引導學生了解OpenCV的性能,學習OpenCV的使用方法;嘗試并逐漸熟悉圖像處理,特別是運動目標跟蹤方面的知識;以及進一步提高Windows操作系統(tǒng)下使用C語言和C++編程的能力。
2 OpenCV簡介
OpenCV是Intel開源計算機視覺庫(Open Computer Vision)的簡稱。它由一系列 C 函數(shù)和少量 C++ 類構成,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。OpenCV 擁有包括300多個C函數(shù)的跨平臺的中、高層API。它不依賴與其它的外部庫,盡管也可以使用某些外部庫。OpenCV具有以下特點:
1.開放源碼
2.基于Intel處理器指令集開發(fā)的優(yōu)化代碼
3.統(tǒng)一的結構和功能定義
4.強大的圖像和矩陣運算能力
5.方便靈活的用戶接口
6.支持MS-Windows和Linux操作系統(tǒng)
由于有了以上性能特點,OpenCV函數(shù)庫功能強大,簡單易用,移植也很方便,不失為學生和科研人員進行數(shù)字圖像處理方面學習和研究的好工具。
3 運動物體的檢測和跟蹤
數(shù)字圖像處理中,運動物體的檢測和跟蹤在機器人視覺、監(jiān)控測量和視頻壓縮編碼等方面有著廣泛的應用,是近年來的一個研究熱點。隨著研究的深入,應用于運動物體跟蹤的算法也越來越多:從最簡單的“幀差法”,到“背景消減法”到“模板匹配法”,到帶有預測功能的“卡爾曼濾波”和“粒子濾波”等算法,都在不斷地提高對運動目標檢測和跟蹤的準確性和高效性。
本平臺在進行運動物體檢測跟蹤時所采用的算法是:首先利用“幀差法”檢測出初始的運動目標;一旦認為此目標合法,便根據目標在HSI(色調、飽和度、強度)空間中H通道的色調特性,利用“連續(xù)適應性均值移動算法(CamShift)”,對目標進行跟蹤。
CamShift算法簡述如下:首先,在圖像HSI空間中計算H通道(色彩通道)分量的1D直方圖;接著,利用此1D直方圖將原圖改建成2D概率分布圖;第三步,計算出目標區(qū)域的重心;第四部,利用經典的“Mean Shift”算法,不斷平移調整窗口中心到與目標重心重合;第五步,將上一幀的窗口大小和中心,作為下一幀Mean Shift算法搜索窗口的初始值,在下一幀中繼續(xù)Mean Shift運算。
上述運動物體檢測和跟蹤的算法運算量小,跟蹤效果好。只要初始抓取目標無誤,并且在色彩空間上目標與背景有一定偏差,視頻跟蹤便能夠達到相當?shù)臏蚀_度。更好的一點是,此算法在跟蹤同一場境內多個運動目標其中的一個時的效果,是其它同樣計算復雜度的算法所難以比擬的。
4 Windows多線程編程
為了達到良好的實時性能,充分利用CPU資源,本平臺采用多線程并發(fā)處理模式進行編程。在Windows操作系統(tǒng)下,線程與進程調度都有著一套封裝好的方法,各線程輪流占用CPU資源。既然沒有多個CPU進行真正的程序“并發(fā)”執(zhí)行,多線程編程要做的就是如何利用線程的“休眠”事件,合理充分地使用資源,以達到提高程序運行效率的目的。
本平臺中,程序由兩個線程組成:main線程和GetImage線程。Main線程作為主線程,它啟動了GetImage線程;除此之外main
線程的主要功能就是利用OpenCV函數(shù)庫,對從攝像頭獲取的圖像數(shù)據進行分析處理;此外main線程還負責獲取用戶輸入信息。GetImage線程的主要工作就是循環(huán)地從攝像頭讀取數(shù)據放到緩存中,以供main線程分析。在這當中,GetImage線程往緩存中寫數(shù)(未完,下一頁)
|
|
|