pub struct StreamingVoxelFilter { /* private fields */ }Expand description
Streaming voxel-grid downsampler.
Maintains a HashMap from voxel coordinates to a representative point.
Peak memory is O(V) where V is the number of occupied voxels in the
entire dataset — typically far smaller than N points.
Unlike the in-memory voxel_grid_filter,
no bounding-box pre-scan is required; voxel keys are derived by dividing
each coordinate by voxel_size and rounding toward negative infinity, so
they are consistent across all chunks.
The representative point for each voxel is the centroid of all points assigned to that voxel, giving a smoother result than first-point selection.
Implementations§
Source§impl StreamingVoxelFilter
impl StreamingVoxelFilter
Sourcepub fn new(config: StreamingVoxelFilterConfig) -> Self
pub fn new(config: StreamingVoxelFilterConfig) -> Self
Create a new streaming voxel filter.
Sourcepub fn voxel_count(&self) -> usize
pub fn voxel_count(&self) -> usize
Number of occupied voxels accumulated so far.
Trait Implementations§
Source§impl StreamingPipeline<OPoint<f32, Const<3>>> for StreamingVoxelFilter
impl StreamingPipeline<OPoint<f32, Const<3>>> for StreamingVoxelFilter
Source§type Output = PointCloud<OPoint<f32, Const<3>>>
type Output = PointCloud<OPoint<f32, Const<3>>>
The type produced after all chunks have been processed.
Source§fn process_chunk(&mut self, chunk: &[Point3f]) -> Result<()>
fn process_chunk(&mut self, chunk: &[Point3f]) -> Result<()>
Ingest one chunk of items. Called repeatedly until the source is
exhausted.
chunk will never be empty.Source§fn finalize(self) -> Result<PointCloud<Point3f>>
fn finalize(self) -> Result<PointCloud<Point3f>>
Consume the pipeline and return the accumulated output.
Source§fn memory_bytes(&self) -> usize
fn memory_bytes(&self) -> usize
Estimated number of bytes currently held by this pipeline stage.
Default returns
0; override to expose real memory usage.Auto Trait Implementations§
impl Freeze for StreamingVoxelFilter
impl RefUnwindSafe for StreamingVoxelFilter
impl Send for StreamingVoxelFilter
impl Sync for StreamingVoxelFilter
impl Unpin for StreamingVoxelFilter
impl UnsafeUnpin for StreamingVoxelFilter
impl UnwindSafe for StreamingVoxelFilter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.