PCLCloudDistances

MLModule
genre PCLCommon
author Wolf Spindler
package FMEstable/PCL
dll MLPCLCommon
definition MLPCLCommon.def
see also XMarkerListDistance, itkHausdorffDistanceImageFilter
inherits from PCLModule
keywords points, clouds, PCL, distance, metric

Purpose

PCLCloudDistances calculates distances between two point clouds connected to inputPCLObject0 and inputPCLObject1, respectively. Point positions as well as indexes into related points in the point clouds are also provided for easy use of this information in other modules, or in order to forward it via field connections.

Currently two well known distances are calculated, the Hausdorff (see https://en.wikipedia.org/wiki/Hausdorff_distance) and the minimum euclidean distance where two points, one in each point cloud, are searched with minimal distances. Note that for both distances the results are deterministically calculated, however not necessarily unique, because multiple solutions may exists depending on the point clouds fed into the module and on the order of points in them.

The complexity of PCLCloudDistances usually should be O(n*log(n)), however, it has not been investigated whether internally used k-d trees can degenerate for specific input point clouds and how that could influence the complexity.

Windows

Default Panel

../../../Projects/MLPCLCommon/Modules/mhelp/Images/Screenshots/PCLCloudDistances._default.png

Input Fields

inputPCLObject0

name: inputPCLObject0, type: MLBase

The first of the two needed point clouds; must be valid and contain at least one point to make Results Valid valid.

inputPCLObject1

name: inputPCLObject1, type: MLBase

The second of the two needed point clouds; must be valid and contain at least one point to make Results Valid valid.

Parameter Fields

Visible Fields

Status

name: status, type: String, persistent: no

see PCLModule.status

Input 0 to 1 (input0ToInput1Distance)

name: input0ToInput1Distance, type: Float, persistent: no

The maximum possible distance of any point of inputPCLObject0 to the nearest point of inputPCLObject1, valid only if Results Valid is on, otherwise -FLT_MAX.

Input 0 to 1 (input0ToInput1Index0)

name: input0ToInput1Index0, type: Integer, persistent: no

The index of the (or a) farest point in inputPCLObject0 to a nearest one in inputPCLObject1 (corresponding to Input 0 to 1), valid only if Results Valid is on, otherwise INT_MIN.

Input0To Input1Index1

name: input0ToInput1Index1, type: Integer, persistent: no

The index of the (or one) nearest point in inputPCLObject1 to a the (or a) farest one in inputPCLObject0 (corresponding to Input 0 to 1), valid only if Results Valid is on, otherwise INT_MIN.

Input 0 to 1 (input0ToInput1Position0)

name: input0ToInput1Position0, type: Vector3, persistent: no

The position of the (or a) farest point in inputPCLObject0 to the (or a) nearest one in inputPCLObject1 (corresponding to Input 0 to 1), valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Input0To Input1Position1

name: input0ToInput1Position1, type: Vector3, persistent: no

The position of the (or a) nearest point in inputPCLObject1 to the (or a) farest one in inputPCLObject0 (corresponding to Input 0 to 1), valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Input 1 To 0

name: input1ToInput0Distance, type: Float, persistent: no

The maximum possible distance of any point of inputPCLObject1 to the (or a) nearest point of inputPCLObject0, valid only if Results Valid is on, otherwise -FLT_MAX.

Input 1 to 0 (input1ToInput0Index0)

name: input1ToInput0Index0, type: Integer, persistent: no

The index of the (or a) farest point in inputPCLObject1 to the (or a) nearest one in inputPCLObject0 (corresponding to Input 1 To 0), or INT_32_MIN if Results Valid is off.

Input1To Input0Index1

name: input1ToInput0Index1, type: Integer, persistent: no

The index of the (or a) nearest point in inputPCLObject1 to the (or a) farest one in inputPCLObject0 (corresponding to Input 1 To 0), or INT_32_MIN if Results Valid is off.

Input 1 to 0 (input1ToInput0Position0)

name: input1ToInput0Position0, type: Vector3, persistent: no

The position of the (or a) farest point in inputPCLObject1 to the (or a) nearest one in inputPCLObject0 (corresponding to Input 1 To 0), valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Input1To Input0Position1

name: input1ToInput0Position1, type: Vector3, persistent: no

The position of the (or a) nearest point in inputPCLObject0 to the (or a) farest one in inputPCLObject1 (corresponding to Input 1 To 0), valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Hausdorff

name: hausdorffDistance, type: Float, persistent: no

The Hausdorff distance of inputPCLObject0 and inputPCLObject0 point clouds (which is the minimum of Input 0 to 1 and Input 0 to 1), see https://en.wikipedia.org/wiki/Hausdorff_distance , valid only if Results Valid is on, otherwise -FLT_MAX.

Input 01 Min (input01MinDistanceIndex0)

name: input01MinDistanceIndex0, type: Integer, persistent: no

Index of a point of inputPCLObject0 representing one point from a pair with minimum possible distance between inputPCLObject0 and inputPCLObject1; valid only if Results Valid is on, otherwise INT_32_MIN.

Input01Min Distance Index1

name: input01MinDistanceIndex1, type: Integer, persistent: no

Index of a point of inputPCLObject1 representing one point from a pair with minimum possible distance between inputPCLObject0 and inputPCLObject1; valid only if Results Valid is on, otherwise INT_32_MIN.

Input 01 Min (input01MinDistancePosition0)

name: input01MinDistancePosition0, type: Vector3, persistent: no

Coordinates of the point with index Input 01 Min, valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Input01Min Distance Position1

name: input01MinDistancePosition1, type: Vector3, persistent: no

Coordinates of the point with index Input01Min Distance Index1, valid only if Results Valid is on, otherwise (-FLT_MAX, -FLT_MAX, -FLT_MAX).

Minimum

name: minDistance, type: Float, persistent: no

The minimum possible distance between any point in inputPCLObject0 and any point in inputPCLObject1, valid only if Results Valid is on, otherwise -FLT_MAX.

Results Valid

name: resultsValid, type: Bool, persistent: no

On after succeeded calculations, which means that output fields are valid, otherwise off.