Code Monkey home page Code Monkey logo

icp's Introduction

ICP

ICP is an implementation of the Photogeometric Iterative Closest Point (ICP) algorithm in OpenCL. ICP performs real-time frame-to-frame 3-D registration, utilizing both the geometry and the texture of a scene. This way, the geometric features can guide the registration process in situations where there are faintly textured regions, and the color can be used in those places with non-salient surface topology. The implemented framework is based on the paper Real-time RGB-D mapping and 3-D modeling on the GPU using the random ball cover data structure by Neumann et al.

cover

Currently, there are two options for the rotation estimation step. One that uses rotation matrices and estimates the rotation by performing Singular Value Decomposition on the CPU. The other uses unit quaternions and estimates the rotation based on the Power Method. The rest of the computational load is executed exclusively on the GPU. Both resulting pipelines are able to perform one ICP iteration in about 1.1 millisecond, for input sets of |F|=|M|=16384 landmarks and |R|=256 representative points.

Note

The project was developed and tested on Ubuntu 14.04.2, on a system with an AMD R9 270X GPU.

The complete documentation is available here.

For more details on the implemented algorithms, take a look at the project's wiki.

Dependencies

The project has dependencies on the CLUtils, GuidedFilter, RandomBallCover, and Eigen libraries.

All these dependencies are automatically downloaded by cmake, if they are not available on your system. Please note that you'll have to configure Mercurial before Eigen is downloaded.

Examples

There are three applications. kinect_frame_grabber that is able to capture point clouds from Kinect (you'll have to install libfreenect to build it). icp_step_by_step visualizes the process of frame-to-frame registration, step by step. icp_registration presents how to set up the ICP pipeline.

Compilation

git clone https://github.com/nlamprian/ICP.git
cd ICP

mkdir build
cd build

cmake -DBUILD_EXAMPLES=ON ..
# or to build the tests too
cmake -DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON ..

make

# optionally, capture a pair of point clouds
./bin/kinect_frame_grabber -f -s left
./bin/kinect_frame_grabber -f -s right
# to run the examples (from the build directory!)
./bin/icp_step_by_step
# or if you recorded your own pair of point clouds
./bin/icp_step_by_step kg_pc8d_left kg_pc8d_right

# to run the tests (e.g.)
./bin/icp_tests_icp
# or with profiling information
./bin/icp_tests_icp --profiling

# to install the libraries
sudo make install
# you'll need to copy manually the kernel 
# files into your own projects

# to build the docs
make doxygen
firefox docs/html/index.html

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.