360
V. L. Kondarattsev et al.
Fig. 24.2 Input scan as polygonal model
• Noise. All sensors have an error that leads to the appearance of various artifacts.
For example, isolated polygons and vertexes that hangs in the air.
• Floor and walls. The object we are interested in is standing on some kind of
support surface. It is usually not needed for further analysis.
• Presence of foreign objects. For example, on the scan above (see Fig. 24.2), we
can see scanned foreign objects (a heater, parts of bags, etc.) that are not required
for further analysis of the object of interest.
We need to complete several stages of raw data preprocessing before we can select
the object we are interested in.
The removal of the support surface. To remove the reference surface, we proposed
a heuristic algorithm and implemented it using the Blender Python API. The main
idea that the algorithm is based on is that polygons belonging to the floor are located
at a low height, and their normals are not strongly deviated from the horizontal
direction vector. The input to the algorithm is a polygon model M n,m = (V n , F m )
and parameters α, β. The algorithm consists of the following steps:
1. Let D = ∅ be the set of polygons that belong to the floor (the reference surface).
2. Let us set the parameters α, β ∈ (0; 1), where α determines the fraction of the
height of AABB, at which the reference surface can be located, and β = 1−cos γ ,
where γ is a maximum angle of deviation of the polygon normal from the vector
up = (0, 0, 1)
T , which shows the “up” direction.
3. Compute AABB: B
M n,m
of polygonal model M n,m = (V n , F m ).
4. Compute the height of AABB: h = x
3
max − x
3
min .
5. Compute h max = α × h.
6. For each polygon p
g
= {r
g
, t
g
, s
g
} ∈ F m , g = 1, 2, . . . , m:
a. Compute point x = x
r
g
+x
t
g
+x
s
g
3
, where
V. L. Kondarattsev et al.
Fig. 24.2 Input scan as polygonal model
• Noise. All sensors have an error that leads to the appearance of various artifacts.
For example, isolated polygons and vertexes that hangs in the air.
• Floor and walls. The object we are interested in is standing on some kind of
support surface. It is usually not needed for further analysis.
• Presence of foreign objects. For example, on the scan above (see Fig. 24.2), we
can see scanned foreign objects (a heater, parts of bags, etc.) that are not required
for further analysis of the object of interest.
We need to complete several stages of raw data preprocessing before we can select
the object we are interested in.
The removal of the support surface. To remove the reference surface, we proposed
a heuristic algorithm and implemented it using the Blender Python API. The main
idea that the algorithm is based on is that polygons belonging to the floor are located
at a low height, and their normals are not strongly deviated from the horizontal
direction vector. The input to the algorithm is a polygon model M n,m = (V n , F m )
and parameters α, β. The algorithm consists of the following steps:
1. Let D = ∅ be the set of polygons that belong to the floor (the reference surface).
2. Let us set the parameters α, β ∈ (0; 1), where α determines the fraction of the
height of AABB, at which the reference surface can be located, and β = 1−cos γ ,
where γ is a maximum angle of deviation of the polygon normal from the vector
up = (0, 0, 1)
T , which shows the “up” direction.
3. Compute AABB: B
M n,m
of polygonal model M n,m = (V n , F m ).
4. Compute the height of AABB: h = x
3
max − x
3
min .
5. Compute h max = α × h.
6. For each polygon p
g
= {r
g
, t
g
, s
g
} ∈ F m , g = 1, 2, . . . , m:
a. Compute point x = x
r
g
+x
t
g
+x
s
g
3
, where
