【问题标题】:How to transform 3d point from camera to world coordinates如何将 3d 点从相机转换为世界坐标
【发布时间】:2020-02-24 17:04:32
【问题描述】:

感谢您阅读此问题!

我们有一个在这个可视化中看到的设置。有 4 个相机,它们使用内在(相机矩阵、失真系数)和外在(旋转、平移、基本和基本矩阵)参数进行校准。

白色平面的左上角是世界坐标的原点。正 x 向右,正 y 向下,正 z 朝向物体。 红色相机之一(白色平面上的第二个)是主相机,另外 3 个是从相机(用于校准目的)

我们希望能够使用相机根据世界坐标(白色平面)来定位和定位场景中的对象。 到目前为止,我们能够在相机(主相机)坐标中定位并获得物体的 3d 位置。 问题是,从相机坐标转换到世界坐标的最有效/最简单的方法是什么? 找到投影的白色平面的法线会有帮助吗? (例如我们可以做How to project a point onto a plane in 3D?) 或者如果相对于白色平面的 3d 位置已知,我们可以使用 OpenCV api 像 cv2.estimateAffine3D 吗?

谢谢!

【问题讨论】:

  • 我不明白缺少什么。您在主摄像头框架中拥有对象的位置,并且在世界框架中拥有主摄像头的位置。
  • 摄像机的方向/旋转与白屏平面不同。有影响吗?我不确定简单的三角函数是否足以进行坐标变换。
  • 你说你有所有相机的外部参数(旋转和平移),包括主相机。更不用说三角函数了,两个坐标系之间的线性变换就足够了。
  • 不确定我是否遵循您的推理,您如何获得将相机坐标中的 (x,y,z) 转换为屏幕的 (x',y',z') 的线性变换矩阵平面坐标?所有相机的旋转和平移都相对于主相机,并且主相机的方向是只有部分白屏可见....
  • 当你说你有外部参数时,我认为外部参数是相对于世界框架的。所以它们是相对于主摄像头框架和主摄像头的旋转/平移为 0?

标签: opencv matrix computer-vision linear-algebra


【解决方案1】:

感谢 unlut 的帮助!

我能够使用以下每种方法进行转换:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多