二、光流法原理

二、光流法原理

光流法的基本原理是通过图片序列,找出每一图片中像素点的运动速度的大小和方向。

使用光流法,基于以下两个假设:

(1)亮度恒定不变,在图片序列中,与摄像头有相对运动物体所对应的像素点的亮度不会发生改变;

(2)小运动,即连续两帧图片时间间隔,不会引起目标位置的剧烈变化,相邻帧之间位移要小。

设一帧图片中某个像素点的灰度值为I(x,y,t),经过dt时间,在下一帧,该像素点移动到(x+dx,y+dy)处(图6-5)。

图6-5 像素点的运动

则根据第一个假设,有

将式(6-1)等号右端用泰勒级数展开,可得

式中,fx和fy分别表示灰度图在x方向和y方向上的梯度,即像素点的灰度沿x方向和y方向的偏导数;ft表示时间梯度,即灰度图对时间的偏导数。

化简后可得

式中,,u和v分别表示像素点沿x方向和y方向运动的速度大小,(u,v)也即所求的光流矢量。

式(6-3)方程中包含两个未知数,显然只通过这一个约束方程是无法求出光流矢量的,这时就需要引入其他约束条件,从不同角度引入约束条件,就形成了不同的光流法。目前,光流法一般可分为基于梯度(微分)的方法、基于匹配的方法、基于能量(频率)的方法、基于相位的方法和神经动力学方法。

这里介绍基于梯度的方法。基于梯度的方法又称为微分法,是利用时变图像灰度的时空微分(时空梯度函数)计算像素的速度矢量。典型的代表是Lucas-Kanade(LK)算法。

LK光流法在两个基本假设的基础上,增加了一个“空间一致”的假设,即所有的相邻像素有相似的运动,也即在目标像素点周围m×m的领域内,每个像素均拥有相同的光流矢量。基于该假设,利用一个3×3邻域中的9个点具有相同运动的假设便可得到9个光流方程,然后采用最小二乘法进行拟合求解,最终(u,v)的求解如下:

得到像素点的移动速度后,还需要依靠陀螺仪和高度计将其转化为无人机的移动速度。

由此可以看出,光流法是测速算法,并不是直接定位的。简单来说,光流法就是通过检测图像中光点和暗点的移动,来判断图像中像素点相对于无人机的移动速度。如果地面是静止的,自然就可以得到无人机相对于地面的移动速度。

此时可采用速度闭环控制,将x方向和y方向的速度返回,形成一个位置闭环,保证x方向和y方向的速度为0,便能消除晃动,增强稳定性;也可采用位置闭环控制,将速度积分得到x方向和y方向的位置再返回,形成一个位置闭环,保证x方向和y方向的位置变化为0。

在无人机上,光流定位通常是借助无人机底部的一个摄像头采集图像数据,然后采用光流算法计算两帧图像的位移,进而实现对无人机的定位,这种定位手段配合GPS可以在室外实现对无人机的精准控制,并且在室内没有GPS信号的时候,也可以实现对无人机的高精度的定位,实现更加平稳的控制。