If you have a LiDAR producing Point Clouds some time apart and some distance apart, you have to preform a transformation to line them up. But sensors are noisy - so you probbably want to do some after-the-fact reconfiguring. ICP helps minimize the error between matching two sets of scans.

The steps are as follows:

  1. Selection of points in one or both meshes or point clouds.
    1. If there are a lot of points, maybe only use a few, some points are easier to match than others so considering this in the selection process might make your results more accurate
  2. Matching/Pairing these points to samples in the other point cloud/mesh.
    1. Use SIFT :)
  3. Weighting the corresponding pairs. 4. Some pairs are better than others. Give more weight to points that have smaller distances to each other.
  4. Rejecting certain pairs.
    1. You could reject pairings when one of the points lies on a boundary, as these points are likely to match with points in non-overlapping regions. maybe also reject pairings with too high of a distance.
  5. Assigning an error metric based on the point pairs.
    1. I’m not copying that big ass equation - suffice it to say, its a multi-dimensional distance function.
  6. Minimizing the error metric
    1. Do gradient descent on the formula I skipped!