[Insight-users] register two volumes of different types

Grace Chen Grace.Chen at swri.ca
Wed Dec 7 13:14:51 EST 2005


Hi there,


I try to compute the initial translation of the two 3D data.  However, after
I use vtkExtractVOI to extract a part (also a volume) from one of the 3D
data.  The origin stays the same!  In my program, the vtkImageData is used
to be converted to itk::Image to compute the initial translation, so if the
origin information stay the same, the center of the image is wrong.  So, I
wonder if the definition of the term "origin" differs in vtk and itk?
 
Also, I would like to know more about how itk deal with volumes of different
physical dimensions (origin, spacing, number of slices, etc.).  How can I
read and learn about that? Which ITK component deal with that?
 
 Grace

> 
> ----- Original Message ----- 
> From: "Luis Ibanez" <luis.ibanez at kitware.com>
> To: "Grace Chen" <Grace.Chen at swri.ca>
> Cc: "Insight Users" <insight-users at itk.org>
> Sent: Monday, December 05, 2005 4:08 PM
> Subject: Re: [Insight-users] register two volumes of different types
> 
> 
> 
>>Hi Grace,
>>
>>Please read the chapter on Image Registration from
>>the ITK Software Guide.
>>
>>
>>You are right, a rigid transform has rotation and
>>translation; but given that you are in a clinical
>>environment where rotations are usually small, you
>>can safely initialize the rotational part of your
>>transform ot a Null rotation.  This is simply done
>>when you call SetIdentity() on the transfrom.
>>
>>After you call SetIdentity() you invoke SetTranslation()
>>in the transform, and then you get the current parameters
>>of the transform and pass them as the Initial parameters
>>to the Registration Method.
>>
>>If you print out the values of the array returned by
>>transform->GetParameters() you will understand better
>>how you are initializing the transform.
>>
>>
>>You are right that the job of the registration program
>>is to find the best Transform.
>>
>>but
>>
>>an Optimizer cannot always find a peak in a cost function
>>in a six dimensional space without falling in local optima.
>>So, it is your job to initialize the Optimizer (e.g. the
>>Transform) close enough to a good registration, so that
>>the Optimizer can do its job of fine tunning the values
>>of the Transform.
>>
>>If you look at the plots of ImageMetric values in any
>>of the examples of the ITK Software Guide, you will
>>better understand by it is unrealistic, or even naive
>>to expect that the optimizer can find the best value
>>without proper initialization.
>>
>>
>>Please note that you *ARE NOT* computing the Transformation.
>>You are computing an *INITIAL VALUE* for that Transformation,
>>so that the Optimizer can start from there and find the optimal
>>transformation for you.
>>
>>
>>When you are dealing with brain images, you can imagine that due
>>to the size of typical human head, a misalignment of more that
>>50 millimeters can not easily be corrected by exploring with
>>an optimizer the parametric space of the Transform. Therefore
>>you should initialize the Transform, so that the initial
>>misalignment between the two images is below 20 millimeters.
>>
>>
>>
>>Please read the Section 6.9  of the ITK Software Guide too.
>>
>>
>>
>>    Regards,
>>
>>
>>
>>       Luis
>>
>>
>>
>>-------------------
>>Grace Chen wrote:
>>
>>>Hi Luis,
>>>
>>>About setting the initial translation, I really don't get this...a rigid
>>>movement include both rotation as well as the translation.  Isn't it the
>>>registration program's job to find out the translation needed to align
> 
> the
> 
>>>center of both images?  If so, why do we need to compute that
> 
> information
> 
>>>for it?
>>>
>>>Grace
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20051207/c256338a/attachment.htm


More information about the Insight-users mailing list