[Insight-users] Problem about LevelSetMotionRegistrationFunct ion
Miller, James V (Research)
millerjv at crd.ge.com
Mon Nov 22 09:25:23 EST 2004
Siwei,
The reason for the I1(i+u, j+v) instead of I1(i-u, j-v) is because ITK
computes deformation fields that map the Moving image back into the
coordinate frame of the Fixed image. So for any position in the Fixed image,
you can add the vector stored at that index in the deformation field to
determine the corresponding position in the Moving image.
The direction of the deformation field is therefore different from the
original paper, but it
makes the registration consistent with the other registration methods in
ITK.
Jim
-----Original Message-----
From: Siwei Yang [mailto:s.yang at dkfz-heidelberg.de]
Sent: Monday, November 22, 2004 6:04 AM
To: millerjv at crd.ge.com; insight-users at itk.org
Subject: Re: [Insight-users] Problem about
LevelSetMotionRegistrationFunction
Jim,
thank you very much.
but I don't understand , if you want to add the current displacement field
value to the position, you could only derive I1(i+u, j+v) rather than
I1(i-u, j-v) from here.
Siwei
Miller, James V (Research) wrote:
Siwei,
The LevelSetMotionRegistrationFunction calculates the speed value as
double speedValue = fixedValue - movingValue;
where
fixedValue = (double) m_FixedImage->GetPixel( index );
and
movingValue = m_MovingImageInterpolator->Evaluate( mappedPoint );
where mappedPoint is calculated as
for( j = 0; j < ImageDimension; j++ )
{
mappedPoint[j] = double( index[j] ) * m_FixedImageSpacing[j] +
m_FixedImageOrigin[j];
mappedPoint[j] += it.GetCenterPixel()[j];
}
In the above loop, index[] is the index of the pixel under consideration in
the fixed image. By multiplying by the spacing and adding the origin, the
index[] is converted to a physical position in the fixed image. By adding
it.GetCenterPixel(), we are adding the current displacement field value to
the position, i.e. (u,v). So we evaluate the moving image at a position that
takes into account the current displacement field.
So the speed value is calculated as I1(i,j) - I2(i-u, j-v)
Does this clarify the code?
Jim
-----Original Message-----
From: Siwei Yang [ mailto:s.yang at dkfz-heidelberg.de
<mailto:s.yang at dkfz-heidelberg.de> ]
Sent: Friday, November 19, 2004 10:48 AM
To: insight-users at itk.org <mailto:insight-users at itk.org>
Subject: [Insight-users] Problem about LevelSetMotionRegistrationFunction
Hello all,
I want to use the Levelsetmotionregistrationfilter, but in the ComputeUpdate
(LevelsetmotionregistrationFunction) I fand something doesn't seems to be
comprehensible. According to equation 27 in the paper of (B.C. Vemuri, J.
Ye, Y. Chen, C.M. Leonard. "Image registration via level-set motion:
applications to atlas-based segmentation". Medical Image Analysis. Vol. 7.
pp. 1-20. 2003.), the speed term should be I2(ij) -I1(i-u.., j-v..)
instead of I2(ij)-I1(ij), which is in the implementation. I' m not sure,
if what I say is correct . Perhaps some one can give me a good answer.
Thanks
best wishes
Siwei Yang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20041122/ea13c895/attachment.html
More information about the Insight-users
mailing list