如何构造平移矩阵将PointCloud移动至坐标系中心?
点云平移至坐标系中心的实现方法
你提到的构造平移矩阵做坐标变换的思路是完全可行的,核心是先确定点云的中心位置,再反向偏移到原点即可,点的颜色属性不需要参与变换,全程保留原值就行。
具体操作流程
- 计算点云位置质心
统计所有点的位置坐标,分别计算x、y、z三个维度的算术平均值,得到质心坐标(cx, cy, cz),计算逻辑如下:
注意:仅对位置属性做统计,r/g/b颜色值不需要参与计算,平移操作不会改变点的颜色。N = 点云总点数 cx = 所有点x坐标之和 / N cy = 所有点y坐标之和 / N cz = 所有点z坐标之和 / N - 构造平移变换矩阵
3D空间的平移变换需要基于齐次坐标实现,先把每个点的三维坐标扩展为4维齐次格式(x, y, z, 1),对应的4x4平移矩阵T参数如下:
矩阵中偏移项取负的质心值,作用是将所有点沿质心到原点的反方向移动,刚好让点云整体中心对齐坐标系原点。[1 0 0 -cx] [0 1 0 -cy] [0 0 1 -cz] [0 0 0 1 ] - 完成坐标变换
逐点将齐次坐标与平移矩阵做乘法,得到的结果前三位就是中心化后的新坐标,原有r/g/b属性直接复用即可。
简化实现方案
如果不需要兼容通用的矩阵变换管线,可以跳过矩阵构造步骤,直接对每个点的坐标做减法运算,结果和矩阵乘法完全一致,运算效率更高:
x_new = x_old - cx y_new = y_old - cy z_new = z_old - cz
特殊情况处理
如果点云存在大量远离主体的离群噪声点,直接用全局均值计算质心可能会出现中心偏移的问题,这种场景下可以先做离群点滤除,或者用三个维度的坐标中位数代替均值计算中心位置,鲁棒性更好。
内容的提问来源于stack exchange,提问作者Destosed
相关产品推荐
相关产品推荐

