leomariga / pyRANSAC-3D

A python tool for fitting primitives 3D shapes in point clouds using RANSAC algorithm
https://leomariga.github.io/pyRANSAC-3D/
Apache License 2.0
564 stars 72 forks source link
3d-reconstruction cuboid cylinder open3d plane-detection planes point-cloud ransac ransac-algorithm segmentation


DOI PyPI Latest Release License

What is pyRANSAC-3D?

pyRANSAC-3D is an open source implementation of Random sample consensus (RANSAC) method. It fits primitive shapes such as planes, cuboids and cylinder in a point cloud to many aplications: 3D slam, 3D reconstruction, object tracking and many others.


Features:

Installation

Requirements: Numpy

Install with Pypi:

pip3 install pyransac3d

Take a look:

Example 1 - Planar RANSAC

import pyransac3d as pyrsc

points = load_points(.) # Load your point cloud as a numpy array (N, 3)

plane1 = pyrsc.Plane()
best_eq, best_inliers = plane1.fit(points, 0.01)

Results in the plane equation Ax+By+Cz+D: [0.720, -0.253, 0.646, 1.100]

Example 2 - Spherical RANSAC

Loading a noisy sphere's point cloud with r = 5 centered in 0 we can use the following code:

import pyransac3d as pyrsc

points = load_points(.) # Load your point cloud as a numpy array (N, 3)

sph = pyrsc.Sphere()
center, radius, inliers = sph.fit(points, thresh=0.4)

Results:

center: [0.010462385575072288, -0.2855090643954039, 0.02867848979091283]
radius: 5.085218633039647

3D Sphere

Documentation & other links

License

Apache 2.0

Citation

Did this repository was useful for your work? =)

@software{Mariga_pyRANSAC-3D_2022,
  author = {Mariga, Leonardo},
  doi = {10.5281/zenodo.7212567},
  month = {10},
  title = {{pyRANSAC-3D}},
  url = {https://github.com/leomariga/pyRANSAC-3D},
  version = {v0.6.0},
  year = {2022}
}

Contributing is awesome!

See CONTRIBUTING

Contact

Developed with :heart: by the internet

Mainteiner: Leonardo Mariga

Did you like it? Remember to click on :star2: button.