检测点云中的刚体运动

计算科学 算法 模拟
2021-12-22 09:06:23

今天在我们的小组会议上突然出现了这个问题。假设你有一个二维的 N 个点云,每个点都与一个速度向量相关联。这些点与 2D 界面上的粒子相关联,并且通过简单的粒子跟踪获得速度。

我们正在研究的界面不是“干净的”,因为在液体界面上散布着固体“岛”。结果,一些颗粒实际上位于所述岛上,而其余颗粒则散布在液体界面上。

这里的问题是:给定速度信息,你能确定和隔离固体岛上的粒子吗?我进行了快速搜索,但找不到任何有用的东西,但提出了一个基于计算所有粒子对之间的相对角速度的简单算法。如果粒子属于同一个刚体,则可以写成: 其中是相对位置。对于属于同一刚体的任何粒子pipj

vj=vi+Ωijk^×rji,
rji=rjripkΩik=Ωjk=Ωij. 最后,我通过生成矩阵条目的直方图并查看峰值来检测岛屿。

这是一个组成的示例,考虑了一堆随机点。的两个不同刚体黑色粒子被假定为布朗粒子并且具有随机速度。如您所见,直方图在 5 和 10 处检测到两个峰值,但也在 0 附近检测到虚构的峰值。Ωred=5Ωblue=10

随机样本点 矩阵 $\Omega_{ij}$ 的直方图

你能想出一个更好的算法或给我一些参考吗?

1个回答

你的算法是有道理的,但是如果你有很多粒子,因为你进行成对比较,所以会太慢。但是还有其他方法可以查看您的数据。让我们想象一下,如果你有只移动但不旋转的岛屿。然后想象每个粒子是 4d 空间中的一个点:它的两个空间坐标加上它的速度矢量的两个分量。实际上,你会发现岛屿是点簇,它们不仅位置很近,而且速度也很接近——换句话说,你需要在 4d 空间中找到粒子簇统计学中有一个完整的领域来处理这个问题——聚类分析。

如果您允许岛屿也旋转,情况会稍微复杂一些。在这种情况下,岛屿上的粒子由 7 维向量表征:两个位置坐标、岛屿线速度的两个分量、岛屿旋转中心的两个分量及其角速度。问题是,如果你只分析两张随后的图片,你得到的只是每个粒子的四个信息:它的位置和速度。换句话说,每个粒子在 7 维空间内占据一个 3 维流形。识别岛屿然后归结为找到多个这些流形聚集的 7 维空间的位置。

(如果你可以分析超过 2 帧,你也许可以确定整个粒子运动的弧线,在这种情况下,如果弧线不是直的,你会得到超过 4 条数据,因为那时只有某些旋转中心和角度速度与弧兼容。然后您应该能够减少流形的维数,这也应该使查找集群更容易。)