運動目標跟蹤中kalman濾波器的使用


目標跟蹤的kalman濾波器介紹 


  Kalman濾波器是通過前一狀態預測當前狀態,並使用當前觀測狀態進行校正,從而保證輸出狀態平穩變化,可有效抵抗觀測誤差。因此在運動目標跟蹤中也被廣泛使用。在視頻處理的運動目標跟蹤里,每個目標的狀態可表示為(x,y,w,h),x和y表示目標位置,w和h表示目標寬高。一般地認為目標的寬高是不變的,而其運動速度是勻速,那么目標的狀態向量就應該擴展為(x,y,w,h,dx,dy),其中dx和dy是目標當前時刻的速度。通過kalman濾波器來估計每個時刻目標狀態的大致過程為

  對視頻進行運動目標檢測,通過簡單匹配方法來給出目標的第一個和第二個狀態,從第三個狀態開始,就先使用kalman濾波器預測出當前狀態,再用當前幀圖像的檢測結果作為觀測值輸入給kalman濾波器,得到的校正結果就被認為是目標在當前幀的真實狀態。

 

有何問題?


   上面是大部分的做法,包括opencv都是如此實現的。但是,上面所述的使用方法也存在一定的問題。通常的監控場景都存在景深,一般而言,相機俯角不會太大(通常小於30度),那么在視頻中同一個人在近處會比遠處大很多,同樣的其速度也會大很多(這里也假設目標真實世界中是勻速運動)。比如近端1個像素代表5mm,那么在遠端則可能代表10mm,那人的大小和速度在近端都要大1倍。這樣表現出來的現象就是對從近向遠運動的目標,其輸出的大小比實際大小大,位置會稍微超前;反之,從遠向近運動的目標的輸出狀態大小則比實際大小小,位置會滯后。

 

如何解決?


   通常見過一種做法,是把目標狀態向量擴展為(x,y,w,h,dx,dy,ax,ay,dw,dh),其中ax,ay表示目標加速度,dw,dh表示目標大小的變化速度,相當於假定了目標在視頻中是勻變速運動,且其寬高也在勻速變化。但是實際測試來看,該做法效果一般,並不能有效解決上述問題,目前原因不是很明確,估計是由於成像景深並不能滿足上面的假設(即目標勻變速運動,寬高勻速變化這一假設)。

  另一種有效的方法是把圖像中的目標狀態轉換到真實狀態,即是從圖像坐標系映射到世界坐標系。在視頻中目標任意一個確定狀態(x,y,w,h)都可以唯一對應到真實世界中的(x1,y1,w1,h1),那么在真實世界中,目標通常是滿足寬高不變,勻速運動的假設條件的,那么就可以使用kalman濾波器,最終只要將結構反映射回圖像坐標系即可。  

  當然,需要做這樣的映射,就必須要確定相機的架設參數,包括高度,俯角和焦距。架設固定后,高度可直接給出,焦距和俯角可以在此基礎上通過視頻標定計算出。另外一種情況是雙目/多目成像,有2個或多個相機同時成像就可以直接實現目標在坐標系的轉換,這一點是當時在幾篇論文上看到的,實際沒這么做過。

  對於上面的視頻標定,有時候可能顯得過於麻煩,且計算也沒那么方便,這時我們可以退一步來考慮,基於前面的假設,可以確定只要目標在同一種度量下,目標的大小和速度也會保持不變,那就可以簡單點把圖像中的目標都映射到圖像同一位置后再進行kalman濾波,做法和映射到世界坐標系一樣,但是該方法的標定就更為簡單了,只要分別標出一個近景遠景框即可,完全不需要理會相機架設參數。

  當時的實驗結果來看,采用近景遠景框標定,只要標定准確,上述做法能完全解決直接在圖像中使用kalman濾波的問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM