2

I am trying to register two volumetric images from brain (PET and CT or even PET and MR). Each of these volumetric images contains different numbers of 2D images (slices). For example, CT has 150 slices and PET has 100 slices. I was thinking of using an interpolation method to calculate and reduce the number of CT slices to 100. Is this a correct approach? Does anyone know of any resources that could be helpful for me? like a pseudo code, or steps that I should go through for registering two volumetric images. Thank you :)

sara_123
  • 433
  • 8
  • 25
  • 1
    Even if the images had the same number of slices, some form of interpolation would be necessary because pixels rarely end up on gridpoint locations after an image is transformed. If you are using a library like ITK to perform registration, this interpolation is done automatically. Are you using ITK or a similar library to do this, or are you trying to code the transformation/interpolation yourself? – eigenchris Aug 10 '15 at 13:57
  • @eigenchris Thank you for your reply. Yes, I am going to implement it myself in MATLAB. Do you know of any paper or resource that is helpful for me? I have read lots of paper in this field(volumetric image registration) but none of them has any information about this step. I have my code that is working for one slice and the rotated version of it. But when I want to go to the real problem and apply my algorithm to all slices of PET and MR scans, I don't know what to do. I would appreciate any help. – sara_123 Aug 11 '15 at 17:42
  • 1
    Do you know for sure that both images occupy the same physical space? Do you know the spacing information between pixels? Simple registration problems can be instructive to write code for, but registration can quickly get complicated and I would recommend you use code written by other people for most registration problems. Have you looked at [`imregister`](http://www.mathworks.com/help/images/ref/imregister.html#namevaluepairarguments). – eigenchris Aug 11 '15 at 18:47
  • Yes I have spacing information and also both axial brain images. Actually, I am developing my own method for registration. – sara_123 Aug 11 '15 at 18:55

1 Answers1

2

If you know the spacing information for the 150 CT slices and the 100 PET slices, you can look into MATLAB's interp1 function for interpolating along one axis to rescale the images to the same number of pixels. From here it might be possible to use MATLAB's imregister to perform registration.


If you are looking to learn how registration works under the hood (transforming between pixel and physical coordinates, transforming/resampling images, etc.), one resource I can direct you to is the ITK Software Guide pdf.

In particular, try reading Book 1 Section 4.1.4 (page 41 of the pdf) on image representation, and Book 2 Section 3.9 (page 532 of the pdf) on transforms.


In general, the problem of transforming and interpolating with 3D images in registration can be pretty cumbersome to write code for. You need to ask yourself about the spacing and orientation of pixels, how to transform and interpolate images so that their grids overlap, and you also need to decide what to do with pixels in your grid that lie outside the image boundary when evaluating the similarity metric.

While it's up to you to do what you think is best, I suggest you use existing registration programs if they are capable of doing what you want:

  • MATLAB's imregister (I have never used it so I can't comment on it)
  • simpleITK for Python
  • the ITK for C++ has a learning curve but gives full control over the registration process
  • elastix is a command line program that uses a text file of parameters to perform registration.
  • 3D slicer has a graphical user interface for simple linear registration
eigenchris
  • 5,791
  • 2
  • 21
  • 30
  • I am using ANTs for registration. I am facing an issue while building the template, the problem is that the number of slices, width, and height of the population for template construction is different, the voxel spacing of all of them is same, however, the built template looks bad. What do you suggest? Thanks – S.EB Feb 18 '19 at 12:32
  • @S.EB unfortunately I no longer work in the area of image registration and it has been years since I've used ANTs. I'd suggest trying to ask your own question, as well as searching elsewhere online for help. – eigenchris Feb 19 '19 at 06:33