Skip to main content

spatialrust/
lib.rs

1//! SpatialRust meta crate.
2//!
3//! Re-exports the stable public API surface. Application code should depend on
4//! this crate unless it needs direct access to a specific sub-crate.
5
6#![deny(unsafe_code)]
7#![warn(missing_docs)]
8
9pub use spatialrust_core as core;
10pub use spatialrust_features as features;
11pub use spatialrust_filtering as filtering;
12pub use spatialrust_gpu as gpu;
13pub use spatialrust_io as io;
14pub use spatialrust_math as math;
15pub use spatialrust_metrics as metrics;
16pub use spatialrust_pipeline as pipeline;
17pub use spatialrust_registration as registration;
18pub use spatialrust_search as search;
19pub use spatialrust_segmentation as segmentation;
20pub use spatialrust_transform as transform;
21pub use spatialrust_voxelize as voxelize;
22
23pub use spatialrust_core::{
24    CpuDevice, DType, Device, DeviceKind, ExecutionPolicy, FieldSemantic, FrameId, HasIntensity,
25    HasNormals3, HasPositions3, PointBuffer, PointCloud, PointCloudBuilder, PointField,
26    PointSchema, SpatialAlgorithm, SpatialError, SpatialMetadata, SpatialResult, StandardSchemas,
27    Timestamp,
28};
29pub use spatialrust_io::IoError;
30pub use spatialrust_math::{
31    approx_eq, approx_eq_f64, f32_eps, f64_eps, smallest_eigenvector, solve_linear_system,
32    symmetric_eigen3, CauchyKernel, Cov3, CovarianceAccumulator3, HuberKernel, Isometry3,
33    LeastSquaresResult, Mat3, Mat4, Pose3, Quat, Real, RobustKernel, Scalar, SymmetricEigen3,
34    Transform3, TransformPoint, TukeyKernel, Vec2, Vec3, Vec4,
35};
36
37#[cfg(feature = "io-pcd")]
38pub use spatialrust_io::{read_pcd, read_pcd_file, write_pcd, write_pcd_file, PcdWriteFormat};
39
40#[cfg(feature = "io-ply")]
41pub use spatialrust_io::{read_ply, read_ply_file, write_ply, write_ply_file, PlyWriteFormat};
42
43#[cfg(feature = "io-las")]
44pub use spatialrust_io::{read_las, read_las_file, write_las, write_las_file, LasWriteFormat};
45
46#[cfg(feature = "io-e57")]
47pub use spatialrust_io::{read_e57, read_e57_file, write_e57, write_e57_file};
48
49#[cfg(feature = "io-copc")]
50pub use spatialrust_io::{
51    copc_level_for_resolution, read_copc, read_copc_file, read_copc_file_in_bounds,
52    read_copc_file_info, read_copc_file_with_query, write_copc, write_copc_file,
53    write_copc_file_with_params, CopcBounds, CopcFileInfo, CopcQuery, CopcWriterParams,
54};
55
56#[cfg(feature = "io-copc-http")]
57pub use spatialrust_io::{
58    read_copc_url, read_copc_url_info, read_copc_url_with_query, HttpByteSource,
59};
60
61pub use spatialrust_io::{
62    detect_point_cloud_format, read_point_cloud_file, read_point_cloud_file_with_format,
63    write_point_cloud_file, write_point_cloud_file_with_format, PointCloudFileFormat,
64};
65
66#[cfg(feature = "search-kdtree")]
67pub use spatialrust_search::{
68    brute_force_knn, brute_force_radius, BruteForceIndex, KdTree, NearestNeighborIndex, Neighbor,
69    RadiusSearchIndex, SpatialIndex,
70};
71
72#[cfg(feature = "search-graph")]
73pub use spatialrust_search::{knn_graph, radius_graph, NeighborGraph};
74
75#[cfg(feature = "filter-voxel")]
76pub use spatialrust_filtering::{
77    AttributeAggregation, PointCloudFilter, VoxelAggregationMode, VoxelGridDownsample,
78    VoxelGridDownsampleConfig,
79};
80
81#[cfg(feature = "filter-outlier")]
82pub use spatialrust_filtering::{
83    RadiusOutlierConfig, RadiusOutlierRemoval, StatisticalOutlierConfig, StatisticalOutlierRemoval,
84};
85
86#[cfg(feature = "filter-crop")]
87pub use spatialrust_filtering::{Aabb, CropBox, PassThrough};
88
89#[cfg(feature = "filter-fps")]
90pub use spatialrust_filtering::{FarthestPointSampling, FarthestPointSamplingConfig};
91
92#[cfg(feature = "filter-mls")]
93pub use spatialrust_filtering::{MlsConfig, MlsSmoothing};
94
95#[cfg(feature = "feature-normal")]
96pub use spatialrust_features::{
97    orient_normal_towards_viewpoint, FeatureEstimator, KdTreeNeighborhood, NeighborhoodProvider,
98    NormalEstimationConfig, NormalEstimationResult, NormalEstimator,
99};
100
101#[cfg(feature = "feature-iss")]
102pub use spatialrust_features::{IssKeypointConfig, IssKeypointDetector, IssKeypointResult};
103
104#[cfg(feature = "feature-normal-orient")]
105pub use spatialrust_features::{orient_normals_consistent, NormalOrientationConfig};
106
107#[cfg(feature = "feature-boundary")]
108pub use spatialrust_features::{BoundaryConfig, BoundaryDetector, BoundaryResult};
109
110#[cfg(feature = "feature-normal-gpu")]
111pub use spatialrust_features::GpuNormalEstimator;
112
113#[cfg(feature = "segment-ransac-plane")]
114pub use spatialrust_segmentation::{
115    extract_indices, extract_mask, with_labels, PlaneModel, PointCloudSegmenter, RansacPlaneConfig,
116    RansacPlaneSegmentation, RansacPlaneSegmenter,
117};
118
119#[cfg(feature = "segment-multi-plane")]
120pub use spatialrust_segmentation::{MultiPlaneConfig, MultiPlaneSegmentation, MultiPlaneSegmenter};
121
122#[cfg(feature = "segment-euclidean")]
123pub use spatialrust_segmentation::{
124    EuclideanClusterConfig, EuclideanClusterExtractor, EuclideanClusterResult,
125};
126
127#[cfg(feature = "segment-dbscan")]
128pub use spatialrust_segmentation::{DbscanConfig, DbscanResult, DbscanSegmenter};
129
130#[cfg(feature = "segment-ransac-primitives")]
131pub use spatialrust_segmentation::{
132    CylinderModel, PrimitiveSegmentation, RansacCylinderSegmenter, RansacPrimitiveConfig,
133    RansacSphereSegmenter, SphereModel,
134};
135
136#[cfg(feature = "segment-ground")]
137pub use spatialrust_segmentation::{GroundConfig, GroundSegmentation, GroundSegmenter, UpAxis};
138
139#[cfg(feature = "segment-region-growing")]
140pub use spatialrust_segmentation::{
141    RegionGrowingConfig, RegionGrowingResult, RegionGrowingSegmenter,
142};
143
144#[cfg(feature = "register-icp")]
145pub use spatialrust_registration::{
146    estimate_rigid_transform, transform_point_cloud, IcpConfig, IcpRegistration,
147    PointCloudRegistration, RegistrationResult,
148};
149
150#[cfg(feature = "register-icp-point-to-plane")]
151pub use spatialrust_registration::{PointToPlaneIcp, PointToPlaneIcpConfig};
152
153#[cfg(feature = "register-gicp")]
154pub use spatialrust_registration::{GicpConfig, GicpRegistration};
155
156#[cfg(feature = "register-ndt")]
157pub use spatialrust_registration::{NdtConfig, NdtRegistration};
158
159#[cfg(feature = "register-fpfh")]
160pub use spatialrust_registration::{
161    fpfh_descriptors, FpfhDescriptor, FpfhRansacConfig, FpfhRansacRegistration, FPFH_DESCRIPTOR_LEN,
162};
163
164#[cfg(feature = "metrics-distance")]
165pub use spatialrust_metrics::{
166    chamfer_distance, cloud_distances, hausdorff_distance, CloudDistances,
167};
168
169#[cfg(feature = "transform-ops")]
170pub use spatialrust_transform::{
171    apply_transform, bounding_box, centroid, merge_clouds, normalize_unit_sphere,
172    oriented_bounding_box, recenter, scale_cloud, Aabb as TransformAabb, Obb,
173};
174
175#[cfg(feature = "voxelize-occupancy")]
176pub use spatialrust_voxelize::{voxelize, OccupancyGrid, VoxelFill, VoxelGridConfig};
177
178#[cfg(feature = "voxelize-range-image")]
179pub use spatialrust_voxelize::{range_image, RangeImage, RangeImageConfig};
180
181#[cfg(feature = "pipeline-mvp")]
182pub use spatialrust_pipeline::{
183    MvpIcpConfig, MvpPipeline, MvpPipelineConfig, MvpPipelineResult, MvpRegistrationMethod,
184};