Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. LIDAR
  3. GitHub repository

GitHub repository

MITPython

A simple, multi-language implementation of the Iterative Closest Point algorithm for 3D point cloud registration.

GitHubGitHub
350 stars66 forks0 contributors

What is GitHub repository?

simpleICP is a collection of straightforward implementations of the Iterative Closest Point (ICP) algorithm in C++, Julia, Matlab, Octave, and Python. It solves the problem of aligning two 3D point clouds by estimating a rigid-body transformation (rotation and translation) that minimizes the distance between them. The algorithm is particularly useful when point clouds are sampled differently or only partially overlap.

Target Audience

Researchers, engineers, and developers working in fields like computer vision, robotics, photogrammetry, and geospatial analysis who need a simple, readable ICP implementation for point cloud registration.

Value Proposition

Developers choose simpleICP for its clean, multi-language codebase that emphasizes readability over optimization, its use of point-to-plane distance for better convergence, and its support for partial overlaps and parameter observation (in Python).

Overview

Implementations of a rather simple version of the Iterative Closest Point algorithm in various languages.

Use Cases

Best For

  • Aligning 3D scans from LiDAR or photogrammetry
  • Registering point clouds in robotics for SLAM applications
  • Matching partially overlapping datasets like the Bunny model
  • Educational purposes to understand ICP algorithm internals
  • Prototyping point cloud registration without complex dependencies
  • Comparing ICP performance across different programming languages

Not Ideal For

  • Real-time applications requiring low-latency point cloud registration, as non-C++ implementations like Python and Julia have slower runtimes.
  • Projects needing non-rigid or affine transformations, since it only supports rigid-body alignment.
  • Environments demanding extensive testing and validation, given the README's admission that 'tests are rather rare'.

Pros & Cons

Pros

Multi-Language Support

Provides implementations in C++, Julia, Matlab, Octave, and Python, enabling easy adoption across different programming ecosystems without rewriting code.

Point-to-Plane Distance

Uses signed point-to-plane distance for faster convergence and better alignment, as referenced in the README for improved performance over point-to-point methods.

Handles Partial Overlaps

Supports point clouds with only partial overlap, such as the Bunny dataset, by using parameters like max_overlap_distance to define initial overlapping areas.

Clean, Readable Code

Prioritizes simplicity and readability over optimization, with a straightforward code structure that is ideal for educational use and prototyping.

Cons

Feature Inconsistency

The extended feature of observing rigid-body transformation parameters is only available in Python, not in other languages, creating disparities in functionality.

Performance Variability

Benchmarks show significant runtime differences, with Octave being extremely slow due to exhaustive nearest neighbor searches and Python/Julia having moderate speeds, making it unsuitable for time-critical tasks.

Minimal Testing

The README explicitly states that 'tests are rather rare', which could lead to undiscovered bugs and reduced reliability in production environments.

Frequently Asked Questions

Quick Stats

Stars350
Forks66
Contributors0
Open Issues0
Last commit2 months ago
CreatedSince 2020

Tags

#robotics#julia#geospatial#point-cloud-registration#python#computer-vision#iterative-closest-point#point-cloud-processing#point-cloud#matlab#cpp

Built With

E
Eigen
O
Octave
J
Julia
p
pandas
c
cxxopts
n
nanoflann
P
Python
N
NumPy
M
MATLAB
C
C++
S
SciPy

Included in

LIDAR1.2k
Auto-fetched 1 day ago

Related Projects

GitHub repositoryGitHub repository

A LiDAR odometry pipeline that just works

Stars2,256
Forks455
Last commit1 month ago
GitHub repositoryGitHub repository

An Iterative Closest Point (ICP) library for 2D and 3D mapping in Robotics

Stars1,821
Forks567
Last commit8 months ago
Normal distributions transformNormal distributions transform

More recent massively-parallel approach to feature matching (NDT)

Stars0
Forks0
Last commit
Iterative closest point (ICP)Iterative closest point (ICP)

The must-have algorithm for feature matching applications (ICP)

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub