pcl ::EuclideanClusterExtraction против pcl ::Kmeans

#c #c 14 #cluster-analysis #k-means #point-cloud-library

#c #c 14 #кластерный анализ #k-означает #облако точек-библиотека

Вопрос:

В руководстве по PCL мы можем узнать, как сегментировать плоскость и извлекать евклидовы облака кластерных точек. Итак, теперь, после того, как я использовал pcl::EuclideanClusterExtraction алгоритм. Мне нужен центр тяжести или среднее положение каждого кластера.

Используя pcl::EuclideanClusterExtraction , мне нужно вычислить центроид с помощью циклов for . После моего поиска я обнаружил, pcl::Kmeans что он предоставляет прямую функцию get_centroids() для получения центроидов кластеров: https://pointclouds.org/documentation/classpcl_1_1_kmeans.html#a8788bd4098ea370e018119fc516a5eb4

Теперь я немного запутался. Чем реальное приложение отличается от pcl::EuclideanClusterExtraction и pcl::Kmeans ? После анализа исходного кода pcl::EuclideanClusterExtraction предоставляет нам кластеры на основе трех параметров. pcl::Kmeans используется, если мы определяем, сколько кластеров мы хотим сгенерировать, из-за аргументов в конструкторе Kmeans (unsigned int num_points, unsigned int num_dimensions) .

Это правда? Есть ли другие случаи?

Комментарии:

1. вы можете использовать [pcl::computeCentroid()]( pointclouds.org/documentation /… ) для вычисления центроида

Ответ №1:

Это два очень разных алгоритма:

  1. кластеризация k-средств итеративно находит сферические кластеры точек (обычно высокой размерности), где сходство кластеров основано на расстоянии до центра кластера. С математической точки зрения: он выбирает центроиды, которые минимизируют квадраты расстояний точек кластера до центроида — и, как уже упоминалось, каждая точка принадлежит кластеру с ближайшим центроидом.
  2. cluster_extraction — это алгоритм жадного увеличения области, основанный на ближайших соседях. Сходство с кластером основано на расстоянии до любой точки кластера (параметр кластерного допуска).

извлечение кластера с допуском, превышающим расстояние между синими / черными точками, но меньшим, чем расстояние между черными и синими точками: извлечение кластера - с допуском, превышающим расстояние между синими / черными точками, но меньшим, чем расстояние между черными и синими точками

k-означает при k = 2 k-означает при k = 2

Комментарии:

1. Отличная оценка за ответ! Коротко, понятно и с картинками, которые очень помогают.