我有两个由同一物体的深度相机拍摄的图像。我可以在对象上标记一些(比如说5个)相同的点,并获得相对于摄像机位置的坐标。是否有可能在第二个图像中找到相机位置,假设第一个图像的0,0,0基于这些坐标?
示例:
图片1
摄像头位置:0,0,0
摄像机角度(俯仰,滚动,航向):0,0,0
图片2
相机位置:?
摄像机角度:?
我假设根据点之间的距离以及点和相机之间的距离可以计算出来。是否可以使用简单的脚本完成,例如在python中,没有3d库?
非常感谢。
答案 0 :(得分:0)
如果您对相机一无所知,我认为两幅图像无法实现。除了绝对缩放模糊之外(如:如果你将场景中的所有内容缩小10倍,你的相机图像将是相同的......),显然存在深度缩放歧义,没有多少匹配对可以固定。您可以通过在3d点集之间提供一定数量的绝对距离值,或通过提供必要的额外长度比例的其他方法来解决此歧义。我在这个主题上找到了paper,虽然不清楚它解决的问题是否正是你正在寻找的问题。
如果您首先通过测量相机的几何成像特征校准相机,您可以更轻松地计算两张照片的相对相机位置(虽然没有其他信息,您仍然会遇到绝对缩放问题!)。如果我没记错的话,你需要至少3分,但是4的数学要简单得多。关于这个主题的一本书(在线的样本章节)是Multiple View Geometry in Computer Vision;另一个是The Geometry of Multiple Images。
在OpenCV中有一个用于执行此类操作的库。然而,它没有完全正如你正在寻找的功能 - 弄清楚如何使用它确实需要对它背后的数学有所了解,所以你需要阅读一本关于这个主题的书。