【发布时间】: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