Data Structure for Real-Time
Processing in 3-D
Jean-François Lalonde, Nicolas Vandapel
and Martial Hebert
Problem
Dynamic processing of large 3-D point cloud data from
ladar
Example
• Terrain classification
Local computation on 3-D point sets
Point of interest
Scan through all points in the dataset
Support region
Local computation on highlighted points
Local computation on 3-D point sets
Point of interest
Scan through all points in the dataset
Support region
Local computation on highlighted points
• Compute scatter matrix within support volume
• Extract principal components
• Features are linear combination of eigenvalues
[Tang-PAMI04]
• Voxelize data
• Store sufficient statistics for scatter matrix in voxels
– Sums, sums of squared and sums of cross-products of 3-D points
coordinates
– Minimize storage, reduce amount of data without losing
information for later processing
Local computation on 3-D point sets:
example
2 1 0 λ λ λ ≈ ≈ 0 scatter F =λ 2 λ 1 λ 0 λ 2 1 0 λ λ λ ≈ > > ( 1 2) 2 planar F = λ −λ ⋅e 0 λ 2 λ 1 λ 2 1 0 λ λ λ > > ≈ ( 0 1) 0 linear F = λ −λ ⋅eChallenges
• Nature of data
– Ladar on a moving platform [Lacaze-AUVSI02]
• Dynamic (accumulation)
– Need to process data continuously
• Efficient operations
– Insertion and access
– Range search
• Local computations
• Traditional techniques do not apply
– Tree-based data structures [Samet81, Liu-NIPS04,
Concept – 2-D example
Voxel
Stores sufficient statistics of all points
that fall in it
Support region
Sum sufficient statistics of all voxels within
k
k = 5
Size of support region
Concept – 2-D example
Overlap
How can we reuse pre-computed data?
Concept – 2-D example
1. Start with the blue region
2. Add the green column
3. Subtract the red column
Concept – 2-D example
• Proven to be efficient in image processing [Faugeras93]
• Challenge in 3-D: data is sparse
2-D example, sparse data
Empty voxel
Sparse data
2-D example, sparse data
May not always be
useful to reuse data
Empty voxel
1. Start with the blue region
2. Add the green columns
3. Subtract the red columns
2-D example, sparse data
2 approaches:
2. Default scan
Where is the
previous result?
Approach 1: default scan
x yk = 5
Size of support region (in # of voxels) k2. Memory
Compute partial sums
1. Scanning
direction
Example: x first Arbitrary
Approach 1: default scan
x yk = 5
Size of support region (in # of voxels) k2. Memory
Compute partial sums
1. Scanning
direction
Example: x first Arbitrary dd = 2
2 cases
d k d k2
k
d
<
2
k
d
>
d = 3
d = 2
Approach 2: optimized scan
• Can we do better?
x y
Would be better to
choose the result from
Approach 2: optimized scan
Empty voxel
Additional arrays
Store all previous results & locations
Approach 2: optimized scan
Empty voxel
Additional arrays
Store all previous results & locations
dmin
d
minDistance between voxel of interest and closest
Approach 2: optimized scan
Empty voxel
Additional arrays
Store all previous results & locations
dmin
d
minDistance between voxel of interest and closest
previous result
Comparison
+ Very easy to implement + Minimal overhead
one memory location
one distance computation
+ Independent on scanning direction + Provide highest speedup
- Harder to implement
direction determined dynamically
Experiments - overview
Experiments - overview
Experiments - overview
Experiments - overview
Forest dataset
Flat ground dataset Tall grass dataset
• Voxel size of 0.1m
• Experiments:
– Influence of scanning direction
– Speedup on different scenes
– Influence of data density
117,000 occupied voxels 112,000 occupied voxels
Experiments – scanning direction
Flat ground dataset
y z y z x y z
Optimized version Along x
Along y Along z Distance to previous occupied voxel Distance to previous occupied voxel F re q u e n cy F re q u e n cy F re q u e n cy F re q u e n cy Avg. dist = 1.15 Freq = 99% Avg. dist = 1.75 Freq = 94% Avg. dist = 1.79 Freq = 96% Avg. dist = 1.12 Freq = 64%
Experiments – scanning direction
Forest dataset
Flat ground dataset Tall grass dataset
Experiments - speedup
Forest dataset
Flat ground dataset Tall grass dataset
T im e, n o rm al iz ed ( m s/ v o x el )
Radius of support region (m)
Direct computation Direct computation Direct computation
Experiments - density
Tall grass dataset
Old method, Direct computation
New method, Optimized scan
Raw
Radius of support region (m)
T im e, n o rm a li ze d ( m s/ v o x e l) Sub-sampled Raw Sub-sampled Nb of voxels Raw: 117,000 Sub-sampled: 9,000
What can we predict?
v
Number of occupied voxelsn
Total number ofvoxels in the volume
P[X < k/2]
Probability that condition for reuse is satisfied
k
Size of support region
d
Average distance between interest voxel
Experimental validation
0 0,02 0,04 0,06 0,08 0,1 0,12 0 0,005 0,01 0,015 0,02 0,025 T im e, n o rm a li ze d ( m s/ v o x e l) Volume occupancy (%)Point where both
Lower bound
Direct computation