如何从点云或3d对象分析/计算人体部位的周长?

时间:2019-06-18 10:37:05

标签: python image-processing computer-vision point-cloud-library

我正在使用win10,python和c#。我想通过使用点云或3D扫描(如.stl .obj .ply)来计算人体部分(腹部,二头肌等)的周长。现在,我可以使用kinect v2获得人体的点云。我有人体点云,以.stl .obj .ply格式扫描3d人体。

我需要一些想法和信息。我不知道如何分析自己拥有的东西以及如何计算自己想要的东西。

在这里,我找到了一个我想做的事的例子,但它并不需要像这样完全稳定,它可以用于学校作业。也许您可以给我一些有关如何实现目标的想法。谢谢您的帮助。

https://www.youtube.com/watch?time_continue=48&v=jOvaZGloNRo

我使用kinect v2获得3d扫描对象,并使用PCL将其转换为点云。

1 个答案:

答案 0 :(得分:1)

我不知道将PCL与Python或C#一起使用。通常,您正在执行以下步骤:

  1. 过滤点到感兴趣的区域
  2. 分割形状
  3. 提取参数

如果您仅对Python感兴趣,那么OpenCV可能是最佳选择。您还可以在C ++中开发核心逻辑并将其包装为Python或C#。 C ++还具有一些不错的UI库(Qt,nanogui),请参见以下详细信息以使用PCL实现目标

过滤

CropBoxPassThrough可以用于此目的。假设正确选择了帧,将得到与图像所示相似的结果。如果没有,则点云很容易transformed

分割形状

假设您想要一个平均周长,您可能需要尝试使用Circle 2D,Circle 3D和Cylinder模型。有关用法和API的更多详细信息,请参见here。选择的方法可以是简单的SAC(样本共识),如RANSAC(随机SAC),也可以是高级方法,例如LMEDS(最小二乘方)或MLESAC(最大似然估计SAC)

提取参数

所有模型都有一个半径字段,可使用标准公式(2 * pi * r)查找半径

免责声明:请注意,形状为圆形而不是椭圆形,并且圆柱体为直角圆柱体。因此,如果测量的对象(手臂或二头肌)不是圆形的,则在极端情况下计算得出的值可能不会接近地面真实性。