光流 (Optical flow or optic flow)是關於視域中的物體運動檢測 中的概念。用來描述相對於觀察者的運動所造成的觀測目標、表面或邊緣的運動。光流法在樣型識別 、計算機視覺 以及其他影像處理 領域中非常有用,可用於運動檢測、物件切割、碰撞時間與物體膨脹的計算、運動補償編碼,或者通過物體表面與邊緣進行立體的測量等等。
光流的測算
光流法實際是通過檢測圖像像素點的強度隨時間的變化進而推斷出物體移動速度及方向的方法。
假設該移動很小,那麼可以根據泰勒級數 得出:
I
(
x
+
Δ
x
,
y
+
Δ
y
,
t
+
Δ
t
)
=
I
(
x
,
y
,
t
)
+
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
+
{\displaystyle I(x+\Delta x,y+\Delta y,t+\Delta t)=I(x,y,t)+{\frac {\partial I}{\partial x}}\Delta x+{\frac {\partial I}{\partial y}}\Delta y+{\frac {\partial I}{\partial t}}\Delta t+}
Higher-order terms (HOTs)
因此可以推出:
∂
I
∂
x
Δ
x
+
∂
I
∂
y
Δ
y
+
∂
I
∂
t
Δ
t
=
0
{\displaystyle {\frac {\partial I}{\partial x}}\Delta x+{\frac {\partial I}{\partial y}}\Delta y+{\frac {\partial I}{\partial t}}\Delta t=0}
或
∂
I
∂
x
Δ
x
Δ
t
+
∂
I
∂
y
Δ
y
Δ
t
+
∂
I
∂
t
Δ
t
Δ
t
=
0
{\displaystyle {\frac {\partial I}{\partial x}}{\frac {\Delta x}{\Delta t}}+{\frac {\partial I}{\partial y}}{\frac {\Delta y}{\Delta t}}+{\frac {\partial I}{\partial t}}{\frac {\Delta t}{\Delta t}}=0}
最終可得出結論:
∂
I
∂
x
V
x
+
∂
I
∂
y
V
y
+
∂
I
∂
t
=
0
{\displaystyle {\frac {\partial I}{\partial x}}V_{x}+{\frac {\partial I}{\partial y}}V_{y}+{\frac {\partial I}{\partial t}}=0}
這裡的
V
x
,
V
y
{\displaystyle V_{x},V_{y}}
是
x
{\displaystyle x}
和
y
{\displaystyle y}
方向上的速率,或稱為
I
(
x
,
y
,
t
)
{\displaystyle I(x,y,t)}
的光流。而
∂
I
∂
x
{\displaystyle {\tfrac {\partial I}{\partial x}}}
,
∂
I
∂
y
{\displaystyle {\tfrac {\partial I}{\partial y}}}
和
∂
I
∂
t
{\displaystyle {\tfrac {\partial I}{\partial t}}}
則是圖像
(
x
,
y
,
t
)
{\displaystyle (x,y,t)}
在對應方向上的偏導數 。
I
x
{\displaystyle I_{x}}
、
I
y
{\displaystyle I_{y}}
和
I
t
{\displaystyle I_{t}}
的關係可用下式表述:
I
x
V
x
+
I
y
V
y
=
−
I
t
{\displaystyle I_{x}V_{x}+I_{y}V_{y}=-I_{t}}
或
∇
I
T
⋅
V
→
=
−
I
t
{\displaystyle \nabla I^{T}\cdot {\vec {V}}=-I_{t}}
這是兩個未知數中的一個方程,不能這樣求解。這被稱為光流算法的孔徑問題。為了找到光流,需要另一組方程,由附加的約束給出。所有光流方法都引入了估算實際流量的附加條件.
一些求光流的方法