images registration

Apr 17, 2015 at 2:10 PM
Dear everyone,
I'm an engineer and i have the pleasure to work with ESAPI (v.13).

i'm in the preliminar phase of a research project and i need to:

i. extract the different volumetric images of a given patient (CT, MR, dose distribution...), which have different FOR;

ii. make all the images overlappable.

I did i) using the example present on the forum which allows to create a .vtk file for each image. It works very well.

I have to do the point ii).

My goal is to extract from the system a series of matrices (one for each volumetric image), in which every point describes the same point in the space.

In other words i would like that in each .vtk file (or matrix), the point in position [10,10] referes to the same 3D coordinates.
Do you think that is possible to do that utilizing the registration methods or i have to build data structures ad hoc and operate on them?

Im' trying right now to do it manually (using only TransormPoint), but it's a long way to go. Especially in terms of computational time.
And i'm not sure the result will be satisfying.

Thank you in advance.
Matteo
Apr 17, 2015 at 2:29 PM
...or, much more easily, is it possible to extract the data from the image already registered?
Developer
Apr 17, 2015 at 7:15 PM
If you wanna do image registration, here are my points:
  1. first things first, I cannot find the resampled image in Eclipse, so probably you need to do this part manually (can others point out a way?)
  2. if you only need rigid registration, the matrix(cies) can be found in the registration dicom object (refer to dicom). With those in hand, you can use your favorite registration modules (ITK, VTK) to do the rest.
Coordinator
Apr 17, 2015 at 9:09 PM
Edited Apr 17, 2015 at 9:09 PM
You could resample the image volume using the 'profiles' features of the API. This works the same way for dose and image volumes. See exercise3 from the Developer Workshop 2.0 for a hint on how you might do this.
Apr 20, 2015 at 1:24 PM
Wow. I was just thinking on how to obtain the function representing the voxel values row by row, to scale the image changing the resolution. "Profile" is the tool that i needed. Thank you.

So my intentions are (in order to realize overlappable matricies):


1) Starting from the vtk file, to create, for the target images, a matricial data structure in which assign to each voxel value the respetcive coordinates (using image.origin and the resolutions);

2) To resample the image on the basis of the source image dimensions, and to update the coordinates;

3) To register the image using or the TransformPoint method or the tranformation matrix;

4) To rearrange the voxel value according to the new coordinates in order to recreate the registered image on the vtk file.

My fear is that if the image is rotated, i will lost the cubic structure of the matrix on the last step. In other words, i'm afraid that i will have a sequence of planes with disomogeneus dimensions.
I think i'll have to fullfill the incomplete planes with some "0", as i will have to cut the diagonals in order to keep the cubic shape (here is a picture to explain myself better).

Image

Besides, i'm afraid that in this way i'll lost the centering of the image.
Am i correct, or i miss some concepts?
Dec 5, 2015 at 8:39 AM
Hi,

Just wanted to know if you had any success in doing the registration.
I am facing with the same problem and would appreciate if you could share your findings.

Thank you