Registration of anisotropic whole-body CTs on isotropic femur CTs

The following data are available:

  • Low-resolution, anisotropic whole-body CTs (1 x 1 x 0.7 mm)
  • High-resolution, isotropic CTs of the femur (0.08 x 0.08 x 0.08 mm)

We want to register the whole-body CT to the femur CT and crop the volume of interest from the whole-body CT. The result should be the same volume with the same isotropic grid (0.08 x 0.08 x 0.08 mm) in low and high res (related to the content) without losing much information through processing.
The question is how we should ideally carry out the process steps (registration, cropping) and which settings (including resampling, interpolation, and others) are important in order to minimize the loss of information.

Our current process is as follows:

  1. Center align both volumes (and harden the transformation)
  2. Rough alignment of the volumes (Create new linear transform → use translation sliders and transformation matrix to move/flip CT and overlay them manually → harden transform)
  3. Registration (General Registration (BRAINS) → Fixed Volume: High Res CT; Moving Volume: Low Res CT → Create new linear transform Rigid (6 DOF) → Apply)
  4. Crop (Select ROI of High Res CT → Output volume: Create new volume; Interpolator: B-spline → Fit to volume → Apply on low res CT)

Since the region that the two images cover are very different, centering will provide very bad results, so I would recommend skipping this step.

Yes, you can do the initial alignment fully manually. Instead of the sliders, you may find interactive transform widgets much more convenient to use.

For even better and faster results, you can use Fiducial Registration Wizard module (in SlicerIGT extension). You can place 3 corresponding landmarks on volume-rendered images in 1-2 minutes, which should give you a registration with less than 5mm error.

Before this, crop both images to approximately the common region.

Instead of BRAINS, I would recommend to try Elastix or ANTs, which are typically much more robust (you get good results without having to tune any parameters).

I’m not sure what your end goal is. Just cropping an image does not sound very useful. If you want to stitch the volumes then you can use the Stitch Volumes module (in Sandbox extension).

Thank you very much for the quick reply.

The first two steps of our pipeline are basically there to place the CTs roughly on top of each other and thus prepare them for registration without any further crop. This step is necessary because the low-resolution CT of a patient shows the whole body and the high-resolution CT only shows a section of an anatomy (femur).

The registration using BRAINS works well so far (both volumes are visually perfectly registered to each other). However, we are unsure whether we are already losing information from the low-resolution CT (moving volume) in this step and how this could possibly be minimised.

If the two volumes are perfectly aligned with each other, we still have to select the same section in the mm space. We therefore crop the low-resolution CT to the ROI of the high-resolution CT. Here we are also not sure whether we lose information through cropping and the associated interpolation/resampling operation.

The final goal should be two volumes (high res and low res) which show the same anatomy and have an identical grid (isotropic spacing) and associated cropping.

Best regards

Hi,

I wanted to let you know that I have now built my own slicer module that works very well. Thanks again for your help.

Best regards
Niklas

That’s great to here. If possible, please share it (e.g., like gist) so that others on the forum can benefit from it as well…

Hi,

I’m happy to do that, but I still have to rework the code a bit and restructure the GUI so that it can be used by everyone. I’ll get to work on it as soon as I have time.