如何围绕轴旋转点云?

新手上路,请多包涵

我有一个深度图像的点云,它是用相机在水平上方 30 度(在 z 轴上旋转 30 度)拍摄的。我想将所有点转换回它们的位置,就好像相机处于 0 度一样,我相信我可以使用以下旋转矩阵来做到这一点:

 |cos(30) -sin(30) 0|
|sin(30)  cos30   0|
|0        0       1|

但是,当查看转换点云的 pcl 方法时,我发现了这一点:

 pcl::transformPointCloud (const PointCloud< PointT > &cloud_in,
PointCloud< PointT > &cloud_out, const Eigen::Matrix< Scalar, 4, 4 > &transform)

但是为什么它是一个 4x4 矩阵而不是上面的 3x3 旋转矩阵呢?

原文由 Aly 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 911
1 个回答
|x||1 0 0 a| =  |x+a|
|y||0 1 0 b|    |y+b|
|z||0 0 1 c|    |z+c|
|1||0 0 0 1|    |1  |

在这个例子中,我们将点 (x,y,z) 移动到点 (x+a, y+b, z+c)。这只能使用 4 x 4 矩阵来完成。


 |cos(30) -sin(30) 0 0| multiply The Matrix above.
|sin(30)  cos30   0 0|
|0        0       1 0|
|0        0       0 1|

这将为您提供一个点的旋转和平移。

原文由 andre 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题