假定图像序列记作I(x,y,t) I ( x , y , t ) ,其中X=[x,y] X = [ x , y ] 。视频中的每个前后帧提取出来之后就是一个图像序列。假设图像亮度恒定,即图像亮度没有变化,则导数为0:
dI(X,t)dt=∂I∂X∂X∂t+∂I∂t=0 d I ( X , t ) d t = ∂ I ∂ X ∂ X ∂ t + ∂ I ∂ t = 0
或者根据泰勒展开来得出上述式子:
I(X,t)=I(X+ΔX,t+Δt)≈I(X,t)+∂I∂XΔX+∂I∂tΔt∂I∂XΔX+∂I∂tΔt=0∂I∂XΔXΔt+∂I∂t=0∂I∂x∂x∂t+∂I∂y∂y∂t+∂I∂t=0 I ( X , t ) = I ( X + Δ X , t + Δ t ) ≈ I ( X , t ) + ∂ I ∂ X Δ X + ∂ I ∂ t Δ t ∂ I ∂ X Δ X + ∂ I ∂ t Δ t = 0 ∂ I ∂ X Δ X Δ t + ∂ I ∂ t = 0 ∂ I ∂ x ∂ x ∂ t + ∂ I ∂ y ∂ y ∂ t + ∂ I ∂ t = 0
其中,在微小时间内
∂X∂t ∂ X ∂ t 或者
ΔXΔt Δ X Δ t 表示速度,可以记为:
∂X∂t=[∂x∂t,∂y∂t]=[u,v]=d ∂ X ∂ t = [ ∂ x ∂ t , ∂ y ∂ t ] = [ u , v ] = d
则有:
Ixu+Iyv+It=0[IxIy][uv]=−It I x u + I y v + I t = 0 [ I x I y ] [ u v ] = − I t
Farneback光流法
Farneback是一种基于梯度的方法,假设图像梯度恒定且假设局部光流恒定。局部光流恒定,即对于任意的y∈N(x),d=∂X∂t不变 y ∈ N ( x ) , d = ∂ X ∂ t 不 变 。梯度恒定即:
ddt∇I(X,t)=∂∇I∂X∂X∂t+∂∇I∂t=H(I)⋅d+(∇I)t=0 d d t ∇ I ( X , t ) = ∂ ∇ I ∂ X ∂ X ∂ t + ∂ ∇ I ∂ t = H ( I ) ⋅ d + ( ∇ I ) t = 0
假设:
E(X,d)=||(H(I)⋅d+(∇I)t)||2 E ( X , d ) = | | ( H ( I ) ⋅ d + ( ∇ I ) t ) | | 2
上式在最优值处有导数为0:
∂E∂d=0d=−(HT(I)H(I))−1(HT(I)(∇I)t) ∂ E ∂ d = 0 d = − ( H T ( I ) H ( I ) ) − 1 ( H T ( I ) ( ∇ I ) t )
若对时间离散化: (后向差分)
(∇I)t(X,t)≈∇I(X,t)−∇I(X,t−1) ( ∇ I ) t ( X , t ) ≈ ∇ I ( X , t ) − ∇ I ( X , t − 1 )
(时间中心差分)
(∇I)t(X,t−1/2)≈∇I(X,t)−∇I(X,t−1)H(I)(X,t−1/2)≈12(H(I)(X,t)+H(I)(X,t−1)) ( ∇ I ) t ( X , t − 1 / 2 ) ≈ ∇ I ( X , t ) − ∇ I ( X , t − 1 ) H ( I ) ( X , t − 1 / 2 ) ≈ 1 2 ( H ( I ) ( X , t ) + H ( I ) ( X , t − 1 ) )
图像模型
图像一般是二维的(灰度图像),那么图像像素点的灰度值可以看成是一个二维变量的函数f(x,y) f ( x , y ) 。假设以感兴趣的像素点为中心,构建一个局部坐标系(并不是针对整张图像)。对函数进行二项展开,可以近似为:
f(x,y)≈r1+r2x+r3y+r4x2+r5y2+r6xy=(xy)T(r4r6/2r6/2r5)(xy)+(r2r3)T(xy)+r1=xTAx+bTx+c(454)(455)(456) (454) f ( x , y ) ≈ r 1 + r 2 x + r 3 y + r 4 x 2 + r 5 y 2 + r 6 x y (455) = ( x y ) T ( r 4 r 6 / 2 r 6 / 2 r 5 ) ( x y ) + ( r 2 r 3 ) T ( x y ) + r 1 (456) = x T A x + b T x + c
其中,x x 为二维列向量, A A 为2×2 2 × 2 的对称矩阵,b b 为2×1 2 × 1 的矩阵。注意,此处的系数确定后只针对在确定点(x,y) ( x , y ) 而言,对于其他点可能并不适用,也就是说,每个像素点对应一组系数。
考虑多项式扩展是在一个像素的邻域内,如果像素经过移动d d 后,则整个多项式应该会发生变化。 原始位置:
f1(x)=xTA1x+bT1x+c1
像素移动后:
f2(x)=f1(x−d)=(x−d)TA1(x−d)+bT1(x−d)+c1=xTA1x+(b1−2A1d)Tx+dTA1d−bT1d+c1=xTA2x+bT2x+c2 f 2 ( x ) = f 1 ( x − d ) = ( x − d ) T A 1 ( x − d ) + b 1 T ( x − d ) + c 1 = x T A 1 x + ( b 1 − 2 A 1 d ) T x + d T A 1 d − b 1 T d + c 1 = x T A 2 x + b 2 T x + c 2
其中,
A2=A1b2=b1−2A1dc2=dTA1d−bT1d+c1 A 2 = A 1 b 2 = b 1 − 2 A 1 d c 2 = d T A 1 d − b 1 T d + c 1
如果
A1 A 1 非奇异,则有上述的第二个式子可以得到:
d=−12A−11(b2−b1) d = − 1 2 A 1 − 1 ( b 2 − b 1 )
按照理论推导,其中必定有
A1=A2 A 1 = A 2 ,但实际情况中未必能满足这一项要求,因此可以通过来求平均来近似真实值。如果令:
A(x)=A1(x)+A2(x)2Δb(x)=−12(b2−b1) A ( x ) = A 1 ( x ) + A 2 ( x ) 2 Δ b ( x ) = − 1 2 ( b 2 − b 1 )
那么:
A(x)d(x)=Δb(x)d=(ATA)−1(ATΔb) A ( x ) d ( x ) = Δ b ( x ) d = ( A T A ) − 1 ( A T Δ b )
可以构建目标函数来进行优化求得位移:
e(x)=||Ad−Δb||2 e ( x ) = | | A d − Δ b | | 2
实际情况中,这种方法求得的结果中噪声太多,因此可以使用兴趣像素点的邻域,然后使用加权的目标函数:
e(x)=∑Δx∈Iw(Δx)||A(x+Δx)d−Δb(x+Δx)||2 e ( x ) = ∑ Δ x ∈ I w ( Δ x ) | | A ( x + Δ x ) d − Δ b ( x + Δ x ) | | 2