3. 光流定位原理入门
无人机要实现定点悬停,必须知道自己相对地面“动了多少、往哪动”。GPS 在室外能给出绝对位置,但在室内、桥洞、林下等场景往往失效;此时光流传感器通过向下拍摄地面纹理,从连续图像中估计像素运动,再结合高度换算成水平速度,成为定点悬停的核心手段。理解光流,要从“什么是光流”开始,逐步走到光流约束方程。
一、光流定义:像素在图像平面上的运动速度
光流(Optical Flow)是指图像中亮度模式随时间的运动。通俗地说,当相机与场景发生相对运动时,画面里的纹理、边缘、角点会在图像平面上移动,这些像素点的瞬时运动速度就构成光流。它通常是一个二维矢量场:
光流矢量 = (u, v)
u = dx/dt // 像素在图像 x 方向的运动速度
v = dy/dt // 像素在图像 y 方向的运动速度
需要强调:光流描述的是“图像上的运动”,不是“真实世界的运动”。同一个真实运动,在不同高度、不同焦距下产生的光流大小不同。对无人机而言,向下看的地面纹理越丰富、高度越低,光流越明显;反之,白墙、纯色地板、水面等弱纹理区域会让光流估计变得困难。
二、运动场与光流场:理想与现实的差别
运动场(Motion Field)是由场景中三维点的真实运动投影到图像平面所形成的二维速度场,它是几何意义上的“真实运动投影”。光流场(Optical Flow Field)则是从图像亮度变化中估计出来的二维速度场,是“看起来的运动”。
两者在多数情况下接近,但并不总是相等。典型差异包括:
- 无纹理区域:真实运动存在,但图像亮度没有变化,光流无法估计,出现“空洞”。
- 光照变化:光源移动或反光会让亮度变化被误判为运动,产生虚假光流。
- 孔径问题:沿直线边缘运动时,只有垂直于边缘的分量可被观测,切向分量不可知。
- 运动模糊:快速运动导致图像模糊,光流估计精度下降。
三、亮度恒定假设:光流约束方程的基石
要从图像中求运动,必须建立“亮度”和“运动”之间的关系。最核心的假设是亮度恒定假设:同一场景点在运动过程中,其图像亮度保持不变。设图像亮度为 I(x, y, t),其中 x、y 为像素坐标,t 为时间,则:
I(x, y, t) = I(x + dx, y + dy, t + dt)
也就是说,t 时刻位于 (x, y) 的点,经过 dt 时间移动到 (x+dx, y+dy),其亮度值不变。这个假设在短时间、小运动、光照稳定的条件下近似成立,是后续推导光流约束方程的前提。
四、光流约束方程推导:从泰勒展开到 u、v 关系
对亮度恒定等式左边在 (x, y, t) 处做一阶泰勒展开:
I(x+dx, y+dy, t+dt)
≈ I(x, y, t)
+ (∂I/∂x)dx + (∂I/∂y)dy + (∂I/∂t)dt
由亮度恒定假设,展开式与 I(x, y, t) 相等,因此:
(∂I/∂x)dx + (∂I/∂y)dy + (∂I/∂t)dt = 0
两边同除以 dt,并令 u = dx/dt、v = dy/dt,得到经典的光流约束方程:
Ix·u + Iy·v + It = 0
其中:
Ix = ∂I/∂x // 图像 x 方向梯度
Iy = ∂I/∂y // 图像 y 方向梯度
It = ∂I/∂t // 图像时间梯度
u, v // 待求光流分量
这个方程只有一个等式,却有两个未知数 u 和 v,因此是欠定的。它只能约束光流在梯度方向上的分量,无法唯一确定完整光流,这就是著名的“孔径问题”。要解出 u、v,必须引入额外约束,例如 Lucas-Kanade 的局部窗口一致性假设,或 Horn-Schunck 的全局平滑假设。
五、从光流到无人机速度:参数关系与场景案例
无人机定点悬停中,光流传感器通常向下安装,配合超声波或激光测距获得离地高度 h。若相机焦距为 f,像素光流为 (u, v),则相机水平速度近似为:
Vx ≈ (u · h) / f
Vy ≈ (v · h) / f
可以看出:同样的光流,高度越高,对应的真实速度越大;高度越低,速度越小。因此高度估计误差会直接放大速度误差。实际飞控中,光流数据会与 IMU、气压计、测距模块做卡尔曼融合,以抑制噪声和漂移。
| 概念 | 含义 | 在无人机中的作用 |
|---|---|---|
| 光流 | 图像亮度模式的二维运动速度 | 估计水平运动 |
| 运动场 | 真实三维运动在图像上的投影 | 理想参考量 |
| 光流场 | 从图像中估计出的运动场 | 实际可测量 |
| 亮度恒定假设 | 同一点运动前后亮度不变 | 推导约束方程的前提 |
| 光流约束方程 | Ix·u + Iy·v + It = 0 | 连接亮度与运动 |
| 孔径问题 | 一个方程两个未知数 | 需额外约束求解 |
六、常见误区与复盘
- 误区一:光流等于真实速度。光流是图像运动,必须结合高度和焦距才能换算成速度。
- 误区二:有光流就能定点。弱纹理、强反光、纯色地面会导致光流失效,需要纹理辅助或视觉融合。
- 误区三:忽略时间同步。图像与 IMU、测距数据若不同步,融合后速度估计会抖动。
- 误区四:只看光流大小不看方向。定点悬停需要同时抑制 x、y 两个方向的漂移,方向错误会导致越修越偏。
总结来看,光流定位的入门逻辑链条是:地面纹理在相机中形成亮度模式,相机运动使亮度模式发生位移,亮度恒定假设把位移与亮度变化联系起来,泰勒展开得到光流约束方程,再通过额外约束求解 u、v,最后结合高度和焦距换算成无人机水平速度。理解这条链条,才能在定点悬停调试中判断问题出在纹理、光照、高度还是融合环节。