[Insight-users] Principal Component Analysis

Luis Ibanez luis.ibanez at kitware.com
Mon Sep 28 12:18:22 EDT 2009


Dear Mark,


                    Welcome to ITK !


   Before we discuss the technical aspect of your email,
   please let me introduce you to some basic aspect of
   our community.


   ITK is an Open Source software package for performing image
   segmentation and image registration. The software is mostly
   intended for medical applications, but it can be used just
   as well for satellite images and computer vision applications.


   Therefore, when you engage with the ITK community, you are
   addressing a group of several thousand people who have in
   common the following traits:


       A) They all want to share

       B) They are are typically researchers in industry
          and academic institutions

       C) Most of them have graduate degrees


   In this environment, our preferred way of communication
   involves the use of decent language (even when we talk
   about the latests miscarriages of the Patent system...
   and I know that sometime is hard to resist).


   ------

   Regarding community practices:


   A) It is unfortunate that you have dispelled the wise
      practice of reading documentation.


   B) Please note that the ITK manual is available online at:

            http://www.itk.org/ItkSoftwareGuide.pdf

      This is linked from the main documentation page:

       http://www.itk.org/ITK/help/documentation.html

      That you find in the "HELP" link of the
      top www.itk.org web site.


    --------


    Regarding your technical questions:

    1) What is the difference between:

       itkImagePCADecompositionCalculatorTest
       itkImagePCAShapeModelEstimator
       itkPCAShapeSignedDistanceFunction

     In an image PCA Decomposition a collection
     of images is analyzed as being equivalent
     to vectors in which every vector component
     correspond to one of the image pixels.

     Therefore, an image of 320x200 pixels
     is thought of as a vector of 640,000
     components.

     Given a collection of N images, the
     itkImagePCDShapeModelEstimator, computes
     the mean vector and principal components
     vectors (eigenvectors) that correspond to
     those images. (again each vector has as many
     components as there are pixels in one of the
     input images).


     Given the Mean and Eigenvectors, the class

       itkImagePCADecompositionCalculatorTest

     takes an extra image as input and will compute
     the linear coefficients that will make possible
     to express this new image as a linear combination
     of the Mean and the Eigenvector images.


     While the class

       itkPCAShapeSignedDistanceFunction

     will compute the distance from a given image to
     the mean by taking into account the eigenvalues.
     This is similar to a Mahalanobis distance computation.
     This is done by taking into account a geometrical
     transformation that maps the input image into the
     space of the images used to generate the PCA model.


     2) You are probably referring to the test:

        Insight/Testing/Code/Algorithms/
             itkImagePCAShapeModelEstimatorTest.cxx

        (In the future, please specify the files that
        you are referring to. There are thousands of
        files in the toolkit, and we have limited time
        to address the needs of all users).

        This test makes up its own images. This is a common
        practice in unit-testing, that makes the test self-
        sufficient.  You shouldn't take this as an example
        on how to use the file.  Test and Examples are two
        very different things.


     3) Why itkActiveShapeModelCalculatorTest.cxx only
        produces the mean image and not the eigenvectors?

        because for this particular setting of input
        image and parameters, the number of eigenvectors
        returned by the filter is zero.


     4) The Doxygen documentation is not intended to provide
        training in medical image analysis. It is only intended
        to describe the API of C++ classes, and it is expected
        that you are familiar with the concepts behind the
        particular image analysis technique.

        Before you continue attempting to use these classes
        you must read the following papers:


  [1] Cootes T., Taylor C., et. al,
      Active Shape Models - Their training and application,
      Comput. Vis. Image Understanding, vol. 61, pp. 38-59, 1995.


  [2] D. H. Douglas and T. K. Peucker,
      Algorithms for the reduction of the number of points required
      to represent a digitized line or its caricature,
      Canadian Cartographer 10(2), pp. 112--122, 1973.


--


     Best Regards,


        Luis


---------

PS. No offense intended, but please note that most
     institutions will not consider your time of
     studies as "career" time.

     Some career advice:
     If you work in the domain of medical images, you will
     find in this mailing list many of you potential future
     employers, many of the reviewers of your grants, and
     many of the reviewers of your papers.
     Be nice to them.  :-)


--------------------------------------------------------
Mark Redd wrote:
> Hi people,
> I'm finding many problems with PCA on medical images. In my student
> career, I used to read "the fucking manual" in order to solve my
> problems, but now I can't find it!
> 
> There are several things I can't understand :
> 1) the difference between itkImagePCADecompositionCalculatorTest,
> itkImagePCAShapeModelEstimator and itkPCAShapeSignedDistanceFunction
> codes
> 
> 2) why, in their Test files, they don't accept normal images but
> create some strange images (i think that they are created specifying
> something that isn't a set of grayscale pixel values)
> 
> 3) why the only understandable code,
> itkActiveShapeModelCalculatorTest.cxx, doesn't give me the
> eigenvectors and eigenvalues, when I use model.mha and foot.mha as
> parameter, but only the mean shape coordinates.
> 
> So I don't want you getting bored with all my troubles, but can you
> suggest a paper or something similiar that describe these topics? I
> haven't foud the right answers on the official documentation and
> doxygen is too synthetic to be understood by a newbie like me!
> 
> I'd appreciate if someone could give some suggestions,
> Mark
> _____________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
> 


More information about the Insight-users mailing list