陳增志,白響恩,吳善剛,肖英杰,陳亮
(上海海事大學商船學院,上海 201306)
在水池實驗室中可實現各種實驗:如利用相似性原理研究船舶的相關性能,模擬船舶的操縱[1],用船模做自航、耐波實驗等.實驗需要對船模的運動狀態進行跟蹤,而狀態跟蹤的基礎是船模位置的跟蹤.隨著科學技術的發展,計算機視覺技術[2]在圖像的三維重建[3]、道路交通中的車輛跟蹤[4-5]、機器人跟蹤[6-8]、水上弱小目標檢測[9]等領域已經被廣泛應用.本文提出的將計算機視覺技術應用于船模位置跟蹤的方法具有系統工作穩定性高,安裝簡單方便,跟蹤精度高、效果較好等特點.利用跟蹤得到的位置坐標計算出船模的航速和航跡向,可以實現這兩個狀態參數的跟蹤.本文使用計算機視覺技術中的 CamShift[10-11]跟蹤算法和圖像逆透視投影矯正算法[12-13]實現船模位置的高精度實時自動跟蹤.
船模位置跟蹤技術主要包括圖像采集模塊、逆透視投影矯正模塊、CamShift算法跟蹤船模模塊、船模圖像坐標到實際坐標的換算模塊,其總體流程見圖1.

圖1 船模位置跟蹤技術總體流程
在實際應用中,攝像頭得到圖像的過程需要經過透視投影,即需要將三維物理世界中的點投影變換到二維圖像平面中,所以為了計算船模的位置必須先對已經透視畸變的視頻圖像進行逆透視投影矯正[13],使水池在視頻圖像中呈正視效果.本文用投影矩陣法對圖像進行逆透視投影矯正,即將透視畸變圖像的4個標定點坐標投影到正視圖的4個標定點坐標,產生一種能保持連續性和連通性的光滑映射.已知一個二維圖像經過透視變換成為另外一個平面圖像的過程可以表示為

式中:H為3×3的映射矩陣.設q為任意尺度的比例系數,(u,v)是正視圖圖像的坐標,(x,y)是畸變圖圖像的坐標,將式(1)寫成

由式(2)可得

消去式(3)中的q可得

H有9個自由度即9個參數,而h33與其他8個未知數存在線性相關性,此時透視變換只需8個有效自由度就能計算出畸變圖到正視圖的映射關系矩陣,因此可指定式(4)中的h33=1.這樣,已知畸變圖與正視圖上對應的4對標定點就可以準確地求解H.當標定點多于4對時可以采用最小二乘法求出上述方程的解,以降低標定誤差對結果產生的影響.
在得出H后,只需將H乘以攝像頭獲取的原始透視畸變圖的每個像素,經一一映射后便可獲得經逆透視投影矯正后的圖像.
CamShift算法是以顏色直方圖產生目標概率分布并在統計意義上以魯棒的動態概率分布模式跟蹤目標的算法,可以有效解決目標變形及遮擋問題,且運算效率較高.在運用CamShift算法跟蹤目標之前需先將視頻圖像從RGB顏色空間轉換到HSV顏色空間,以減少光照亮度的變化對跟蹤效果產生的影響.[9]CamShift的算法流程見圖 2.

圖2 CamShift跟蹤算法流程
在使用CamShift算法實時跟蹤船模目標時,首先要選擇初始化窗口,使窗口能夠有效包含船模表面的顏色標簽;然后采樣窗口中每個像素在H(色調)通道上的值,通過計算得到船模顏色標簽的色調直方圖,并將其保存下來.在跟蹤過程中,對視頻圖像計算處理區域的每一個像素,通過查詢船模標簽顏色的直方圖模型,可以得知該像素是船模顏色標簽的概率,將計算處理區域之外其他區域的顏色概率全設為0.這樣,視頻圖像就轉換為船模的顏色概率分布圖,即船模顏色標簽的反向投影圖.此后,將反射投影圖轉化為8位的灰度投影圖.設概率為1的像素值為255,概率為0的像素值為0,其余概率的像素也轉換為相應的灰度值.所以,灰度投影圖中越亮的像素為船模顏色標簽像素的可能性就越大.當搜索窗口縮小到一定值時說明船模已經跟丟,此時程序可將窗口自動擴大到適當的值,開始新的跟蹤,這種方法可以有效防止船模意外跟丟.圖3為原始跟蹤圖與對應的灰度投影圖,兩張圖中橢圓所包圍的區域為被跟蹤的船模顏色標簽.

圖3 原始跟蹤圖及其對應的灰度投影圖
得到圖像的灰度投影圖后便可進一步確定船模顏色標簽的重心.設點(x,y)為搜索窗口中某像素的坐標,I(x,y)為投影圖中點(x,y)處的像素值,則船模跟蹤過程中搜索窗口內像素分布的重心計算公式為

式(5)中零階矩的計算式為

一階矩的計算式為

確定M00及重心坐標后,便可根據M00調整搜索窗口的大小,同時將搜索窗口的中心移動到計算出的重心處.如果移動距離大于預設的固定閾值,就會重新計算調整后的窗口中心,開始新一輪的窗口位置及尺寸的調整,直至窗口中心與重心間的移動距離小于預設的閾值,或者循環的次數達到某一最大值時才認為滿足收斂條件,進入下一幀圖像進行新的船模目標的搜索.而在新的圖像幀中,可利用上一幀圖像中最終得到的重心位置和零階矩M00,設置其新的搜索窗口的位置和尺寸.CamShift跟蹤算法在圖像幀內與幀間都是根據上一步得到的M00及重心自適應地調整搜索窗口的大小及位置,其在船模轉向或者由遠及近的運動等產生動態變形的情況下仍能夠取得良好的跟蹤效果.
實驗中使用分辨率為640×480的高清攝像頭Logitech C310,并在 VC++6.0編程環境下加載OpenCV開源庫編寫軟件,實現相關算法及技術.利用實驗室現有的水池模型和遙控船舶模型搭建相關實驗平臺,測試相關數據,并分析所得數據的誤差.
步驟1 準備好水池和攝像頭,在水池底部畫一個黑色矩形框并裝上水,測得矩形框的實際大小為91 cm×186 cm,同時在矩形框內的幾個特定位置上方放置一個硬幣作為船模的參考點,并將攝像頭以一個合理的高度和視角安裝好,使得水池在圖像中占的面積盡可能大,并使黑色矩形的底邊盡可能與圖像的底邊平行,以減小誤差.
步驟2 制作一張紫色的顏色標簽,將其貼于船模表面,同時做一小圓柱桶,其高度與船模浮在水面時顏色標簽相對池底的高度一致,同樣也在圓柱桶上方貼一紫色標簽,見圖4.

圖4 船模顏色標簽及圓柱桶標定標簽
步驟3 利用步驟2中制作好的圓柱桶標簽經人工標定法獲得與船模顏色標簽處于同一水平面的黑色矩形框4個角點的圖像像素坐標A(186,445),B(468,445),C(400,103),D(209,106),各點的位置見圖5(a).C,D點的y坐標存在的微小差別是由攝像機的視角及測量誤差造成的,其對最終跟蹤結果的影響在精度允許范圍內.設正視圖中與這4個點對應的 4個矩形角點坐標為 A'(186,445),B'(468,445),C'(468,105),D'(186,105).利用這4對點坐標求得逆透視投影變換矩陣

步驟4 通過步驟3求得的逆透視投影變換矩陣H對獲得的視頻圖像進行逆透視投影矯正,矯正前的畸變圖與矯正后的正視圖見圖5.

圖5 視頻圖像矯正前后的對比
步驟5 在獲得正視圖的實時視頻圖像后,在程序中將圖像坐標的原點從其左上角設置到左下角.然后再將圓柱桶標簽放在黑色邊框的4個角點處獲得其在此時的正視圖中的坐標值A″(186,35),B″(468,35),C″(468,369),D″(186,373).經過逆透視矯正,船模顏色標簽所在的水平面成像到視頻圖像,正視圖中像素的距離與實際的水平面空間距離成正比,所以當以A″點為原點、(xP,yP)為船模顏色標簽的重心坐標時,船模在水池中的實際坐標為

式中:371為C″和D″點y坐標的平均值.這樣,只要利用CamShift算法實時跟蹤船模顏色標簽在圖像中的重心P的坐標,即可由式(9)實時計算出船模在水池中的實際精確坐標位置,實現船模位置的跟蹤.同時,只要以固定的幀率采集視頻圖像,就能夠由跟蹤得到的實時船模位置實時計算出船模航速和航跡向參數.

圖6 各硬幣測試點的放置位置
如圖6所示:將15個硬幣放在水池中15個確定的位置 E,F,G,H,I,J,K,L,M,N,O,P,Q,R,T 處作為測試點,將船模固定放置在測試點上方,利用第4.1節的實驗方法求得船模在這些點處的跟蹤坐標值,其真實值與跟蹤值數據見表1.
船模位置坐標在這些測試點處的真實值與跟蹤值對比見圖7.跟蹤結果在x軸方向上的坐標誤差見圖8,在y軸方向上的坐標誤差見圖9.
從以上各實驗結果可以看出,雖然只用4個點求取逆透視投影變換矩陣,但已經得到相對理想的效果.跟蹤誤差基本都控制在3 cm以內,相對于本身尺寸達到7.5 cm寬度的船模而言其精度非常高.實驗結果可以滿足水池實驗室環境對船模位置跟蹤的精度要求.

表1 各硬幣測試點處的真實值與跟蹤值 cm
造成實驗中船模位置跟蹤誤差的原因很多:首先,船模放置過程中放置點的確切坐標位置本身有偏差,這種偏差會對跟蹤結果產生一定的影響;其次,4個人工標定點提取的精確性會直接影響到逆透視矩陣的計算準確性,進而影響到圖像中船模質心像素坐標的計算準確性;再次,船模航向角的不同以及船模離攝像頭的遠近不同會造成計算出的船模顏色標簽重心有所差異;最后,攝像頭的透鏡畸變也會對位置計算造成微小誤差.但是,使用本實驗平臺在水池環境下跟蹤船模的位置所產生的誤差基本都在可接受的范圍之內.

圖7 測試點真實值與跟蹤結果值對比

圖8 跟蹤結果在x軸方向上的誤差
通過建立實驗平臺,運用圖像逆透視投影矯正結合CamShift跟蹤算法實現船模位置的高精度實時自動跟蹤,并對實驗結果與誤差進行分析討論,利用獲得的位置坐標可以求得船模的航速和航跡向這兩個狀態參數.本文的技術可為水池實驗室的建設奠定技術基礎.后續工作將在本文的基礎上重點研究如何實時跟蹤船模的航向狀態.
[1]金長奎.船舶操縱模擬方法及模擬器精度分析[J].上海海運學院學報,1988,10(3):87-96.
[2]侯志強,韓崇昭.視覺跟蹤技術綜述[J].自動化學報,2006,32(4):603-617.
[3]楊忠根,張葆成.單視圖線性三維重建的6點算法[J].上海海事大學學報,2006,27(2):42-45.
[4]童劍軍,鄒明福.基于監控視頻圖像的車輛測速[J].中國圖像圖形學報,2005,10(2):192-196.
[5]蔣剛毅,郁梅,葉錫恩,等.一種基于視覺的車輛跟蹤及交通流量參數估計新方法[J].電路與系統學報,2001,6(4):69-73.
[6]歐宗瑛,張艷珍,袁野.基于顏色信息足球機器人視覺跟蹤算法[J].大連理工大學學報,2000,19(6):729-732.
[7]杜欣,趙曉光.基于彩色圖像的機器人視覺跟蹤[J].武漢大學學報:信息科學版,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]冉鑫,任蕾.基于可見光視頻圖像處理的水上弱小目標檢測方法[J].上海海事大學學報,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的目標跟蹤算法[J].計算機工程與設計,2006,27(11):2012-2014.
[12]石睿,李華.一種基于透視投影的紋理校正方法[J].計算機應用,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]萬衛兵,霍宏,趙宇明.智能視頻監控中目標檢測與識別[M].上海:上海交通大學出版社,2010:204-209.
[15]于仕琪,劉瑞禎.學習OpenCV[M].北京:清華大學出版社,2009:371-379.