在点云中选择特定区域
Selecting specific areas in a pointcloud
我有这个物体的点云
我想测量棋子所在的平面与标记为红色和蓝色的点之间的距离。我已经有了平面方程,允许我删除对应于平面的点并计算它与点之间的距离。但是我不知道如何select红点和蓝点,有什么方法可以帮助解决这个问题吗?
- 如果您的云具有 高质量法线 ,您可以尝试利用 sub-parts 使用之间的不连续性
pcl::RegionGrowing具有严格的平滑度标准(如果点法线之间的偏差小于平滑度阈值则建议它们在同一簇中)。
- 如果您知道所有sub-parts的大小,您可以计算一个定向的bounding-box,然后(粗略地)cut-out两个圆形部分。
- 如果您不知道尺寸,那么在计算出一个方向后 bounding-box(并旋转以使 x 成为长轴 - 例如),您将 x 值装箱,并计算每个x,min/max y 值。这应该让您了解它的形状。
无论哪种方式,一旦你有了 sub-part,你就可以计算它的质心,然后计算每个点到中心的距离。这将为您提供半径分布。
- 如果你有更好的sub-parts(来自上面的方法#1),你可以通过考虑平均和最小半径来确定哪个是什么。
- 如果你有一个粗略的sub-part(来自上面的方法#2/#3),你应该根据半径将点分割为“红色”/“蓝色”。您可能必须反复执行此操作(每次都优化质心)。
我有这个物体的点云
我想测量棋子所在的平面与标记为红色和蓝色的点之间的距离。我已经有了平面方程,允许我删除对应于平面的点并计算它与点之间的距离。但是我不知道如何select红点和蓝点,有什么方法可以帮助解决这个问题吗?
- 如果您的云具有 高质量法线 ,您可以尝试利用 sub-parts 使用之间的不连续性 pcl::RegionGrowing具有严格的平滑度标准(如果点法线之间的偏差小于平滑度阈值则建议它们在同一簇中)。
- 如果您知道所有sub-parts的大小,您可以计算一个定向的bounding-box,然后(粗略地)cut-out两个圆形部分。
- 如果您不知道尺寸,那么在计算出一个方向后 bounding-box(并旋转以使 x 成为长轴 - 例如),您将 x 值装箱,并计算每个x,min/max y 值。这应该让您了解它的形状。
无论哪种方式,一旦你有了 sub-part,你就可以计算它的质心,然后计算每个点到中心的距离。这将为您提供半径分布。
- 如果你有更好的sub-parts(来自上面的方法#1),你可以通过考虑平均和最小半径来确定哪个是什么。
- 如果你有一个粗略的sub-part(来自上面的方法#2/#3),你应该根据半径将点分割为“红色”/“蓝色”。您可能必须反复执行此操作(每次都优化质心)。