vins 解读_代码解读 | VINS_Mono中的鱼眼相机模型

2023-05-16

本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS_Mono中的鱼眼相机模型

VINS_Mono中的鱼眼相机模型

VINS_Mono代码支持的相机包括针孔模型和鱼眼模型相机,针孔模型大家都比较熟悉了,今天向大家介绍一种鱼眼相机模型——MEI模型及其标定方法。

相机模型

投影模型

相比针孔模型可以将3d点直接投影到归一化平面,鱼眼相机则多了一个中间过程:先将3d点投影到单位球面,再将单位球面上的点投影到归一化平面上。废话不多说,请看鱼眼相机投影模型示意图:

file

代码解读

VINS_Mono中相机模型对应代码在/VINS-Mono/camera_model/src/camera_models/CataCamera.cc文件liftSphere()函数中,该函数是将

投影到

点(单位球面上),首先对

去畸变,然后再投影到单位球面上。

去畸变过程代码如下:

//去畸变过程

int n = 6;

Eigen::Vector2d d_u;

distortion(Eigen::Vector2d(mx_d, my_d), d_u);//得到畸变量

// Approximate value

mx_u = mx_d - d_u(0);

my_u = my_d - d_u(1);

for (int i = 1; i < n; ++i)//循环去畸变多次,使结果更接近真值

{

distortion(Eigen::Vector2d(mx_u, my_u), d_u);

mx_u = mx_d - d_u(0);

my_u = my_d - d_u(1);

}

将去畸变后的

点投影到归一化球面代码如下:

double xi = mParameters.xi();

if (xi == 1.0)

{

lambda = 2.0 / (mx_u * mx_u + my_u * my_u + 1.0);

P << lambda * mx_u, lambda * my_u, lambda - 1.0;

}

else

{

lambda = (xi + sqrt(1.0 + (1.0 - xi * xi) * (mx_u * mx_u + my_u * my_u))) / (1.0 + mx_u * mx_u + my_u * my_u);

P << lambda * mx_u, lambda * my_u, lambda - xi;

}

其中xi对应公式

中的

reference

Mei, C. and P. Rives. Single view point omnidirectional camera calibration from planar grids. in Robotics and Automation, 2007 IEEE International Conference on. 2007. IEEE.

Jamaluddin A Z , Mazhar O , Morel O , et al. Design and calibration of an omni-RGB+D camera. International Conference on Ubiquitous Robots & Ambient Intelligence. IEEE, 2016.

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

推荐阅读

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vins 解读_代码解读 | VINS_Mono中的鱼眼相机模型 的相关文章

  • 如何从 MVC 控制器在 debian linux 中打印 pdf

    AsP NET MVC 4 应用程序使用 Mono 在 Debian Squeeze Linux 中运行 控制器使用下面的代码从 html 创建 pdf 文件 如何将 pdf 文件打印到连接到服务器的三星打印机 有一些可执行文件可以用于此目
  • Mono - mod_mono 消耗 100% 的 CPU

    我正在 Mono 3 2 8 Ubuntu 14 04 Apache2 4 7 mod mono 上运行 ASP NET MVC 3 站点 我注意到有两个进程耗尽了所有CPU 运行htop 我的日志中也经常出现这样的条目 WARNING W
  • Mono 中的 P/Invoke

    什么是当前状态 of Mono http www mono project com 的平台调用实现Linux and on Solaris 工作 可用且稳定 它经过了充分的测试 因为相当多的 mono 自己的低级功能必须通过它编组到底层操作
  • Monotouch - QLPreviewController 问题

    我正在尝试使用 QLPreviewController 查看 PDF 文件并发送它 但预览 PDF 文档后操作按钮出现问题 当我按下操作按钮 右上角 时 应用程序崩溃 我得到 未处理的托管异常 抛出 Objective C 异常 名称 NS
  • 当 WebRequest 无法找到该前缀的创建者时出现“NotSupportedException”

    我有一个非常奇怪的问题WebRequest in a ServiceStackWeb 应用程序 由 Mono 上的 XSP 托管 看起来请求模块的注册工作方式非常奇怪 我在用WebRequest创建一个 HTTP 请求 但它失败了 因为它无
  • 在 Mono 中,如何获取 Mac (Snow Leopard) 上的 Documents 文件夹的路径?

    我正在编写一个 Mono 应用程序 并且想找到 Documents 文件夹的完整路径 例如 Users johnsmith Documents 实现这一目标的最佳方法是什么 你可以这样做 string doc path Path Combi
  • 在 mono/Linux 下从命名管道读取/写入

    我想从 Linux 下的命名管道 FIFo 队列中读取 写入 我已经尝试了标准类 StreamWriter 和 System IO 中的其他类 但它失败了 因为它正在使用查找 有人曾经使用 Mono 从命名管道中写入 读取过吗 我正在设法阅
  • 如何为 MAC OS X 安装 libgluezilla

    我正在尝试在具有嵌入式 Web 浏览器控件的 Mac 上运行 Mono 应用程序 程序运行 但现在显示浏览器并输出一条消息 未找到 libgluezilla 要获得网络浏览器支持 您需要安装 libgluezilla 我已经搜索过 但不知道
  • 目前Mono虚拟机的性能如何?

    网络上充斥着不同语言 编译器 虚拟机的各种性能测试 然而 几乎没有任何一个使用真实场景来测试性能 此外 在 Google 上搜索此类基准通常只会产生几年前的基准 因为这些基准有最多的时间来收集它们的链接 你们中有人真正了解不同虚拟机的当前性
  • 不使用 Visual Studio 的 C# 中的 GUI

    好的 我是 C 新手 但我需要创建一个简单的 GUI 但我没有 Visual Studio 我使用 Geany 和 Mono 问题是 当我尝试通过 Google 找到以下代码时 using System using System Windo
  • Mac OS X 上的 Mono - 并行 HTTP 下载限制为 2

    我正在使用 Mono 开发一个可以同时下载多个文件的程序 适用于 Mac OS X 和 Debian 然而 尽管我使用了构造函数 但我只能同时下载 2 个文件new RollingDownload 10 我正在使用的代码是这样的 using
  • 是否可以使用 Mono 运行 clickonce 应用程序?

    我正在开发 clickonce 应用程序 我可能想在 Mac 平台上分发该应用程序 我知道我可以使用 Mono 编译 Net 应用程序 并且它可以在 Mac 上运行 但是我可以使用 clickonce 作为安装程序吗 thanks 我认为
  • Mono .Net 支持异步等待吗?

    我想知道 Linux 上的 Mono 是否支持使用 async wait 关键字功能编写自托管 WebApi 项目 I found this on the Mono website on the compability page 然后有一些
  • 无法使用 mono 命令提示符为 gtk# 编译 hello.cs

    本来希望this https stackoverflow com questions 8835352 cannot compile gtk example会有所帮助 但会出现不同的错误 尝试将以下内容编译为 hello cs using G
  • Mono.Math.BigInteger 由于其保护级别而无法访问

    我正在使用 ideone 编写 C 程序 这是我第一次使用 Mono 我正在尝试使用 BigInteger 类 Mono Math BigInteger 但我不断收到错误 下面是我的代码 这是怎么回事 我该如何解决 谢谢 using Sys
  • Mono 的 DNS 刷新超时

    虽然目前Mono项目的ServicePointManager类有DnsRefreshTimeout属性启用到其接口中 相关属性未实现 调用示例 ServicePointManager DnsRefreshTimeout 10 60 1000
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • 在 Kali (Debian) 中安装 mono-devel 时,软件包具有未满足的依赖关系

    我尝试安装 mono devel 并输入sudo apt get mono devel在终端中 但失败了 得到以下结果 apt get install mono devel Reading package lists Done Buildi
  • C# MonoGame 有帮助吗? (Content.Load("入侵者");)

    我正在 MonoGame 中使用 Open GL 制作太空入侵者游戏 并且尝试加载已添加到内容文件夹中的纹理 这是一个名为 Invader 的 PNG 文件 我使用的代码是 invader Content Load
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names

随机推荐