首页 文章

分割对象的质心不在中心

提问于
浏览
0

我从PCL中的点 Cloud 分割对象,并拥有对象的点 Cloud . 我使用PCL方法以这种方式计算分割对象的质心:

pcl :: PointXYZRGB centroidDS; pcl :: computeCentroid(* cleaning,centroidDS);

当我通过覆盖对象可视化质心时,它总是位于对象的边缘 . 我使用质心作为一个特征,如果有人知道如何计算它会很好 . 分段对象的质心应该或多或少地位于对象的中心 .

1 回答

  • 1

    当然你在某个地方没有多个相同的点?这将使质心远离看似点 Cloud 的逻辑中心 . 如果你认为pcl函数做错了,那就试试吧

    float x = y = z = 0.0;
    for (int i = 0; i < cleaned->points.size(); i++){
        x += cleaned->points[i].x;
        y += cleaned->points[i].y;
        z += cleaned->points[i].z;
    }
    x = x / cleaned->points.size();
    y = y / cleaned->points.size();
    z = z / cleaned->points.size();
    

    这应该与质心相同 . 如果这是您的问题,您可以尝试删除多个点,或者可能对点 Cloud 进行体素网格过滤,这样您就可以获得均匀分布的 Cloud . http://pointclouds.org/documentation/tutorials/voxel_grid.php

相关问题