光流传感器原理和定点

光流原理:

定义:光流是可以说是一种简单实用的图像处理表达方式,它是通过一幅图像序列中的图像亮度来表现它的运动模式,也就是一个点在一个物体、图像表面上的运动速度在视觉成像平面上的表达。

原理:光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”,即研究图像灰度在时间上的变化与景象中物体结构及其运动的关系。一般情况下,光流由相机运动、场景中目标运动或两者的共同运动产生的相对运动引起的。光流计算方法大致可分为三类:基于匹配的方法、频域的方法和梯度的方法。

工作方式:一幅图像是由很多个像素点组成的,在一个二维平面中每个像素点都有一个坐标,可以抽象的说对比一个鼠标传感器在这副图像的位置,只要鼠标传感器运动,根据鼠标传感器与像素点坐标的对比,便可以知道移动的方向及坐标,根据当前的高度可以计算出移动的距离。

光流传感器:

现在市面上最常用到的光流传感器为:APM用的Optical Flow光流传感器和PIXHAWK用的PX4 Flow光流传感器。

这里我们主要给大家讲解一下PIXHAWK用的PX4 Flow光流传感器,该传感器是一款智能运动相机,拥有752*480的像素分辨率,算法中采用4倍分级和裁剪法,计算速度达到250Hz,具备非常高的感光度,因此它能够以120Hz的计算速度在室内或室外较暗的环境下工作。当然,也可以自行对它编程。

在PX4 Flow的模块上有一个USB、UART和一个I2C接口,在USB、UART数据输出时是采取MAVLINK协议包,然后由我们根据MAVLINK协议包手册进行数据解析,主要数据解析如下:

通过I2C接口采集数据解析:

PX4 Flow光流传感器进行I2C数据通信时,7位的设备总线地址可以由我们自己设定,选取什么地址完全取决于我们硬件如何连接。默认地址为0x42,总共8个地址可设,见下图:

I2C数据帧包含22字节数据按照以下顺序:

当我们向设备地址0x42,发送一个0x0,我们在数据帧地址中便可以读取到22个字节的数据。

光流定点:

当我们将光流传感器的数据进行解析后,可以得到X、Y方向移动量等数据,然后当使用定点时,将该光流位置的偏移量数据通过PID算法加入到姿态角中。