Coder Social home page Coder Social logo

eigen-based-kd-tree's Introduction

KD Tree

A simple and efficient c++ KD-Tree implementation. This code was written when I was learning c++11. So I deliberately wrote it all in c++ style and used some c++11 characteristics, like smart pointer and many other STL tools.

If you are interested in following features, you can try this project for fun:

  • KNN Search and Radius Search are surpported and have comparable performance with PCL.
  • Simple. Only 2 header-only file.
  • Eigen-Based. Point cloud is organized by Eigen, and can be extended to any dimension.
  • Low Dependency. All you need is Eigen.
  • Smart Pointer. Not worry about memory leak when use it.

Requirements

  • Eigen
  • cmake 2.8+

Quick Start

mkdir build
cd build
cmake ..
make 
./main # test kdtree

Usage

After include kdtree.hpp, you can use it as following.

Eigen::MatrixXd cloud_eigen; // point cloud
cloud_eigen = ... ; // assign point cloud for cloud_eigen
int leaf_size = 5; // the minimum number of points in the leaf nodes
KDTree kdtree(cloud_eigen, leaf_size); // build kdtree
// knn search
std::vector<int> pts_idx; // indices of result points
std::vector<double> pts_dist; // distances of result points
int k = 5;
kdtree.knnSearch(point, k, pts_idx, pts_dist);
// radius search
double radius = 5;
kdtree.radiusSearch(point, radius, pts_idx, pts_dist);

eigen-based-kd-tree's People

Contributors

yuanxianh avatar martinnose avatar unnamed-1408 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.