2016.9.20 update:添加论文中部分公式推导。
2016.9.9 update:完善部分代码
2016.9.7:初始博客

单目摄像头的Semi Dense 听起来很美,比如有人想用这个结合机器人导航,有人用它和三维物体识别相结合,用来同时提升定位和识别率。最近对单目semi dense也有了一些想法,想先按着ORB_SLAM作者论文实现下semi dense,练练手:《Probabilistic Semi Dense Mapping from Highly Accurate Feature-Based Method Monocular SLAM》. 之前,武汉大学王老师实验室找到了github 上Loeing的code,但是bug真心多: epipolar search有问题,depth 计算有问题,程序流程有问题等等。

在他的基础上,我接着做了完善,现在程序已经完成到论文III-D部分了,论文III-E部分为关键帧之间深度的checking and smoothing还没加入到整个系统.
目前的效果如下:

还要完善的部分:
1.把颜色添加到显示(这个比较容易)
2.论文III-E添加到系统里,这部分很必要: 目前重建出的outlier还很多,需要帧间互检。
3.整个semi dense的数据结构最好修改下。因为要不断遍历已经计算好depth的像素,现在代码用向量结构体保存depth map, 发现这种形式特慢,直接借用cv::Mat数据结构快了好多,如depth保存到cv::mat, depth的标准差depth_sigma也保存到Mat,比用结构体struct{float depth; float sigma}d, 向量结构体vector< d >保存的形式快很多 。

代码已上传到my github: semi dense code,直接改的ORB_SLAM2,程序的运行方式是ORB_SLAM2的运行方式,没作改动。不过我把字典的加载方式改成了bin,不再是那个比较慢的txt的方式。切换到examples/monocular文件夹下,执行:

./mono_semidense ../../Vocabulary/ORBvoc.bin TUM2.yaml /home/hyj/datasets/freiburg2_desk

欢迎大家来一起修改和完善它, 最近苦逼的项目又多了起来,有点力不从心啊啊啊。

———————————————-2016.09.09更新————————————————————-
1.颜色附着。(完成)
2.论文III-D部分对那些极线匹配失败但是梯度大的像素点用周围成功点的平均深度进行赋值。(已完成)
3. III-E 关键帧之间的检测去噪点已完成,对深度点优化没完成。
4. 目前程序里定义了宏定义InterKeyFrameChecking,用来确定使不使用论文III-E部分。
目前效果如图:

从这个角度看上去不错,其实整个系统跑完还是很渣。极线匹配有很大问题,同时,多帧之间的点云重影太厉害,不知道位姿换算是不是出问题了,有待进一步代码检查。

———————————————-2016.09.20更新————————————————————-
论文中极线搜索部分,作者构造了极线匹配的损失函数公式(3):

通过不断沿着极线进行单位步进搜索可以找到一个初始的像素u0u_0,使得(3)式最小。注意,由于搜索的时候是单位步进,这时候找到的u0u_0还不是亚像素级精度,只能说u0u_0非常靠近真值了。要求最小值,就需要对(3)式求导令其导数等于0。求导得(4)式:

将u0u_0代入4式,由于不是最优值,此时的导数还不等于0。 那么我们假设u0+δuu_0 + \delta u就是真值,此时偏导数等于0,就能求出u∗u^*. 计算公式如下:



到这里就能就能得到论文中的公式(6)了。
公式7是计算u∗u^*的协方差,这个由误差传播理论就很容易计算了。因为u∗u^*是由最小化像素残差和梯度残差得到的,所以他的协方差计算是由这两者的协方差传播过来的:

于是我们就得到了公式7.

论文里面其他公式都不难,如果有问题,欢迎讨论。

(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)

ORB_SLAM : semi dense code相关推荐

  1. ORB_SLAM系列总结

    1.最早的特征点法,并把定位与跟踪分为两个线程是PTAM(Parallel Tracking and Mapping for Small AR Workspaces) 可以说是特征点法SLAM的起源之 ...

  2. 《成为一名机器学习工程师》_如何在2020年成为机器学习工程师

    <成为一名机器学习工程师> 机器学习工程 (Machine Learning Engineering) The title of "Machine Learning Engine ...

  3. ajax提示弹出dev,windows git pull或者push代码时弹出安全框解决办法

    fMRI: spatial smoothing Source: Brain voyager support Theoretical Background Spatial smoothing means ...

  4. Using Memory Efficiently(Pro Android Apps Performance Optimization)

    Using Maoemory Efficiently  高效使用内存 4.1 A Word On Memory 4.2 Data Types 4.2.1 Comparing Values 值的比较 4 ...

  5. 比程序员更好的职业_立即成为更好的程序员的20条技巧

    比程序员更好的职业 目录: (Table of contents:) Think Before You Code 编码前先思考 Understand the Business Behind Every ...

  6. New data structures and algorithms for the efficient management of large spatial datasets

    摘要 在本论文中,我们研究多维网格的高效表示,提出新的紧凑数据结构来存储和查询不同应用程序域中的网格.我们为二进制网格和整数网格的表示提出几个静态和动态数据结构,并研究在地理信息系统,RDF数据库等中 ...

  7. vue 项目启动时,警告“No parser and no filepath given”如何解决?

    在启动VUE项目的时候经常会遇到以下的错误: No parser and no filepath given, using 'babel' the parser now but this will t ...

  8. 直接上手!不容错过的Visual Studio Code十大扩展组件

    作者 | David Neal 译者 | 谭开朗,责编 | 屠敏 转载自CSDN(ID:CSDNnews) 各大平台与各种语言的开发人员都在使用Visual Studio Code,我对此感到惊讶.S ...

  9. 人脸对齐--Dense Face Alignment

    Dense Face Alignment ICCVW2017 http://cvlab.cse.msu.edu/project-pifa.html MatConvNet code model can ...

最新文章

  1. dev 点击子控件触发panelcontrol事件_LINUX IIO子系统分析之二 IIO子系统数据结构分析...
  2. BigDecimal 比较大小需要注意的事项
  3. MFC listctrl显示缩略图时索引问题和滚动条问题
  4. JS高级部分(个人认为)
  5. [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及
  6. git 上传代码到码云
  7. opencv摄像头速度慢_c++ - 从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。 - SO中文参考 - www.soinside.com...
  8. UIAlert的使用
  9. MATLAB 绘制点的地理空间分布,并用点的颜色或大小代表数值
  10. 语音转文字 mp3 text
  11. IAR报错:FlashK60Fxxx128K.board丢失 K60断电丢程序
  12. 新零售mysql设计 订单表 订单详情表
  13. 3t服务器装linux系统如何分区,Linux 分区、格式化3T大容量存储分区
  14. PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法
  15. RK3399教程:linux clk使用
  16. 文件上传(模板导出、批量导入)
  17. Rewired.GG进行欧洲迄今规模最大的电竞团队投资
  18. 售价200万的FF91都回国了,贾跃亭回国还会远吗
  19. [Java 一道简单的排序题]
  20. 随机漫步模拟及概率分析

热门文章

  1. efinance获取基金、股票、债券、期货K线数据
  2. python filter函数 字符串_Python实现filter函数实现字符串切分
  3. golang 类型说明
  4. java 时间戳的获取方式
  5. 使用Beautifulsoup去除特定标签
  6. leetcode @python 120. Triangle
  7. 获取存储过程返回值及代码中获取返回值(转)
  8. java 蓝桥杯算法提高 字符串匹配(题解)
  9. 数字猜谜游戏python_Python Tkinter教程系列02:数字猜谜游戏
  10. 双向链表示意图_图文详解双向链表原理