/DBSCAN

DBSCAN: faster evaluation using nanoflann's kdtree

Primary LanguageC++MIT LicenseMIT

Usage of this tiny dbscan lib based on nanoflann

Massive thanks to Jose for sharing this adaptation of flann 👏🍻🍻

  • the interface
#include <vector>
#include "point.h"

namespace dbscan {

/** cluster
 *   Does density-based spatial clustering.
 *
 * @param points
 *   Un-clustered points.
 *
 * @param epsilon
 *   Epsilon hyper-parameter.
 *
 * @param minPoints
 *   Number of points in epsilon neighourhood
 *
 * @return
 *   Clustered indexes.
 */
std::vector<std::vector<unsigned long>> cluster(
std::vector<Point>& points, const float& epsilon, const int& minPoints);
}

here's an example of how to use the interface

#include <vector>
#include "dbscan.h" //<-- include dbscan library

int main(int argc, char* argv[]){

std::vector<Point> points = readPoints();

int minPoints = 4;
float epsilon = 3.320;
std::vector<std::vector<unsigned long>> iClusters = dbscan::cluster(points, epsilon, minPoints);

return 0;
}
  • You can find an example Point Class here.

  • The readPoints function can be implemented flexibly and therefore, left out.