亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenCV的運(yùn)動(dòng)目標(biāo)跟蹤及其實(shí)現(xiàn)

        2008-04-12 00:00:00李振偉
        現(xiàn)代電子技術(shù) 2008年20期

        摘 要:CAMSHIFT算法是一種基于顏色直方圖的目標(biāo)跟蹤算法。在視頻跟蹤過程中,CAMSHIFT算法利用選定目標(biāo)的顏色直方圖模型得到每幀圖像的顏色投影圖,并根據(jù)上一幀跟蹤的結(jié)果自適應(yīng)調(diào)整搜索窗口的位置和大小,得到當(dāng)前幀中目標(biāo)的尺寸和質(zhì)心位置。在介紹Intel公司的開源OpenCV計(jì)算機(jī)視覺庫的基礎(chǔ)上,采用CAMSHIFT跟蹤算法,實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤,解決了跟蹤目標(biāo)發(fā)生存在旋轉(zhuǎn)或部分遮擋等復(fù)雜情況下的跟蹤難題。實(shí)驗(yàn)結(jié)果表明該算法的有效性、優(yōu)越性和可行性。

        關(guān)鍵詞:目標(biāo)跟蹤;CAMSHIFT算法;OpenCV;顏色直方圖

        中圖分類號:TP391文獻(xiàn)標(biāo)識碼:B文章編號:1004373X(2008)2012803

        Moving Object Tracking Method and Implement Based on OpenCV

        LI Zhenwei1,2,CHEN Chong1,2,ZHAO You1

        (1.Changchun Observatory,National Astronomical Observatories,Chinese Academy of Sciences,Changchun,130117,China;

        2.Graduate School,Chinese Academy of Sciences,Beijing,100049,China)

        Abstract:CAMSHIFT is an object tracking algorithm based onthe color histogram.In the process of object tracking,CAMSHIFT operates on a color back-projection image produced from object histogram model in current frame and finds the location and size of the current frame by adaptively adjusting the size and the location of the searching windows according to the tracking results of the previous frame in the video.On the basis of introducing OpenCV(an Intel open source computer vision library),through CAMSHIFT algorithm,the paper realizes moving object tracking and resolves some problems including distractor and occlusion by other objects.Experimental results show good performances,superiority and feasibility of the algorithm.

        Keywords:object tracking;CAMSHIFT algorithm;OpenCV;color histogram

        目標(biāo)跟蹤是計(jì)算機(jī)視覺的一個(gè)重要分支,日益廣泛應(yīng)用于科學(xué)技術(shù)、國防安全、航空、醫(yī)藥衛(wèi)生以及國民經(jīng)濟(jì)等領(lǐng)域。實(shí)現(xiàn)目標(biāo)跟蹤的關(guān)鍵在于完整地分割目標(biāo)、合理提取特征和準(zhǔn)確地識別目標(biāo),同時(shí),要考慮算法實(shí)現(xiàn)的時(shí)間,以保證實(shí)時(shí)性。當(dāng)視頻圖像中被跟蹤目標(biāo)發(fā)生姿態(tài)變化,存在旋轉(zhuǎn)或部分遮擋時(shí),簡單的灰度模板或者Hausdorff距離匹配一般很難達(dá)到實(shí)時(shí)跟蹤目標(biāo)的要求,出現(xiàn)誤匹配或者跟蹤丟失的情況,而且跟蹤效率較低。

        Gary R.Bradski提出的CAMSHIFT[1](Continuously Adaptive Mean Shift)算法是以顏色直方圖為目標(biāo)模式的目標(biāo)跟蹤算法,可以有效地解決目標(biāo)變形和部分遮擋的問題,而且運(yùn)算效率很高。該文首先詳細(xì)介紹CAMSHIFT算法,并結(jié)合Intel公司開發(fā)的開源OpenCV計(jì)算機(jī)視覺庫,實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)跟蹤,并驗(yàn)證了CAMSHIFT算法的有效性以及展現(xiàn)OpenCV計(jì)算機(jī)視覺庫的靈活性和優(yōu)越性。

        1 CAMSHIFT算法

        由于RGB顏色空間對光照亮度變化比較敏感[2],為了減少光照亮度變化對跟蹤效果的影響,CAMSHIFT算法將圖像由RGB顏色空間轉(zhuǎn)化到HSV(Hue,Saturation,Value)顏色空間再進(jìn)行后續(xù)處理。

        圖1是CAMSHIFT算法流程。首先選擇大小為S的初始搜索窗口,然后對該窗口中每一個(gè)像素點(diǎn)的H通道上采樣,得到運(yùn)動(dòng)目標(biāo)的色調(diào)(Hue)直方圖,再將該直方圖保存下來作為搜索目標(biāo)的顏色直方圖模型。在目標(biāo)跟蹤過程中,對攝像頭當(dāng)前幀圖像的每一個(gè)像素,通過查詢目標(biāo)的顏色直方圖模型,可以得到該像素為目標(biāo)像素的概率。經(jīng)上述預(yù)處理,視頻中每一幀圖像都轉(zhuǎn)化為目標(biāo)顏色概率分布圖,也稱為目標(biāo)顏色投影圖。在一般情況下,將投影圖轉(zhuǎn)化為8位的灰度投影圖,概率為1的像素值設(shè)為255,概率為0的像素值為0,其他像素也轉(zhuǎn)換為相應(yīng)的灰度值。

        圖1中虛線部分是CAMSHIFT算法的核心。設(shè)點(diǎn)(x,y)為搜索窗口中的像素位置,I(x,y)是投影圖中(x,y)處的像素值。為此,定義搜索窗口的零階矩M00和一階矩M01,M10分別如下:

        M00=∑x∑yI(x,y)

        M01=∑x∑yyI(x,y)

        M10=∑x∑yxI(x,y)

        圖1 CAMSHIFT算法跟蹤流程

        該搜索窗口的質(zhì)心位置為:

        (xc,yc)=(M10/M00,M01/M00)

        計(jì)算跟蹤目標(biāo)的方向和尺寸:

        二階矩:

        M20=∑x∑yx2I(x,y)

        M02=∑x∑yy2I(x,y)

        M11=∑x∑yxyI(x,y)

        令:

        a =M20 /M00 -x2c,b=2(M11/M00-xcyc),

        c =M02 /M00 -y2c

        目標(biāo)長軸的方向角為:

        θ=12tan-1(ba-c)

        圖像中目標(biāo)的長軸和短軸的長度計(jì)算公式:

        l=(a+c)+b2+(a-c)22,

        w=(a+c)-b2+(a-c)22

        然后,根據(jù)零階矩M00調(diào)整搜索窗口的大小,并將搜索窗口的中心移動(dòng)到質(zhì)心,如果移動(dòng)距離大于預(yù)先設(shè)定的固定閾值,則重新計(jì)算調(diào)整后的窗口質(zhì)心,進(jìn)行新一輪的窗口位置和尺寸調(diào)整,直到窗口中心與質(zhì)心間的距離小于預(yù)設(shè)的固定閾值,或者循環(huán)運(yùn)算的次數(shù)達(dá)到某一最大值,認(rèn)為收斂條件滿足,進(jìn)入下一幀圖像進(jìn)行心的目標(biāo)搜索。在下一幀圖像中,利用上一幀圖像中最終得到的窗口質(zhì)心位置和S=2M00256來設(shè)置新的搜索窗口位置和尺寸。CAMSHIFT跟蹤算法在視頻單幀內(nèi)與幀間都根據(jù)上一步得到的M00自適應(yīng)地調(diào)整搜索窗口的大小,因而可以適應(yīng)跟蹤目標(biāo)動(dòng)態(tài)變形的情況。

        2 計(jì)算機(jī)視覺類庫OpenCV簡介

        開放源代碼的計(jì)算機(jī)視覺類庫OpenCV( Intel@ Open Source Computer Vision Library)由英特爾公司位于俄羅斯的研究實(shí)驗(yàn)室所開發(fā),它是一套可免費(fèi)獲得的、由一些C函數(shù)和C++類所組成的庫,用來實(shí)現(xiàn)一些常用的圖像處理及計(jì)算機(jī)視覺算法。

        OpenCV主要用于對圖像進(jìn)行一些高級處理,比如說特征檢測與跟蹤、運(yùn)動(dòng)分析、目標(biāo)分割與識別以及3D重建等。

        與其他計(jì)算機(jī)視覺工具相比,OpenCV的優(yōu)越性如表1所示:

        表1 圖像處理、計(jì)算機(jī)視覺工具比較(IPL,openCV,IPP,visDSK與 Matlab)

        開發(fā)工具開發(fā)單位應(yīng)用領(lǐng)域免費(fèi)情況源碼公開與否備注

        IPLIntel圖像處理Free不公開已被并入到IPP

        OpenCVIntel圖像處理、計(jì)算機(jī)視覺Free公開基于Intel芯片代碼優(yōu)化

        IPPIntel集成開發(fā)環(huán)境庫(圖像處理、信號處理等)Not free不公開基于Intel芯片代碼優(yōu)化

        VisDSKMircrosoft圖像處理Free公開無優(yōu)化

        MatlabMathWorks多學(xué)科、多種工作平臺(tái)Not free不公開速度慢,不宜編譯成可執(zhí)行文件

        OpenCV是Intel公司開發(fā)的圖像處理和計(jì)算機(jī)視覺函數(shù)庫,它有以下特點(diǎn):

        (1) 開放C及C++源碼;

        (2)基于Intel處理器指令集開發(fā)的優(yōu)化代碼;

        (3)統(tǒng)一的結(jié)構(gòu)和功能定義;

        (4)強(qiáng)大的圖像和矩陣運(yùn)算能力;

        (5)方便靈活的用戶接口;

        (6) 同時(shí)支持MS-Windows,Linux平臺(tái);

        (7) 在速度上OpenCV還有Intel 公司的mmx和ssl優(yōu)化。

        2.1 OpenCV的數(shù)據(jù)結(jié)構(gòu)

        OpenCV設(shè)計(jì)一些基本數(shù)據(jù)類型,基本的數(shù)據(jù)類型包括:圖像類的IplImage,矩陣類的CvMat,可變集合類的CvSeq,CvSet,CvGraph以及用于多維柱狀圖的混合類CvHistogram。輔助數(shù)據(jù)類型包括:用于表示二維點(diǎn)坐標(biāo)的CvPoint,用于表示圖像寬和高的CvSize等。

        2.2 OpenCV的函數(shù)體系

        OpenCV中每個(gè)函數(shù)的命名都以“cv”開始,然后是該函數(shù)的行為及目標(biāo)。例如用來創(chuàng)建圖像的函數(shù)“cvCreateImage”,載入圖像的函數(shù)“cvLoadImage”。OpenCV是為圖像處理及計(jì)算機(jī)視覺在實(shí)際工程中的應(yīng)用而設(shè)計(jì)的一個(gè)類庫,其中所有的函數(shù)都由于其在實(shí)際應(yīng)用中所實(shí)現(xiàn)的不同的功能而分屬不同的類型,主要的函數(shù)類型有:

        (1) 基本的圖像處理與分析函數(shù)。

        這個(gè)類型的函數(shù)主要用于實(shí)現(xiàn)一些基本的圖像處理與分析功能,例如圖像平滑函數(shù)cvSmooth,Sobel算子cvSobe,l Canny邊緣分割函數(shù)cvCanny等。

        (2) 結(jié)構(gòu)分析函數(shù)。

        包括有輪廓處理函數(shù),幾何學(xué)函數(shù)以及平面細(xì)分函數(shù)。

        (3) 運(yùn)動(dòng)分析與目標(biāo)跟蹤函數(shù)。

        包括有用于運(yùn)動(dòng)分析與目標(biāo)跟蹤的函數(shù),例如背景重建函數(shù)cvAcc,用光流法或動(dòng)態(tài)輪廓模型來實(shí)現(xiàn)目標(biāo)跟蹤的函數(shù)cvCalcOpticalFlowBM和cvSnakeImage以及卡爾曼濾波函數(shù)CvKalman等。

        (4) 攝像機(jī)標(biāo)定和3D重建函數(shù)。

        包括有用于攝像機(jī)標(biāo)定,姿態(tài)估計(jì)以及從兩個(gè)攝像機(jī)進(jìn)行3D相似重構(gòu)的函數(shù)。

        (5) GUI與視頻處理函數(shù)。

        包括有高級圖形用戶接口highGUI用以實(shí)現(xiàn)對圖像的載入、顯示及保存等基本操作以及用以實(shí)現(xiàn)視頻輸入輸出及處理的函數(shù)。

        3 CAMSHIFT算法實(shí)現(xiàn)

        在OpenCV庫中,CvCamShiftTracker類就是用來實(shí)現(xiàn)CAMSHIFT算法的,使得進(jìn)行二次開發(fā)變得很簡單。該函數(shù)為:

        int cvCamShift( const CvArr* prob_image,CvRect window,CvTermCriteria criteria,CvConnectedComp* comp,CvBox2D* box=NULL );

        prob_image:目標(biāo)直方圖的反向投影

        window:初始搜索窗口

        criteria:確定窗口搜索停止的準(zhǔn)則

        comp:生成的結(jié)構(gòu),包含收斂的搜索窗口坐標(biāo) (comp→rect 字段) 與窗口內(nèi)部所有像素點(diǎn)的和 (comp→area 字段).

        box:目標(biāo)的帶邊界盒子。如果非 NULL,則包含目標(biāo)的尺寸和方向。

        利用該函數(shù),在VC6.0開發(fā)環(huán)境下,就容易實(shí)現(xiàn)CAMSHIFT算法跟蹤運(yùn)動(dòng)物體,圖2是程序界面:

        圖2 CAMSHIFT跟蹤界面

        4 實(shí)驗(yàn)結(jié)果與分析

        在本實(shí)驗(yàn)中,用一個(gè)攝像頭來跟蹤一運(yùn)動(dòng)物體,下面圖3~圖6一系列圖像是采用CAMSHIFT算法跟蹤運(yùn)動(dòng)物體部分圖像。

        圖3 攝像頭拍到的場景

        圖4 手動(dòng)選中的目標(biāo)物體

        圖5 物體快速移動(dòng)時(shí)跟蹤目標(biāo)

        圖6 物體發(fā)生旋轉(zhuǎn)、變形時(shí)跟蹤目標(biāo)物體

        由此可見,基于顏色直方圖的CAMSHIFT算法可以有效地解決目標(biāo)變形和旋轉(zhuǎn)問題,而且運(yùn)算效率很高,可以實(shí)時(shí)跟蹤運(yùn)動(dòng)目標(biāo)。

        5 結(jié) 語

        本文在詳細(xì)分析CAMSHIFT算法原理的基礎(chǔ)上,采用Intel公司開發(fā)的OpenCV視覺庫,在VC6.0開發(fā)環(huán)境下,實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)實(shí)時(shí)跟蹤,解決了目標(biāo)旋轉(zhuǎn)、變形、部分遮擋問題。同時(shí),可以看到,在開源庫OpenCV的基礎(chǔ)上,根據(jù)自己所開發(fā)應(yīng)用程序所要實(shí)現(xiàn)的功能選擇所需的庫函數(shù),能夠大大減少在計(jì)算機(jī)視覺領(lǐng)域中的開發(fā)時(shí)間和精力,縮短程序開發(fā)的周期。

        參考文獻(xiàn)

        [1]Bradski G R.Computer Video Face Tracking for Use in a Perceptual User Interface[J].Intel Technology Journal,1998,2:214-219.

        [2]Boye M.The Effects of Caputre Conditions on the CAMSHIFT Face Tracker[R].Alberta,Canada:Department of Computer Science,University of Calgary,2001.

        [3]Comaniciu D,Ramesh V,Meer R.Real-time Tracking of Non-rigid Objects Using Meanshift[A].Proceeding of the IEEE Conference on Computer Vision and Pattern Recognition[C].Dublin,Ireland,2000,2:142-149.

        [4]張宏志,張金換,黃世霖,等.基于Camshift的目標(biāo)跟蹤算法[J].Computer Engineering and Design,2006,27(11):2 012-2 014.

        [5]劉雪,常發(fā)亮,王華杰.基于改進(jìn)Camshift算法的視頻對象跟蹤方法[J].微計(jì)算機(jī)信息,2007(21):297-298,305.

        [6]孫鑫,余安平.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

        [7]劉瑞禎,于仕琪.OpenCV教程基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2007.

        [8]Intel Open Source Computer Vision Library Reference Manual[EB/OL].http://www.intel.com/research/mrl/research/opencv/.

        [9]http://blog.csdn.net/hunnish.

        [10]http://tech.groups.yahoo.com/group/OpenCV.

        作者簡介 李振偉 男,1983年出生,河南安陽人,碩士研究生。研究方向?yàn)橐曨l運(yùn)動(dòng)目標(biāo)跟蹤。

        陳 翀 碩士研究生。

        趙 有 研究員、博士生導(dǎo)師。

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

        日本在线免费一区二区三区| 一区二区传媒有限公司| 日本欧美小视频| 激情五月天俺也去综合网| 蜜桃视频第一区免费观看| 人人人妻人人人妻人人人| 国产成本人片无码免费2020| 久久99欧美| 亚洲成人色黄网站久久| 日韩乱码中文字幕在线| 中文字幕人妻第一区| 久热在线播放中文字幕| 成年女人片免费视频播放A| 国产一区二区三区最新地址 | 无码一区二区三区在线在看| 日韩亚洲在线一区二区| 少妇被粗大进猛进出处故事| 午夜男女很黄的视频| 中文字幕亚洲情99在线| 在线观看国产三级av| 国产中文字幕亚洲国产| 亚洲乱码中文字幕久久孕妇黑人| 亚洲伊人成综合网| 亚洲国产成人AⅤ片在线观看| 成人一区二区三区蜜桃| 国产成人精品一区二区20p| 边做边流奶水的人妻| 日本a级大片免费观看| 国产一区三区二区视频在线观看| 亚洲精品久久久久一区二区| 狠狠色噜噜狠狠狠狠色综合久| 国产精品高潮无码毛片| 国产av一区二区三区狼人香蕉| 男女裸体做爰视频高清| 白天躁晚上躁麻豆视频| 无码国产精品一区二区免费97| 国产三级自拍视频在线| 亚洲国产精品av在线| 全免费a级毛片免费看网站| 欧美日韩一区二区三区视频在线观看| 国产一区精品二区三区四区|