我目前正在尝试使用眼镜 Vuzix star 1200 XLD 和 c++ 构建桌面 AR 应用程序。我对 AR 和著名 SDK 中使用的算法进行了大量研究,发现视觉 SLAM 是一种常用的算法。
因此,如果您使用它,我想得到一些反馈,我愿意接受有关用于跟踪和匹配的其他 AR 算法的任何建议。
非常感谢!
我目前正在尝试使用眼镜 Vuzix star 1200 XLD 和 c++ 构建桌面 AR 应用程序。我对 AR 和著名 SDK 中使用的算法进行了大量研究,发现视觉 SLAM 是一种常用的算法。
因此,如果您使用它,我想得到一些反馈,我愿意接受有关用于跟踪和匹配的其他 AR 算法的任何建议。
非常感谢!
一年后...
SLAM 不是一种算法,它是一种方法,一种实现目标的分解步骤。每一步都让您从众多合适的算法中选择一种,每一种算法都具有不同的特性,如性能、准确性等。
SLAM可以是视觉单目SLAM(monoSLAM),是SLAM的一个专门分支,与视觉里程计相关。
您可以从特征检测器和描述符提取器算法开始,例如 FAST & Brief。更多的算法同时做这两件事,比如 ORB 和 AKAZE。
因此,您从图像、帧中提取和描述点云。
然后,您使用匹配器(例如强力汉明距离匹配器)匹配来自两个(假设是连续的)帧的点,获得类似速度向量的东西。
https://www.youtube.com/watch?v=G8XAHLJR8A4
然后你应用一些算法,比如 PnP 求解器,来获得解释相对相机运动的旋转平移矩阵。现在,每个特征都有一个 3D 位置向量。
您从检测到的特征中选择地标,开始构建 3d 点云底图,每个点都有其误差分布。然后你应用一些捆绑调整,比如 sba。
这是低层次的起点。你会想要构建一个带有纹理的 3D 世界,你会想要准确地关闭路径,你会想要对移动部件(如人、车辆)的鲁棒性......
所有你梦寐以求的,都在这里等待你自己开发:)