光流(Optical flow or optic flow)是關於視域中的物體運動檢測中的概念。用來描述相對於觀察者的運動所造成的觀測目標、表面或邊緣的運動。光流法在樣型識別、計算機視覺以及其他影像處理領域中非常有用,可用於運動檢測、物件切割、碰撞時間與物體膨脹的計算、運動補償編碼,或者通過物體表面與邊緣進行立體的測量等等。
光流的測算
| 此條目 沒有列出任何參考或來源。 (2022年6月11日) |
光流法實際是通過檢測圖像像素點的強度隨時間的變化進而推斷出物體移動速度及方向的方法。
假設該移動很小,那麼可以根據泰勒級數得出:
Higher-order terms (HOTs)
因此可以推出:
![{\displaystyle {\frac {\partial I}{\partial x}}\Delta x+{\frac {\partial I}{\partial y}}\Delta y+{\frac {\partial I}{\partial t}}\Delta t=0}](//wikimedia.org/api/rest_v1/media/math/render/svg/6fc4d94f9188324981bba2067476e684467e782d)
或
![{\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}](//wikimedia.org/api/rest_v1/media/math/render/svg/bdc292eb494006ef921415bfd9659debcf3b9a05)
最終可得出結論:
![{\displaystyle {\frac {\partial I}{\partial x}}V_{x}+{\frac {\partial I}{\partial y}}V_{y}+{\frac {\partial I}{\partial t}}=0}](//wikimedia.org/api/rest_v1/media/math/render/svg/dcea639f5b077f0b62fb6b3e80cac328371a197b)
這裡的
是
和
方向上的速率,或稱為
的光流。而
,
和
則是圖像
在對應方向上的偏導數。
、
和
的關係可用下式表述:
![{\displaystyle I_{x}V_{x}+I_{y}V_{y}=-I_{t}}](//wikimedia.org/api/rest_v1/media/math/render/svg/262f48c446773db9697b0c4e4b025c6688b755e0)
或
![{\displaystyle \nabla I^{T}\cdot {\vec {V}}=-I_{t}}](//wikimedia.org/api/rest_v1/media/math/render/svg/f462cbf95a9714d36e0801425adea4ea840b3da0)
這是兩個未知數中的一個方程,不能這樣求解。這被稱為光流算法的孔徑問題。為了找到光流,需要另一組方程,由附加的約束給出。所有光流方法都引入了估算實際流量的附加條件.
一些求光流的方法
- 相位相關
- 塊相關 (誤差絕對值和, 標準化互相關)
- 梯度約束-相關的對齊
- 盧卡斯-卡納德方法(Lucas-Kanade Method)
- 霍恩·山克方法(Horn Schunck Method)