[Insight-users] Inter-slice Movement Correction

Luis Ibanez luis.ibanez at kitware.com
Wed Jul 11 11:47:37 EDT 2007


Hi Don,


                   Thanks for posting the images.


They help us a lot to understand the problem that you are describing.

Since the misalignment has an interlaced nature, that is, odd slices
seems to be shifted with respect to even slices, one way to proceed
will be to create a volume with all the odd slice, and another volume
with all the even slices.

On each one of these volumes the Z-spacing will have to be duplicated,
in order to describe the modification of the image grid.

The volume made out of the odd slices will also have to shift the Z
component of its origin in order to faithfully reflect where in physical
space its pixels are.

The rearrangement should be such that if you compute the physical
coordinates of a pixel in the original volume, and then you compute
them for the equivalent pixel in the odd or even volume, you should
get the same values. That is, the odd and even volumes are still
overlapping in space.

Once you have separated the original volume into two. You could then
register the "odd-slices" volume to the "even-slices" volume using
an Affine transform.


The resulting Affine transform should have minimal translations
in Z, and its rotation matrix should have a last row that is "almost"
[0 0 1]. That is, the corrections should look mostly like shearing.


Finally, you could use a SliceIterator in order to go through the
odd slices of the original image, and at every pixel of the odd
slice, map the point to the odd-volume using the Affine transform
resulting from the registration.


You will find details on the use of the SliceIterators in the
ITK Software Guide:

       http://www.itk.org/ItkSoftwareGuide.pdf



For the registration program you could take ImageRegistration9.cxx
and extend it to 3D.


Note that, for a quick test, you could simply use the binaries
of the application:

http://public.kitware.com/pub/itk/InsightApplicationsBin/ImageRegistrationTool.exe

and select "Affine" as registration method.



The source code of this application is in

    InsightApplications/
        LandmarkInitializedMutualInformationRegistration/




     Regards,


          Luis


----------------
Don Bigler wrote:
> Luis,
>    Thank you for the response.  I've posted the two slices at 
> ftp://cnmrr.hmc.psu.edu/movement
> The directory also contains a png file demonstrating the misalignment 
> along the central fissure in the coronal plane.
> Don Bigler
> 
> Luis Ibanez wrote:
> 
>>
>> Hi Don,
>>
>> Form your verbal description it is hard to picture what kind of
>> misregistration is happening between the slices.
>>
>> Could you post somewhere in the web the two slices that you are
>> trying to register ?
>>
>> Taking a look at the images will help us to figure out what kind
>> of registration components you may need to combine here.
>>
>>
>>   Thanks
>>
>>
>>      Luis
>>
>>
>>
>> -----------------
>> Don Bigler wrote:
>>
>>> ITK-Users,
>>>    I am attempting to fix an interesting MRI artifact that occurs 
>>> during long acquisitions.  The scanner uses multiple packages to 
>>> acquire the entire head image and if the patient moves at all during 
>>> the scan an inter-slice misregistration occurs.  Affine normalization 
>>> of the image to a template does not fix the artifact.  I attempted to 
>>> fix the problem by performing a 2D rigid body registration from one 
>>> slice to the next using the ImageRegistration5.cxx example as a 
>>> guide.  It uses the CenteredRigid2DTransform, 
>>> MeanSquaresImageToImageMetric, and LinearInterpolateImageFunction.  I 
>>> successfully modified the code to run from one slice to the next 
>>> using a 3D volume as input, however it did not fix the problem.  Here 
>>> are my questions:
>>>
>>> 1. Would the approach work better using another metric?
>>> 2. Is there a better approach to solving this problem?
>>>
>>> Thank you for your time.
>>> Don Bigler
>>>
>>
>>
> 


More information about the Insight-users mailing list