1

我有一个深度图像的点云,它是用相机在水平上方 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 旋转矩阵呢?

4

2 回答 2

4
|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|

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

于 2012-12-14T15:18:09.687 回答
3

4x4 矩阵是以下形式的变换矩阵

| R    | t | 
|--------- |
|0 0 0 | 1 |

R您的 3x3 旋转矩阵在哪里,并且是t3x1 平移向量。在你的情况下t = [0,0,0]'

欲了解更多信息:http ://en.wikipedia.org/wiki/Transformation_matrix

于 2012-12-14T15:39:28.910 回答