前言

多的不说哈 2022最佳优秀论文 来自美团无人机团队

作者提出了一种使用点和线的高效的直接视觉里程计(visual odometry,VO)算法—— EDPLVO 。他们证明了,2D 线上的 3D 像素点由 2D 线端点的逆深度决定,这使得将光度误差扩展到线变得可行。

直接进入正题

公式推导

首先直接看总误差



误差分为三部分:

\(E_{pj}\)误差为光度误差 这个被作者一笔带过了

\(E_{lj}\)误差为本文的重点 会重点讲解

\(E_{L}\)误差为线性约束 这个作者用了小篇幅来讲解

首先扔出光度误差公式:



\(i\)和\(j\)对应两个相机视角 \(x\)就是两个视角看到的点

\(t\)为曝光时间 剩下的贴出来了 大家自行研读吧 或者查一查资料 这里其他的我不太能多解释了

核心误差构建

首先简单说一下普吕克坐标系 是将空间中的一个3D直线用两个在该直线上的3D点进行了表示



\(P_1\)和\(P_2\)就是线上的两个3D点

原理可以自行查阅一下 但是这个结论很清晰明了 不用做太多解释

下面来看 在普吕克坐标系表示下 点到该直线的距离为:



注意 这里用e进行表示了

接下来表示两个空间点:



\(x_1\)和\(x_2\)为2d线的两个端点 \(d_1\)和\(d_2\)分别为这两个三维点的逆深度 那个像π似的是反投影矩阵 得到了这条线上的两个三维点坐标

然后结合上面的普吕克坐标表示的直线 就可以用上面两个三维点来表示直线了



此时又来了一个不同于上面两个三维点的点 这个点依然在3D线上 这个点的光线的方向可以表示为:



这里的 x 是图像坐标 且脑袋上带个横杠表示齐次坐标哈

然后就是很省略的一步 但是依然清晰明了:

我们需要求出上一个公式的 x 的三维坐标点:



不好推但是公式很明白 这里的参数都在上面说过

\([]_x\)表示反对称矩阵哈

然后我们又将上式的这个三维点投影到另一个相机视角中:



就得到了这个东西

这个东西带回到最上面的没太多解释的那个光度误差里 就得到了我们总公式的第二项的一部分

总公式的第二项详细的情况是:



这里的前两项确实仍然是光度误差 第三项为我们刚才三维点投影到相机视角中再带入到光度误差的结果哈

从上面的推导结果可知 第三项只依赖于\(x_1\)和\(x_2\)的逆深度

第三种误差

接下来看第三种误差



\(q\)是两个3D点 也是L的3D端点 \(e\)为定义的点到线的距离

然后还有前面那个东西的倒数 这个东西表示一个3D的L在相机视角下的一个投影2D线的长度 这个影响了\(q\)是否是端点的不确定度

然后这三种误差其实就这样建立起来了

H矩阵对比



图b就是这个算法所得到的H矩阵 可以看出这个H矩阵相对于其他的H矩阵是最小的

原图片的描述贴上:



从这里也可以看到这个论文的优点。

主要贡献

在不增加变量数量和优化难度的情况下将线特征加入到了约束中,在不增加运算量的情况下提高了准确率。

【公式详解】【优秀论文解读】EDPLVO: Efficient Direct Point-Line Visual Odometry的更多相关文章

  1. Java网络编程和NIO详解8:浅析mmap和Direct Buffer

    Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI ...

  2. 设计模式相关面试问题-Builder基础详解与代码解读

    java的builder模式详解: 概念:建造者模式是较为复杂的创建型模式,它将客户端与多含多个组成部分(或部件)的复杂对象的创建过程分离. 使用场景:当构造一个对象需要很多参数的时候,并且参数的个数 ...

  3. Java网络编程与NIO详解8:浅析mmap和Direct Buffer

    微信公众号[黄小斜]作者是蚂蚁金服 JAVA 工程师,目前在蚂蚁财富负责后端开发工作,专注于 JAVA 后端技术栈,同时也懂点投资理财,坚持学习和写作,用大厂程序员的视角解读技术与互联网,我的世界里不 ...

  4. 贝塞尔曲线 WPF MVVM N阶实现 公式详解+源代码下载

    源代码下载 效果图: 本程序主要实现: N阶贝塞尔曲线(通用公式) 本程序主要使用技术 MVVM InterAction 事件绑定 动态添加Canvas的Item 第一部分公式: n=有效坐标点数量 ...

  5. Lucene TFIDFSimilarity评分公式详解

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zteny/article/details/ ...

  6. Vue生命周期钩子详解【个人解读】

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 论文解读《Momentum Contrast for Unsupervised Visual Representation Learning》俗称 MoCo

    论文题目:<Momentum Contrast for Unsupervised Visual Representation Learning> 论文作者: Kaiming He.Haoq ...

  8. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  9. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  10. LESS详解之编译LESS

      掌握LESS,必须先掌握LESS的编译.因为LESS是CSS预处理语言的一种,是一种动态语言.LESS可以运行在各种语言和环境中,包括浏览器端.服务器端等.就因为是一种CSS预处理语言,所以需要编 ...

随机推荐

  1. 表单快速启用城市地区功能 齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10

    比如分类系统\application\fenlei\config.php 修改这个文件,里边加入参数 'use_area'=>true, 那么会员中心与后台的,修改发布页面,都会自动加上城市地区 ...

  2. MySQL 主从复制一主两从环境配置实战

    MySQL 初始化 MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点.MySQL 默认采用异步复制方式;从节点可以复制主数据库中的所有数据库或者特定的数据库 ...

  3. python3使用mutagen进行音频元数据处理

    python版本:python 3.9   mutagen版本:1.46.0 mutagen是一个处理音频元数据的python模块,支持多种音频格式,是一个纯粹的python库,仅依赖python标准 ...

  4. 只能用于文本与图像数据?No!看TabTransformer对结构化业务数据精准建模

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 TensorFlow 实战系列:https://www.showmeai ...

  5. 支持JDK19虚拟线程的web框架,之二:完整开发一个支持虚拟线程的quarkus应用

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<支持JDK19虚拟线程的web ...

  6. Mybatis笔记02-----MyBatis的核心配置文件以及模糊查询的实现

    认识MyBatis核心配置文件mybatis-config.xml 这个文件名是随意可以起,但为了规范一般都命名为mybatis-config.xml:配置文件与MyBatis的行为和属性信息息息相关 ...

  7. 使用vite + vue3 + ant-design-vue + vue-router + vuex 创建一个管理应用

    使用vite + vue3 + ant-design-vue + vue-router + vuex 创建一个管理应用的记录 使用vite 创建项目 我创建的node 版本是 v16.17.1 使用N ...

  8. 数学建模经验分享会For浙商大管工学院

    数学建模介绍 数学建模与数学 数学建模和数学没有必然的关系 一个队里至少有一个数学较好 注重运筹学.统计学这两门课 数学建模做什么 时间:一般每年9月开学三周内 时长:3天3夜 目标:完成一份排版精美 ...

  9. 重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 不知不觉,这已经是<深入理解缓存 ...

  10. c++题目:切香肠

    c++题目:切香肠 题目 题目描述 有 n 条香肠,每条香肠的长度相等.我们打算将这些香肠切开后全部分给 k 名客人,且要求每名客人获得一样多的香肠.请问最少需要切几刀?注意一刀只能切断一条香肠,每个 ...