4、立体标定与极线几何:双目立体标定原理、本质矩阵与基础矩阵、极线约束与极线校正、立体标定误差分析

说到双目视觉,很多人第一反应就是「两个摄像头拍两张图,然后算深度」。嗯,理论上没错。但真正上手做过的人都知道——如果没有做好立体标定,后面的一切都是空中楼阁

我刚开始做双目项目时,就吃过这个亏。当时急着调算法,随便标定了一下就往上跑,结果视差图全是噪点,深度值飘得离谱。后来花了整整一周重新做立体标定,才把精度拉回来。所以这一章,我想跟你好好聊聊立体标定和极线几何的那些事。

4.1 双目立体标定原理

立体标定,说白了就是同时标定左右两个相机的内参,以及它们之间的相对位置关系

单目标定我们都很熟悉了——每个相机有自己的内参矩阵 K 和畸变系数。但双目系统多了一个维度:两个相机之间的旋转矩阵 R 和平移向量 T

为什么要标这个?你想想看,左右相机拍同一个物体,它在左图上的像素坐标和右图上的像素坐标之间,存在一个几何关系。这个关系由两个相机的相对位姿决定。如果 R 和 T 不准,立体匹配就无从谈起。

立体标定的流程,我一般这么走:

  1. 分别标定左右相机:得到 K1、K2、畸变系数
  2. 拍摄多组棋盘格图像对:左右相机同步采集
  3. 提取角点:找到每张图中的棋盘格角点
  4. 计算立体变换:通过角点对应关系,求解 R 和 T

这里有个细节——棋盘格必须同时出现在左右相机的视野中。我见过有人左右分开拍,然后想通过单目标定结果拼起来,结果误差大得没法用。

核心公式:立体标定的本质是求解以下关系

P_right = R * P_left + T

其中 P_left 和 P_right 是同一个三维点在左右相机坐标系下的坐标。

4.2 本质矩阵与基础矩阵

这两个矩阵,是理解极线几何的钥匙。

本质矩阵 E:描述的是归一化图像坐标系下,左右图像点之间的几何约束。它只与相机的相对位姿有关,跟内参没关系。

基础矩阵 F:描述的是像素坐标系下,左右图像点之间的几何约束。它包含了内参信息。

它们的关系很简单:

F = K2^(-T) * E * K1^(-1)

我在项目中遇到过一个问题:用 OpenCV 的 findFundamentalMat 算出来的 F 矩阵,有时候精度很差。后来发现是特征点匹配质量太差。所以我的习惯是——先用 RANSAC 做一次粗匹配,再用 LM 优化做精匹配,这样算出来的 F 矩阵才靠谱。

个人经验:如果你用的是高分辨率相机(比如 1200 万像素以上),建议先降采样到 640x480 算 F 矩阵,然后再映射回原分辨率。这样速度能快 5 倍,精度损失可以忽略。

4.3 极线约束与极线校正

极线约束,是双目视觉里最优雅的几何关系之一。

它的核心思想很简单:左图上的一个点,在右图上的对应点一定位于一条直线上。这条线就叫极线。

为什么要用这个约束?因为立体匹配时,你不需要在整个右图上搜索对应点,只需要沿着极线搜索就行。搜索范围从二维降到了一维,效率提升巨大。

但问题是——实际的双目系统,极线往往是斜的。这就给匹配带来了麻烦。所以我们需要做极线校正。

极线校正的目标是:通过重投影,让左右图像的极线变成水平的。这样左右图上的对应点就在同一行上,匹配时只需要搜索同一行就行。

校正的步骤:

  1. 计算左右相机的立体变换(R 和 T)
  2. 构造校正矩阵,使左右图像平面共面且行对齐
  3. 对左右图像进行重映射

我曾经在一个项目中,校正后的图像左右边缘有黑边。这是因为校正时图像被旋转了,边缘区域没有像素信息。解决办法是适当缩放校正后的图像,或者用 cv2.getOptimalNewCameraMatrix 自动裁剪。

注意:极线校正会改变图像的像素位置。如果你后续要做三维重建,一定要把校正后的像素坐标映射回原始坐标,否则重建出来的三维点位置是错的。

4.4 立体标定误差分析

标定做完了,怎么知道它准不准?

我一般看三个指标:

误差类型 来源 典型值 我的容忍上限
重投影误差 角点检测精度、标定板平面度 0.1~0.5 像素 0.8 像素
立体匹配误差 R/T 标定误差、图像噪声 0.5~2 像素 3 像素
深度误差 基线长度、标定误差累积 1%~5% 10%

重投影误差是最直观的指标。你把标定板的三维点投影到图像上,算一下投影点和实际检测到的角点之间的距离。这个值越小越好。

但要注意——重投影误差小,不代表立体匹配精度高。我遇到过标定重投影误差只有 0.2 像素,但立体匹配误差却到了 2 像素的情况。原因是标定板覆盖的视场范围不够大,导致 R 和 T 的估计在边缘区域偏差很大。

所以我的建议是:标定时让棋盘格覆盖整个视场。四个角落、中心区域都要拍到。至少拍 20 组图像对,越多越好。

避坑指南:我曾经用一张 A4 纸打印的棋盘格做标定,结果精度一直上不去。后来换了玻璃基板的陶瓷标定板,重投影误差直接降了一半。标定板的质量,真的不能省。

知识体系总览

下面这张图,是我自己总结的双目立体标定与极线几何的知识框架。你可以把它当作一个导航图,遇到问题时回来看看。

双目立体标定与极线几何知识体系 左右相机图像对 立体标定 内参标定 → 角点提取 → R/T 求解 本质矩阵 E 归一化坐标下的几何约束 基础矩阵 F 像素坐标下的几何约束 极线校正 水平极线 → 一维搜索 立体匹配 & 深度计算 误差分析:重投影误差 / 立体匹配误差 / 深度误差

这张图把整个流程串起来了。从左右图像对开始,经过立体标定得到 R 和 T,然后可以计算本质矩阵和基础矩阵,也可以直接做极线校正。最后进入立体匹配和深度计算,别忘了做误差分析来验证标定质量。

嗯,这一章的内容就到这里。立体标定是双目视觉的基石,花时间把它做扎实了,后面的工作会顺利很多。


公众号:蓝海资料掘金营,微信deep3321