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​ ​= ​dx1​​dy1​​u0​v0​1​ ​ ​f​f​1​000​ ​[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 的最小奇异值的奇异向量。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐