PCLClusterStatistics¶
-
MLModule
¶ genre PCLClusterStatistics
author Wolf Spindler
package FMEstable/PCL
dll MLPCLClusterStatistics
definition MLPCLClusterStatistics.def see also PCLClusterStatisticsToInventor
inherits from PCLModule
keywords points
,clouds
,PCL
,clusters
,statistics
,average
,sum
,number
Purpose¶
PCLClusterStatistics
extracts statistical information about clusters from incoming point cloud. On an XYZINormal point cloud for each point it
determines a cluster index from a selected point member by rounding it to the next cardinal number and
calculates for each cluster index all point magnitude and phase values:
- average
- average of absolute values
- sum
- absolute sum
- median
- center of gravity
- Eigenvalues (ordered largest first, smallest last)
- Eigenvectors (ordered according their eigenvalues)
- oriented min/max values
- intersections of the user plane with a line from center of gravity of the cluster in direction of its largest eigenvalue
- flags indicating whether the plane intersection values are valid.
The cluster results are listed in descending order regarding the number of cluster points. Most outputs are multiple fields containing as many values as clusters have been found and analyzed.
Input Fields¶
Output Fields¶
Parameter Fields¶
Field Index¶
# Clusters : Integer |
Eigen Values : String |
Phase Member : Enum |
# Points : String |
Eigen Vectors : String |
Plane Normal : Vector3 |
Averages (clusterMagnitudeAverages) : String |
Intersections : String |
Plane Point : Vector3 |
Averages (clusterPhaseAverages) : String |
Magnitude Member : Enum |
Status : String |
Averages Absolute (clusterMagnitudeAveragesAbsolute) : String |
Medians (clusterMagnitudeMedians) : String |
Sums (clusterMagnitudeSums) : String |
Averages Absolute (clusterPhaseAveragesAbsolute) : String |
Medians (clusterPhaseMedians) : String |
Sums (clusterPhaseSums) : String |
Center Of Gravities : String |
Ok : String |
Sums Absolute (clusterMagnitudeSumsAbsolute) : String |
Cluster Index Member : Enum |
Oriented Extents : String |
Sums Absolute (clusterPhaseSumsAbsolute) : String |
Visible Fields¶
Cluster Index Member¶
-
name:
clusterIndexMember
, type:
Enum
, default:
x / data[0]
¶ The point member from which the cluster index value shall be extracted; for possible settings see
Magnitude Member
.
Values:
Title | Name |
---|---|
x / data[0] | x / data[0] |
y / data[1] | y / data[1] |
z / data[2] | z / data[2] |
data[3] | data[3] |
normal x / data n[0] | normal_x / data_n[0] |
normal y / data n[1] | normal_y / data_n[1] |
normal z / data n[2] | normal_z / data_n[2] |
data n[3] | data_n[3] |
curvature | curvature |
intensity | intensity |
intensity Replacement | intensityReplacement |
Magnitude Member¶
-
name:
magnitudeMember
, type:
Enum
, default:
x / data[0]
¶ The point member from which the magnitude value shall be extracted.
Values:
Title | Name | Description |
---|---|---|
x / data[0] | x / data[0] | The x (also called data[0]) member of the point is taken as magnitude input. |
y / data[1] | y / data[1] | The y (also called data[1]) member of the point is taken as magnitude input. |
z / data[2] | z / data[2] | The z (also called data[2]) member of the point is taken as magnitude input. |
data[3] | data[3] | The data[3] member of the point is taken as magnitude input. |
normal x / data n[0] | normal_x / data_n[0] | The normal_x (also called data_n[0]) member of the point is taken as magnitude input. |
normal y / data n[1] | normal_y / data_n[1] | The normal_y (also called data_n[1]) value is taken as magnitude input. |
normal z / data n[2] | normal_z / data_n[2] | The normal_z (also called data_n[2]) member of the point is taken as magnitude input. |
data n[3] | data_n[3] | The data_n[3] member of the point is taken as magnitude input. |
curvature | curvature | The curvature member of the point is taken as magnitude input. |
intensity | intensity | The intensity member of the point is taken as magnitude input. |
intensity Replacement | intensityReplacement |
Phase Member¶
-
name:
phaseMember
, type:
Enum
, default:
x / data[0]
¶ The point member from which the phase value shall be extracted; for possible settings see
Magnitude Member
.
Values:
Title | Name |
---|---|
intensity Replacement | intensityReplacement |
Plane Point¶
-
name:
planePoint
, type:
Vector3
, default:
0 0 0
¶ For each cluster: a line with the center of gravity as reference point and the strongest Eigenvector is intersected with the plane defined with
Plane Point
andPlane Normal
; the result is displayed inIntersections
. If for any numerical reason such an intersection point is not well defined then the corresponding value inOk
is 0, otherwise it is 1.
Plane Normal¶
-
name:
planeNormal
, type:
Vector3
, default:
0 1 0
¶ See
Plane Point
.
# Clusters¶
-
name:
numClusters
, type:
Integer
, persistent:
no
¶ The number of detected clusters (which means the number of different found cluster indices).
# Points¶
-
name:
clusterNumPoints
, type:
String
, persistent:
no
¶ For each cluster the number of points found in it; the field contains as many values as displayed in
# Clusters
.
Sums (clusterMagnitudeSums)¶
-
name:
clusterMagnitudeSums
, type:
String
, persistent:
no
¶ For each cluster the sum of all point magnitude values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Sums Absolute (clusterMagnitudeSumsAbsolute)¶
-
name:
clusterMagnitudeSumsAbsolute
, type:
String
, persistent:
no
¶ For each cluster the sum of all absolute point magnitude values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Averages (clusterMagnitudeAverages)¶
-
name:
clusterMagnitudeAverages
, type:
String
, persistent:
no
¶ For each cluster the average of all point magnitude values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Averages Absolute (clusterMagnitudeAveragesAbsolute)¶
-
name:
clusterMagnitudeAveragesAbsolute
, type:
String
, persistent:
no
¶ For each cluster the average of all absolute point magnitude values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Medians (clusterMagnitudeMedians)¶
-
name:
clusterMagnitudeMedians
, type:
String
, persistent:
no
¶ For each cluster the median of all point magnitude values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Sums (clusterPhaseSums)¶
-
name:
clusterPhaseSums
, type:
String
, persistent:
no
¶ For each cluster the sum of all point phase values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Sums Absolute (clusterPhaseSumsAbsolute)¶
-
name:
clusterPhaseSumsAbsolute
, type:
String
, persistent:
no
¶ For each cluster the sum of all absolute point phase values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Averages (clusterPhaseAverages)¶
-
name:
clusterPhaseAverages
, type:
String
, persistent:
no
¶ For each cluster the average of all point phase values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Averages Absolute (clusterPhaseAveragesAbsolute)¶
-
name:
clusterPhaseAveragesAbsolute
, type:
String
, persistent:
no
¶ For each cluster the average of all absolute point phase values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Medians (clusterPhaseMedians)¶
-
name:
clusterPhaseMedians
, type:
String
, persistent:
no
¶ For each cluster the median of all point phase values; the field contains as many values as displayed in
# Clusters
. The value for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Center Of Gravities¶
-
name:
clusterCenterOfGravities
, type:
String
, persistent:
no
¶ Multi-field containing a triple for each found cluster which represents the center of gravity. The triple for the cluster with most points is listed first, the value for the cluster with least points is listed last.
Eigen Values¶
-
name:
clusterEigenValues
, type:
String
, persistent:
no
¶ Multi-field containing a triple for each found cluster which represents the eigenvalues, ordered from largest to smallest. The three eigenvalues for the cluster with most points are listed first, the three eigenvalues for the cluster with least points are listed last. In each triple of eigenvalues the first one indicates the largest extent of a cluster, the third one the least extent of the cluster.
Eigen Vectors¶
-
name:
clusterEigenVectors
, type:
String
, persistent:
no
¶ Multi-field containing three triples (nine values) for each found cluster which represent the three eigenvectors of each cluster, ordered corresponding to their respective eigenvalues.
Oriented Extents¶
-
name:
clusterOrientedExtents
, type:
String
, persistent:
no
¶ Multi-field containing three minimum/maximum pairs for each found cluster which represent the extent ranges of the projected cluster, ordered corresponding to their respective eigenvalues. In other words: the first six values are the (xMin, xMax, yMin, yMax, zMin, zMax) extents of the cluster with the largest number of points after its transformation such that its largest extent is in x-direction, the medium extent in y-direction, and the smallest in z-direction and its center of gravity is located at (0,0,0). These values can be used for example, to determine an oriented bounding box around the cluster, or to draw an axis cross in the cluster with has the extents of the cluster.
Intersections¶
-
name:
clusterPlaneIntersections
, type:
String
, persistent:
no
¶ See
Plane Point
.
Ok¶
-
name:
clusterPlaneIntersectionsOk
, type:
String
, persistent:
no
¶ See
Plane Point
.