【问题标题】:Find a camera position by comparing points in 3d space通过比较 3d 空间中的点来查找相机位置
【发布时间】:2012-09-17 12:51:46
【问题描述】:

我有两张由同一物体的深度相机拍摄的图像。我可以在物体上标记一些(比如 5 个)相同的点,并获取它们相对于相机位置的坐标。是否可以根据这些坐标假设第一张图像为 0,0,0 在第二张图像中找到相机位置?

例子:

图片 1
相机位置:0,0,0
摄像机角度(俯仰、滚动、航向):0,0,0

点 1:21.3、33.2、44.1
点2:28.3、39.2、41.5
点3:23.4、31.1、53.4

图片 2
相机位置:?
拍摄角度:?

点 1:23.4、31.2、44.7
...

我假设根据点之间的距离以及点与相机之间的距离,可以进行计算。可以用一个简单的脚本来完成吗,例如在 python 中,并且没有 3d 库?

非常感谢。

【问题讨论】:

  • 是的,可以做到,而且非常简单。你需要三分。你对向量代数感到满意吗?点积之类的东西?
  • 我知道它们是什么。我想如果我使用 python,我可以使用 numpy。您能否提供更多详细信息或链接?谢谢。
  • 你知道什么是向量基吗?这些点的坐标是笛卡尔坐标吗?

标签: math 3d geometry


【解决方案1】:

如果您对相机一无所知,我认为两张图像是不可能的。除了绝对缩放模糊性(例如:如果将场景中的所有内容缩小 10 倍,您的相机图像将是相同的......),显然存在深度缩放模糊性,没有匹配对的数量可以使固定。您可以通过在 3d 点集之间提供一定数量的绝对距离值,或通过提供必要的附加长度比例的其他方法来解决这种歧义。我在该主题上找到了paper,但尚不清楚它解决的问题是否正是您要寻找的问题。

如果您首先校准相机通过测量其几何成像特征,您可以更轻松地计算两张照片的相对相机位置(虽然没有额外的信息,但您仍然会遇到绝对缩放问题!)。如果我没记错的话,你至少需要 3 分,但是 4 分的数学要简单得多。关于该主题的一本书(在线示例章节)是Multiple View Geometry in Computer Vision;另一个是The Geometry of Multiple Images

OpenCV 中有一个库可以做这种事情。但是,它并没有一个功能可以完全满足您的需求——弄清楚如何使用它确实需要对它背后的数学有一定的了解,因此您需要阅读有关该主题的书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多