Title: Iterative Closest Point
1Iterative Closest Point
2The Problem
- Align two partially-overlapping meshesgiven
initial guessfor relative transform
3Data Types
- Point sets
- Line segment sets (polylines)
- Implicit curves f(x,y,z) 0
- Parametric curves (x(u),y(u),z(u))
- Triangle sets (meshes)
- Implicit surfaces s(x,y,z) 0
- Parametric surfaces (x(u,v),y(u,v),z(u,v)))
4Motivation
- Shape inspection
- Motion estimation
- Appearance analysis
- Texture Mapping
- Tracking
5Motivation
- Range images
- registration
6Motivation
- Range images registration
7Range Scanners
8Aligning 3D Data
9Corresponding Point Set Alignment
- Let M be a model point set.
- Let S be a scene point set.
- We assume
- NM NS.
- Each point Si correspond to Mi .
10Corresponding Point Set Alignment
- The MSE objective function
- The alignment is
11Aligning 3D Data
- If correct correspondences are known, can find
correct relative rotation/translation
12Aligning 3D Data
- How to find correspondences User input? Feature
detection? Signatures? - Alternative assume closest points correspond
13Aligning 3D Data
- How to find correspondences User input? Feature
detection? Signatures? - Alternative assume closest points correspond
14Aligning 3D Data
- Converges if starting position close enough
15Closest Point
- Given 2 points r1 and r2 , the Euclidean distance
is - Given a point r1 and set of points A , the
Euclidean distance is
16Finding Matches
- The scene shape S is aligned to be in the best
alignment with the model shape M. - The distance of each point s of the scene from
the model is
17Finding Matches
C the closest point operator Y the set of
closest points to S
18Finding Matches
- Finding each match is performed in O(NM) worst
case. - Given Y we can calculate alignment
- S is updated to be
19The Algorithm
Init the error to 8
Y CP(M,S),e
Calculate correspondence
(rot,trans,d)
Calculate alignment
S rot(S)trans
Apply alignment
d d
Update error
If error gt threshold
20The Algorithm
- function ICP(Scene,Model)
- begin
- E ? 8
- (Rot,Trans) ? In Initialize-Alignment(Scene,Model)
- repeat
- E ? E
- Aligned-Scene ? Apply-Alignment(Scene,Rot,Tran
s) - Pairs ? Return-Closest-Pairs(Aligned-Scene,Mod
el) - (Rot,Trans,E) ? Update-Alignment(Scene,Model,
Pairs,Rot,Trans) - Until E- E lt Threshold
- return (Rot,Trans)
- end
21Convergence Theorem
- The ICP algorithm always converges monotonically
to a local minimum with respect to the MSE
distance objective function.
22Convergence Theorem
- Correspondence error
- Alignment error
-
23Convergence Theorem
Ek1
Calculate correspondence
Dk1
Calculate alignment
24Convergence Theorem
25Convergence Theorem
- Proof
- If not - the identity transform would yield a
smaller MSE than the least square alignment. - Apply the alignmentqk on S0 ? Sk1 .
- Assuming the correspondences are maintained
the MSE is still dk.
26Convergence Theorem
- Proof
- After the last alignment, the closest point
operator is applied - It is clear that
-
-
- Thus
-
27Time analysis
- Each iteration includes 3 main steps
- A. Finding the closest points
- O(NM) per each point
- O(NMNS) total.
- B. Calculating the alignment O(NS)
- C. Updating the scene O(NS)
28Optimizing the Algorithm
- The best match/nearest neighbor problem
- Given N records each described by K real values
(attributes) , and a dissimilarity measure D ,
find the m records closest to a query record.
29Optimizing the Algorithm
- K-D Tree
- Construction time O(knlogn)
- Space O(n)
- Region Query O(n1-1/kk )
30(No Transcript)
31(No Transcript)
32Optimizing the Algorithm
- The Bounds Overlap Ball query
- Function BOP
- Local d,sum
- begin
- For d 1 to K
- if Xqd lt B-d
- sum dist(d,Xqd,B-d)
- else if Xqd gt Bd
- sum dist(d,Xqd,Bd)
- if sum gt PQ0 return false
- return true
-
33Optimizing the Algorithm
- Function SEARCH(node)
- Local p,d,temp
- Begin
- if node leaf
- if ball within bounds update PQ
- end
- d ? Discnode , p ? Partnode
- If Xqd lt p
- Begin Checking the left son
- temp ? Bd Bd ? p
- SEARCH(leftson(node))
- Bd ? temp
- end
- else Begin Checking the right son
- temp ? B-d B-d ? p
- SEARCH(rightson(node))
- B-d ? temp
- end
- If Xqd lt p
- begin
- temp ? B-d B-d ? p
- if BOP SEARCH(rightson(node))
- B-d ? temp
- else begin
- temp ? Bd Bd ? p
- if BOP SEARCH(leftson(node))
- Bd ? temp
- end
34Optimizing the Algorithm
- Optimizing the K-D Tree
- Motivation In each internal node we can exclude
the sub K-D tree if the distance to the partition
is greater than the ball radius . - Adjusting the discriminating number, the
partition value , and the number of records in
each bucket.
35Optimizing the Algorithm
36Optimizing the Algorithm
37Optimizing the Algorithm
38Optimizing the Algorithm
- Optimizing the K-D Tree
-
- We choose in each internal node the key with the
largest spread values as the discriminator and
the median as the partition value.
39Optimizing the Algorithm
- The Optimized K-D Tree
- Construction time
- Tn 2Tn/2kN O(KNlogN)
-
- Search time
- O(logN) Expected.
40Optimizing the Algorithm
- The Optimized K-D Tree
-
- The algorithm can use the m-closest points to
cache potentially closest points.
41Optimizing the Algorithm
- As the ICP algorithm proceeds a sequence of
vectors is generated - q1, q2, q3, q4
-
42Optimizing the Algorithm
- Let be a small angular tolerance.
- Suppose
- Instead of 50 iterations in the ICP , this
accelerated variant converges in less than 20
iterations. -
43Time analysis
- Each iteration includes 3 main steps
- A. Finding the closest points
- O(NM) per each point
- O(NMlogNS) total.
- B. Calculating the alignment O(NS)
- C. Updating the scene O(NS)
44ICP Variants
- Variants on the following stages of ICPhave been
proposed
- Selecting sample points (from one or both meshes)
- Matching to points in the other mesh
- Weighting the correspondences
- Rejecting certain (outlier) point pairs
- Assigning an error metric to the current
transform - Minimizing the error metric w.r.t. transformation
45Performance of Variants
- Can analyze various aspects of performance
- Speed
- Stability
- Tolerance of noise and/or outliers
- Maximum initial misalignment
46ICP Variants
- Selecting sample points (from one or both
meshes). - Matching to points in the other mesh.
- Weighting the correspondences.
- Rejecting certain (outlier) point pairs.
- Assigning an error metric to the current
transform. - Minimizing the error metric w.r.t. transformation.
47Selection of points
- Use all available points Besl 92.
- Uniform subsampling Turk 94.
- Random sampling in each iteration
- Masuda 96.
- Ensure that samples have normals distributed as
uniformly as possible Rusinkiewicz 01.
48Selection of points
Uniform Sampling
Normal-Space Sampling
49ICP Variants
- Selecting sample points (from one or both
meshes). - Matching to points in the other mesh.
- Weighting the correspondences.
- Rejecting certain (outlier) point pairs.
- Assigning an error metric to the current
transform. - Minimizing the error metric w.r.t. transformation.
50Points matching
- Closest point in the other mesh Besl 92.
- Normal shooting Chen 91.
- Reverse calibration Blais 95.
- Restricting matches to compatible points (color,
intensity , normals , curvature ..) Pulli 99.
51Points matching
52Points matching
53Points matching
- Projection (reverse calibration)
- Project the sample point onto the destination
mesh , from the point of view of the destination
meshs camera.
54Points matching
55ICP Variants
- Selecting sample points (from one or both
meshes). - Matching to points in the other mesh.
- Weighting the correspondences.
- Rejecting certain (outlier) point pairs.
- Assigning an error metric to the current
transform. - Minimizing the error metric w.r.t. transformation.
56Weighting of pairs
- Constant weight.
- Assigning lower weights to pairs with greater
point-to-point distance - Weighting based on compatibility of normals
- Scanner uncertainty
57Weighting of pairs
The rectangles and circles indicate the scanner
reflectance value.
58ICP Variants
- Selecting sample points (from one or both
meshes). - Matching to points in the other mesh.
- Weighting the correspondences.
- Rejecting certain (outlier) point pairs.
- Assigning an error metric to the current
transform. - Minimizing the error metric w.r.t. transformation.
59Rejecting Pairs
- Corresponding points with point to point distance
higher than a given threshold. - Rejection of worst n pairs based on some metric.
- Pairs containing points on end vertices.
- Rejection of pairs whose point to point distance
is higher than ns. - Rejection of pairs that are not consistent with
their neighboring pairs Dorai 98 - (p1,q1) , (p2,q2) are inconsistent iff
60Rejecting Pairs
61Rejecting Pairs
62Rejecting Pairs
63ICP Variants
- Selecting sample points (from one or both
meshes). - Matching to points in the other mesh.
- Weighting the correspondences.
- Rejecting certain (outlier) point pairs.
- Assigning an error metric to the current
transform. - Minimizing the error metric w.r.t. transformation.
64Error metric and minimization
- Sum of squared distances between corresponding
points . - There exist closed form solutions for rigid body
transformation - SVD
- Quaternions
- Orthonoraml matrices
- Dual quaternions.
-
65Error metric and minimization
- Sum of squared distances from each sample point
to the plane containing the destination point
(Point to Plane) Chen 91. - No closed form solution available.
66Error metric and minimization
- Using point-to-plane distance instead of
point-to-point lets flat regions slide along each
other Chen Medioni 91
67Error metric and minimization
Closest Point
68Error metric and minimization
Point to plane
69Error metric and minimization
- Search for alignment
- Repeatedly generating set of corresponding points
using the current transformations and finding new
transformations that minimizes the error metric
Chen 91. - The above method combined with extrapolation in
transform space Besl 92.
70Real Time ICP
71Robust Simultaneous Alignment of Multiple Range
Images
72Motivation
73Motivation
74Motivation
- Graph of the twenty-seven registered scans of
the Cathedral data set. The nodes correspond to
the individual range scans. The edges show pair
wise alignments. - The directed edges show the paths from each scan
to the pivot scan that is used as an anchor.
75Motivation
76Motivation
77Registering multiple Images
- Sequential
- Less memory is needed.
- Cheap computation cost.
- Each alignment step is not affected by number
of images. - Less accurate.
78Registering multiple Images
- Sequential
- as we progress in the alignment the accumulated
error is noticeable.
79Registering multiple Images
- Simultaneous
- Diffusively distribute the alignment
error over all overlaps of each range images. - Large Computational cost.
80Registering multiple Images
- Simultaneous
- The total alignment error is diffusively
distributed among all pairs.
81The Algorithm
- Array KDTrees, Scenes, PointMates, Transforms
- foreach r in AllRangeImages
- foreach s in AllRangeImage-r
- Sceness s
- foreach i in Pointsof(r)
- foreach s in Scenes
- PointMatesi CorrespondenceSearch(i,KDTree
s) - Transformsr TransformationStep(PointMates)
- TransformAll(AllRangeImages, Transforms)
82Speeding Up
- During the first iterations it is more important
to bring the sets of points closer to each other
than to accurately calculate the transform . - Random sub sampling of the points.
83Outliers Rejection
- Outlier thresholding
- s standard deviation of the error.
- Eliminate matches with error gt ks
- Some valid points might be classified as
outliers, and some outliers might be classified
as valid points.
84Outliers Rejection
- Median/Rank estimation
- Calculate the median, which is (almost
guaranteed) valid point and use its error as
estimation, i.e. Least Median of Squares. - Requires exhaustive search.
85Outliers Rejection
- M-Estimators
- Instead of minimizing the sum of square
residuals , the square residuals are replaced by
?(ri). - Each point is assigned with a likelihood
probability (weight) and after each iteration the
probability is updated with respect to the
residual.
86The End