【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.mzph.cn/diannao/65073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

undefined reference to `vtable for错误

QT构建报错: D:\code\QGraphicsScaleTest\main.cpp:-1: error: undefined reference to vtable for ResizableSvgViewVS编译报错: 1>main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl Resi…

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告,一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1,PHP 内存限制低于建议值 512 MB。 设置php配置文件: /usr/local/php/etc/php.ini 把里面的: memory_limit 128M 根据你自…

P3456 [POI2007] GRZ-Ridges and Valleys BFS-连通块思想

题目描述 Byteasar loves trekking in the hills. During the hikes he explores all the ridges and valleys in vicinity. Therefore, in order to plan the journey and know how long it will last, he must know the number of ridgesand valleys in the area he is goi…

一键打断线(根据相交点打断)——CAD c# 二次开发

多条相交线根据交点一键打断,如下图: 部分代码如下: finally namespace IFoxDemo; public class Class1 {[CommandMethod("ddx")]public static void Demo(){//"ifox可以了".Print();Database db HostApplicationServices.Workin…

【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?

文章目录 前言问题描述问题分析问题解决1.允许所有用户上传驱动文件2.如果是想只上传白名单的驱动 前言 该方法适合永洪BI系列产品,包括不限于vividime desktop,vividime z-suit,vividime x-suit产品。 问题描述 当我们连接数据源的时候&a…

基于云计算的资源管理系统

基于云计算的资源管理系统是一种将云计算技术与资源管理技术相结合,以实现资源高效利用和管理的系统。以下是对该系统的详细分析: 一、系统概述 云计算是一种基于网络的计算模式,通过将计算资源和数据存储在云端服务器上,使用户…

在Windows11上编译C#的实现Mono的步骤

在Windows11上编译Mono的步骤 1、 在win11打开开发者模式,在更新和安全选项里,如下图: 2、下载并安装64位的cygwin, 下载网站:www.cygwin.com 3、 安装 Visual Studio 2015 or later 的社区版本。 4、 下载Mono的windows最新版本。 5、 在cmd.exe里运行下面的命令来安…

VBA实现遍历Excel文件将指定的单元格内容拷贝到当前工作簿

选择一个文件夹,遍历其中所有Excel文件,并将每个文件指定的单元格内容拷贝到当前工作簿的目标区域。 Sub 遍历文件拷贝指定区域内容()Dim folderPath As StringDim fileName As StringDim sourceColumns As StringDim targetRow As LongDim wbSource As…

C++中的类继承知识点总结1(13章)

一)类继承总结 继承通过使用已有的类(基类)定义新的类(派生类),使得能够根据需要修改编程代码。公有继承建立 is-a关系,这意味着派生类对象也应该是某种基类对象。作为is-a模型的一部分,派生类继承基类的数据成员和大部分方法&…

某家政小程序系统 httpRequest 任意文件读取

0x01 产品描述: ‌家政上门预约服务小程序‌是一种基于移动互联网的家政服务平台,旨在为用户提供便捷、高效、安全的家政服务。用户可以通过手机随时随地预约家政服务,满足家庭日常清洁、照料、维修等需求‌。0x02 漏洞描述: 家政小程序系统 httpRequest 接口存在任意文件读…

《探索 Apache Spark MLlib 与 Java 结合的卓越之道》

在当今大数据与人工智能蓬勃发展的时代,Apache Spark MLlib 作为强大的机器学习库,与广泛应用的 Java 语言相结合,为数据科学家和开发者们提供了丰富的可能性。那么,Apache Spark MLlib 与 Java 结合的最佳实践究竟是什么呢&#…

嵌入式轻量级开源操作系统:HeliOS的使用

嵌入式轻量级开源操作系统:HeliOS的使用 📍项目地址:https://github.com/heliosproj/HeliOS HeliOS项目是一个社区交付的开源项目,用于构建和维护HeliOS嵌入式操作系统(OS)。HeliOS是一个功能齐全的操作系统&#xff0…

黑马Java面试教程_P9_JVM虚拟机

系列博客目录 文章目录 系列博客目录前言1. JVM组成1.1 JVM由那些部分组成,运行流程是什么?3 41.2 什么是程序计数器?3 4总结 1.3 你能给我详细的介绍Java堆吗? 3 4总结 1.4 什么是虚拟机栈 3 4总结 1.6 能不能解释一下方法区? 3…

YOLO11改进-注意力-引入多尺度卷积注意力模块MSCAM

如何在增强特征图的同时降低计算成本,以提升模型性能。基于此,MSCAM 模块采用了多尺度卷积注意力机制,通过 CAB、SAB 和 MSCB 三个子模块协同工作。CAB 利用自适应池化和卷积操作生成通道注意力权重,强调重要通道特征;…

Kafka无锁设计

前言 在分布式消息队列系统中,Kafka 的无锁设计是其高吞吐量和高并发的核心优势之一。通过避免锁的竞争,Kafka 能够在高并发和大规模的生产环境中保持高效的性能。为了更好地理解 Kafka 的无锁设计,我们首先对比传统的队列模型,然后探讨 Kafka 如何通过无锁机制优化生产者…

Refusal in Language Models Is Mediated by a Single Direction

开源代码:https://github.com/andyrdt/refusal_direction Abstract 会话型大语言模型针对指令遵循和安全性进行了微调,从而产生服从良性请求但拒绝有害请求的模型。虽然这种拒绝行为在聊天模型中普遍存在,但其背后的机制仍然知之甚少。在这…

智慧平台数据可视化解决方案(附实践资料下载)

阿里云详解数据可视化大屏构建,内容涉及数据可视化大屏的构建。以下是该文件的核心内容概要: 数据可视化大屏概述: 数据可视化大屏的定义和目的。大屏在企业决策中的作用。 大屏设计原则: 强调用户体验和视觉美感。信息的清晰度和…

基于openlayers 开发vue地图组件

先看效果 主要功能如下: 测量图源更换放大缩小地图添加点hover点数据切换到地图位置;也设定层级2D3D切换,3D为cesium开发,技术交流可以加V:bloxed 地图工具做了插槽,分为toolbar(左上角工具…

大模型(LLM)提示工程(Prompt Engineering)初识

大模型提示工程(Prompt Engineering)是指设计和优化给定任务的输入提示,以便从大型语言模型(如GPT-4、GPT-3等)中获得最佳输出。其核心目标是通过合理设计输入内容(提示词或提示结构)&#xff0…

人工智能ACA(六)--计算机视觉基础

一、计算机视觉概述 1. 计算机视觉定义 人工智能(AI)的一个重要分支旨在使计算机和系统能够从图像或多维数据中“理解”和“解释”视觉世界通过模拟人类视觉系统,计算机视觉技术能够自动执行诸如识别、分类、检测和跟踪等任务。 2. 计算机…