LK光流

Lucas–Kanade光流算法是一種兩幀差分的光流估計算法。它由Bruce D. Lucas 和 Takeo Kanade提出 [1]。

LK光流法有三個假設條件:

1. 亮度恆定:一個像素點隨着時間的變化,其亮度值(像素灰度值)是恆定不變的。這是光流法的基本設定。所有光流法都必須滿足。

2. 小運動: 時間的變化不會引起位置的劇烈變化。這樣才能利用相鄰幀之間的位置變化引起的灰度值變化,去求取灰度對位置的偏導數。所有光流法必須滿足。

3. 空間一致:即前一幀中相鄰像素點在後一幀中也是相鄰的。這是LK光流法獨有的假定。因爲爲了求取x,y方向的速度,需要建立多個方程聯立求解。而空間一致假設就可以利用鄰域n個像素點來建立n個方程。

 

LK光流算法原理的數學推導:

假設前一幀時間爲t, 後一幀時間爲t+δt。則前一幀I的像素點I(x, y, z, t)在後一幀中的位置爲I(x+δx, y+δy, z+δz, t+δt )。

① 根據亮度恆定假設:

        

② 根據小運動假設, 將上式右側用泰勒級數展開:

  

   H.O.T是泰勒級數展開式的高階項,小運動情況下可以 忽略爲0.

③ 根據上面兩個公式可以得到:

  

  或者下面的公式:

  

而對於二維圖像而言,只需要考慮x, y, t即可,其中Ix,Iy  It分別爲圖像在(x, y, t)方向的差分,寫爲如下形式:

  

④ 現在有兩個未知數,只有一個方程。因此用到第三個假設:即空間一致性假設,LK算法是利用3x3窗口內的9個像素點建立9個方程。簡寫爲下面的形式:  

  

  寫成矩陣形式:

   

  當然兩個未知數,9個方程,這是一個超定問題,採用最小二乘法解決:

  

        寫成如下形式:

  

       根據上式通過累加鄰域像素點在三個維度的偏導數並做矩陣運算,即可算出該點的光流(Vx,Vy)。

 

源代碼及效果:

 源代碼見這裏:https://blog.csdn.net/xiaoyufei117122/article/details/53693627

 效果並不好,很多錯誤匹配點。

 

參考文獻:

[1]. Lucas B and Kanade T. An Iterative Image RegistrationTechnique with an Application to Stereo Vision. Proc. Of 7th InternationalJoint Conference on Artificial Intelligence (IJCAI), pp.674-679.

 

發佈了247 篇原創文章 · 獲贊 107 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章