[Insight-users] Brain centering routine ? | MidSagittalPlaneExtractionImageFilter

Luis Ibanez luis.ibanez at kitware.com
Wed Aug 24 16:52:08 EDT 2005


Hi Xueling,

The MidSaggitalPlaneExtractionImageFilter have lacked
a test since it was contributed to the toolkit two years
ago and as a consequence it has remained in an archaic
state while the toolkit was evolving.


At this point the class will need to be fully rewritten...


A bug report has been logged now for this issue:

Bug # 2185
http://public.kitware.com/Bug/bug.php?op=show&bugid=2185&pos=0


We apologize for having hosted this broken code for so long.


    Regards,


      Luis


-----------------
Xueling Lu wrote:
> Hi, Luis:
> 
> I was trying to use MidSagittalPlaneExtractionImageFilter, but somehow 
> the filter itself can not be compiled.  As you can see from the code 
> below, I have reduced the code to simply instantiating the filter.
> 
> #include "itkMidsagittalPlaneExtractionImageFilter.h"
> #include "itkImage.h"
> #include "itkImageFileReader.h"
> #include "itkImageFileWriter.h"
> 
> int main( int argc, char * argv[] )
> {
>   
>   typedef short      PixelType;
>   const   unsigned int  Dimension = 3;
>   typedef itk::Image< PixelType, Dimension >    ImageType;
>     
>   typedef itk::MidsagittalPlaneExtractionImageFilter<ImageType, 
> ImageType > FilterType;
> 
>   FilterType::Pointer filter = FilterType::New();
>   return 0;
> }
> 
> When I run the compiling (in Solaris 2.8, using G++ 3.1), I got the 
> following error:
> 
> Building object file CenterImageFilter.o...
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx: 
> In
>    member function `void
>    itk::MidsagittalPlaneExtractionImageFilter<TInputImage,
>    TOutputImage>::GenerateData() [with TInputImage = main(int,
>    char**)::ImageType, TOutputImage = main(int, char**)::ImageType]':
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:104: 
> cannot
>    convert `const itk::Vector<double, 3>' to `const double*' in assignment
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:116: 
> warning: assignment
>     to `unsigned int' from `double'
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:116: 
> warning: argument
>     to `unsigned int' from `double'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:117: 
> warning: assignment
>     to `unsigned int' from `double'
> .../src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:117: 
> warning: argument
>     to `unsigned int' from `double'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:123: 
> warning: passing
>    `double' for argument 1 of `void
>    itk::CannyEdgeDetectionImageFilter<TInputImage,
>    TOutputImage>::SetThreshold(TOutputImage::PixelType) [with TInputImage =
>    main(int, char**)::ImageType, TOutputImage = main(int, 
> char**)::ImageType]'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:151: 
> no
>    matching function for call to `itk::Image<double, 3>::
>    SetPhysicalToIndexTransform(itk::SmartPointer<itk::AffineTransform<double, 
> 
>    3> >&)'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:152: 
> no
>    matching function for call to `itk::Image<double, 3>::
>    SetIndexToPhysicalTransform(itk::SmartPointer<itk::AffineTransform<double, 
> 
>    3> >&)'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:163: 
> no
>    matching function for call to `
>    itk::MidsagittalPlaneExtractionImageFilter<main(int, char**)::ImageType,
>    main(int, char**)::ImageType>::estimateAngle(itk::SmartPointer<const
>    itk::Image<double, 3> >)'
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:719: 
> candidates
>    are: itk::estimateType*
>    itk::MidsagittalPlaneExtractionImageFilter<TInputImage,
>    TOutputImage>::estimateAngle(itk::ImageToImageFilter<TInputImage,
>    TOutputImage>::InputImageConstPointer) [with TInputImage = main(int,
>    char**)::ImageType, TOutputImage = main(int, char**)::ImageType]
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:224: 
> no
>    matching function for call to `itk::Image<double, 3>::
>    SetPhysicalToIndexTransform(itk::SmartPointer<itk::AffineTransform<double, 
> 
>    3> >&)'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:225: 
> no
>    matching function for call to `itk::Image<double, 3>::
>    SetIndexToPhysicalTransform(itk::SmartPointer<itk::AffineTransform<double, 
> 
>    3> >&)'
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:243: 
> no
>    matching function for call to `
>    itk::MidsagittalPlaneExtractionImageFilter<main(int, char**)::ImageType,
>    main(int, char**)::ImageType>::estimateAngle(itk::SmartPointer<const
>    itk::Image<double, 3> >)'
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:719: 
> candidates
>    are: itk::estimateType*
>    itk::MidsagittalPlaneExtractionImageFilter<TInputImage,
>    TOutputImage>::estimateAngle(itk::ImageToImageFilter<TInputImage,
>    TOutputImage>::InputImageConstPointer) [with TInputImage = main(int,
>    char**)::ImageType, TOutputImage = main(int, char**)::ImageType]
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:290: 
> no
>    matching function for call to `
>    itk::MidsagittalPlaneExtractionImageFilter<main(int, char**)::ImageType,
>    main(int, char**)::ImageType>::estimateShift(itk::Image<double, 3>*)'
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:1005: 
> candidates
>    are: double itk::MidsagittalPlaneExtractionImageFilter<TInputImage,
>    TOutputImage>::estimateShift(itk::ImageToImageFilter<TInputImage,
>    TOutputImage>::InputImageConstPointer) [with TInputImage = main(int,
>    char**)::ImageType, TOutputImage = main(int, char**)::ImageType]
> .../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:308: 
> `
>    printVolumeTo' undeclared (first use this function)
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:308: 
> (Each
>    undeclared identifier is reported only once for each function it appears
>    in.)
> ../ITK/src/InsightToolkit-2.0.0/Utilities/itksys/SystemTools.hxx:188: 
>   instantiated from here
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:316: 
> no
>    matching function for call to `
>    itk::MidsagittalPlaneExtractionImageFilter<main(int, char**)::ImageType,
>    main(int, char**)::ImageType>::estimateShift(itk::Image<double, 3>*)'
> .../ITK/src/InsightToolkit-2.0.0/Code/BasicFilters/itkMidsagittalPlaneExtractionImageFilter.txx:1005: 
> candidates
>    are: double itk::MidsagittalPlaneExtractionImageFilter<TInputImage,
>    TOutputImage>::estimateShift(itk::ImageToImageFilter<TInputImage,
>    TOutputImage>::InputImageConstPointer) [with TInputImage = main(int,
>    char**)::ImageType, TOutputImage = main(int, char**)::ImageType]
> make[1]: *** [CenterImageFilter.o] Error 1
> make: *** [default_target] Error 2
> 
> What do you think, what is the correct way to call that filter?
> 
> Thanks a lot.
> 
> Xueling
> 
> 
> 
> 
> On 7/18/05 12:20 PM, "Luis Ibanez" <luis.ibanez at kitware.com> wrote:
> 
>  >
>  > Hi Xueling,
>  >
>  > Please look at the "MidsagittalPlaneExtraction" filter
>  >
>  > 
> http://www.itk.org/Insight/Doxygen/html/classitk_1_1MidsagittalPlaneExtraction
>  > ImageFilter.html
>  >
>  > Once you get the coordinates of the plane, you could
>  > use it for centering the brain images.
>  >
>  > I guess that you have two brain images, so probably
>  > a Transform that overlaps the mid-sagittal planes
>  > of both images.
>  >
>  >
>  >   Regards,
>  >
>  >
>  >      Luis
>  >
>  >
>  >
>  > -------------------
>  > Xueling Lu wrote:
>  >
>  >> Hi,
>  >>
>  >> I came to know ITK a few months ago and have been trying to use some 
> of the
>  >> registration routines. I wonder if ITK has a function that does brain
>  >> centering. That is, position the brain in such a way that it 
> maximizes the
>  >> similarity between the right and left hemisphere.
>  >>
>  >> Thanks.
>  >>
>  >> Xueling
>  >>  
>  >>
>  >> _______________________________________________
>  >> 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