【计算机视觉(8)】双视图几何基础篇:从立体视觉到极线约束

AgenticCoding·十二月创作之星挑战赛 10w+人浏览 202人参与

文章目录

📌 适合对象:计算机视觉初学者、图像处理入门者
⏱️ 预计阅读时间:50-60分钟
🎯 学习目标:理解如何用两个相机测量距离,掌握立体视觉、三角测量、极线约束和基础矩阵的基本概念


📚 学习路线图

理解立体视觉
如何用相机测距
学习三角测量
从对应点恢复3D
理解对应点搜索
寻找匹配点
掌握极线约束
缩小搜索范围
学习极线校正
简化匹配过程
理解基础矩阵
描述两视图关系
学习8点算法
估计基础矩阵

本文内容一览(快速理解)

  1. 立体视觉(Stereo Vision):使用两个相机从不同视角观察场景,通过视差计算距离
  2. 视差(Disparity):同一3D点在两个图像中的位置差异,距离越近视差越大
  3. 三角测量(Triangulation):根据两个相机看到的对应点,计算3D点的位置
  4. 对应点搜索(Correspondence Search):在两张图像中找到同一个3D点的投影
  5. 极线约束(Epipolar Constraint):对应点必须位于极线上,大大缩小搜索范围
  6. 极线校正(Epipolar Rectification):将图像变换,使极线变为水平线,简化匹配
  7. 基础矩阵(Fundamental Matrix):描述两个视图之间的几何关系
  8. 8点算法(8-point Algorithm):用8对对应点估计基础矩阵

一、立体视觉基础(Stereo Vision):如何用两个相机测量距离

这一章要建立的基础:理解为什么需要两个相机才能测量距离,以及立体视觉的基本原理

核心问题:如何用相机测量物体的距离?为什么单张图像无法确定距离?


[!NOTE]
📝 关键点总结:单张图像只能告诉我们3D点位于从相机中心出发的某条射线上,但无法确定具体位置。使用两个相机从不同视角观察,通过三角测量可以确定3D点的位置。

1.1 为什么需要两个相机(Why Two Cameras):单张图像的局限性

概念的本质

想象你在看一张照片,照片中有一个物体。你能看出这个物体有多大吗?能看出它离你有多远吗?很难!因为从一张照片中,我们只能知道物体在某个方向上,但不知道具体距离。就像你闭上一只眼睛看东西,很难判断距离一样。

图解说明

单张图像
只能看到方向
3D点位于
某条射线上
两张图像
不同视角
三角测量
确定3D位置

💡 说明:从单张图像中,我们只能知道3D点位于从相机中心出发的某条射线上,但无法确定它在这条射线上的具体位置。使用两个相机从不同视角观察,两条射线的交点就是3D点的位置。

类比理解

想象你在用一只眼睛看远处的物体,很难判断距离。但如果你用两只眼睛(就像我们人类一样),通过比较左右眼看到的图像差异(视差),就能判断距离。立体视觉就是用两个相机模拟双眼视觉。

实际例子

单张图像的局限性:
- 只能知道3D点位于从相机中心出发的某条射线上
- 无法确定具体距离
- 就像闭上一只眼睛看东西,难以判断距离

立体视觉的优势:
- 使用两个相机从不同视角观察
- 通过三角测量确定3D点的位置
- 就像用两只眼睛看东西,可以判断距离

 


1.2 立体视觉的基本原理(Basic Principle of Stereo Vision):从两个视角恢复3D结构

概念的本质

立体视觉就像用两只眼睛看东西。我们从两个不同的位置观察同一个场景,然后找到两张图像中对应的点(同一个3D点在两张图像中的投影),通过计算这些对应点的位置差异(视差),就能计算出3D点的位置。

图解说明

左相机图像
找到对应点
右相机图像
计算视差
Disparity
三角测量
恢复3D位置
已知相机位置
和方向

💡 说明:立体视觉需要知道两个相机的相对位置(平移T)和方向(旋转R)。如果这些参数已知,就是立体视觉(Stereo Vision);如果未知,需要从图像中估计,就是运动恢复结构(Structure from Motion)。

类比理解

想象你在用两个相机拍摄同一个场景,就像用两只眼睛看东西。你的大脑会自动找到左右眼看到的对应点,然后根据这些点的位置差异判断距离。立体视觉系统也是这样工作的。

实际例子

立体视觉的应用:
1. 机器人导航:判断障碍物的距离
2. 3D重建:从两张图像恢复场景的3D结构
3. 自动驾驶:判断车辆与障碍物的距离
4. 虚拟现实:创建3D场景

人类视觉的类比:
- 双眼视差(Binocular Disparity):左右眼看到的图像差异
- 大脑自动处理视差,判断距离
- 立体视觉系统模拟这个过程

 


1.3 简化的立体视觉情况(Simplified Stereo Case):理想情况下的距离计算

概念的本质

在理想情况下,假设两个相机完全相同,并且沿着x轴对齐(水平排列)。在这种情况下,计算距离变得非常简单:距离越近的物体,在两张图像中的位置差异(视差)越大。

图解说明

基线b
两相机距离
焦距f
视差d
ul - ur
距离Z
= bf/d

💡 说明:在简化的立体视觉情况下,距离Z = bf/d,其中b是基线(两个相机之间的距离),f是焦距,d是视差(同一3D点在左右图像中的位置差异)。距离越近,视差越大;距离越远,视差越小。

类比理解

想象你站在一条直线上,用两只眼睛看远处的物体。物体越近,左右眼看到的差异越大;物体越远,差异越小。这就是视差与距离的关系。

实际例子

简化情况的假设:
- 两个相机完全相同
- 相机沿x轴水平对齐
- 图像平面平行

视差与距离的关系:
- 距离Z = 基线b × 焦距f / 视差d
- 近处物体:视差大(在图像中位置差异大)
- 远处物体:视差小(在图像中位置差异小)

实际应用:
- 虽然理想情况很少见,但理解这个关系很重要
- 实际应用中需要考虑相机标定和校正

 


1.4 视差图(Disparity Map):每个像素的视差值

概念的本质

视差图是一张图像,其中每个像素的值表示该像素对应的3D点的视差。视差图告诉我们场景中每个点的深度信息:视差大的地方对应近处物体,视差小的地方对应远处物体。

图解说明

左图像
对应点搜索
右图像
计算每个像素的视差
视差图
Disparity Map
深度图
Depth Map

💡 说明:视差图是立体视觉的核心输出。通过视差图,我们可以计算每个像素对应的3D点的深度,从而重建整个场景的3D结构。

类比理解

想象你在看一幅画,画中有些物体看起来近,有些看起来远。视差图就像给这幅画标注了每个位置的"远近程度":数值大的地方近,数值小的地方远。

实际例子

视差图的特点:
- 每个像素值表示该位置的视差
- 视差大的区域:近处物体(如前景)
- 视差小的区域:远处物体(如背景)
- 可以转换为深度图

应用:
- 3D重建:从视差图重建3D场景
- 物体检测:识别不同深度的物体
- 背景分割:分离前景和背景
- 虚拟现实:创建深度感知

 


1.5 一般情况的立体视觉(General Stereo Case):需要相机标定

概念的本质

在实际应用中,两个相机很少完全对齐。我们需要知道两个相机的相对位置(外参:旋转R和平移T)和每个相机的内部参数(内参:焦距、主点、畸变等)。这些参数通过相机标定获得。

图解说明

实际立体相机
相机标定
内参
焦距、主点、畸变
外参
旋转R、平移T
立体视觉处理
3D重建

💡 说明:在实际应用中,我们需要通过相机标定获得相机的内参和外参。内参描述相机的内部特性(焦距、主点、畸变),外参描述两个相机之间的相对位置和方向。

类比理解

想象你要用两个相机测量距离,但这两个相机的位置和方向是未知的。就像你要用两只眼睛看东西,但不知道两只眼睛的相对位置。相机标定就是"测量"这些参数的过程。

实际例子

相机标定的必要性:
- 实际相机很少完全对齐
- 需要知道相机的内参和外参
- 内参:焦距f、主点(cx, cy)、径向畸变
- 外参:旋转R、平移T(两个相机的相对位置)

标定方法:
- 使用标定板(如棋盘格)
- 拍摄多张不同角度的图像
- 计算相机的内参和外参

应用:
- 立体相机系统必须经过标定
- 标定精度影响3D重建的精度

 


二、三角测量(Triangulation):从对应点恢复3D位置

这一章要建立的基础:理解如何从两个相机看到的对应点,计算3D点的位置

核心问题:已知两个相机的位置和两张图像中的对应点,如何计算3D点的位置?


[!NOTE]
📝 关键点总结:三角测量是根据两个相机看到的对应点,通过求解两条射线的交点来确定3D点的位置。由于噪声和数值误差,两条射线可能不相交,需要找到最佳估计。

2.1 三角测量的基本思想(Basic Idea of Triangulation):两条射线的交点

概念的本质

三角测量就像用两条线确定一个点。从两个相机中心出发,分别指向对应点的两条射线,理论上应该相交于3D点。但由于噪声和误差,这两条射线可能不相交,我们需要找到最佳估计。

图解说明

左相机
看到点p1
射线1
右相机
看到点p2
射线2
理论上相交
但可能有误差
找到最佳估计
3D点P

💡 说明:三角测量是立体视觉的核心步骤。给定两个相机的位置和两张图像中的对应点,我们需要计算3D点的位置。理想情况下,两条射线应该相交,但由于噪声,需要找到最佳估计。

类比理解

想象你在用两个手电筒照射同一个物体。理论上,两条光线应该相交于物体上。但如果手电筒的位置有误差,或者光线有散射,两条光线可能不完全相交。三角测量就是找到两条光线"最接近"的交点。

实际例子

三角测量的输入:
- 左相机看到的点p1(图像坐标)
- 右相机看到的点p2(图像坐标)
- 两个相机的内参和外参

三角测量的输出:
- 3D点P的世界坐标(X, Y, Z)

挑战:
- 噪声导致两条射线不相交
- 需要找到最佳估计
- 有多种方法:几何方法、线性方法、非线性方法

 


2.2 几何方法(Geometric Approach):找到最短连接线段的中点

概念的本质

由于两条射线可能不相交,几何方法找到连接两条射线的最短线段,然后取这条线段的中点作为3D点的估计。这种方法直观,但计算可能较复杂。

图解说明

射线1
最短连接线段
射线2
线段中点
3D点估计

💡 说明:几何方法找到连接两条射线的最短线段,这条线段垂直于两条射线。线段的中点就是3D点的估计。这种方法几何意义清晰,但计算相对复杂。

类比理解

想象两条不相交的直线,你想找到它们之间最短的距离。几何方法就是找到连接这两条直线的最短线段,然后取中点作为"交点"的估计。

实际例子

几何方法的特点:
- 直观:找到最短连接线段
- 几何意义清晰
- 计算相对复杂

适用场景:
- 需要直观理解时
- 作为其他方法的参考

 


2.3 线性方法(Linear Approach):求解线性方程组

概念的本质

线性方法将三角测量问题转化为求解线性方程组。通过将3D点投影到两个图像平面,建立方程组,然后求解。这种方法计算简单,但可能不是最优解。

图解说明

3D点P
投影到左图像
p1 = M1 × P
投影到右图像
p2 = M2 × P
建立线性方程组
求解P

💡 说明:线性方法通过建立投影方程,将问题转化为求解线性方程组。这种方法计算简单快速,但可能不是最优解,因为忽略了投影的非线性特性。

类比理解

想象你要解一个方程,但方程太复杂。线性方法就是把方程简化,变成线性方程,然后求解。虽然可能不够精确,但计算简单。

实际例子

线性方法的优点:
- 计算简单快速
- 易于实现
- 可以作为初始估计

线性方法的缺点:
- 可能不是最优解
- 忽略了投影的非线性特性

应用:
- 快速估计3D点位置
- 作为非线性方法的初始值

 


2.4 非线性方法(Non-linear Approach):最小化重投影误差

概念的本质

非线性方法通过最小化重投影误差来找到最优的3D点。重投影误差是观测点与重投影点之间的距离。这种方法最准确,但需要迭代优化。

图解说明

初始估计P
重投影到图像
计算重投影误差
SSRE
优化P
最小化误差
收敛?
最优3D点P

💡 说明:非线性方法最小化重投影误差(Sum of Squared Reprojection Error, SSRE)。重投影误差是观测点与将3D点重投影到图像平面得到的点之间的距离。这种方法最准确,通常用线性方法初始化,然后用Gauss-Newton或Levenberg-Marquardt算法优化。

类比理解

想象你在调整一个参数,让预测结果尽可能接近实际观测。非线性方法就是不断调整3D点的位置,让重投影的点尽可能接近观测到的点。

实际例子

非线性方法的特点:
- 最准确:最小化重投影误差
- 需要迭代优化
- 通常用线性方法初始化

优化算法:
- Gauss-Newton算法
- Levenberg-Marquardt算法

应用:
- 需要高精度时
- 作为最终优化步骤

 


2.5 基线的影响(Baseline Sensitivity):基线大小的权衡

概念的本质

基线(两个相机之间的距离)的大小对三角测量的精度有重要影响。基线太小,深度误差大;基线太大,物体可能只在一个相机中可见,而且搜索对应点变得困难。

图解说明

基线大小
基线太小
基线太大
深度误差大
精度低
物体可能不可见
搜索困难
适中基线
最佳
精度高
搜索容易

💡 说明:基线的大小需要在精度和可见性之间权衡。基线太小,视差小,深度误差大;基线太大,物体可能只在一个相机中可见,而且搜索对应点变得困难。需要根据应用场景选择合适的基线。

类比理解

想象你用两只眼睛看东西。如果两只眼睛靠得太近(基线小),很难判断距离;如果离得太远(基线大),可能一只眼睛看不到物体。需要合适的距离。

实际例子

基线太小的影响:
- 视差小,深度误差大
- 难以准确测量距离
- 就像两只眼睛靠得太近

基线太大的影响:
- 物体可能只在一个相机中可见
- 搜索对应点变得困难
- 对于近处物体尤其明显

最佳基线:
- 根据应用场景选择
- 平衡精度和可见性
- 通常为场景深度的10-20%

 


三、对应点搜索与极线约束(Correspondence Search & Epipolar Constraint):高效寻找匹配点

这一章要建立的基础:理解如何在两张图像中找到对应点,以及极线约束如何缩小搜索范围

核心问题:如何在两张图像中找到同一个3D点的投影?如何缩小搜索范围?


[!NOTE]
📝 关键点总结:对应点搜索是立体视觉的关键步骤。极线约束告诉我们:对应点必须位于极线上,这大大缩小了搜索范围,从2D搜索降低到1D搜索。

3.1 对应点搜索的问题(The Correspondence Problem):在图像中寻找匹配点

概念的本质

对应点搜索就是在两张图像中找到同一个3D点的投影。这是一个困难的问题,因为需要在整张图像中搜索,计算量很大。我们需要找到高效的搜索方法。

图解说明

左图像中的点pL
在右图像中搜索
对应点pR
计算相似度
NCC/SSD/SAD
找到最佳匹配
问题:
搜索空间大

💡 说明:对应点搜索是立体视觉的核心问题。对于左图像中的每个点,需要在右图像中找到对应的点。常用的相似度度量包括归一化互相关(NCC)、平方差和(SSD)、绝对差和(SAD)等。

类比理解

想象你在玩"找不同"游戏,但反过来:给你左图中的一个小区域,在右图中找到相同或相似的区域。这就是对应点搜索。

实际例子

对应点搜索的挑战:
- 搜索空间大:整张图像
- 计算量大:对每个点都要搜索
- 可能有多个相似区域
- 需要高效的搜索方法

相似度度量:
- NCC(归一化互相关):对亮度和对比度不敏感
- SSD(平方差和):计算快,但对亮度敏感
- SAD(绝对差和):计算快,鲁棒性一般

应用:
- 立体视觉的核心步骤
- 决定3D重建的精度

 


3.2 极线约束(Epipolar Constraint):对应点必须位于极线上

概念的本质

极线约束是立体视觉中最重要的几何约束。它告诉我们:左图像中的点pL对应的右图像中的点pR,必须位于一条特殊的直线(极线)上。这大大缩小了搜索范围,从2D搜索降低到1D搜索。

图解说明

左图像点pL
极线
Epipolar Line
对应点pR
必须在这条线上
极平面
Epipolar Plane
极线
Epipolar Line
极点
Epipole

💡 说明:极线约束基于几何关系:左图像中的点pL、左相机中心CL和右相机中心CR构成一个平面(极平面)。这个平面与右图像平面的交线就是极线。对应点pR必须位于这条极线上。

类比理解

想象你在用两只眼睛看一个物体。如果你闭上一只眼睛,用另一只眼睛看物体,物体在另一只眼睛的视网膜上的位置是确定的(在一条线上)。极线约束就是这个原理。

实际例子

极线约束的关键概念:
- 极平面(Epipolar Plane):由pL、CL、CR构成的平面
- 极线(Epipolar Line):极平面与图像平面的交线
- 极点(Epipole):一个相机中心在另一个相机图像中的投影

极线约束的优势:
- 将2D搜索降低到1D搜索
- 大大减少计算量
- 提高匹配精度

应用:
- 所有立体视觉系统都利用极线约束
- 是高效对应点搜索的基础

 


3.3 极点的性质(Properties of Epipoles):所有极线通过极点

概念的本质

极点是极线约束中的特殊点。左相机中心在右图像中的投影是右极点,右相机中心在左图像中的投影是左极点。所有极线都通过对应的极点。

图解说明

左相机中心CL
投影到右图像
右极点eR
右相机中心CR
投影到左图像
左极点eL
所有极线
都通过极点

💡 说明:极点是相机中心在另一个相机图像中的投影。所有极线都通过对应的极点。如果两个相机平行,极点在无穷远处;如果两个相机不平行,极点在图像内或图像外。

类比理解

想象所有从你左眼出发的视线,在右眼视网膜上的投影都通过一个特殊点(右极点)。这个点就是左眼在右眼视网膜上的投影。

实际例子

极点的性质:
- 左极点eL:右相机中心在左图像中的投影
- 右极点eR:左相机中心在右图像中的投影
- 所有极线都通过对应的极点

极点的位置:
- 平行相机:极点在无穷远处
- 非平行相机:极点在图像内或图像外

应用:
- 理解极线约束的几何结构
- 用于极线校正

 


四、极线校正(Epipolar Rectification):简化对应点搜索

这一章要建立的基础:理解如何将图像变换,使极线变为水平线,简化匹配过程

核心问题:如何简化对应点搜索?如何使极线变为水平线?


[!NOTE]
📝 关键点总结:极线校正是将图像对变换,使极线变为水平且对齐的直线。这样,对应点搜索只需要在同一行(扫描线)上进行,大大简化了匹配过程。

4.1 极线校正的目的(Purpose of Epipolar Rectification):使极线水平对齐

概念的本质

极线校正的目的是将图像对变换,使极线变为水平且对齐的直线。这样,对应点搜索只需要在同一行(扫描线)上进行,大大简化了匹配过程,也便于硬件实现。

图解说明

原始图像对
极线倾斜
极线校正
校正后图像对
极线水平
对应点搜索
只需在同一行

💡 说明:极线校正通过旋转、调整焦距、校正镜头畸变和平移等变换,将图像对变换为新的"校正"图像,使极线平行且对齐到基线。这样,对应点搜索只需要在同一行上进行。

类比理解

想象你在看两幅画,但画是倾斜的,很难比较。极线校正就像把两幅画旋转,使它们对齐,这样比较起来就容易多了。

实际例子

极线校正的优势:
- 极线变为水平线
- 对应点在同一行
- 搜索从2D降低到1D
- 便于硬件实现(扫描线处理)

校正的步骤:
1. 旋转:使图像对齐
2. 调整焦距:使焦距相同
3. 校正镜头畸变
4. 平移:使极线对齐

应用:
- 几乎所有立体视觉系统都使用极线校正
- 简化对应点搜索
- 提高匹配效率

 


4.2 极线校正的过程(Process of Epipolar Rectification):旋转、调整焦距、校正畸变、平移

概念的本质

极线校正包括多个步骤:旋转图像使对齐,调整焦距使相同,校正镜头畸变,最后平移使极线对齐。每一步都是为了实现极线水平对齐的目标。

图解说明

原始图像
旋转
调整焦距
校正畸变
平移
校正后图像

💡 说明:极线校正是一个多步骤的过程。首先旋转图像使对齐,然后调整焦距使两个相机的焦距相同,接着校正镜头畸变,最后平移使极线对齐到基线。每一步都需要精确计算。

类比理解

想象你在调整两台相机,使它们完美对齐。首先旋转相机使方向一致,然后调整焦距使视野相同,接着校正镜头畸变,最后微调位置使极线对齐。

实际例子

极线校正的步骤:
1. 旋转(Rotation):
   - 使两个图像对齐
   - 使极线平行

2. 调整焦距(Focal Lengths):
   - 使两个相机的焦距相同
   - 保证图像尺度一致

3. 校正镜头畸变(Lens Distortion):
   - 去除径向畸变
   - 使图像更准确

4. 平移(Translation):
   - 使极线对齐到基线
   - 完成校正

结果:
- 极线变为水平线
- 对应点在同一行
- 搜索简化

 


五、基础矩阵与本质矩阵(Fundamental & Essential Matrix):描述两视图的几何关系

这一章要建立的基础:理解如何用矩阵描述两个视图之间的几何关系

核心问题:如何用数学方式描述两个视图之间的几何关系?如何估计这些关系?


[!NOTE]
📝 关键点总结:基础矩阵和本质矩阵是描述两个视图之间几何关系的核心工具。基础矩阵用于未标定相机,本质矩阵用于已标定相机。它们都编码了极线约束。

5.1 基础矩阵(Fundamental Matrix):未标定情况下的几何关系

概念的本质

基础矩阵是一个3×3的特殊矩阵,描述了两个视图之间的几何关系。它将左图像中的点映射到右图像中的极线。基础矩阵编码了极线约束:如果p1和p2是对应点,那么p2^T F p1 = 0。

图解说明

左图像点p1
基础矩阵F
右图像极线l2
对应点p2
在极线l2上
极线约束
p2^T F p1 = 0

💡 说明:基础矩阵F是一个3×3矩阵,秩为2(rank 2)。它将左图像中的点映射到右图像中的极线:l2 = F p1。极线约束可以表示为:p2^T F p1 = 0,其中p1和p2是对应点。

类比理解

想象基础矩阵是一个"翻译器",它知道左图像中的点对应右图像中的哪条线。就像地图上的经纬线,基础矩阵告诉我们对应点在哪条"线"上。

实际例子

基础矩阵的性质:
- 3×3矩阵,秩为2
- 有7个自由度(不是9个)
- 将点映射到极线:l2 = F p1
- 编码极线约束:p2^T F p1 = 0

基础矩阵的组成:
- F = K2^(-T) E K1^(-1)
- 其中K1、K2是相机内参矩阵
- E是本质矩阵

应用:
- 未标定相机的立体视觉
- 从对应点估计几何关系
- 极线约束的数学表达

 


5.2 本质矩阵(Essential Matrix):已标定情况下的几何关系

概念的本质

本质矩阵是基础矩阵在已标定相机情况下的简化形式。它只依赖于两个相机之间的相对旋转和平移,不依赖于相机的内参。本质矩阵描述了归一化图像坐标之间的关系。

图解说明

归一化坐标p1
本质矩阵E
归一化坐标p2
E = [t]× R
只依赖R和T

💡 说明:本质矩阵E = [t]× R,其中[t]×是平移向量t的反对称矩阵,R是旋转矩阵。本质矩阵只依赖于两个相机之间的相对旋转和平移,不依赖于相机的内参。它描述了归一化图像坐标之间的关系。

类比理解

想象本质矩阵是"纯粹的"几何关系,不受相机内部参数的影响。就像描述两个观察者之间的相对位置,而不考虑他们用什么"眼睛"看。

实际例子

本质矩阵的性质:
- 3×3矩阵,秩为2
- 只依赖旋转R和平移T
- E = [t]× R
- 描述归一化坐标之间的关系

本质矩阵与基础矩阵的关系:
- F = K2^(-T) E K1^(-1)
- 如果相机已标定,可以用本质矩阵
- 如果未标定,需要用基础矩阵

应用:
- 已标定相机的立体视觉
- 从对应点估计相机运动
- 结构恢复(Structure from Motion)

 


5.3 8点算法(8-point Algorithm):估计基础矩阵

概念的本质

8点算法是用8对对应点估计基础矩阵的线性方法。每对对应点给出一个线性方程,8对点可以求解基础矩阵。虽然基础矩阵有7个自由度,但8点算法更稳定。

图解说明

8对对应点
建立线性方程组
求解基础矩阵F
强制秩为2
SVD分解
最终基础矩阵F

💡 说明:8点算法利用极线约束 p 2 T F p 1 = 0 p2^T F p1 = 0 p2TFp1=0,每对对应点给出一个线性方程。8对点可以建立8个方程,求解基础矩阵的9个元素(然后强制秩为2)。虽然基础矩阵有7个自由度,但8点算法更稳定。

类比理解

想象你要确定一条直线的方程,需要两个点。8点算法就像用8个点来确定一个"关系"(基础矩阵),虽然理论上7个点就够了,但8个点更稳定。

实际例子

8点算法的步骤:
1. 收集8对对应点
2. 建立线性方程组:每对点给出一个方程
3. 求解基础矩阵F(最小特征值对应的特征向量)
4. 强制秩为2:使用SVD分解,将最小奇异值设为0

8点算法的优点:
- 线性方法,计算简单
- 易于实现
- 速度快

8点算法的缺点:
- 对噪声敏感
- 需要归一化提高稳定性

改进:
- 归一化8点算法:先归一化坐标,提高稳定性
- RANSAC:处理外点(错误匹配)

 


5.4 归一化8点算法(Normalized 8-point Algorithm):(统一坐标尺寸)提高稳定性

概念的本质

归一化8点算法是对8点算法的改进。它先对图像坐标进行归一化(平移和缩放),然后再应用8点算法,最后将结果变换回去。这样可以大大提高算法的稳定性和精度。

图解说明

原始坐标
归一化
8点算法
反归一化
基础矩阵F

💡 说明:归一化8点算法先对图像坐标进行归一化:平移使质心在原点,缩放使平均距离为√2。然后应用8点算法,最后将结果变换回去。归一化可以消除坐标尺度的影响,提高算法的稳定性。

类比理解

想象你在测量距离,但单位不一致(有些用米,有些用厘米)。归一化就像统一单位,使测量更准确。归一化8点算法就是这样,先统一坐标尺度,再计算

实际例子

归一化的目的:
- 消除坐标尺度的影响
- 提高数值稳定性
- 减少计算误差

归一化的步骤:
1. 平移:使质心在原点
2. 缩放:使平均距离为√2
3. 应用8点算法
4. 反归一化:将结果变换回去

归一化8点算法的优势:
- 比标准8点算法更稳定
- 精度更高
- 实际应用中常用

应用:
- 几乎所有基础矩阵估计都使用归一化
- 是标准8点算法的改进版本

 


📝 本章总结

核心要点回顾

  1. 立体视觉

    • 使用两个相机从不同视角观察场景
    • 通过视差计算距离
    • 需要相机标定(内参和外参)
  2. 三角测量

    • 从对应点恢复3D位置
    • 有几何、线性、非线性等方法
    • 基线大小影响精度
  3. 对应点搜索

    • 在两张图像中找到匹配点
    • 极线约束大大缩小搜索范围
    • 从2D搜索降低到1D搜索
  4. 极线校正

    • 使极线变为水平线
    • 简化对应点搜索
    • 便于硬件实现
  5. 基础矩阵和本质矩阵

    • 描述两个视图之间的几何关系
    • 基础矩阵用于未标定相机
    • 本质矩阵用于已标定相机
  6. 8点算法

    • 用8对对应点估计基础矩阵
    • 归一化8点算法更稳定
    • 是估计几何关系的标准方法

知识地图

双视图几何
立体视觉
对应点搜索
几何关系
视差计算
三角测量
相机标定
极线约束
极线校正
相似度度量
基础矩阵
本质矩阵
8点算法

关键决策点

  • 选择基线大小:平衡精度和可见性
  • 选择三角测量方法:根据精度要求选择线性或非线性方法
  • 使用极线校正:几乎所有立体视觉系统都使用
  • 选择基础矩阵估计方法:归一化8点算法是标准方法
  • 处理外点:使用RANSAC等鲁棒方法

📚 延伸阅读

推荐资源

  1. Szeliski’s Book: Computer Vision: Algorithms and Applications, Chapter 7

    • 详细的立体视觉和双视图几何理论
  2. 在线资源

    • 立体视觉交互式演示
    • 极线约束可视化工具
  3. 实践项目

    • 实现基本的立体视觉系统
    • 尝试不同的对应点搜索方法
    • 实现8点算法估计基础矩阵

本文基于PPT内容整理,适合初学者理解双视图几何的基本概念和应用。如需深入了解数学原理和公式推导,请参考相关研究资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值