You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/Plugins/SimplnxCore/docs/IterativeClosestPointFilter.md
+30-8Lines changed: 30 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,43 @@
1
-
# IterativeClosestPoint
1
+
# Iterative Closest Point
2
2
3
3
## Group (Subgroup)
4
4
5
5
Reconstruction (Alignment)
6
6
7
7
## Description
8
8
9
-
This **Filter** estimates the rigid body transformation (i.e., rotation and translation) between two sets of points represted by **Vertex Geometries** using the *iterative closest point* (ICP) algorithm. The two **Vertex Geometries** are not required to have the same number of points. The **Filter** first initializes temporary storage for each set of points and a global transformation. Then, the alignment algorithm iterates through the following steps:
9
+
This **Filter** estimates the rigid body transformation (i.e., rotation and translation) between two sets of points represented
10
+
by **Vertex Geometries** using the *iterative closest point* (ICP) algorithm. The two **Vertex Geometries** are not required
11
+
to have the same number of points.
10
12
11
-
1. The closest point in the target geometry is determined for each point in the moving geoemetry; these are called the correspondence points. "Closeness" is measured based on Euclidean distance.
12
-
2. The rigid body transformation between the moving and target correspondences is solved for analytically using least squares.
13
-
3. The above transformation is applied to the moving points.
14
-
4. The global transformation is updated with the transformation computed for the current iteration.
13
+
The Iterative Closest Point (ICP) algorithm is a method used to minimize the difference between two clouds of points,
14
+
which we can describe in terms of "moving geometry" and "target geometry." The basic flow of the algorithm is:
15
15
16
-
Iterations proceed for a fixed number of user-defined steps. The final rigid body transformation is stored as a 4x4 transformation matrix in row-major order. The user has the option to apply this transformation to the moving **Vertex Geometry**. Note that this transformation is applied to the moving geometry *in place* if the option is selected.
16
+
1. Initial State: We start with two sets of points or geometries. The "moving geometry" is the one we aim to align with
17
+
the "target geometry." Initially, the moving geometry may be in any orientation or position relative to the target geometry.
17
18
18
-
ICP has a number of advantages, such as robustness to noise and no requirement that the two sets of points to be the same size. However, peformance may suffer if the two sets of points are of siginficantly different size.
19
+
1. Identify Correspondences: For each point in the moving geometry, we find the closest point in the target geometry. These
20
+
pairs of points are considered correspondences, based on the assumption that they represent the same point in space
21
+
after the moving geometry is properly aligned.
22
+
23
+
1. Estimate Transformation: With the correspondences identified, the algorithm calculates the optimal rigid body
24
+
transformation (which includes translation and rotation) that best aligns the moving geometry to the target
25
+
geometry. This step often involves minimizing a metric, such as the sum of squared distances between corresponding
26
+
points, to find the best fit.
27
+
28
+
1. Apply Transformation: The calculated transformation is applied to the moving geometry, aligning it closer to the
29
+
target geometry.
30
+
31
+
1. Iterate: Steps 2 through 4 are repeated iteratively. With each iteration, the moving geometry is brought into closer
32
+
alignment with the target geometry. The iterations continue until a stopping criterion is met, which could be a predefined
33
+
number of iterations, a minimum improvement threshold between iterations, or when the change in the error metric falls
34
+
below a certain threshold.
35
+
36
+
Final Alignment: Once the iterations stop, the algorithm concludes with the moving geometry optimally aligned to the target
37
+
geometry, based on the criteria set for minimizing the differences between them.
38
+
39
+
ICP has a number of advantages, such as robustness to noise and no requirement that the two sets of points to be the same
40
+
size. However, performance may suffer if the two sets of points are of significantly different size.
19
41
20
42
% Auto generated parameter table will be inserted here
params.insert(std::make_unique<DataObjectNameParameter>(k_VertexDataName_Key, "Vertex Data Name", "Name of the vertex data AttributeMatrix", INodeGeometry0D::k_VertexDataName));
params.insert(std::make_unique<MultiArraySelectionParameter>(k_TargetArrayPaths_Key, "Vertex Data Arrays to crop", "The complete path to all the vertex data arrays to crop", std::vector<DataPath>(),
0 commit comments