AdjustPointGrids3D


Aligns (rotation + translation) a point grid to match best the reference point grid.

Syntax

C++
C#
Python
 
def AdjustPointGrids3D(
	inPoints: Point3DGrid,
	inReferencePoints: Point3DGrid,
	outAlignedPoints: Point3DGrid,
	outAlignment: Matrix,
	/,
	*,
	inMaxIterationCount: int = 100,
	inMatchFraction: float = 0.1111111111111111,
	inDiscardFurthestFraction: float = 0.05
)
-> (
	diagPointsWorkingSet: list[Point3D],
	diagReferencePointsWorkingSet: list[Point3D],
	diagAttractionSegments: list[ list[Segment3D] ]
)

Parameters

Name Type Range Default Description
Input value inPoints Point3DGrid Data points to be aligned, may contain background clutter.
Input value inReferencePoints Point3DGrid Reference points to align to, may only contain points belonging to the object of interest.
Input value inMaxIterationCount int 1 - 100 Maximal number of iteration for the algorithm
Input value inMatchFraction float 0.0 - 1.0 0.1111111111111111 Defines fraction of input points that is being fitted in every iteration
Input value inDiscardFurthestFraction float 0.0 - 1.0 0.05 Fraction of point pairs to be discarded during internal ICP loop. Furthest pairs are discarded, and only in last 10% of algorithm iterations. Useful for handling outliers in the inReferencePoints, as well as gaps/holes in the inPoints data.
Output value outAlignedPoints Point3DGrid The aligned input points
Output value outAlignment Matrix The transform that aligns best the input points to the reference points
Diagnostic input diagPointsWorkingSet list[Point3D] inPoints after decimation by inMatchFraction, i.e. points which will be fitted in every iteration
Diagnostic input diagReferencePointsWorkingSet list[Point3D] inReferencePoints after decimation by inMatchFraction, i.e. points which will be fitted in every iteration
Diagnostic input diagAttractionSegments list[ list[Segment3D] ] Attraction segments from every iteration. Note that the algorithm internally moves inReferencePoints towards inPoints (and returns inverse transformation), so the segments show movement of reference towards data.