Speeding up Point to Point registration

I have set up a point to point registration. My meshes have about 30K points so this is taking a long time. What should I do to speed this up? Are there any GPU options? I have a GPU and will use the AWS GPU EC2 as well.

ITK 5.1 RC 1 has improved parallelism for the v4 point set registration framework.

The best speedup will be algorithmic ā€“ use a multi-resolution approach where initial registration steps do not try to use all the points.

Hi Matt,
Any examples for this you can point me to? I guess this is where it turns into more of an art. Is there any documentation outlining some heuristics I should consider?

Iā€™m used to using the coherent point drift algorithm; Iā€™m hoping these are better.

I have a series of CT slices I stick together for an isoSurface. Would it be faster to first register the 2D images then build the isoSurface?

Point cloud, surface mesh, and (binary) image registration are different problems. You also need to mention that you are looking into deformable registration.

Since your inputs are already images, and among the three, binary image registration is the easiest problem, I would recommend registering distance maps computed from the binary images. This is already very fast and you can make it faster by utilizing GPU (by computing the registration metric on the GPU).

For reference, see this related discussion on the VTK forum: https://discourse.vtk.org/t/vtk-point-set-registration/2599/6


A multi-resolution approach is always very important in practice for image registration, both for speed and robustness. Use a subsample of the points to register initially, and use the resulting transformation to initialize registration at higher resolutions. A common first approach is to sample the points either uniformly or randomly ā€“ the choice depends on the data. The JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 is a powerful registration method, and multi-resolution robustness can be achieved by setting PointSetSigma.

1 Like