Для какого-то алгоритма реконструкции объема, над которым я работаю, мне нужно обнаружить произвольное количество круговых паттернов в данных трехмерных точек (поступающих с устройства LIDAR). Образцы могут быть произвольно ориентированы в пространстве, и предполагается, что они лежат (хотя и не идеально) в тонких двумерных плоскостях. Вот пример с двумя кругами в одной плоскости (хотя помните, что это трехмерное пространство):
Я перепробовал много подходов ... самый простой (но наиболее эффективный) - кластеризация на основе непересекающихся множеств графа ближайших соседей. Это работает достаточно хорошо, когда шаблоны находятся далеко друг от друга, но в меньшей степени с кругами, похожими на те, что в примере, действительно близко друг к другу.
Я попробовал K-средства, но это не очень хорошо: я подозреваю, что расположение круговых точек может не подходить для этого. Кроме того, у меня есть дополнительная проблема, не зная заранее значение К.
Я попробовал более сложные подходы, основанные на обнаружении циклов в графе ближайшего соседа, но то, что я получил, было либо слишком хрупким, либо вычислительно дорогим.
Я также читал о многих смежных темах (преобразование Хафа и т. Д.), Но в этом конкретном контексте кажется, что ничего не подходит. Любая идея или вдохновение будет оценено.