Registration (2/2)


This tutorial is a follow-up of Registration (1/2). We show here how registration can deal with several objects in the 2D or 3D space. We still compute a unique deformation of the ambient space, but the estimation of this deformation is constrained to match each pair of homologous objects.

In the previous tutorial, we considered the skull profiles as a whole. Using the varifold representation (NonOrientedPolyLine),  the skulls were considered as clouds of non-oriented tangents. To make the registration more constrained, we can enforce the eye to match the eye, the mouth to match the mouth, etc.. To this purpose, we segment the skull into 6 homologous parts, each part being now considered as a different cloud of un-oriented tangents.


1. The data:

  • Move to the folder deformetrica-[version]/tutorials/Registration2/ (both in Matlab and in Terminal)
  • Run in Matlab the script viewData.m to look at the two segmented skulls. Each part of the skull is now in a different .vtk file.

2. Parameter setting

  • We keep the same parameter for the deformation as in Registration (1/2).
  • We have now 6 objects instead of 1. We need therefore 6 .xml files. Each object is still represented as a NonOrientedPolyLine and we keep a kernel-width of 30 for each object.
  • For the data-sigma, a solution could be to take the same value for each object. However, shorter curves have less weight than the longest ones, and we can take the opportunity of the segmentation into different parts to increase the weight of the shortest curves, which were not well matched in Registration (1/2). Therefore, we choose data-sigma = 0.005 except for the eye and the outer contour of the mouth, for which we choose data-sigma = 0.002.
  • Note that we could register any mix of homologous structures, whether they are curves, surfaces, points clouds or landmarks.

3. Run Deformetrica

  • Run ./ in a terminal
  • Run the scriptviewResults_Registration.m in Matlab
  • Notice the differences with the results in Registration (1/2), in particular the now better matching of the eye and the outer contour of the mouth.

4. Output and results

  •  The algorithm generated two files for the optimal positions of control points (CP_final.txt) and the values of the momentum vectors (Mom_final.txt), which parameterize a unique deformation of the ambient space.
  • The deformation acts on each segmented part of the skulls, resulting on a .vtk files containing the trajectory of the points of each part (of the form skull_{name}_curve_{curveIndex}__t_{timeIndex}.vtk)

5. Using deformation in post-processing

  • Run ./ in the Terminal to deform a regular lattice of points (in lattice.vtk) using the deformation.
  • Run the script viewResults_LatticeDeformation.m in Matlab to see the result.

 6. To go further

  •  Leave one curve out, register the set of 6-1 curves and then deform the left out curve with the estimated deformation. Could the positions of surrounding curves predict the position of the curve in-between?


Comments are closed.