两个SLAM相关小工具:深度图快速补全,YuPnP方法

两个SLAM相关小工具:深度图快速补全,YuPnP方法

上次flag直接翻车,不过非战之罪吧,唉。
这次分享两个SLAM小工具,分别是1. 基于CPU的深度图快速补全技术;2. 一种快速准确的PnP方法。下面是两个工具的介绍,以及我对他们的复现(?,勉强算是?)

一、深度图快速补全方法

目前深度补全技术开始转向深度学习方法,注重精度而非速度,但是实话实话,一般深度补全或者深度估计都是某项大工程的预处理,如果后面工程也是深度网络,并且深度估计/深度补全网络能与后续工作共用一个backbone还好,但很多情况下不可能给一个预处理步骤留有太多的计算资源和计算时间,因此,基于CPU的快速深度补全就非常有必要。
为大家介绍的这篇文章是:In Defense of Classical Image Processing: Fast Depth Completion on the CPU。知乎有对这篇文章的翻译,大家有兴趣可以看看,总体来说通过设计不同大小的滤波器来实现的。
这篇文章原始计划是针对雷达的,知乎上有人用DSO进行了测试,效果并不是很好,我这边也针对RGBD进行了测试,效果还行,至少能提供一个相对精准初值,后续就交给优化吧。此外值得注意的是,该文章滤波仅仅考虑了深度图,如果结合RGBD的彩色图像进行类似三边联合滤波可能效果更好。
该文章是有代码开源的,不过是python版本,这里我写了一个C++版本的,分享给大家,但是我写的版本并不完全。作者提供了多种模式,因为实际工程需要,我只是实现了快速方案的,剩下的,emmm,再说吧。
c++版本代码:https://github.com/ChenJiahao031008/ip_basic_c

二、YuPnP:一种快速且准确的PnP方法

不知道大家有没有接触过kneip教授的KneipPnP方法?PnP任务是指已知世界坐标下一组3D坐标点,和相机坐标系下的相对应的2D点,求解其中的变换矩阵。高翔大佬在十四讲中提供了DLT(直接变换法)使用SVD分解后再提供约束的方法精度较低,其原因在于求解和约束分离。因此各位大佬各显神通,通过各种几何方法求解一个四次方程,得到最终结果。kneip算法是比较经典,也是效果比较好的一种方法,并且算法也已经开源(虽然不知为何原始开源代码不见了,但是各类重复性工作有很多)。
YuPnP是最近的一篇南航的文章:Solving the perspective-three-point problem with linear combinations An accurate and efficient method据文章说效果比kneip要好不少(恕我浅薄,比较文章中只用过kneip的),由于代码没开源,我就自己复现了一个,分享给大家。我自己实测的结果emmm,算了,大家可以用自己数据测测效果怎么样,欢迎大家留言,另外代码也有可能有问题,欢迎大家指正。
复现代码:https://github.com/ChenJiahao031008/SLAM-Demo
在src/PoseSolver.cc中,YuPnP和Kneip算法均有实现。

你可能感兴趣的:(SLAM,slam,深度补全,pnp,vslam)