1#![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
23#[cfg(feature = "ai")]
24pub use spatialrust_ai as ai;
25#[cfg(any(feature = "arrow-c-data", feature = "arrow-c-stream", feature = "arrow-c-device"))]
26pub use spatialrust_arrow as arrow;
27#[cfg(feature = "camera")]
28pub use spatialrust_camera as camera;
29#[cfg(feature = "distribute")]
30pub use spatialrust_distribute as distribute;
31#[cfg(feature = "episode")]
32pub use spatialrust_episode as episode;
33#[cfg(feature = "image")]
34pub use spatialrust_image as image;
35#[cfg(feature = "image-io")]
36pub use spatialrust_image_io as image_io;
37#[cfg(any(
38 feature = "interchange-gltf",
39 feature = "interchange-openusd",
40 feature = "interchange-tiles3d"
41))]
42pub use spatialrust_interchange as interchange;
43#[cfg(feature = "lod")]
44pub use spatialrust_lod as lod;
45#[cfg(feature = "mapping")]
46pub use spatialrust_mapping as mapping;
47#[cfg(feature = "platform")]
48pub use spatialrust_platform as platform;
49#[cfg(feature = "records")]
50pub use spatialrust_records as records;
51#[cfg(feature = "render-wgpu")]
52pub use spatialrust_render_wgpu as render_wgpu;
53#[cfg(feature = "rosbag2-sqlite")]
54pub use spatialrust_ros2 as ros2;
55#[cfg(feature = "runtime")]
56pub use spatialrust_runtime as runtime;
57#[cfg(feature = "scene")]
58pub use spatialrust_scene as scene;
59#[cfg(feature = "semantic")]
60pub use spatialrust_semantic as semantic;
61#[cfg(feature = "sync")]
62pub use spatialrust_sync as sync;
63#[cfg(feature = "tensor")]
64pub use spatialrust_tensor as tensor;
65#[cfg(feature = "viewer")]
66pub use spatialrust_viewer as viewer;
67#[cfg(feature = "vision")]
68pub use spatialrust_vision as vision;
69#[cfg(feature = "viz")]
70pub use spatialrust_viz as viz;
71#[cfg(feature = "web")]
72pub use spatialrust_web as web;
73
74pub use spatialrust_core::{
75 CpuDevice, CpuRuntime, DType, Device, DeviceKind, ExecutionOutput, ExecutionPolicy,
76 ExecutionReceipt, FieldSemantic, FrameId, HasIntensity, HasNormals3, HasPositions3,
77 PointBuffer, PointCloud, PointCloudBuilder, PointField, PointSchema, SpatialAlgorithm,
78 SpatialError, SpatialMetadata, SpatialResult, SpatialRuntime, SpatialTensor,
79 SpatialTensorChunk, StandardSchemas, Timestamp, TransferDirection, TransferStats,
80 DEFAULT_SPATIAL_TENSOR_CHUNK_SIZE,
81};
82
83#[cfg(feature = "tensor-aoso")]
84pub use spatialrust_core::{AoSoAAttributeChunk, AoSoAAttributeLayout, AoSoAXyzChunk};
85pub use spatialrust_io::IoError;
86pub use spatialrust_math::{
87 approx_eq, approx_eq_f64, f32_eps, f64_eps, smallest_eigenvector, solve_linear_system,
88 symmetric_eigen3, CauchyKernel, Cov3, CovarianceAccumulator3, HuberKernel, Isometry3,
89 LeastSquaresResult, Mat3, Mat4, Pose3, Quat, Real, RobustKernel, Scalar, SymmetricEigen3,
90 Transform3, TransformPoint, TukeyKernel, Vec2, Vec3, Vec4,
91};
92
93#[cfg(feature = "io-pcd")]
94pub use spatialrust_io::{read_pcd, read_pcd_file, write_pcd, write_pcd_file, PcdWriteFormat};
95
96#[cfg(feature = "io-ply")]
97pub use spatialrust_io::{read_ply, read_ply_file, write_ply, write_ply_file, PlyWriteFormat};
98
99#[cfg(feature = "io-las")]
100pub use spatialrust_io::{read_las, read_las_file, write_las, write_las_file, LasWriteFormat};
101
102#[cfg(feature = "io-e57")]
103pub use spatialrust_io::{read_e57, read_e57_file, write_e57, write_e57_file};
104
105#[cfg(feature = "io-copc")]
106pub use spatialrust_io::{
107 copc_level_for_resolution, read_copc, read_copc_file, read_copc_file_in_bounds,
108 read_copc_file_info, read_copc_file_with_query, write_copc, write_copc_file,
109 write_copc_file_with_params, CopcBounds, CopcFileInfo, CopcQuery, CopcWriterParams,
110};
111
112#[cfg(feature = "io-copc-http")]
113pub use spatialrust_io::{
114 read_copc_url, read_copc_url_info, read_copc_url_with_query, HttpByteSource,
115};
116
117pub use spatialrust_io::StorageRoots;
118pub use spatialrust_io::{
119 detect_point_cloud_format, read_point_cloud_file, read_point_cloud_file_with_format,
120 write_point_cloud_file, write_point_cloud_file_with_format, PointCloudFileFormat,
121};
122#[cfg(feature = "io-manifest")]
123pub use spatialrust_io::{
124 DatasetManifest, FileReceipt, ManifestValidation, ReceiptRole, DATASET_MANIFEST_VERSION,
125};
126#[cfg(feature = "storage-preflight")]
127pub use spatialrust_io::{StoragePreflight, DEFAULT_MIN_OUTPUT_FREE_BYTES};
128
129#[cfg(feature = "search-kdtree")]
130pub use spatialrust_search::{
131 brute_force_knn, brute_force_radius, nearest_k_spatial_tensor, parallel_index_for_each,
132 parallel_index_ranges, parallel_worker_count, radius_search_spatial_tensor, BruteForceIndex,
133 ChunkQueryRange, ChunkedNearestNeighborIndex, ChunkedRadiusSearchIndex, KdTree,
134 NearestNeighborIndex, Neighbor, RadiusSearchIndex, SpatialIndex, PARALLEL_STAGING_MIN_POINTS,
135};
136
137#[cfg(feature = "search-parallel")]
138pub use spatialrust_search::{
139 nearest_k_spatial_tensor_parallel, nearest_k_spatial_tensor_parallel_into,
140 radius_search_spatial_tensor_parallel, radius_search_spatial_tensor_parallel_into,
141 PARALLEL_CHUNK_QUERY_MIN_POINTS,
142};
143
144#[cfg(feature = "search-graph")]
145pub use spatialrust_search::{knn_graph, radius_graph, NeighborGraph};
146
147#[cfg(feature = "filter-voxel")]
148pub use spatialrust_filtering::{
149 AttributeAggregation, PointCloudFilter, VoxelAggregationMode, VoxelGridDownsample,
150 VoxelGridDownsampleConfig,
151};
152
153#[cfg(feature = "filter-outlier")]
154pub use spatialrust_filtering::{
155 RadiusOutlierConfig, RadiusOutlierRemoval, StatisticalOutlierConfig, StatisticalOutlierRemoval,
156};
157
158#[cfg(feature = "filter-crop")]
159pub use spatialrust_filtering::{Aabb, CropBox, PassThrough};
160
161#[cfg(feature = "filter-fps")]
162pub use spatialrust_filtering::{FarthestPointSampling, FarthestPointSamplingConfig};
163
164#[cfg(feature = "filter-mls")]
165pub use spatialrust_filtering::{MlsConfig, MlsSmoothing};
166
167#[cfg(feature = "feature-normal")]
168pub use spatialrust_features::{
169 orient_normal_towards_viewpoint, FeatureEstimator, KdTreeNeighborhood, NeighborhoodProvider,
170 NormalEstimationConfig, NormalEstimationResult, NormalEstimator,
171};
172
173#[cfg(feature = "feature-iss")]
174pub use spatialrust_features::{IssKeypointConfig, IssKeypointDetector, IssKeypointResult};
175
176#[cfg(feature = "feature-normal-orient")]
177pub use spatialrust_features::{orient_normals_consistent, NormalOrientationConfig};
178
179#[cfg(feature = "feature-boundary")]
180pub use spatialrust_features::{BoundaryConfig, BoundaryDetector, BoundaryResult};
181
182#[cfg(feature = "feature-normal-gpu")]
183pub use spatialrust_features::GpuNormalEstimator;
184
185#[cfg(feature = "segment-ransac-plane")]
186pub use spatialrust_segmentation::{
187 extract_indices, extract_mask, with_labels, PlaneModel, PointCloudSegmenter, RansacPlaneConfig,
188 RansacPlaneSegmentation, RansacPlaneSegmenter, DEFAULT_GPU_MIN_POINTS_PLANE,
189};
190
191#[cfg(feature = "segment-ransac-plane-gpu")]
192pub use spatialrust_segmentation::GpuRansacPlaneSegmenter;
193
194#[cfg(feature = "segment-multi-plane")]
195pub use spatialrust_segmentation::{MultiPlaneConfig, MultiPlaneSegmentation, MultiPlaneSegmenter};
196
197#[cfg(feature = "segment-euclidean")]
198pub use spatialrust_segmentation::{
199 EuclideanClusterConfig, EuclideanClusterExtractor, EuclideanClusterResult,
200 DEFAULT_GPU_MIN_POINTS_EUCLIDEAN,
201};
202
203#[cfg(feature = "segment-euclidean-gpu")]
204pub use spatialrust_segmentation::GpuEuclideanClusterExtractor;
205
206#[cfg(feature = "segment-dbscan")]
207pub use spatialrust_segmentation::{DbscanConfig, DbscanResult, DbscanSegmenter};
208
209#[cfg(feature = "segment-ransac-primitives")]
210pub use spatialrust_segmentation::{
211 CylinderModel, PrimitiveSegmentation, RansacCylinderSegmenter, RansacPrimitiveConfig,
212 RansacSphereSegmenter, SphereModel,
213};
214
215#[cfg(feature = "segment-ground")]
216pub use spatialrust_segmentation::{GroundConfig, GroundSegmentation, GroundSegmenter, UpAxis};
217
218#[cfg(feature = "segment-region-growing")]
219pub use spatialrust_segmentation::{
220 RegionGrowingConfig, RegionGrowingResult, RegionGrowingSegmenter,
221};
222
223#[cfg(feature = "register-icp")]
224pub use spatialrust_registration::{
225 estimate_rigid_transform, transform_point_cloud, IcpConfig, IcpRegistration,
226 PointCloudRegistration, RegistrationResult,
227};
228
229#[cfg(feature = "register-icp-point-to-plane")]
230pub use spatialrust_registration::{PointToPlaneIcp, PointToPlaneIcpConfig};
231
232#[cfg(feature = "register-gicp")]
233pub use spatialrust_registration::{GicpConfig, GicpRegistration};
234
235#[cfg(feature = "register-ndt")]
236pub use spatialrust_registration::{NdtConfig, NdtRegistration};
237
238#[cfg(feature = "register-fpfh")]
239pub use spatialrust_registration::{
240 fpfh_descriptors, FpfhDescriptor, FpfhRansacConfig, FpfhRansacRegistration, FPFH_DESCRIPTOR_LEN,
241};
242
243#[cfg(feature = "metrics-distance")]
244pub use spatialrust_metrics::{
245 chamfer_distance, cloud_distances, hausdorff_distance, CloudDistances,
246};
247
248#[cfg(feature = "transform-ops")]
249pub use spatialrust_transform::{
250 apply_transform, bounding_box, centroid, merge_clouds, normalize_unit_sphere,
251 oriented_bounding_box, recenter, scale_cloud, Aabb as TransformAabb, Obb,
252};
253
254#[cfg(feature = "voxelize-occupancy")]
255pub use spatialrust_voxelize::{voxelize, OccupancyGrid, VoxelFill, VoxelGridConfig};
256
257#[cfg(feature = "voxelize-range-image")]
258pub use spatialrust_voxelize::{range_image, RangeImage, RangeImageConfig};
259
260#[cfg(feature = "image")]
261pub use spatialrust_image::{
262 AlphaMode, ColorRange, ColorSpace, GrayImage, Image, ImageError, ImageLayout, ImageMetadata,
263 ImageRegion, ImageView, ImageViewMut, PlanarImage, PlanarImageView, RgbImage,
264};
265
266#[cfg(feature = "image-io")]
267pub use spatialrust_image_io::{
268 decode_bytes, decode_path, decode_reader, encode_bytes, encode_path, encode_writer,
269 DecodeLimits, DecodeOptions, DecodedImage, DecodedMetadata, DecodedPixels, EncodeOptions,
270 ImageFileFormat, ImageIoError, Orientation, SourceColorType,
271};
272
273#[cfg(feature = "camera-rgbd")]
274pub use spatialrust_camera::{
275 depth_to_point_cloud, depth_to_xyz_dense, depth_to_xyz_dense_into, rgbd_to_point_cloud,
276 BrownConrady, CameraError, CameraIntrinsics, DepthConversionOptions, PinholeCamera, RgbdError,
277};
278
279#[cfg(feature = "vision")]
280pub use spatialrust_vision::*;
281
282#[cfg(feature = "pipeline-mvp")]
283pub use spatialrust_pipeline::{
284 MvpIcpConfig, MvpPipeline, MvpPipelineConfig, MvpPipelineReceipt, MvpPipelineResult,
285 MvpRegistrationMethod,
286};
287
288#[cfg(feature = "pipeline-streaming")]
289pub use spatialrust_pipeline::{
290 reduce_positions, ChunkMapOperation, ChunkMapSource, PositionReduction, StreamingVoxelConfig,
291 StreamingVoxelSource,
292};