【发布时间】:2013-11-16 14:03:39
【问题描述】:
我正在使用 OpenCV 从多个图像的运动中构建结构。我有 8 张图像,并且为每对图像(img1&2、img2&3、img3&4 等)生成了 3D 点云。我知道每个单独的 3D 点云都是正确的,因为它们在 VTK / OpenGL 中显示时看起来不错。
我的相机经过(粗略)校准,焦距使用 EXIF 元数据,图像中心作为主要点。
如何将这些 3D 点云中的每一个转换为最左侧相机的 3D 坐标系?
【问题讨论】:
我正在使用 OpenCV 从多个图像的运动中构建结构。我有 8 张图像,并且为每对图像(img1&2、img2&3、img3&4 等)生成了 3D 点云。我知道每个单独的 3D 点云都是正确的,因为它们在 VTK / OpenGL 中显示时看起来不错。
我的相机经过(粗略)校准,焦距使用 EXIF 元数据,图像中心作为主要点。
如何将这些 3D 点云中的每一个转换为最左侧相机的 3D 坐标系?
【问题讨论】:
我假设您的点云以 PCL 兼容格式存储;那么你可以简单地使用pcl::transformPointCloud.. 如果没有,那么你将需要根据transforms.hpp.. 中给出的源代码实现你自己的。
HTH
编辑:
请参阅this presentation 中的幻灯片 16-19。转换模型是,
P_c = R_c (P_w - C)
这是我之前链接中给出的转换的数学形式。
【讨论】: