一、课程导论与数学基础
各位同学好,我是你们这门课的主讲。在计算机视觉领域摸爬滚打了十几年,我越来越觉得——双目视觉的精度,很大程度上取决于你对数学基础的理解深度。今天这第一节课,咱们就把地基打牢。
1.1 双目视觉概述
说白了,双目视觉就是给机器装上两只眼睛。跟人眼一样,两个摄像头从不同角度拍摄同一场景,然后通过计算左右图像的差异,来获取物体的三维信息。
我刚开始做双目项目时,总觉得算法调一调就能跑。结果呢?在实验室里精度还行,一到户外光照变化大的场景,直接崩了。后来我才明白——硬件标定和数学建模才是真正的瓶颈。
双目视觉的核心流程,我习惯总结为四步:
- 图像采集:左右相机同步拍摄
- 相机标定:获取内外参数
- 立体匹配:找到左右图的对应点
- 三角测量:计算深度信息
嗯,这里要注意——每一步的误差都会累积。所以数学基础必须扎实。
1.2 亚像素精度概念
为什么需要亚像素精度?你想想看,一个像素对应的是物理世界中的一个区域。如果只用整像素匹配,精度最多到像素级。但很多场景——比如工业测量、机器人抓取——需要毫米甚至微米级的精度。
亚像素精度,就是通过插值、拟合等方法,把匹配精度提升到像素的几分之一。常见的做法有:
- 二次曲线拟合(最常用)
- 高斯拟合
- 相位相关法
我曾经在一个精密装配项目中,整像素匹配误差在2-3个像素,换成亚像素后直接降到0.1像素以内。效果立竿见影。
核心观点:亚像素精度不是玄学,而是通过数学手段突破硬件分辨率的限制。说白了,就是用算法换精度。
1.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剔除误匹配。这样既能保证速度,又能保证精度。
知识体系总览
下面这张图,是我自己总结的双目视觉数学基础框架。你可以把它当作整个课程的地图:
这张图把整个流程串起来了。你会发现,每一步都离不开数学。标定需要矩阵运算,校正需要畸变模型,匹配需要极线几何。所以,别嫌数学枯燥——它是你后面所有工作的基础。
好了,第一节课就到这里。下一节课,我们会深入相机标定的具体实现,包括张正友标定法的数学推导和代码实战。到时候见。