1. 程式人生 > >什麼是光流Optical Flow

什麼是光流Optical Flow

無人機上經常提到的光流法定位是什麼?

作為無人機愛好者一枚,經常關注比如大疆(DJI)、零度智控、PARRET的人都會看到他們提及的光流定位、室內懸停等的宣傳標語,那麼今天我們就來一起探討下它。

  • 光流定義
  • 光流通俗理解
  • 光流法分析
  • 參見

光流定義

光流的概念是Gibson在1950年首先提出來的。它是空間運動物體在觀察成像平面上的畫素運動的瞬時速度,是利用影象序列中畫素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關係,從而計算出相鄰幀之間物體的運動資訊的一種方法。一般而言,光流是由於場景中前景目標本身的移動、相機的運動,或者兩者的共同運動所產生的。

光流定位通俗理解

名字看著陌生又高大上,但從本質上說,光流就是在這個運動著的世界裡你感覺到的明顯的視覺運動,是空間運動物體在觀測成像平面上的畫素運動的“瞬時速度”。光流的研究是利用影象序列中的畫素強度資料的時域變化和相關性來確定各自畫素位置的“運動”。

光流法分析

其計算方法可以分為三類:
(1)基於區域或者基於特徵的匹配方法;
(2)基於頻域的方法;
(3)基於梯度的方法;
光流法的前提假設:
(1)相鄰幀之間的亮度恆定;
(2)相鄰視訊幀的取幀時間連續,或者,相鄰幀之間物體的運動比較“微小”;
(3)保持空間一致性;即,同一子影象的畫素點具有相同的運動
光流的基本方程
假設位於(x,y,t) 的畫素的亮度是 I(x,y,t), 該畫素在兩個影象幀之間移動了Δx Δy Δt,由泰勒展開式我們可以得到:
(x+Δx,y+Δy,t+Δt)=I(x,y,t)+∂I∂xΔx+∂I∂yΔy+∂I∂tΔt+o
由假設1可知
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)
故有:
∂I∂xΔx+∂I∂yΔy+∂I∂tΔt=0
或者
∂I∂xΔxΔt+∂I∂yΔyΔt+∂I∂t=0
這個方程便是我們計算光流的基本方程。

其中ΔxΔt和ΔyΔt為該點在x和y方向上的瞬時速度,也就是光流。
∂I∂t 代表 畫素點在時間上的變化。 可以通過在畫素位置(x,y)處兩張影象之間的畫素差。

但是這個我們要計算一個點的光流,有兩個未知數,只有一個方程,該如何解呢?針對這個問題,有很多解決方法:
- 基於梯度的方法
- 基於匹配的方法
- 基於能量的方法
- 基於相位的方法

繼續內容請參見以下文章。。。

參考