2. 视觉定位基础
无人机双目视觉定位的本质,是把图像中观测到的像素点,通过一系列坐标变换和相机模型,映射回真实三维空间,从而估计无人机的位置与姿态。要理解双目定位,必须先掌握五个基础概念:坐标系与变换、相机模型、针孔成像、畸变模型、内外参标定。它们共同构成从“像素”到“世界”的数学桥梁。
一、核心原理:从像素到世界的坐标链条
视觉定位不是一步完成的,而是一条层层递进的坐标变换链。图像上的一个点先以像素坐标 (u, v) 表示,经过相机内参矩阵反变换到归一化平面,再结合深度信息得到相机坐标系下的三维点,最后通过外参(旋转 R 与平移 t)转换到世界坐标系。双目系统则利用左右相机的视差,先恢复深度,再完成上述映射。
这条链条中,内参决定“相机如何看”,外参决定“相机在哪里、朝向何方”,畸变模型修正“镜头看得准不准”,而坐标系变换则统一了所有量的表达基准。任何一个环节出错,都会导致定位结果整体偏移或发散。
二、方法流程:标定与定位的完整步骤
要让上述链条真正可用,需要先完成相机标定,再进入在线定位。典型流程如下:
- 采集标定图像:使用棋盘格或圆点标定板,从不同角度、不同距离拍摄 15~30 张图像,覆盖画面中心和边缘区域。
- 提取角点:检测标定板角点像素坐标,建立其与已知世界坐标的对应关系。
- 求解内参与畸变:用张正友标定法解算 fx、fy、cx、cy 及 k1、k2、p1、p2 等参数。
- 求解外参:双目系统还需标定左右相机之间的旋转 R 和平移 t,得到基线 B。
- 立体校正:用标定结果对左右图像做极线校正,使同名点位于同一水平线,便于快速匹配。
- 在线定位:实时提取特征、计算视差、恢复深度,再经坐标变换输出无人机位姿。
三、案例/场景:双目无人机悬停定位
假设一架双目无人机在室内悬停,基线 B = 0.12 m,焦距 f = 600 像素。左相机看到某特征点像素横坐标 uL = 420,右相机对应点 uR = 360,则视差 d = 60 像素,深度 Z = f·B/d = 600×0.12/60 = 1.2 m。该点再经内参反投影到相机坐标系,最后用外参转换到世界坐标系,即可得到无人机相对环境的位置。
若镜头存在明显畸变而未校正,边缘区域的角点会被“拉弯”,视差计算出现偏差,深度估计随之产生数厘米甚至数十厘米误差。因此畸变校正是定位前不可跳过的一步。
四、关键参数与常见误区
| 概念 | 符号/参数 | 作用 | 常见误区 |
|---|---|---|---|
| 内参 | fx, fy, cx, cy | 像素与归一化平面之间的映射 | 把内参与分辨率混为一谈,换分辨率后未重新标定 |
| 外参 | R, t | 相机坐标系到世界坐标系的位姿 | 认为外参固定不变,忽略无人机运动带来的实时变化 |
| 畸变 | k1, k2, k3, p1, p2 | 修正镜头非线性误差 | 只做去畸变却不更新内参,导致边缘精度下降 |
| 基线 | B | 决定深度测量范围与精度 | 盲目增大基线,忽略匹配难度和盲区扩大 |
五、标定参数示例
以下是一组典型双目相机标定输出,可用于对照理解各参数含义:
左相机内参 K_left:
[ 605.3 0.0 319.8 ]
[ 0.0 604.7 239.5 ]
[ 0.0 0.0 1.0 ]
右相机内参 K_right:
[ 603.9 0.0 321.2 ]
[ 0.0 603.5 238.7 ]
[ 0.0 0.0 1.0 ]
畸变系数 (k1, k2, p1, p2, k3):
[-0.281 0.092 0.001 -0.002 0.000]
右相机相对左相机外参:
R = [ 0.9999 0.0012 -0.0031 ]
[-0.0012 0.9999 0.0020 ]
[ 0.0031 -0.0020 0.9999 ]
t = [-0.1201 0.0008 0.0015] (m)
基线 B ≈ 0.120 m
重投影误差 RMS ≈ 0.18 px
掌握这些基础后,后续的双目匹配、视差优化、位姿解算才有可靠的数学起点。坐标系与变换提供统一语言,相机模型与针孔成像给出投影关系,畸变模型保证观测准确,内外参标定则把这一切落到真实无人机系统上。