你好!
我已经准备好了一个Kinect传感器的点云。假设我有一张沙发和桌子的有序点云。我想要获得两个点云:沙发和桌子。
我正在寻找一些算法以获取连接组件。是否有人有伪代码或论文?或者可能是一些代码(Matlab)。
我目前的想法:我可以使用2D信息来获取相邻点的像素。接下来,我可以检查到相邻像素之间的欧几里得距离。如果距离低于阈值,则该像素属于同一簇。...
谢谢
你好!
我已经准备好了一个Kinect传感器的点云。假设我有一张沙发和桌子的有序点云。我想要获得两个点云:沙发和桌子。
我正在寻找一些算法以获取连接组件。是否有人有伪代码或论文?或者可能是一些代码(Matlab)。
我目前的想法:我可以使用2D信息来获取相邻点的像素。接下来,我可以检查到相邻像素之间的欧几里得距离。如果距离低于阈值,则该像素属于同一簇。...
谢谢
正如@Amro所指出的那样,DBSCAN是你应该学习的算法。这是一种基于“密度连接”组件的聚类算法。
另外,请注意GDBSCAN变体(广义DBSCAN)。您不仅限于原始距离(如欧几里德距离),而且可以将“邻域”定义得像您想要的那样复杂。
Matlab可能不是最好的选择。为了使DBSCAN真正快速,您需要支持索引加速。最近的scikit-learn(确切地说是0.14)刚刚获得了DBSCAN的基本索引加速,而ELKI已经有了多年的索引加速。 ELKI似乎更“灵活”,因为它具有GDBSCAN,并且具有易于使用自定义距离函数扩展的索引结构。 sklearn可能只加速了一些内置距离。
您可以使用CloudCompare软件中的“工具>分割>标记连接组件”插件进行连接组件分割。