A python package to perform pointcloud registration with scale differences using a two-block optimization approach
Project description
Registration Library OR-PCD 🚀
☁ OR-PCD is a library that implements a two block optimization approach in order to align Pointclouds. This method was created as a solution capable to manage scale and differences among the three coordinate axes of the clouds. In our approach we optimize the scale differences considering all the x/y/z coordinates directions as variables.
It integrates an inner optimization block where standard rototranslation matrix is obtained and an outer one where the best scale factors are estimated through with a pattern search algorithm ⠻⠏.
Library Structure
The library is composed of 3 main components and the objective is the let them be as extendible as possible in order to add other optimization pipelines during time. These are the components:
- ⛓ Preprocessor: the preprocessor represent the standardization pipeline used before aligning the pointclouds. At the moment is composed of:
- Downsamplers: Porcess blocks that downsample pointclouds having too much points
- Scalers: Process block that scale the clouds initially
- Outliers: Porcess blocks that let you remove outliers from the cloud
- 🔝 Optimizer: Inner block optimization methods. At the moment FastGlobal/GeneralizedICP are available
- ⁑ The Aligner: is the outer block of the optimization. At the moment not extendible as it performs a pattern search with a multi-start procedure in order to find best scale parameters.
We provide some sample data to test and extend this library. You can find all of them within the data folder of the library.
Example code for beginners
First import main components
from or_pcd.Preprocessor.Downsamplers import RandomDownsampler
from or_pcd.Aligner import Aligner
from or_pcd.Optimizer import GeneralizedICP, FastGlobalOptimizer
from or_pcd.Preprocessor.Outliers import SOR
from or_pcd.Preprocessor.preprocessor import Preprocessor
from or_pcd.data import load_sample_cloud
Then load some sample clouds
source_cloud = load_sample_cloud("ArmadilloBack_330")
target_cloud = load_sample_cloud("ArmadilloBack_0")
Initialize optimizers with default parameters and run alignment
optimizer = FastGlobalOptimizer()
preprocessor = Preprocessor([RandomDownsampler(5000), SOR()])
aligner = Aligner(preprocessor, preprocessor, optimizer, visualize_intermediate_steps=True)
aligner.align(source_cloud, target_cloud)
Equally involved contributors:
- Diego Polimeni: diego.polimeni99@gmail.com
- Alessandro Pannone: a.pannone1798@gmail.com
Feel free to reach out to the contributors if you have any questions or suggestions.
Thank you for your interest in our project!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file or_pcd-0.0.1b7.tar.gz
.
File metadata
- Download URL: or_pcd-0.0.1b7.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77f8e1f292208eeb3f4e924e27b97db18f3ce6923b5e94ac5891e5a3d6c2e78c |
|
MD5 | 6a9ddaa9c599036b28b1d3833e3ce51a |
|
BLAKE2b-256 | 4040f1812f77a0b10dad782efb3d238e17aae33f057176d5f5c776df77ac3982 |
File details
Details for the file or_pcd-0.0.1b7-py3-none-any.whl
.
File metadata
- Download URL: or_pcd-0.0.1b7-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a5c6ef8232187ac953f2aa15cde90368def1ad1c6421999e67806121a7a8da5 |
|
MD5 | ee0406d96b904ce4a3fe350878e49386 |
|
BLAKE2b-256 | 253796afc238e3082026a9ff9ed4734d20484dabb0bd72028580dea488fa28c6 |