SFM的过程
(1) 特征提取(Feature Extraction):
对
每
一
张
像
片
作
特
征
提
取
\small对每一张像片作特征提取
对每一张像片作特征提取
(2) 特征匹配(Matching):
对
每
一
对
像
片
作
初
始
特
征
匹
配
,
若
有
n
张
像
片
就
要
做
C
n
2
次
\small 对每一对像片作初始特征匹配,若有n张像片就要做 C_n^2 次
对每一对像片作初始特征匹配,若有n张像片就要做Cn2次
(3) 几何验证(Geometric Verification):
对
每
一
对
像
片
通
过
对
极
几
何
估
计
F
,
并
用
R
A
N
S
A
C
(
随
机
采
样
一
致
性
)
剔
除
错
误
匹
配
。
\small对每一对像片通过对极几何估计F ,并用RANSAC(随机采样一致性)剔除错误匹配。
对每一对像片通过对极几何估计F,并用RANSAC(随机采样一致性)剔除错误匹配。
(4) 对极几何估计初始化位姿变换:
然
后
我
们
由
2
D
−
2
D
对
应
关
系
用
对
极
几
何
(
相
对
定
向
)
估
计
初
始
化
两
帧
的
位
姿
变
换
。
\small然后我们由2D-2D对应关系用对极几何(相对定向)估计初始化两帧的位姿变换。
然后我们由2D−2D对应关系用对极几何(相对定向)估计初始化两帧的位姿变换。
// |0 -1 0|
// E = U Sigma V' let W = |1 0 0|
// |0 0 1|
// 得到4个解 E = [R|t]
// R1 = UWV' R2 = UW'V' t1 = U3 t2 = -U3
————————————————
版权声明:本文为CSDN博主「嚣张的叉烧包」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43828675/article/details/113884075
E
=
R
T
∗
T
×
⇒
奇
异
值
分
解
R
,
T
\tiny E=R^T*T_×\Rightarrow 奇异值分解 R,T
E=RT∗T×⇒奇异值分解R,T
找
出
特
征
跟
踪
最
多
的
且
基
线
距
离
适
中
的
两
帧
(
基
线
太
短
面
临
纯
旋
转
问
题
,
太
长
面
临
共
同
特
征
太
少
的
问
题
)
。
\tiny找出特征跟踪最多的且基线距离适中的两帧 (基线太短面临纯旋转问题,太长面临共同特征太少的问题)。
找出特征跟踪最多的且基线距离适中的两帧(基线太短面临纯旋转问题,太长面临共同特征太少的问题)。
这
两
帧
间
的
基
线
长
会
被
定
位
单
位
距
离
,
这
也
表
明
增
量
式
系
统
是
尺
度
未
知
的
(
因
为
我
们
不
知
道
初
始
化
基
线
长
度
的
真
值
)
,
故
我
们
最
后
还
需
要
做
一
个
类
似
于
绝
对
定
向
的
操
作
来
赋
予
系
统
正
确
的
尺
度
。
\tiny这两帧间的基线长会被定位单位距离,这也表明增量式系统是尺度未知的(因为我们不知道初始化基线长度的真值),故我们最后还需要做一个类似于绝对定向的操作来赋予系统正确的尺度。
这两帧间的基线长会被定位单位距离,这也表明增量式系统是尺度未知的(因为我们不知道初始化基线长度的真值),故我们最后还需要做一个类似于绝对定向的操作来赋予系统正确的尺度。
(5) 三角化(Triangulation):
用
初
始
化
的
两
帧
重
建
出
第
一
批
3
D
点
。
\small用初始化的两帧重建出第一批3D点。
用初始化的两帧重建出第一批3D点。
(6) 光束法平差(Bundle Adjustment):
对
初
始
化
两
帧
的
相
机
外
参
(
有
时
也
可
加
入
内
参
)
,
已
三
角
化
的
3
D
点
做
联
合
优
化
,
最
小
化
重
投
影
误
差
平
方
和
。
B
A
过
后
,
相
机
参
数
和
3
D
点
坐
标
得
到
了
更
新
。
\small 对初始化两帧的相机外参(有时也可加入内参), 已三角化的3D点做联合优化,最小化重投影误差平方和。\\BA过后,相机参数和3D点坐标得到了更新。
对初始化两帧的相机外参(有时也可加入内参),已三角化的3D点做联合优化,最小化重投影误差平方和。BA过后,相机参数和3D点坐标得到了更新。
(7) 粗差滤除(Outlier Filtering):
根
据
B
A
之
后
的
重
投
影
误
差
统
计
,
滤
除
部
分
平
差
后
重
投
影
误
差
过
大
的
点
。
或
者
在
平
差
过
程
中
,
根
据
选
权
迭
代
的
思
想
,
给
这
些
重
投
影
误
差
过
大
的
点
赋
比
较
小
的
权
重
(
类
似
于
鲁
棒
核
函
数
)
。
\small根据BA之后的重投影误差统计,滤除部分平差后重投影误差过大的点。\\或者在平差过程中,根据选权迭代的思想,给这些重投影误差过大的点赋比较小的权重(类似于鲁棒核函数)。
根据BA之后的重投影误差统计,滤除部分平差后重投影误差过大的点。或者在平差过程中,根据选权迭代的思想,给这些重投影误差过大的点赋比较小的权重(类似于鲁棒核函数)。
三角化()
拍
照
的
逆
向
过
程
:
K
+
R
,
T
+
两
张
图
像
⇒
X
拍照的逆向过程:K+R,T+两张图像\Rightarrow X
拍照的逆向过程:K+R,T+两张图像⇒X
添加链接描述
Z
c
a
m
e
r
a
[
u
v
1
]
=
[
1
d
x
u
0
1
d
y
v
0
1
]
[
f
0
f
0
1
0
]
[
R
T
0
⇀
1
]
[
X
Y
Z
1
]
Z_{camera}\begin{bmatrix}u\\v\\1\end{bmatrix} =\begin{bmatrix}\frac{1}{dx}&&u_0\\&\frac{1}{dy}&v_0\\&&1\end{bmatrix} \begin{bmatrix}f&&&0\\&f&&0\\&&1&0\end{bmatrix} \begin{bmatrix}R&T\\\overset\rightharpoonup0&1\end{bmatrix} \begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}
Zcamera⎣⎡uv1⎦⎤=⎣⎡dx1dy1u0v01⎦⎤⎣⎡ff1000⎦⎤[R0⇀T1]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
λ [ u v 1 ] = K [ R ∣ t ] [ X Y Z 1 ] \lambda \begin{bmatrix}u\\v\\1\end{bmatrix} =K [R|t] \begin{bmatrix}X\\Y\\Z\\1\end{bmatrix} λ⎣⎡uv1⎦⎤=K[R∣t]⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
λ
u
=
P
X
\lambda u =P X
λu=PX
u
∧
λ
u
=
u
∧
P
X
0
=
u
∧
P
X
(
包
含
两
个
关
系
)
u^{\wedge}\lambda u =u^{\wedge}PX \\ 0 =u^{\wedge}PX (包含两个关系)\\
u∧λu=u∧PX0=u∧PX(包含两个关系)
这里可以使用SVD求解,齐次坐标X即为 H 的最小奇异值的奇异向量。