[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