Skip to main content

Optical Flow

Optical Flow は、連続する frame の間で、各 pixel がどこへ移動したかを表す 2D motion field です。Video understanding、tracking、visual odometry、scene flow、motion segmentation、video stabilization などで使われます。

定義

時刻 tt の image ItI_t と次の時刻の image It+1I_{t+1} があるとき、optical flow は各 pixel x=(u,v)\mathbf{x} = (u, v) に対して displacement w=(Δu,Δv)\mathbf{w} = (\Delta u, \Delta v) を推定します。

It(u,v)It+1(u+Δu,v+Δv)I_t(u, v) \approx I_{t+1}(u + \Delta u, v + \Delta v)

この仮定は brightness constancy と呼ばれます。

Classical methods

古典的な optical flow は、brightness constancy と smoothness prior を組み合わせて定式化されます。

  • Lucas-Kanade method は、local window 内で flow が一定であると仮定します。
  • Horn-Schunck method は、image 全体で smooth な flow field を推定します。

Deep learning methods

近年は、FlowNet、PWC-Net、RAFT などの neural network が使われます。特に RAFT は、all-pairs correlation volume と recurrent update によって高精度な flow を推定します。

3D Reconstruction との関係

Optical flow は、temporal な correspondence として 3D Reconstruction に関係します。

  • Visual odometry では、frame 間 motion estimation に使えます。
  • Dynamic scene では、static background と moving object を分けるために使えます。
  • Depth と camera motion が分かると、optical flow は geometry から予測できます。
  • Optical flow に depth を加えると、3D motion field である scene flow につながります。

Matching との違い

Feature matching は sparse な keypoint 対応を扱うことが多いです。一方で、optical flow は dense な pixel-wise correspondence を扱います。ただし、modern matching method では両者の境界は曖昧になりつつあります。

数式で見る brightness constancy

Brightness constancy は、同じ scene point の明るさが連続 frame 間で大きく変わらないという仮定です。時刻 tt の画像を I(x,y,t)I(x,y,t) とし、pixel が Δx,Δy\Delta x,\Delta y だけ動くとします。

I(x,y,t)=I(x+Δx,y+Δy,t+Δt)I(x,y,t)=I(x+\Delta x, y+\Delta y, t+\Delta t)

この式を Taylor 展開で一次近似すると、古典的な optical flow constraint が得られます。

Ixu+Iyv+It=0I_x u + I_y v + I_t = 0

ここで、Ix,IyI_x,I_y は空間方向の画像勾配、ItI_t は時間方向の変化、u=Δx/Δtu=\Delta x/\Delta tv=Δy/Δtv=\Delta y/\Delta t は optical flow の成分です。この式の気持ちは、「画像の明るさが増減したように見える量は、画像勾配の上を pixel が移動したことで説明できる」というものです。

ただし、この式は一つの pixel につき一つの制約しか与えません。一方で未知数は u,vu,v の二つです。この不足は aperture problem と呼ばれます。Lucas-Kanade method は local window 内で flow が一定であると仮定して、次の最小二乗問題を解きます。

minu,vxW(Ix(x)u+Iy(x)v+It(x))2\min_{u,v}\sum_{\mathbf{x}\in\mathcal{W}} \left(I_x(\mathbf{x})u+I_y(\mathbf{x})v+I_t(\mathbf{x})\right)^2

Horn-Schunck method は、data term に加えて flow field の滑らかさを入れます。

E(u,v)=(Ixu+Iyv+It)2+λ(u2+v2)dxE(u,v)=\int \left(I_xu+I_yv+I_t\right)^2 +\lambda\left(\|\nabla u\|^2+\|\nabla v\|^2\right)\,d\mathbf{x}

第一項は brightness constancy との整合性を表し、第二項は近い pixel の motion が急に変わりすぎないようにする regularization です。

関連ページ

主なソース