多视图几何与三维重建
对极几何与基础矩阵
对极点 = 基线(baseline)与像平面相交点 = 光心在另一幅图像中的投影
设X在C,C'坐标系中的相对坐标分别为p,p',则有
p = Rp' + T
其中R、T表示两个坐标系之间的旋转和位移关系。
空间中某一点在一个坐标系中的相对坐标:
空间中某一点在另一个坐标系中的相对坐标:
根据三线共面,有
叉积秩为2
本质矩阵(essential matrix)
根据前述,K和K'分别为两个相机的内参矩阵,有:
基础矩阵(fundamental matrix)描述了空间中的点在两个像平面中的坐标对应关系
- 基础矩阵是对极几何的代数表达方式
- 基础矩阵描述了图像中任意对应点x↔x'之间的约束关系
基础矩阵特殊性质:
- F为3×3矩阵,秩为2,对任意匹配点对x↔x'均满足
- 转置:如果F是表述点对(x,x')之间的基础矩阵,则是表述点对(x',x)之间的基础矩阵
- 对极线:F可以将点x映射到对应像平面上一条线,同理可得
- 对极点:对于所有对极线,有,同理有
- F自由度7
基础矩阵估计算法
由于基础矩阵F定义为
任给两幅图像中的匹配点x与x',令,,
有相应方程:
上述求解后的F不一定能满足秩为2的约束,因此还要在F基础上加以约束。
通过SVD分解可以解决上述问题,令则
,令
则最终的解为
优点:线性求解,容易实现,运行速度快
缺点:对噪声敏感
8点算法中矩阵各列数据尺度差异大,最小二乘得到的结果精度一般都很低。因此需要对各个列向量进行归一化操作。
- 将图像坐标变化到合适的范围
- 根据变换后的坐标计算归一化基础矩阵
- 还原原始基础矩阵
从运动恢复结构
Step 1:特征匹配/跟踪
- 检测稳定的角点/局部特征
- 在多帧图像之间建立特征关联
Step 2:估算空间中3D点
- 输入:m张图像,三维空间中n个固定的点:
- 任务:估算m个投影矩阵(Motion),根据关联点和投影矩阵反向计算n个3D点的坐标(Strcture)
- 计算两幅图像之间的基础矩阵F
- 假设第一个相机矩阵:
- 第二个相机矩阵:
其中e'是极点,,是e的叉积 - 根据双视图方法估算图像之间的基础矩阵
- 根据三角化(前方交汇)计算空间点集
- 对于新增的图像:
根据所有可见三维点在新图像中的投影,计算新相机的内外参数-calibration
根据可视特征点,优化已有结构,计算新的三维点
光束法平差
- 利用非线性法同步优化结构(3D点)与运动(相机参数)
- 最小化重投影误差
SFM小结:
- 给定两幅输入图像:
计算相互之间的基础矩阵F
根据F计算投影矩阵P
根据投影矩阵P和匹配点对x与x',计算匹配点在空间中的实际位置X - 给定移动摄像头/多张图像:
根据开始的两帧图像,初始化F,P,X
根据新的图像,计算P,优化X,增加新的空间点
提供过光束法平差同步优化结构和外参
立体匹配与表面重建
同名匹配点的挑战:
- 视角变化导致遮挡
- 纯色区域难以匹配
- 观测角度受到光照影响
- 场景中有多个相似目标
- 目标中有透明物体
- 景物遮挡
立体视觉:基本任务
- 首先对输入左右相对进行极线约束校正
- 对于左视图中的像素点x
在校正后的极线中搜索x的最佳匹配点x'
x点的视差为x-x',并计算x点的深度
窗口匹配方法
评估窗口差异策略:
相同点:评估两个图像点对点间像素差异
窗口选择问题
窗口尺度小:细节多,噪声大
窗口尺度大:细节少,鲁棒性强
解决匹配点病态问题:全局方法