[Insight-users] How to compute "PCA s hape model"?

Zachary Pincus zpincus at stanford.edu
Wed May 31 17:10:03 EDT 2006


The signature for the SetInput method of any ITK image filter does  
*not* take a std::vector of images! I'm not sure how you could have  
imagined that to be the case, as it's certainly not suggested  
anywhere in the documentation.

Try SetInput(1, image1), SetInput(2, image2), etc. Also, I suggest  
that you re-read the basic chapters of the ITK software guide.

I should note that the shape guided level set filter is very tricky  
to get working correctly, and requires a pretty good understanding of  
both the underlying method (as described in the Leventon paper) and  
of ITK's coding conventions. I really suggest that you take some time  
to familiarize yourself with both before procedding, as I cannot help  
you further.

Zach


On May 30, 2006, at 4:49 AM, sun wrote:

> Hi  Zach :
>     I have generated three Signed Distance Maps with  
> SignedDanielssonDistanceMapImageFilter,and stored them in mha  
> files,I want to use them as the TrainingImage. Now i have a  
> question that how can i give these inputs to the  
> itkImagePCAShapeModelEstimator? There are 3 TrainingImages and they  
> are accessed using "this->getinput(0),this->getinput(1),this- 
> >getinput(2) in the itkImagePCAShapeModelEstimator class.
>     Here is my code, it can't work.
>
>   const   unsigned int        Dimension = 2;
>   typedef float    my_PixelType;
>   typedef itk::Image< my_PixelType, Dimension >    signdis_ImageType;
>   std::vector<signdis_ImageType::Pointer> signdisImages( 3 );
>
>   typedef  itk::ImageFileReader< signdis_ImageType > ReaderType;
>   typedef  itk::ImageFileWriter<  signdis_ImageType  > WriterType;
>   ReaderType::Pointer reader = ReaderType::New();
>   WriterType::Pointer writer = WriterType::New();
>   reader->SetFileName( argv[1] );
>   reader->Update();
>   signdisImages[0] = reader->GetOutput();
>   reader->SetFileName( argv[2] );
>   reader->Update();
>   signdisImages[1] = reader->GetOutput();
>   reader->SetFileName( argv[3] );
>   reader->Update();
>   signdisImages[2] = reader->GetOutput();
>
>   typedef itk::ImagePCAShapeModelEstimator<
>   signdis_ImageType,
>   signdis_ImageType >  my_Estimatortype;
>   my_Estimatortype::Pointer filter = my_Estimatortype::New();
>   filter->SetInput( signdisImages );    //   error   
> here!!!!!!!!!!!!!!!!!!!!!
>   writer->SetFileName( argv[4] );
>   writer->SetInput( filter->GetOutput(0) );
>   writer->Update();
>   writer->SetFileName( argv[5] );
>   writer->SetInput( filter->GetOutput(1) );
>   writer->Update();
>   ........
>
> Thanks
> sunli
>
>
>
> ----- Original Message -----
> From: "Zachary Pincus" <zpincus at stanford.edu>
> To: "sun" <kacking123 at 163.com>
> Cc: <insight-users at itk.org>
> Sent: Tuesday, May 30, 2006 2:55 AM
> Subject: Re: [Insight-users] How to compute "PCA shape model"?
>
>
>
> > Hi  Zach :
> >     Thank you for your reply.
> >     I have read the code in itkImagePCAShapeModelEstimator.txx . It
> > seems that the mean image and principal component outputs are
> > generated in this class,and the inputs of this class is
> > TrainingImages.
>
> This is correct.
>
> > So i wondered what the  "signed distance maps a set of
> > training shapes " mean in your reply, and how can i input these
> > images.
>
> Use one of the Signed Distance Map filters available in ITK (there
> are several, check out the Doxygen class list) to convert binary
> training images (spanning the space of possible shapes you wish to
> segment) into signed distance maps, where each pixel's value is the
> distance from that pixel to the nearest edge of the binary object
> (and the pixel's value is negative if it is inside the object). This
> then represents each shape as the zero-level set of an image.
>
> >     In the quoted code, the shape model defined by
> > CorpusCallosumMeanShape.mha and the first three principal
> > components CorpusCallosumMode0.mha, CorpusCallosumMode1.mha and
> > CorpusCallosumMode12.mha. How can i generate
> > these mha files? Can i write the principal component outputs of
> > itkImagePCAShapeModelEstimator class in  mha files
> > directly?
>
> That is correct. Or you could use them directly without writing them
> to files.
>
>
>
> >
> > Thanks
> > Sunli
> >
> > ----- Original Message -----
> > From: "Zachary Pincus" <zpincus at stanford.edu>
> > To: "sun" <kacking123 at 163.com>
> > Cc: "itk" <insight-users at itk.org>
> > Sent: Sunday, May 28, 2006 3:41 AM
> > Subject: Re: [Insight-users] How to compute "PCA shape model"?
> >
> >
> >
> > This is a longstanding gap in the documentation.
> >
> > In brief, you will need to generate signed distance maps of a set of
> > training shapes, and pass them to the PCAShapeModelEstimator class.
> > You may then choose to divide the returned "shape mode" images (note
> > that output zero from the model estimator is the mean image) by the
> > reported standard deviations, as described in the example.
> >
> > Let me know if more detail is required.
> >
> > Zach Pincus
> >
> > Program in Biomedical Informatics and Department of Biochemistry
> > Stanford University School of Medicine
> >
> >
> > On May 27, 2006, at 12:06 AM, sun wrote:
> >
> >> Hi all:
> >>      I am using the filter "Geodesic Active Contours Segmentation
> >> with Shape Guidance" to
> >> segment my image now.But the quoted  code just reads in a "PCA
> >> shape model" that has been pre-computed
> >> earlier. I want to know how to compute such a shape model in  ITK.
> >> Who can help me?
> >>                                       sun li
> >>
> >>
>
>
>
>
>
>
>
>
>
>
> 你 不 想 试 试 今 夏 最 “酷” 的 邮 箱 吗 ?
> 蕴 涵 中 华 传 统 文 化 于 世 界 一 流 科 技 之  
> 中,创 新 Ajax 技 术,126 “D 计 划”火 热 体 验  
> 中 !
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users



More information about the Insight-users mailing list