二维平面上的亮度变化可以看着是一个连续的流体,因此在物体运动的轨迹上亮度信号的强度基本保持不变。 I ( r ⃗ , t ) = I ( r ⃗ − d ⃗ , t − Δ t ) I(\vec{r},t)=I(\vec{r}-\vec{d},t-\Delta t) I(r ,t)=I(r −d ,t−Δt)
泰勒展开: I ( r ⃗ − d ⃗ , t − Δ t ) = I ( r ⃗ , t ) − d ⃗ ⋅ ∇ ⃗ I ( r ⃗ , t ) − Δ t ∂ I ( r ⃗ , t ) ∂ t I(\vec{r}-\vec{d},t-\Delta t)=I(\vec{r},t)-\vec{d}·\vec{\nabla}I(\vec{r},t)-\Delta t \frac{\partial I(\vec{r},t)}{\partial t} I(r −d ,t−Δt)=I(r ,t)−d ⋅∇ I(r ,t)−Δt∂t∂I(r ,t)
两边除以 Δ t \Delta t Δt: V ⃗ ⋅ ∇ ⃗ I ( r ⃗ , t ) + ∂ I ( r ⃗ , t ) ∂ t = 0 \vec{V}·\vec{\nabla}I(\vec{r},t)+\frac{\partial I(\vec{r},t)}{\partial t}=0 V ⋅∇ I(r ,t)+∂t∂I(r ,t)=0
其中, V ⃗ = ( u , v ) \vec{V}=(u,v) V =(u,v)
1、垂直与梯度方向的运动矢量具有不确定解。 2、当梯度为零时,运动矢量具有不确定解。
对每个运动矢量的求解都取n×n的块区域,例如3×3,我们认为其中所有9点都有相同的运动矢量。所以现在我们的问题变成了求解9个有两个未知变量的方程,这些变量是超定的。使用最小二乘拟合法可以获得更好的解决方案:
[ u v ] = [ ∑ i = 1 9 I x i 2 ∑ i = 1 9 I x i ⋅ I y i ∑ i = 1 9 I x i ⋅ I y i ∑ i = 1 9 I y i 2 ] − 1 ⋅ [ − ∑ i = 1 9 I x i ⋅ I t i − ∑ i = 1 9 I y i ⋅ I t i ] [\begin{matrix} u\\ v\\ \end{matrix}]= [\begin{matrix} \sum_{i=1}^9 I_{x_i}^2 & \sum_{i=1}^9 I_{x_i}·I_{y_i}\\ \sum_{i=1}^9 I_{x_i}·I_{y_i} & \sum_{i=1}^9 I_{y_i}^2\\ \end{matrix}]^{-1}· [\begin{matrix} -\sum_{i=1}^9 I_{x_i}·I_{t_i}\\ -\sum_{i=1}^9 I_{y_i}·I_{t_i}\\ \end{matrix}] [uv]=[∑i=19Ixi2∑i=19Ixi⋅Iyi∑i=19Ixi⋅Iyi∑i=19Iyi2]−1⋅[−∑i=19Ixi⋅Iti−∑i=19Iyi⋅Iti]
第一帧: 第二帧: 分析:这两帧的运动主要是男人在向右转头(镜头视角的右),周围区域基本不动。
运动矢量图: 可以看到基本符合。