你想要的是直接用单目相机推断深度图。
你可以参考我的回答here
https://stackoverflow.com/a/64687551/11530294
通常,我们需要从世界不同位置进行光度测量,以形成对世界的几何理解(也称为深度图)。对于单个图像,无法测量几何,但可以通过先前的理解推断深度。
一种方法是使用基于深度学习的方法来直接推断深度。通常,基于深度学习的方法都是基于python的,所以如果你只熟悉python,那么这就是你应该选择的方法。如果图像足够小,我认为 实时 性能是可能的。使用 CAFFE、TF、TORCH 等的此类工作有很多。您可以在 git hub 上搜索更多选项。我这里贴的是我最近用的那个
参考:
戈达尔、克莱门特等人。 “深入研究自我监督的单目深度估计。” IEEE 计算机视觉国际会议论文集。 2019.
源码:https://github.com/nianticlabs/monodepth2
另一种方式是使用一个大的 FOV 视频来实现一个基于相机的 SLAM。这个有很多限制,比如需要好的特征、大 FOV、慢动作等。你可以找到很多这样的工作,比如 DTAM、LSDSLAM、DSO 等。还有一些来自 HKUST 或 ETH 的其他软件包可以做到给定位置的映射(例如,如果您有 GPS/指南针),一些著名的名称是 REMODE+SVO open_quadtree_mapping 等。
基于单个摄像头的 SLAM 的一个典型示例是 LSDSLAM。这是一个实时 SLAM。
这个是基于 ROS-C++ 实现的,我记得他们确实发布了深度图像。并且可以编写python节点直接订阅深度或者全局优化点云,投影到任意视角的深度图上。
参考:Engel、Jakob、Thomas Schöps 和 Daniel Cremers。 “LSD-SLAM:大规模直接单目 SLAM。”欧洲计算机视觉会议。 Springer, Cham,2014 年。
源代码:https://github.com/tum-vision/lsd_slam