我想创建一个将 2d 图像/视频转换为 3d 模型的应用程序。在研究它时,我发现了类似的应用程序,如 Trnio、Scann3D、Qlone 和其他一些应用程序(尽管它们中很少有人提供较差的 3D 模型输出)。我还发现了一项由微软研究部门推出的名为 mobileFusion 的技术,它显示了我对我的应用程序所希望的相同愿景,但这些应用程序并非如此。
创建 3D 建模应用程序是一项复杂的任务,要达到高标准需要大量学习。为了给您指明正确的方向,您很可能希望执行一种称为“运动结构” (SfM) 或同时定位和映射(SLAM) 的操作。
如果你想自己编程,如果你知道 C++ 或 Python,OpenCV是一个很好的起点。一个典型的管道包括:特征提取和匹配、相机姿态估计、三角测量,然后使用束调整进行优化。SfM 和 SLAM 的所有管道都遵循这些一般步骤(当然有例外)。尽管 Google 的 Ceres Solver 是一个出色的开源捆绑调整器,但所有这些步骤都可以在 OpenCV 中实现。SfM 通常进入密集匹配,在那里你会得到非常密集的点云,这有利于创建网格。一个免费的开源管道是OpenSfM。另一个很好的工具来源是OpenMVG,它拥有制作完整管道所需的所有工具。
SLAM 与 SfM 类似,但更多地关注实时应用,而不是绝对精度。这方面的应用更集中在机器人技术上,机器人想知道它相对于环境的位置,但并不那么关心绝对精度。顶级 SLAM 算法是ORB-SLAM和LSD-SLAM。两者都是开源的,您可以免费实施到您自己的软件中。
所以这真的取决于你想要什么......高精度的 SfM,实时的 SLAM。如果您想要一个好的 3D 模型,我建议您使用现有的算法,因为它们非常好。
我认为最好的商业软件... Agisoft Photoscan。如果你能做出像这一样好的东西,我会印象非常深刻。要回答您的问题,您需要哪些资源。在我看来,python/c++ 技能、良好的 google 能力和空闲时间正确阅读摄影测量和 SfM。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句