一、课程导论与数学基础

各位同学好,我是你们这门课的主讲。在计算机视觉领域摸爬滚打了十几年,我越来越觉得——双目视觉的精度,很大程度上取决于你对数学基础的理解深度。今天这第一节课,咱们就把地基打牢。

1.1 双目视觉概述

说白了,双目视觉就是给机器装上两只眼睛。跟人眼一样,两个摄像头从不同角度拍摄同一场景,然后通过计算左右图像的差异,来获取物体的三维信息。

我刚开始做双目项目时,总觉得算法调一调就能跑。结果呢?在实验室里精度还行,一到户外光照变化大的场景,直接崩了。后来我才明白——硬件标定和数学建模才是真正的瓶颈

双目视觉的核心流程,我习惯总结为四步:

  1. 图像采集:左右相机同步拍摄
  2. 相机标定:获取内外参数
  3. 立体匹配:找到左右图的对应点
  4. 三角测量:计算深度信息

嗯,这里要注意——每一步的误差都会累积。所以数学基础必须扎实。

1.2 亚像素精度概念

为什么需要亚像素精度?你想想看,一个像素对应的是物理世界中的一个区域。如果只用整像素匹配,精度最多到像素级。但很多场景——比如工业测量、机器人抓取——需要毫米甚至微米级的精度。

亚像素精度,就是通过插值、拟合等方法,把匹配精度提升到像素的几分之一。常见的做法有:

  • 二次曲线拟合(最常用)
  • 高斯拟合
  • 相位相关法

我曾经在一个精密装配项目中,整像素匹配误差在2-3个像素,换成亚像素后直接降到0.1像素以内。效果立竿见影。

核心观点:亚像素精度不是玄学,而是通过数学手段突破硬件分辨率的限制。说白了,就是用算法换精度。

1.3 相机成像模型

相机成像,本质上是一个从三维世界到二维图像的映射过程。这个映射可以用一个数学模型来描述。

我个人习惯把成像模型拆成三步:

  1. 世界坐标系相机坐标系(刚体变换)
  2. 相机坐标系图像坐标系(透视投影)
  3. 图像坐标系像素坐标系(离散化)

每一步都有对应的矩阵运算。你如果把这些矩阵搞清楚了,后面所有算法都会变得很自然。

1.4 针孔模型与畸变校正

针孔模型是最基础的成像模型。它假设光线通过一个小孔,在成像平面上形成倒像。数学表达式很简单:

// 针孔模型投影公式
// (X, Y, Z) 是世界坐标, (u, v) 是像素坐标
// fx, fy 是焦距, cx, cy 是主点

u = fx * X / Z + cx
v = fy * Y / Z + cy

但现实中的镜头都有畸变。最常见的两种:

  • 径向畸变:镜头形状引起的,图像边缘会弯曲
  • 切向畸变:镜头与成像平面不平行引起的

畸变校正的公式长这样:

// 径向畸变校正
x_corrected = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_corrected = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

// 切向畸变校正
x_corrected = x + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_corrected = y + [p1*(r^2 + 2*y^2) + 2*p2*x*y]

避坑指南:我曾经在一个项目中忽略了畸变校正,结果立体匹配的误差直接大了10倍。后来老老实实做了标定,精度才上来。记住——畸变校正不是可选项,是必选项

1.5 极线几何与对极约束

极线几何是双目视觉的基石。它描述的是:左图中的一个点,在右图中对应的搜索范围是一条直线——也就是极线

为什么会这样?因为两个相机的位置关系是固定的。左图点对应的三维点,一定位于从该点出发的一条射线上。这条射线在右图中的投影,就是一条直线。

这个约束有什么用?把二维搜索降为一维搜索。原来要在整张图上找匹配点,现在只需要沿着极线找。速度提升几十倍不止。

我记得第一次实现极线约束时,匹配速度从每秒2帧直接飙到30帧。那种感觉,嗯,很爽。

1.6 本征矩阵与基础矩阵

这两个矩阵是极线几何的数学表达。它们描述了左右相机之间的几何关系。

矩阵 描述 输入
本征矩阵 (E) 两个相机之间的相对位姿 相机内参已知
基础矩阵 (F) 包含内参的极线关系 相机内参未知

它们的核心公式是:

// 对极约束公式
// p_left 和 p_right 是左右图像中的匹配点
// F 是基础矩阵

p_right^T * F * p_left = 0

这个公式的意思是:如果两个点是对应点,那么它们一定满足这个约束。反过来,我们可以用这个公式来剔除误匹配

个人经验:在实际项目中,我一般先用特征匹配(比如SIFT)找到候选点对,然后用基础矩阵做RANSAC剔除误匹配。这样既能保证速度,又能保证精度。

知识体系总览

下面这张图,是我自己总结的双目视觉数学基础框架。你可以把它当作整个课程的地图:

双目视觉亚像素精度 · 数学基础框架 左右图像输入 相机标定 + 畸变校正 极线几何 · 对极约束 · 本征/基础矩阵 立体匹配(亚像素精度) 三维点云 / 深度图 针孔模型 畸变参数 (k1,k2,p1,p2) 极线约束 → 一维搜索 二次曲线拟合 高斯拟合

这张图把整个流程串起来了。你会发现,每一步都离不开数学。标定需要矩阵运算,校正需要畸变模型,匹配需要极线几何。所以,别嫌数学枯燥——它是你后面所有工作的基础。

好了,第一节课就到这里。下一节课,我们会深入相机标定的具体实现,包括张正友标定法的数学推导和代码实战。到时候见。


专注资料整理