与这里常见的说法相反,有不同的方法来定义(和计算)点云的中心。您已经建议了第一个也是最常见的解决方案,我将not认为这有什么问题:
centroid = average(x), average(y), average(z)
这里的“问题”是,它会根据点的分布“扭曲”你的中心点。例如,如果您假设所有点都在立方体或其他几何形状内,但大多数点恰好位于上半部分,则您的中心点也会朝该方向移动。
作为替代方案,您可以在每个维度中使用数学中值(极值的平均值)来避免这种情况:
middle = middle(x), middle(y), middle(z)
当您不太关心点的数量,而是更关心全局边界框时,可以使用它,因为这就是所有这些 - 点周围的边界框的中心。
最后,您还可以使用median
(中间的元素)在每个维度:
median = median(x), median(y), median(z)
现在这会起到相反的作用middle
实际上可以帮助您忽略点云中的异常值并找到中心点based on您的积分分配。
找到“好的”中心点的更可靠的方法可能是忽略每个维度中顶部和底部的 10%,然后计算average
or median
。正如您所看到的,您可以通过不同的方式定义中心点。下面我将向您展示 2 2D 点云的示例,并考虑到这些建议。
深蓝色点是平均质心。
中位数以绿色显示。
中间显示为红色。
在第二张图中,您将准确地看到我之前所说的内容:绿点“更接近”点云最密集的部分,而红点距离它更远,考虑到点云的最极端边界点云。