The MIL 3D Registration module registers point clouds using the Iterative Closes Point algorithm. The function M3dregCalculate() internally iterates through successive estimates of the transformation required to align the working coordinate systems of two point clouds, until a specified stop condition is reached. Once a stop condition is reached, M3dregCalculate() returns the transformation matrix that transforms the points of one point cloud such that the average overall distance between its points, and the reference point cloud's points, is as low as possible. With these results, you can then use M3dregMerge() to combine the point clouds into a single point cloud.

With each iteration, points from one point cloud are paired with the closest points in the reference point cloud, and the distance between the points is minimized using a transformation. New point pairs are made with each iteration. After several iterations, if the registration was successful, then the point clouds should, at least partially, overlap. This means that the transformation that moves the points of a point cloud, to its reference point cloud, is also the transformation that aligns the point cloud's working coordinate system with the reference point cloud's working coordinate system. As a result, the same coordinate values are used to describe equivalent points from each point cloud.

Consider the following animation:

Note that the 3D Registration module only works on point clouds, not depth maps. To convert a depth map into a point cloud, use MbufConvert3d().