【本学期选修国科大计算机视觉课程,本人方向也是cv,因此想通过博客方式记录课程中比较重要的点,巩固并且进行一些扩展学习】
【从本章节开始由申抒含老师为我们讲述相关知识】
【本章节内容针对相机标定与稀疏重建进行讲解】
接下来我们将主要针对以下内容进行介绍:
• 三角化:已知x、K、R、t,求X
• 相机标定:已知x、X,求K、R、t
• 姿态估计:已知x、X 、K ,求R、t
• 稀疏重建:已知x,求K、R、t、X
• 重投影误差最小化
• 通过线性方法求解初始值(代数误差最小化),通过非线 性优化迭代求精(几何误差最小化)
• 相机标定与稀疏重建实践:Photo Tourism
稀疏点云重建:
输入:多视角图像 输出:相机位姿、稀疏点云
我们针对不同的条件和环境对其进行一系列划分:
• 已知 x 、 K 、 R 、 t ,求 X : 三角化( Triangulation )
• 已知 x 、 X 、 K ,求 R 、 t : 姿态估计( Pose Estimation )
• 已知 x 、 X ,求 K 、 R 、 t : 相机标定( Camera Calibration )
• 已知 x ,求 K 、 R 、 t 、 X :稀疏重建( Sparse Reconstruction )
Structure from Motion (SfM)
Structure and Motion Estimation
如上章所讲:
一. 三角化
• 已知x、K、R、t,求X
但是这两个Image所得到的X不一定会相交
若为两视图,则可以通过两条视线公垂线的中点,如下图
若为n视图,上图方法不可实现,采用最小化重投影误差平方和
具体矩阵变化如下,感兴趣的同学可以看看。
基本思路:以 代数误差解 (好不好很取决于初值选定) 为初值,迭代求解几何误差解
二. 相机标定(Camera Calibration)
• 已知x、X,求K、R、t
需要知道一组2D—3D对应,并知道对应点的2D与3D坐标
标定物:人工标定的标定物,特征点易于提取
优点
— 标定精度高
— 通过一幅图像即可标定
• 缺点
— 需要高精度的三维标定块
n 组 2D-3D 对应点提供关于 P 的 2 n 个线性方程
• 当 n≥6 时, P 可以通过 DLT 线性解出( P 的自由度为 11 )
从P中分解相机内外参数K、R、t:
对P的前三列进行RQ分解:
K^(-1)乘以P的第四列得到t
平面标定板:
• 优点
— 容易制作(打印一张黑白棋盘格、一块足够平的木板)
— 标定工具箱成熟( Matlab 、 OpenCV )
缺点
— 标定精度不如三维标定物
• H 称为单应,有 8个自由度
• n 组 2D-3D 对应点提供关于 H 的 2 n 个线性方程
• 当 n≥4 时, H 可以通过 DLT 线性解出
具体过程如下:(感兴趣的同学可以看一下)
标定过程:
标定流程 1 :打印一张模板并贴在一个平面上
标定流程 2 :从不同角度拍摄若干张模板图像
标定流程 3 :检测图像中的特征点
标定流程 4 :求解相机内外参数
标定流程 5 :分析重投影误差
标定流程 6 :输出标定结果
利用消影点标定(需要假设K中只有f未知)
消影点(vanishing points) :空间平行线在图像投影线的交点, 对应三维空间中的无穷远点。消影点只与三维直线方向有关, 与其位置无关
注意:消影点越靠近图像中心, f 计算的越准确
DLT求解相机标定的优缺点:
• 优点:
— 线性求解
• 缺点:
— 不包含相机畸变参数
— 无法添加其他约束(如已知相机焦距)
—最小化代数误差(无几何意义)
三.姿态估计(Pose Estimation)
• 已知x 、X、K,求R、t
最简单的方法:用与相机标定相同的 DLT 方法求解
• 6 组 2D-3D 对应点提供关于 P 的 12 个线性方程
• DLT 线性求解 P
• 从 P 中分解相机内外参数 K 、 R 、 t
PnP(Perspective-n-Point)问题:
输入:
• n 个 3D 点(世界坐标系)
• n 个 2D 点(图像坐标系)
• 2D-3D 点对应关系已知
• 相机内参数 K 已知
输出:
• 3D 点在相机坐标系下的坐标
• 根据坐标变换可以计算 R 、 t
P2P :无穷多解
P3P :最多四个解,需要第 4 个点验证
P4P :最多四个解,当四点共面时有唯一解
P5P :最多两个解
EPnP : ≥4 组不共面点时有唯一解
PnP :线性求解( n>5 )
其他PnP :相机参数未知、相机高度已知、相机重力方向已知等等
四. 稀疏重建(Sparse Reconstruction)
八点法求F
5点法求解本质矩阵E
通过SVD分解从E中分解R和t(假设camera 1为R1=I, t1=0):
选择四组解中三角化得到的X在两个相机前方数量最多的解
• 刚才假设摄像机内参数K已知,实践中如何给定K?
Focal length (pixels) = Focal length (mm) x Image width (pixels) / Sensor size (mm)
= 6.0 mm x 600 pixels / 5.75 mm = 626.1 pixels
在获得 K 、 R 、 t 后,通过三角化计算空间点 X
• 以给定的 K 、通过 E 分解求得的 R 、 t 、以及三角化后的 X 为初
始值,迭代求解重投影误差最小化问题:
得到几何误差最小化意义下的 K 、 R 、 t 、 X
重投影误差最小化是一个非线性最小二乘问题,求解非线性最小二乘问题的方法:
• 非线性最小二乘是非线性优化的一类特殊形式;
• 针对一般非线性优化的 梯度下降法(1阶 )、 牛顿法(2阶) ;
• 针对非线性最小二乘的 高斯牛顿法 、 LM法 ( Levenberg Marquardt)。
非线性最小二乘问题迭代优化的基本思路 :
1 )给定初始值;
2 )开始迭代优化
— 选择最优移动方向使目标函数值下降最快;
— 以一定步长沿最优方向移动当前值;
— 如果两次迭代间目标函数值差异小于阈值或迭代次数 超出阈值,则转步骤3 ),否则返回 2 );
3 )迭代结束,输出当前值。
五.实践:Photo Tourism——增量式SfM
主要难点:
– 参数数量多
具体过程如下:
1. 选择初始图像对
2. 通过两视图 SfM 计算初始模型
3. 如果图像连接关系图还有未选择的图像,则:
a. 选择一幅能看到目前模型中最多 3D 点的图像;
b. 根据 3D‐2D 点对应估计相机位姿;
c. 三角化新的特征点 Tracks
d. Bundle adjustment
Photo Tourism — 添加新图像
下一步 : 在初始模型中添加新图像,同时三角化新
的 3D 点
• 姿态估计 ( 已知 x 、 X 、 K ,求 R 、 t ) 和三角化 ( 已知 x
、 K 、 R 、 t ,求 X ) 均可通过 DLT 求解
• 实际应用中,一次可以添加多幅图像
• 如果剩余图像中单幅图像与模型的最多匹配点数
量为 N ,则匹配点数量多于 0.75 N 的图像一次添加
Photo Tourism — 外点处理
• 特征点匹配中的外点是不可避免的
• 外点处理策略:
1. 每次 Bundle adjustment 后去除外点并重新优化
2. 使用鲁棒目标函数,如 Huber 函数