【本学期选修国科大计算机视觉课程,本人方向也是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
如上章所讲:
![](https://i-blog.csdnimg.cn/blog_migrate/0cc930444a256e79dfb322186c3b1483.png)
一. 三角化
• 已知x、K、R、t,求X
但是这两个Image所得到的X不一定会相交
若为两视图,则可以通过两条视线公垂线的中点,如下图
若为n视图,上图方法不可实现,采用最小化重投影误差平方和
具体矩阵变化如下,感兴趣的同学可以看看。
基本思路:以
代数误差解
(好不好很取决于初值选定)
为初值,迭代求解几何误差解
二. 相机标定(Camera Calibration)
• 已知x、X,求K、R、t
需要知道一组2D—3D对应,并知道对应点的2D与3D坐标
标定物:人工标定的标定物,特征点易于提取
优点
—
标定精度高
—
通过一幅图像即可标定
•
缺点
—
需要高精度的三维标定块
![](https://i-blog.csdnimg.cn/blog_migrate/0ba94700de4bbe725dddb04e49dce67b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0d76b293d348bc59e613044d17b7e867.png)
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
:打印一张模板并贴在一个平面上
![](https://i-blog.csdnimg.cn/blog_migrate/fcdf5e850ab69343ba117d757ab1255c.png)
标定流程
2
:从不同角度拍摄若干张模板图像
![](https://i-blog.csdnimg.cn/blog_migrate/9b6ec06ad0d65effa0dad0b0e6ce0d7c.png)
标定流程
3
:检测图像中的特征点
![](https://i-blog.csdnimg.cn/blog_migrate/5610ba8e732dcebb9b783e87d02b5e46.png)
标定流程
4
:求解相机内外参数
![](https://i-blog.csdnimg.cn/blog_migrate/8b87d1bf2af3ef14f4f39757e92eb1e5.png)
标定流程
5
:分析重投影误差
![](https://i-blog.csdnimg.cn/blog_migrate/0c079ddd92a5b3e9df95e87c18d7d264.png)
标定流程
6
:输出标定结果
![](https://i-blog.csdnimg.cn/blog_migrate/6c7ff6d8eaf3544a3f71fee1eb079c92.png)
利用消影点标定(需要假设K中只有f未知)
消影点(vanishing points)
:空间平行线在图像投影线的交点, 对应三维空间中的无穷远点。消影点只与三维直线方向有关, 与其位置无关
![](https://i-blog.csdnimg.cn/blog_migrate/4d8c8854a6d094c380950b3c196d1ac2.png)
注意:消影点越靠近图像中心,
f
计算的越准确
DLT求解相机标定的优缺点:
•
优点:
—
线性求解
•
缺点:
—
不包含相机畸变参数
—
无法添加其他约束(如已知相机焦距)
—最小化代数误差(无几何意义)
三.姿态估计(Pose Estimation)
• 已知x 、X、K,求R、t
最简单的方法:用与相机标定相同的
DLT
方法求解
•
6
组
2D-3D
对应点提供关于
P
的
12
个线性方程
•
DLT
线性求解
P
•
从
P
中分解相机内外参数
K
、
R
、
t
![](https://i-blog.csdnimg.cn/blog_migrate/045b218cbffcb2044ff7d0c53115bd76.png)
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
![](https://i-blog.csdnimg.cn/blog_migrate/295f444eebf08909dcf129c55928a6df.png)
在获得
K
、
R
、
t
后,通过三角化计算空间点
X
•
以给定的
K
、通过
E
分解求得的
R
、
t
、以及三角化后的
X
为初
始值,迭代求解重投影误差最小化问题:
![](https://i-blog.csdnimg.cn/blog_migrate/88185441ee1224470cb6154ec9418851.png)
得到几何误差最小化意义下的
K
、
R
、
t
、
X
重投影误差最小化是一个非线性最小二乘问题,求解非线性最小二乘问题的方法:
•
非线性最小二乘是非线性优化的一类特殊形式;
•
针对一般非线性优化的
梯度下降法(1阶
)、
牛顿法(2阶)
;
•
针对非线性最小二乘的
高斯牛顿法
、
LM法
(
Levenberg Marquardt)。
非线性最小二乘问题迭代优化的基本思路
:
1
)给定初始值;
2
)开始迭代优化
—
选择最优移动方向使目标函数值下降最快;
—
以一定步长沿最优方向移动当前值;
—
如果两次迭代间目标函数值差异小于阈值或迭代次数 超出阈值,则转步骤3
),否则返回
2
);
3
)迭代结束,输出当前值。
五.实践:Photo Tourism——增量式SfM
主要难点:
–
参数数量多
![](https://i-blog.csdnimg.cn/blog_migrate/41db255542ae97e336ceedd35920c628.png)
具体过程如下:
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
函数