ThreeCrate Algorithms
High-performance algorithms for 3D point cloud and mesh processing.
Features
- Filtering: Voxel grid, radius outlier removal, statistical outlier removal
- Registration: ICP (point-to-point and point-to-plane), NDT, global registration (FPFH + RANSAC)
- Segmentation: RANSAC plane detection, Euclidean cluster extraction (sequential and parallel)
- Normal Estimation: K-nearest and radius-based normal computation with configurable orientation
- Feature Descriptors: FPFH (Fast Point Feature Histograms) and SHOT (Signature of Histograms of Orientations)
- Nearest Neighbor Search: KD-tree and brute-force, with SIMD-accelerated distance computations
- Mesh Boolean Operations: Union, intersection, and difference
- Mesh Smoothing: Laplacian, Taubin, and HC smoothing
- Colorization: Project colors from registered RGB images onto point clouds
- Streaming Processing: Memory-efficient pipeline for large point clouds
- Parallel Processing: Multi-threaded algorithms via rayon
Usage
Add this to your Cargo.toml:
[]
= "0.6.0"
= "0.6.0"
Example
use ;
use ;
// Filter the point cloud
let cloud = voxel_grid_filter?;
let cloud = statistical_outlier_removal?;
// Estimate normals
let normals = estimate_normals?;
// ICP registration
let result = icp?;
println!;
// RANSAC plane segmentation
let plane_result = segment_plane_ransac?;
println!;
// Euclidean cluster extraction
let clusters = extract_euclidean_clusters?;
println!;
// Global registration using FPFH features
let result = global_registration?;
Algorithms
- Filtering:
voxel_grid_filter,radius_outlier_removal,statistical_outlier_removal - Registration:
icp,icp_point_to_point,icp_point_to_plane,ndt_registration,global_registration - Segmentation:
segment_plane_ransac,extract_euclidean_clusters,extract_euclidean_clusters_parallel - Normal Estimation:
estimate_normals,estimate_normals_radius,estimate_normals_with_config - Feature Descriptors:
extract_fpfh_features,extract_shot_features - Nearest Neighbor:
KdTree,BruteForceSearch - Mesh Boolean:
mesh_union,mesh_intersection,mesh_difference - Mesh Smoothing:
smooth_laplacian,smooth_taubin,smooth_hc - Colorization:
colorize_point_cloud,colorize_from_images
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.