<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1479" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi there,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>I try to compute the initial translation of the two 3D data. However,
after<BR>I use vtkExtractVOI to extract a part (also a volume) from one of the
3D<BR>data. The origin stays the same! In my program, the
vtkImageData is used<BR>to be converted to itk::Image to compute the initial
translation, so if the<BR>origin information stay the same, the center of the
image is wrong. So, I<BR>wonder if the definition of the term "origin"
differs in vtk and itk?<BR> <BR>Also, I would like to know more about how
itk deal with volumes of different<BR>physical dimensions (origin, spacing,
number of slices, etc.). How can I<BR>read and learn about that? Which ITK
component deal with that?<BR> <BR> Grace</DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>> <BR>> ----- Original Message ----- <BR>> From: "Luis Ibanez"
<<A
href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</A>><BR>>
To: "Grace Chen" <<A
href="mailto:Grace.Chen@swri.ca">Grace.Chen@swri.ca</A>><BR>> Cc: "Insight
Users" <<A
href="mailto:insight-users@itk.org">insight-users@itk.org</A>><BR>> Sent:
Monday, December 05, 2005 4:08 PM<BR>> Subject: Re: [Insight-users] register
two volumes of different types<BR>> <BR>> <BR>> <BR>>>Hi
Grace,<BR>>><BR>>>Please read the chapter on Image Registration
from<BR>>>the ITK Software Guide.<BR>>><BR>>><BR>>>You
are right, a rigid transform has rotation and<BR>>>translation; but given
that you are in a clinical<BR>>>environment where rotations are usually
small, you<BR>>>can safely initialize the rotational part of
your<BR>>>transform ot a Null rotation. This is simply
done<BR>>>when you call SetIdentity() on the
transfrom.<BR>>><BR>>>After you call SetIdentity() you invoke
SetTranslation()<BR>>>in the transform, and then you get the current
parameters<BR>>>of the transform and pass them as the Initial
parameters<BR>>>to the Registration Method.<BR>>><BR>>>If you
print out the values of the array returned
by<BR>>>transform->GetParameters() you will understand
better<BR>>>how you are initializing the
transform.<BR>>><BR>>><BR>>>You are right that the job of the
registration program<BR>>>is to find the best
Transform.<BR>>><BR>>>but<BR>>><BR>>>an Optimizer cannot
always find a peak in a cost function<BR>>>in a six dimensional space
without falling in local optima.<BR>>>So, it is your job to initialize the
Optimizer (e.g. the<BR>>>Transform) close enough to a good registration,
so that<BR>>>the Optimizer can do its job of fine tunning the
values<BR>>>of the Transform.<BR>>><BR>>>If you look at the
plots of ImageMetric values in any<BR>>>of the examples of the ITK
Software Guide, you will<BR>>>better understand by it is unrealistic, or
even naive<BR>>>to expect that the optimizer can find the best
value<BR>>>without proper
initialization.<BR>>><BR>>><BR>>>Please note that you *ARE
NOT* computing the Transformation.<BR>>>You are computing an *INITIAL
VALUE* for that Transformation,<BR>>>so that the Optimizer can start from
there and find the optimal<BR>>>transformation for
you.<BR>>><BR>>><BR>>>When you are dealing with brain images,
you can imagine that due<BR>>>to the size of typical human head, a
misalignment of more that<BR>>>50 millimeters can not easily be corrected
by exploring with<BR>>>an optimizer the parametric space of the Transform.
Therefore<BR>>>you should initialize the Transform, so that the
initial<BR>>>misalignment between the two images is below 20
millimeters.<BR>>><BR>>><BR>>><BR>>>Please read the
Section 6.9 of the ITK Software Guide
too.<BR>>><BR>>><BR>>><BR>>>
Regards,<BR>>><BR>>><BR>>><BR>>>
Luis<BR>>><BR>>><BR>>><BR>>>-------------------<BR>>>Grace
Chen wrote:<BR>>><BR>>>>Hi
Luis,<BR>>>><BR>>>>About setting the initial translation, I
really don't get this...a rigid<BR>>>>movement include both rotation as
well as the translation. Isn't it the<BR>>>>registration
program's job to find out the translation needed to align<BR>> <BR>>
the<BR>> <BR>>>>center of both images? If so, why do we need
to compute that<BR>> <BR>> information<BR>> <BR>>>>for
it?<BR>>>><BR>>>>Grace<BR>>>><BR></DIV></BODY></HTML>