[Insight-users] Problem with ITK ASM : see Software Guide DRAFT 2.0

Zachary Pincus zpincus at stanford.edu
Wed Mar 9 15:53:28 EST 2005


> Lydia Ng added a nice example on the use of the ASM classes
> to the new version of the ITK Software Guide.
>
>
> Please look at the DRAFT
>
>     http://www.itk.org/ItkSoftwareGuide-2.0.0.pdf
>
>
> To Section 9.3.7, in pdf-page 479-490.
>

Hi all,

I've got a couple suggestions to clarify this portion of the software 
guide (which tripped me up the first few times I read it).

First, on lines 65-67 of 
GeodesicActiveContourShapePriorLevelSetImageFilter.cxx in 
Insight/Examples/Segmentation, we are told:

   // The process pipeline begins with centering the input image using 
the
   // the \doxygen{ChangeInformationImageFilter} to simplify the 
estimation of the pose
   // of the shape, to be explained later.

then on line 319,

  // The \doxygen{ChangeInformationImageFilter} is the first filter in 
the preprocessing
  // stage and is used to force the image origin to the center of the 
image.

Unfortunately, this is all the explanation given. I'd augment that with 
something like:
  // Because the \doxygen{Euler2DTransform} rotates points about the 
image origin,
  // it is good to have this center of rotation approximately near the 
center of the
  // object being segmented. This helps the optimizer find the correct 
rotation and
  // translation.

The next bit of documentation that I found a bit confusing was lines 
668 to 671

   // Further we assume that the shape modes have been normalized
   // by multiplying with the corresponding singular value. Hence,
   // will can set the principal component standard deviations to all
   // ones.

Since the PCAShapeModelEstimator filter trades in eigenvalues, and not 
singular values, this statement was a bit perplexing until I remembered 
that PCA eigenvalues are the squares of the corresponding SVD singular 
values, and that PCA eigenvalues represent the variance of that mode of 
variation. So multiplying by a singular value is the same as 
multiplying by sqrt(eigenvalue), which is to say, multiplying by the 
standard deviation of that mode.

I would personally re-phrase those lines as follows:

   // Further we assume that each shape mode has been normalized
   // by multiplying it with the standard deviation of that mode.
   // In this case, we can set the principal component standard
   // deviations to all ones, because we've already incorporated
   // that information.
   // These standard deviations can be computed from the
   // eigenvalues reported by the \doxygen{ImagePCAShapeModelEstimator}.
   // Each eigenvalue corresponds to the variance of a PCA mode,
   // so the standard deviation is found by taking the square root
   // of that eigenvalue. If the training images were calculated by
   // a singular value decomposition procedure, then the standard
   // deviations are precisely the singular values.


Zach



More information about the Insight-users mailing list