陳增志,白響恩,吳善剛,肖英杰,陳亮
(上海海事大學(xué)商船學(xué)院,上海 201306)
在水池實(shí)驗(yàn)室中可實(shí)現(xiàn)各種實(shí)驗(yàn):如利用相似性原理研究船舶的相關(guān)性能,模擬船舶的操縱[1],用船模做自航、耐波實(shí)驗(yàn)等.實(shí)驗(yàn)需要對船模的運(yùn)動狀態(tài)進(jìn)行跟蹤,而狀態(tài)跟蹤的基礎(chǔ)是船模位置的跟蹤.隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)視覺技術(shù)[2]在圖像的三維重建[3]、道路交通中的車輛跟蹤[4-5]、機(jī)器人跟蹤[6-8]、水上弱小目標(biāo)檢測[9]等領(lǐng)域已經(jīng)被廣泛應(yīng)用.本文提出的將計(jì)算機(jī)視覺技術(shù)應(yīng)用于船模位置跟蹤的方法具有系統(tǒng)工作穩(wěn)定性高,安裝簡單方便,跟蹤精度高、效果較好等特點(diǎn).利用跟蹤得到的位置坐標(biāo)計(jì)算出船模的航速和航跡向,可以實(shí)現(xiàn)這兩個(gè)狀態(tài)參數(shù)的跟蹤.本文使用計(jì)算機(jī)視覺技術(shù)中的 CamShift[10-11]跟蹤算法和圖像逆透視投影矯正算法[12-13]實(shí)現(xiàn)船模位置的高精度實(shí)時(shí)自動跟蹤.
船模位置跟蹤技術(shù)主要包括圖像采集模塊、逆透視投影矯正模塊、CamShift算法跟蹤船模模塊、船模圖像坐標(biāo)到實(shí)際坐標(biāo)的換算模塊,其總體流程見圖1.
圖1 船模位置跟蹤技術(shù)總體流程
在實(shí)際應(yīng)用中,攝像頭得到圖像的過程需要經(jīng)過透視投影,即需要將三維物理世界中的點(diǎn)投影變換到二維圖像平面中,所以為了計(jì)算船模的位置必須先對已經(jīng)透視畸變的視頻圖像進(jìn)行逆透視投影矯正[13],使水池在視頻圖像中呈正視效果.本文用投影矩陣法對圖像進(jìn)行逆透視投影矯正,即將透視畸變圖像的4個(gè)標(biāo)定點(diǎn)坐標(biāo)投影到正視圖的4個(gè)標(biāo)定點(diǎn)坐標(biāo),產(chǎn)生一種能保持連續(xù)性和連通性的光滑映射.已知一個(gè)二維圖像經(jīng)過透視變換成為另外一個(gè)平面圖像的過程可以表示為
式中:H為3×3的映射矩陣.設(shè)q為任意尺度的比例系數(shù),(u,v)是正視圖圖像的坐標(biāo),(x,y)是畸變圖圖像的坐標(biāo),將式(1)寫成
由式(2)可得
消去式(3)中的q可得
H有9個(gè)自由度即9個(gè)參數(shù),而h33與其他8個(gè)未知數(shù)存在線性相關(guān)性,此時(shí)透視變換只需8個(gè)有效自由度就能計(jì)算出畸變圖到正視圖的映射關(guān)系矩陣,因此可指定式(4)中的h33=1.這樣,已知畸變圖與正視圖上對應(yīng)的4對標(biāo)定點(diǎn)就可以準(zhǔn)確地求解H.當(dāng)標(biāo)定點(diǎn)多于4對時(shí)可以采用最小二乘法求出上述方程的解,以降低標(biāo)定誤差對結(jié)果產(chǎn)生的影響.
在得出H后,只需將H乘以攝像頭獲取的原始透視畸變圖的每個(gè)像素,經(jīng)一一映射后便可獲得經(jīng)逆透視投影矯正后的圖像.
CamShift算法是以顏色直方圖產(chǎn)生目標(biāo)概率分布并在統(tǒng)計(jì)意義上以魯棒的動態(tài)概率分布模式跟蹤目標(biāo)的算法,可以有效解決目標(biāo)變形及遮擋問題,且運(yùn)算效率較高.在運(yùn)用CamShift算法跟蹤目標(biāo)之前需先將視頻圖像從RGB顏色空間轉(zhuǎn)換到HSV顏色空間,以減少光照亮度的變化對跟蹤效果產(chǎn)生的影響.[9]CamShift的算法流程見圖 2.
圖2 CamShift跟蹤算法流程
在使用CamShift算法實(shí)時(shí)跟蹤船模目標(biāo)時(shí),首先要選擇初始化窗口,使窗口能夠有效包含船模表面的顏色標(biāo)簽;然后采樣窗口中每個(gè)像素在H(色調(diào))通道上的值,通過計(jì)算得到船模顏色標(biāo)簽的色調(diào)直方圖,并將其保存下來.在跟蹤過程中,對視頻圖像計(jì)算處理區(qū)域的每一個(gè)像素,通過查詢船模標(biāo)簽顏色的直方圖模型,可以得知該像素是船模顏色標(biāo)簽的概率,將計(jì)算處理區(qū)域之外其他區(qū)域的顏色概率全設(shè)為0.這樣,視頻圖像就轉(zhuǎn)換為船模的顏色概率分布圖,即船模顏色標(biāo)簽的反向投影圖.此后,將反射投影圖轉(zhuǎn)化為8位的灰度投影圖.設(shè)概率為1的像素值為255,概率為0的像素值為0,其余概率的像素也轉(zhuǎn)換為相應(yīng)的灰度值.所以,灰度投影圖中越亮的像素為船模顏色標(biāo)簽像素的可能性就越大.當(dāng)搜索窗口縮小到一定值時(shí)說明船模已經(jīng)跟丟,此時(shí)程序可將窗口自動擴(kuò)大到適當(dāng)?shù)闹?,開始新的跟蹤,這種方法可以有效防止船模意外跟丟.圖3為原始跟蹤圖與對應(yīng)的灰度投影圖,兩張圖中橢圓所包圍的區(qū)域?yàn)楸桓櫟拇n伾珮?biāo)簽.
圖3 原始跟蹤圖及其對應(yīng)的灰度投影圖
得到圖像的灰度投影圖后便可進(jìn)一步確定船模顏色標(biāo)簽的重心.設(shè)點(diǎn)(x,y)為搜索窗口中某像素的坐標(biāo),I(x,y)為投影圖中點(diǎn)(x,y)處的像素值,則船模跟蹤過程中搜索窗口內(nèi)像素分布的重心計(jì)算公式為
式(5)中零階矩的計(jì)算式為
一階矩的計(jì)算式為
確定M00及重心坐標(biāo)后,便可根據(jù)M00調(diào)整搜索窗口的大小,同時(shí)將搜索窗口的中心移動到計(jì)算出的重心處.如果移動距離大于預(yù)設(shè)的固定閾值,就會重新計(jì)算調(diào)整后的窗口中心,開始新一輪的窗口位置及尺寸的調(diào)整,直至窗口中心與重心間的移動距離小于預(yù)設(shè)的閾值,或者循環(huán)的次數(shù)達(dá)到某一最大值時(shí)才認(rèn)為滿足收斂條件,進(jìn)入下一幀圖像進(jìn)行新的船模目標(biāo)的搜索.而在新的圖像幀中,可利用上一幀圖像中最終得到的重心位置和零階矩M00,設(shè)置其新的搜索窗口的位置和尺寸.CamShift跟蹤算法在圖像幀內(nèi)與幀間都是根據(jù)上一步得到的M00及重心自適應(yīng)地調(diào)整搜索窗口的大小及位置,其在船模轉(zhuǎn)向或者由遠(yuǎn)及近的運(yùn)動等產(chǎn)生動態(tài)變形的情況下仍能夠取得良好的跟蹤效果.
實(shí)驗(yàn)中使用分辨率為640×480的高清攝像頭Logitech C310,并在 VC++6.0編程環(huán)境下加載OpenCV開源庫編寫軟件,實(shí)現(xiàn)相關(guān)算法及技術(shù).利用實(shí)驗(yàn)室現(xiàn)有的水池模型和遙控船舶模型搭建相關(guān)實(shí)驗(yàn)平臺,測試相關(guān)數(shù)據(jù),并分析所得數(shù)據(jù)的誤差.
步驟1 準(zhǔn)備好水池和攝像頭,在水池底部畫一個(gè)黑色矩形框并裝上水,測得矩形框的實(shí)際大小為91 cm×186 cm,同時(shí)在矩形框內(nèi)的幾個(gè)特定位置上方放置一個(gè)硬幣作為船模的參考點(diǎn),并將攝像頭以一個(gè)合理的高度和視角安裝好,使得水池在圖像中占的面積盡可能大,并使黑色矩形的底邊盡可能與圖像的底邊平行,以減小誤差.
步驟2 制作一張紫色的顏色標(biāo)簽,將其貼于船模表面,同時(shí)做一小圓柱桶,其高度與船模浮在水面時(shí)顏色標(biāo)簽相對池底的高度一致,同樣也在圓柱桶上方貼一紫色標(biāo)簽,見圖4.
圖4 船模顏色標(biāo)簽及圓柱桶標(biāo)定標(biāo)簽
步驟3 利用步驟2中制作好的圓柱桶標(biāo)簽經(jīng)人工標(biāo)定法獲得與船模顏色標(biāo)簽處于同一水平面的黑色矩形框4個(gè)角點(diǎn)的圖像像素坐標(biāo)A(186,445),B(468,445),C(400,103),D(209,106),各點(diǎn)的位置見圖5(a).C,D點(diǎn)的y坐標(biāo)存在的微小差別是由攝像機(jī)的視角及測量誤差造成的,其對最終跟蹤結(jié)果的影響在精度允許范圍內(nèi).設(shè)正視圖中與這4個(gè)點(diǎn)對應(yīng)的 4個(gè)矩形角點(diǎn)坐標(biāo)為 A'(186,445),B'(468,445),C'(468,105),D'(186,105).利用這4對點(diǎn)坐標(biāo)求得逆透視投影變換矩陣
步驟4 通過步驟3求得的逆透視投影變換矩陣H對獲得的視頻圖像進(jìn)行逆透視投影矯正,矯正前的畸變圖與矯正后的正視圖見圖5.
圖5 視頻圖像矯正前后的對比
步驟5 在獲得正視圖的實(shí)時(shí)視頻圖像后,在程序中將圖像坐標(biāo)的原點(diǎn)從其左上角設(shè)置到左下角.然后再將圓柱桶標(biāo)簽放在黑色邊框的4個(gè)角點(diǎn)處獲得其在此時(shí)的正視圖中的坐標(biāo)值A(chǔ)″(186,35),B″(468,35),C″(468,369),D″(186,373).經(jīng)過逆透視矯正,船模顏色標(biāo)簽所在的水平面成像到視頻圖像,正視圖中像素的距離與實(shí)際的水平面空間距離成正比,所以當(dāng)以A″點(diǎn)為原點(diǎn)、(xP,yP)為船模顏色標(biāo)簽的重心坐標(biāo)時(shí),船模在水池中的實(shí)際坐標(biāo)為
式中:371為C″和D″點(diǎn)y坐標(biāo)的平均值.這樣,只要利用CamShift算法實(shí)時(shí)跟蹤船模顏色標(biāo)簽在圖像中的重心P的坐標(biāo),即可由式(9)實(shí)時(shí)計(jì)算出船模在水池中的實(shí)際精確坐標(biāo)位置,實(shí)現(xiàn)船模位置的跟蹤.同時(shí),只要以固定的幀率采集視頻圖像,就能夠由跟蹤得到的實(shí)時(shí)船模位置實(shí)時(shí)計(jì)算出船模航速和航跡向參數(shù).
圖6 各硬幣測試點(diǎn)的放置位置
如圖6所示:將15個(gè)硬幣放在水池中15個(gè)確定的位置 E,F(xiàn),G,H,I,J,K,L,M,N,O,P,Q,R,T 處作為測試點(diǎn),將船模固定放置在測試點(diǎn)上方,利用第4.1節(jié)的實(shí)驗(yàn)方法求得船模在這些點(diǎn)處的跟蹤坐標(biāo)值,其真實(shí)值與跟蹤值數(shù)據(jù)見表1.
船模位置坐標(biāo)在這些測試點(diǎn)處的真實(shí)值與跟蹤值對比見圖7.跟蹤結(jié)果在x軸方向上的坐標(biāo)誤差見圖8,在y軸方向上的坐標(biāo)誤差見圖9.
從以上各實(shí)驗(yàn)結(jié)果可以看出,雖然只用4個(gè)點(diǎn)求取逆透視投影變換矩陣,但已經(jīng)得到相對理想的效果.跟蹤誤差基本都控制在3 cm以內(nèi),相對于本身尺寸達(dá)到7.5 cm寬度的船模而言其精度非常高.實(shí)驗(yàn)結(jié)果可以滿足水池實(shí)驗(yàn)室環(huán)境對船模位置跟蹤的精度要求.
表1 各硬幣測試點(diǎn)處的真實(shí)值與跟蹤值 cm
造成實(shí)驗(yàn)中船模位置跟蹤誤差的原因很多:首先,船模放置過程中放置點(diǎn)的確切坐標(biāo)位置本身有偏差,這種偏差會對跟蹤結(jié)果產(chǎn)生一定的影響;其次,4個(gè)人工標(biāo)定點(diǎn)提取的精確性會直接影響到逆透視矩陣的計(jì)算準(zhǔn)確性,進(jìn)而影響到圖像中船模質(zhì)心像素坐標(biāo)的計(jì)算準(zhǔn)確性;再次,船模航向角的不同以及船模離攝像頭的遠(yuǎn)近不同會造成計(jì)算出的船模顏色標(biāo)簽重心有所差異;最后,攝像頭的透鏡畸變也會對位置計(jì)算造成微小誤差.但是,使用本實(shí)驗(yàn)平臺在水池環(huán)境下跟蹤船模的位置所產(chǎn)生的誤差基本都在可接受的范圍之內(nèi).
圖7 測試點(diǎn)真實(shí)值與跟蹤結(jié)果值對比
圖8 跟蹤結(jié)果在x軸方向上的誤差
通過建立實(shí)驗(yàn)平臺,運(yùn)用圖像逆透視投影矯正結(jié)合CamShift跟蹤算法實(shí)現(xiàn)船模位置的高精度實(shí)時(shí)自動跟蹤,并對實(shí)驗(yàn)結(jié)果與誤差進(jìn)行分析討論,利用獲得的位置坐標(biāo)可以求得船模的航速和航跡向這兩個(gè)狀態(tài)參數(shù).本文的技術(shù)可為水池實(shí)驗(yàn)室的建設(shè)奠定技術(shù)基礎(chǔ).后續(xù)工作將在本文的基礎(chǔ)上重點(diǎn)研究如何實(shí)時(shí)跟蹤船模的航向狀態(tài).
[1]金長奎.船舶操縱模擬方法及模擬器精度分析[J].上海海運(yùn)學(xué)院學(xué)報(bào),1988,10(3):87-96.
[2]侯志強(qiáng),韓崇昭.視覺跟蹤技術(shù)綜述[J].自動化學(xué)報(bào),2006,32(4):603-617.
[3]楊忠根,張葆成.單視圖線性三維重建的6點(diǎn)算法[J].上海海事大學(xué)學(xué)報(bào),2006,27(2):42-45.
[4]童劍軍,鄒明福.基于監(jiān)控視頻圖像的車輛測速[J].中國圖像圖形學(xué)報(bào),2005,10(2):192-196.
[5]蔣剛毅,郁梅,葉錫恩,等.一種基于視覺的車輛跟蹤及交通流量參數(shù)估計(jì)新方法[J].電路與系統(tǒng)學(xué)報(bào),2001,6(4):69-73.
[6]歐宗瑛,張艷珍,袁野.基于顏色信息足球機(jī)器人視覺跟蹤算法[J].大連理工大學(xué)學(xué)報(bào),2000,19(6):729-732.
[7]杜欣,趙曉光.基于彩色圖像的機(jī)器人視覺跟蹤[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2006,31(2):136-139.
[8]MIRO J V,ZHOU Weizhen,DISSANAYAKE G.Towards vision based navigation in large indoor environments[C]//Environ Int Conf Intelligent Robots & Systems,2006:2096-2102.
[9]冉鑫,任蕾.基于可見光視頻圖像處理的水上弱小目標(biāo)檢測方法[J].上海海事大學(xué)學(xué)報(bào),2010,31(2):11-16.
[10]BRADSKI G R.Real time face and object tracking as a component of a perceptual user interface[C]//Proc Fourth IEEE Workshop on Applications Comput Vision.Princeton,NJ:1998:214-219.
[11]張宏志,張金換,岳卉,等.基于CamShift的目標(biāo)跟蹤算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(11):2012-2014.
[12]石睿,李華.一種基于透視投影的紋理校正方法[J].計(jì)算機(jī)應(yīng)用,2001,21(4):30-32.
[13]LU Shijian,CHEN Ben M,KO C C.Perspective rectification of document images using fuzzy set and morphological operations[J].Image & Vision Computing,2005,23(5):541-553.
[14]萬衛(wèi)兵,霍宏,趙宇明.智能視頻監(jiān)控中目標(biāo)檢測與識別[M].上海:上海交通大學(xué)出版社,2010:204-209.
[15]于仕琪,劉瑞禎.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2009:371-379.