我在点云中有 N 个点(x_N,y_N,z_N)。点云形成球形物体的形状。我的问题是我的云中有一些点沿 z 轴明显突出(这是由于在扫描期间将针对象插入我的对象中)。我想删除这些点。
我采用的一种方法是找到我的云中一组点与下一组点相比的斜率变化。(例如,我取前 10 个点,计算斜率变化并将其与接下来 10 个点的斜率变化进行比较)。但这不是很好。有什么建议么?
任何帮助将不胜感激。对我的问题有任何困惑,请告诉我。
我在点云中有 N 个点(x_N,y_N,z_N)。点云形成球形物体的形状。我的问题是我的云中有一些点沿 z 轴明显突出(这是由于在扫描期间将针对象插入我的对象中)。我想删除这些点。
我采用的一种方法是找到我的云中一组点与下一组点相比的斜率变化。(例如,我取前 10 个点,计算斜率变化并将其与接下来 10 个点的斜率变化进行比较)。但这不是很好。有什么建议么?
任何帮助将不胜感激。对我的问题有任何困惑,请告诉我。
如果确定它是一个类似球体的物体并且点分布均匀(没有一侧的点比另一侧多),则取所有点的平均 X、Y 和 Z。这将center
在球体的旁边。如果该引脚不是很粗或很长(如果它与总数相比很少),您可以将其假设为center
.
然后,测量每个点到 的距离center
。脱掉那些距离高于平均距离的人。
如果您知道球体及其中心的半径,只需计算每个点到中心的距离并与半径进行比较。
我有一个观察和相应的建议:
首先,观察结果:您似乎正在为一次性案例构建自定义解决方案。当您扫描不同的对象(销再次伸出)时,这将不起作用。
现在,建议:使用类似 meshlab 的工具,您可以在其中加载点云、选择点并删除它们。
当然,如果您热衷于编写代码来解决此问题,那么这将无济于事。