当前位置: 首页 > article >正文

【ORB-SLAM3:相机针孔模型和相机K8模型】

在ORB-SLAM3中,相机的建模是 SLAM 系统的核心之一,因为它直接影响到如何处理和利用图像数据进行定位和地图构建。ORB-SLAM3 支持不同的相机模型,其中包括针孔模型和鱼眼模型(K8 模型)。下面分别介绍这两种模型。

相机针孔模型

针孔模型是计算机视觉中最常用的摄像机模型之一,ORB-SLAM3 也使用它来建模常规的透视相机(Perspective Camera)。

相机针孔模型简介

针孔模型基于理想化的几何假设,将三维点投影到二维图像平面上。它假设:

  • 光线通过一个小孔投影到图像平面上。
  • 图像形成过程可以用简单的线性模型表示。

针孔模型的数学公式

针孔模型的核心是摄像机的投影关系,通过内参矩阵将三维点投影到二维图像上:
在这里插入图片描述
其中:

  • (x,y,z):三维点在相机坐标系下的坐标。
  • (u,v):二维图像坐标。
  • f_x,f_y:焦距(以像素为单位)。
  • c_x,c_y:主点坐标(光心在图像平面上的位置)。
  • K:内参矩阵,定义相机的内在参数。

针孔模型特点

  • 假设图像是中心对称的,光学畸变很小或可以忽略。
  • 简单而有效,适用于常规透视相机。
  • 在 ORB-SLAM3 中用于常规的 RGB 相机(例如,手机摄像头、普通相机)。

相机K8模型(鱼眼模型)

K8 模型是 ORB-SLAM3 用于建模具有鱼眼镜头的广角相机的数学模型。鱼眼相机能够捕获比普通相机更大的视角,但会导致显著的非线性畸变。

鱼眼模型的简介

鱼眼相机的投影模型与针孔模型不同,它考虑到广角镜头会导致的畸变。K8模型采用了更复杂的非线性变换,将三维点投影到图像平面上,同时校正因大视场角导致的畸变。
K8是广义相机模型的扩展,支持最多8个自由度的畸变校正,因此称为K8模型。

K8模型的数学公式

K8模型采用如下步骤将三维点投影到二维图像平面上

  • 将三维点(x,y,z) 归一化为相机坐标系下的方向向量:
    在这里插入图片描述

  • 引入畸变校正,通过径向和切向畸变参数(最多 8 个自由度)对点 p 进行修正:
    在这里插入图片描述
    其中,k1,k2,…,k8是畸变校正参数。

  • 使用内参矩阵将校正后的点映射到图像平面:
    在这里插入图片描述

K8模型特点

  • 适用于鱼眼镜头和其他大视场角的相机。
  • 考虑了复杂的非线性畸变,能够提供更精确的投影和重投影。
  • 支持高自由度的畸变校正(8 个自由度),比传统的针孔模型更通用。

针孔模型与K8模型的对比

在这里插入图片描述

ORB-SLAM3 中的实现与选择

在ORB-SLAM3中,相机模型的选择取决于所使用的相机类型:

  • 如果使用普通透视相机,可以选择针孔模型。
  • 如果使用鱼眼相机或者具有大视场角的相机,则可以选择K8模型。
    ORB-SLAM3在初始化时,根据相机内参配置文件(或标定结果)加载相应的相机模型,同时在跟踪、建图和优化过程中使用这些模型进行位姿估计和误差优化。

总结

  • 针孔模型适用于普通的透视相机,计算简单但不适合广角镜头。
  • K8模型则是为鱼眼相机设计的,可以校正复杂的非线性畸变,适合处理大视场角的图像。
  • 在实际应用中,根据相机类型选择合适的模型,可以提高 ORB-SLAM3 的精度和稳定性。

http://www.kler.cn/a/452097.html

相关文章:

  • Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建
  • stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)
  • C++之红黑树模拟实现
  • Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享
  • OpenCV学习——图像融合
  • vue3标签中的ref属性如何使用$refs获取元素
  • Chapter 03 复合数据类型-1
  • RBF分类-径向基函数神经网络(Radial Basis Function Neural Network)
  • 数据库安全-redisCouchdb
  • 硬件设计-传输线匹配
  • 3D视觉坐标变换(像素坐标转换得到基于相机坐标系的坐标)
  • 以太网通信--读取物理层PHY芯片的状态
  • C++ 特殊类的设计
  • 开发微信小程序的过程与心得
  • RuoYi-ue前端分离版部署流程
  • mac中idea菜单工具栏没有git图标了
  • 【HarmonyOS NEXT】hdc环境变量配置
  • 认识计算机网络
  • CosyVoice安装过程详解
  • Java基础学习资料
  • Visual Studio - API调试与测试工具之HTTP文件
  • 《战神:诸神黄昏》游戏运行时提示找不到emp.dll怎么办?emp.dll丢失如何修复?
  • 前端开发 -- 自定义鼠标指针样式
  • 【pytorch】深度学习计算
  • 三相异步电动机不能起动有哪些原因
  • jupyter下载使用及汉化