光流算法在过去很长的时间中在计算机视觉目标跟踪领域占有一席之地。
所谓光流是指空间运动物体像素运动的瞬时速度,通过比较两帧之间同一个像素点的变化情况来推测物体运动情况的一种方法,因此如何解光流方程是一个问题。
基本理论就是假设两个帧一个坐标的像素在极短时间内变化不是很大,
那就有:
I(x,y,t)=I(x+dx,y+dy,t+dt)
使用泰勒展开:
得到
I(x+dx,y+dy,t+dt)=I(x,y,t)+IxVx+IxVy+It+HOT
HOT是微小扰动
所以得出optical flow equation
Ix(q1)Vx+Iy(q1)Vy+It(q1)=0
这就是光流方程,可以看见,只有一个已知方程,但是存在两个未知量,如何求解方程是一个问题。
其中的一个方法是:
Lucas-Kanade 方法:
主要思想是在我们要求解的点附近选取一个small patch,
在这个patch中存在这n个点(包括原始点),但是我们完全可以认为这些点在方程中的成立条件是和这个原始点一致的。
那么先对所有的点列方程组:
Ix(q1)Vx1+Iy(q1)Vy1+It(q1)=0
.
.
.
Ix(qn)Vxn+Iy(qn)Vyn+It(qn)=0
可以近似的认为这些点同属一个光流方程
因此方程组变为:
Ix(q1)Vx+Iy(q1)Vy+It(q1)=0
.
.
.
Ix(qn)Vx+Iy(qn)Vy+It(qn)=0
现在是n个方程两个未知数;
使用线性代数思想:伪逆矩阵
A=[
Ix(q1) Iy(q1)
.
.
.
Ix(qn) Iy(qn)
]
v=[Vx Vy]T
b=[-It(q1) ... -It(qn)]T
存在关系:
Av=b
解方程:
ATAv=ATb
=>
v=(ATA)-1ATb
得解
展开的结果显然与最小二乘是一致的