• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
视觉VO(2)2D-2D 求解位姿

位姿

 

https://wym.netlify.app/2019-06-17-orb-slam2-monocular-initialization/

2. Fundamental 基本矩阵求解变换

2.1 归一化特征点坐标

  8 点法是计算基本矩阵最简单的方法。为了提高解的稳定性和精度,通常需要对输入的点集坐标进行归一化处理(吴博师兄在视频中提到好像是为了防止不同分辨率、尺度和坐标原点下的影响)。 + 在 MVG 的估计一章中推荐各向同性归一化,OpenCV的8点算法也是使用了各向同性,也就是使得各个点做平移缩放之后到坐标原点的均方根距离等于 √22; + 各向同性归一化和非各向同性归一化在论文 In Defense of the Eight-Point Algorithm 中有讨论,ORB-SLAM2 单目初始化 F 矩阵计算之前的归一化使用的是非各向同性归一化。(上面这段文字来自于许可师兄博客)

 

 

2.2 对极几何模型

 

 

2.3 归一化八点法求解基本矩阵

 

 

2.4 计算矩阵得分

 

 

  • 然后判断误差是否大于 3.841,如果大于则认为是外点,否则就对其误差进行累加对当前使用的基础矩阵的 RANSAC 评分。
  • 同理从参考帧到当前帧也进行一次这样的重投影误差计算,并对误差进行累加。

2.5 从 F 矩阵中恢复相机运动 R, t

 

2.5 从 F 矩阵中恢复相机运动 R, t

  从前面计算的基础矩阵中恢复出旋转和平移可以通过对本质矩阵 SVD 奇异值分解实现。 + 首先根据相机内参和基础矩阵计算本质矩阵 E<span class="MathJax_Preview" style="color: inherit;">E=KTFK�=�T��+ 然后对本质矩阵进行奇异值分解<span class="MathJax_Preview" style="color: inherit;">E=UΣVT�=���T+ 其中 U,V 是正交矩阵,<span class="MathJax_Preview" style="color: inherit;">Σ� 为奇异值矩阵,根据本质矩阵的内在性质,有 <span class="MathJax_Preview" style="color: inherit;">Σ=diag(σ,σ,0)�=����(�,�,0) + 令 W 表示沿 Z 轴旋转 90° 得到的旋转矩阵<span class="MathJax_Preview" style="color: inherit;">W=Rz(π2)=⎡⎢⎣0−10100001⎤⎥⎦�=��(�2)=[0−10100001]+ 对于任意一个 E,对它分解都能得到两个与之对应的 R 和 t ,所以一共存在 4 组 [R,t] 解<span class="MathJax_Preview" style="color: inherit;">E=[R|t]=⎧⎪ ⎪ ⎪ ⎪⎨⎪ ⎪ ⎪ ⎪⎩R1=UWVTR2=UWTVTt1=U3t2=−U3�=[�|�]={�1=���T�2=��T�T�1=�3�2=−�3+ 如何选择正确的 [R,t] :统计这四个模型中 3D 点在摄像头前方投影误差小于给定阈值的 3D 点个数和每个模型下较大的视差角,如果其中一个模型的视差角大于阈值,并且满足条件的3D点明显大于其他模型,那么这个模型就是最优的选择。

2.6 三角化 3D 点

posted on 2023-11-10 16:55  MKT-porter  阅读(77)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3