Lite3DReg

Lite3DRegLib is a lightweight (<0.3 MB) 3D point cloud and mesh registration toolkit with mirrored Python and C++ APIs. Blend research-grade rigid and non-rigid solvers with interactive Gradio tools for robotics, vision, and digital twin workflows.

MIT open source
Permissive license ready for research or production
Rigid + Non-rigid
Fast-Robust-ICP and SPARE-driven alignment modes
Gradio studio
Real-time tuning on Hugging Face Spaces
Unified APIs
Composable C++ and Python interfaces for every pipeline stage

Key capabilities at a glance

A compact, robust, and user-friendly lib for modern 3D registration tasks.

Lightweight

Core source stays under 0.3 MB, ships under MIT, and drops cleanly into research or production trees.

Efficient & robust

Fast-Robust-ICP and SPARE solvers help Lite3DRegLib outperform baseline ICP and CPD in speed and resilience.

Interactive exploration

The Gradio-powered interface on Hugging Face lets you tweak parameters, inspect residuals, and reset defaults live.

Accessible APIs

Unified Python and C++ bindings with curated datasets keep Windows and Linux experimentation straightforward.

Visualization interactively

Launch the Hugging Face Space to adjust registration parameters via dropdowns, explore example datasets, and reset to curated defaults while watching convergence unfold.

Interactive 3D registration demo

3D interaction tools

Spin, zoom, and compare rigid/non-rigid outputs in the same Gradio canvas.

Camera Orbit & zoom
Hover index & coordinates
Controls Reset & save

Registration result

Rigid registration

Powered by Fast-Robust-ICP for resilient alignment across noisy captures.

Rigid registration overlay example 1
Rigid registration overlay example 2

Non-rigid registration

SPARE-based deformation matches expressive meshes and scanned humans with impressive fidelity.

Non-rigid registration example 1
Non-rigid registration example 2
Non-rigid registration example 3
Non-rigid registration example 4

Build, integrate, and deploy fast

Dependencies, compilation routes, and the C++/Python interfaces that Lite3DRegLib provide.

Dependencies & build

  • Eigen 3.4.0
  • OpenMesh 8.1
  • Optional (Linux): Intel MKL for accelerated solvers
pip install numpy gradio plyfile trimesh plotly
cd scripts
./compile.sh  # builds library + Lightweight3DRegDemo.exe

C++ interface

RigidFricpRegistration* rigid;
NonrigidSpareRegistration* spare;

rigid->Reg(target_file, source_file, outpath);
spare->Reg(target_file, source_file, outpath);

rigid->Paras_init(use_init=false, file_init="", max_iter=80, stop=1e-5);
spare->Paras_init(30, 1e-3, 1e-4, false, {}, {});

rigid->Read_data(target_points, source_points, target_normals, source_normals);
spare->Read_data(target_points, source_points, target_normals, source_normals);

rigid->Register();
spare->Register();

rigid->Output_data(outpath, "rigid");
spare->Output_data(outpath, "spare");

Python interface

import pyregister as l3dr

rigid = l3dr.RigidFricpRegistration()
spare = l3dr.NonrigidSpareRegistration()

rigid.Reg("data/target.ply", "data/source.ply", "./out/rigid/")
spare.Reg("data/target.obj", "data/source.obj", "./out/spare/")

rigid.Paras_init(useinit=False, fileinit="", maxiter=80, stop=1e-5)
spare.Paras_init(iters=30, stopcoarse=1e-3, stopfine=1e-4,
                 uselandmark=False, src=[], tar=[])

rigid.Paras_init(); spare.Paras_init()

rigid.Read_data(target_p, source_p, target_n, source_n)
spare.Read_data(target_p, source_p, target_n, source_n)

rigid.Register(); spare.Register()

rigid.Output_data("./out/rigid/", "rigid")
spare.Output_data("./out/spare/", "spare")

Applications powered by Lite3DRegLib

Blend rigid and non-rigid pipelines to support robotics, cultural heritage, healthcare, and any workflow that relies on precise 3D alignment.

Autonomous fleets stabilize lidar and depth sweeps in real time, feeding SLAM loops with centimeter-level poses for navigation and mapping.
Autonomous robotics & SLAM
Digital twin and cultural heritage projects register terrestrial scans, photogrammetry meshes, and drone captures into unified asset vaults.
Industrial & heritage digitization
Medical imaging teams align anatomical scans and deformable surfaces to study motion, build patient-specific models, and track treatment progress.
Healthcare & biomechanics

Inside the Lite3DRegLib stack

The repository layout keeps core solvers, bindings, and tooling cleanly separated so you can adopt only the layers you need.

01

cpp/ core

Modern C++ solvers implementing Fast-Robust-ICP and SPARE algorithms with Eigen and templated utilities.

02

python/ bindings

High-level API mirrors the C++ entry points, enabling quick notebooks, scripting, and Hugging Face deployments.

03

examples/ & data

Sample datasets, reference pipelines, and walkthroughs for rigid and non-rigid registration experiments.

04

Gradio app.py

Ready-to-run visualization in Gradio with parameter controls, reset actions, and live residual monitoring.

Ready to align your world?

Explore, align, and deploy with Lite3DRegLib.