首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何应用基本矩阵将3D点从相机1的世界坐标转换到相机2的世界坐标

如何应用基本矩阵将3D点从相机1的世界坐标转换到相机2的世界坐标
EN

Stack Overflow用户
提问于 2021-06-30 17:33:05
回答 1查看 143关注 0票数 0

我使用OpenCV的cv2立体校准校准了一对相机,其中一个是飞行时间相机。因此,我有本征校准参数和基本/基本矩阵。

现在,我想将一个点从ToF相机投影到2D相机。

为了在ToF摄像头中将图像转换为世界坐标,我这样做了:

代码语言:javascript
复制
p = [(15, 15, 1)]
z = depth[p[0][0], p[0][1]]  # measured ToF depth for this single point

# from ToF image coordinates (including ToF depth!) to ToF world coordinates
invR_x_invM_x_uv1 = R_inv * cameraMatrix_inv_3 * p[0]
invR_x_tvec = R_inv * T
wcPoint = (z + invR_x_tvec[2]) / invR_x_invM_x_uv1[2] * invR_x_invM_x_uv1 - invR_x_tvec
wcPoint = wcPoint[:, -1]

所以我得到了世界坐标中的点。

我不明白的是,(1)如何将这个点转换到第二个相机的世界坐标系,然后(2)如何将这个点投影到第二个相机的图像坐标。谁能给我指出一个特别针对(1)的OpenCV函数?

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 16:26:37

首先,你应该学习线性代数。你不能对矩阵进行元素乘法。你必须使用点积。在Python语言中,两个矩阵A和B的点积要么写成A@B,要么写成A.dot(B)

如果你有一个立体校准和两个固定的相机,你也应该有这些相机的外部参数。这些相机和世界坐标系(只有一个)之间的平移和旋转(可能位于提到的相机之一的位置)使您能够转换3D数据,以获得所选坐标系中的坐标。我强烈建议你阅读Hartley/Zisserman中关于相机投影的基础知识,Multiple View Geometry,在线免费提供。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68192167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档