smooth_object_model_3d
— Smooth the 3D points of a 3D object model.
smooth_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D)
The operator smooth_object_model_3d
smoothes the 3D points in
ObjectModel3D
using the method specified by Method
. The
resulting smoothed points are returned in SmoothObjectModel3D
.
Currently, Moving Least Squares (MLS) (Method
='mls' ) is
the only smoothing method that is supported.
For each point P, the MLS smoothing algorithm fits a planar surface
or a higher order polynomial surface to its k
-neighborhood
(the k
nearest points). The surface fitting is
essentially a standard weighted least squares parameter estimation
of the plane or polynomial surface parameters, respectively. The
closest neighbors of P have higher contribution than the
other points, which is controlled by the following weighting
function with a parameter :
The point is then projected on the surface. This process is repeated for
all points resulting in a smoothed point set. The fitted surfaces have
well defined normals (i.e., they can easily be computed from the
surface parameters). Therefore, the points are augmented by the
corresponding normals as side effect of the smoothing.
By setting GenParamName
to one of the following values, additional
MLS specific parameters can be set with GenParamValue
:
Specify the number of nearest neighbors k
that are
used to fit the MLS surface to each point.
Suggested values:
40, 60 (default)
,
80, 100, 400
Specify the order of the MLS polynomial surface. For 'mls_order' =1 the surface is a plane.
Suggested values:
1, 2 (default)
,
3
Specify the weighting parameter as a fixed absolute value in meter. The value to be selected depends on the scale of the point data. As a rule of thumb, can be selected to be the typical distance between a point P and its k/2-th neighbor . Note that setting an absolute weighting parameter for point data with varying density might result in different smoothing results for points that are situated in parts of the point data with different densities. This problem can be avoided by using 'mls_relative_sigma' instead that is scale independent, which makes it also a more convenient way to specify the neighborhood weighting. Note that if 'mls_abs_sigma' is passed, any value set in 'mls_relative_sigma' is ignored.
Suggested values:
0.0001, 0.001,
0.01, 0.1, 1.0
Specify a multiplication factor that is used to compute for a point P by the formula: where is the k/2-th neighbor of P. Note that, unlike , which is a global parameter for all points, is computed for each point P and therefore adapts the weighting function to its neighborhood. This avoids problems that might appear while trying to set a global parameter ('mls_abs_sigma' ) to a point data with highly varying point density. Note however that if 'mls_abs_sigma' is set, 'mls_relative_sigma' is ignored.
Suggested values:
0.1, 0.5, 1.0
(default)
, 1.5, 2.0
If this parameter is set to 'true' , all surface normals
are oriented such that they point “in the direction of the
origin”. Expressed mathematically, it is ensured that the
scalar product between the normal vector and the vector from the
respective surface point to the origin is positive. This may be
necessary if the resulting SmoothObjectModel3D
is used
for surface-based matching, either as model in
create_surface_model
or as 3D scene in
find_surface_model, because here, the consistent orientation
of the normals is important for the matching process. If
'mls_force_inwards' is set to 'false' , the
normal vectors are oriented arbitrarily.
Possible values:
'true' (default)
,
'false'
This operator supports cancelling timeouts and interrupts.
ObjectModel3D
(input_control) object_model_3d(-array) →
(handle)
Handle of the 3D object model containing 3D point data.
Method
(input_control) string →
(string)
Smoothing method.
Default value: 'mls'
List of values: 'mls'
GenParamName
(input_control) attribute.name-array →
(string)
Names of generic smoothing parameters.
Default value: []
List of values: 'mls_abs_sigma' , 'mls_force_inwards' , 'mls_kNN' , 'mls_order' , 'mls_relative_sigma'
GenParamValue
(input_control) attribute.value-array →
(real / integer / string)
Values of generic smoothing parameters.
Default value: []
Suggested values: 10, 20, 40, 60, 0.1, 0.5, 1.0, 2.0, 0, 1, 2
SmoothObjectModel3D
(output_control) object_model_3d(-array) →
(handle)
Handle of the 3D object model with the smoothed 3D point data.
surface_normals_object_model_3d
,
sample_object_model_3d
,
simplify_object_model_3d
3D Metrology