[Insight-developers] SubtractImageFilter strange behavior ?

Gaetan Lehmann gaetan.lehmann at jouy.inra.fr
Wed Nov 16 12:04:21 EST 2005


Hi,

I have done a morphological gradient image filter in which I use a  
SubtractImageFilter. Everything seems to work fine, but
when  I tried to remove the subtract filter and do the subtraction by  
hand, I don't get the same result.

This part of code:

   // Need to subtract the eroded image from the dialted one
   typename SubtractImageFilter<TInputImage, TInputImage,  
TOutputImage>::Pointer
     subtract=SubtractImageFilter<TInputImage,TInputImage,TOutputImage>::New();
   subtract->SetInput1( dilate->GetInput() );
   subtract->SetInput2( erode->GetOutput() );

   // graft our output to the subtract filter to force the proper regions
   // to be generated
   subtract->GraftOutput( this->GetOutput() );

   progress->RegisterInternalFilter(subtract,.1f);

   dilate->Update(); // needed to have the right progress values
   subtract->Update();

   // graft the output of the subtract filter back onto this filter's
   // output. this is needed to get the appropriate regions passed
   // back.
   this->GraftOutput( subtract->GetOutput() );


and this one

   dilate->Update();
   erode->Update();

   const TInputImage* inputPtr1 = dilate->GetOutput();
   const TInputImage* inputPtr2 = erode->GetOutput();
   const TInputImage* inputPtr = this->GetInput();
   TOutputImage* outputPtr = this->GetOutput();

   ImageRegionConstIterator<TInputImage> inputIt1(inputPtr1,  
inputPtr->GetRequestedRegion());
   ImageRegionConstIterator<TInputImage> inputIt2(inputPtr2,  
inputPtr->GetRequestedRegion());

   ImageRegionIterator<TOutputImage> outputIt(outputPtr,  
inputPtr->GetRequestedRegion());

   inputIt1.GoToBegin();
   inputIt2.GoToBegin();
   outputIt.GoToBegin();

   while( !inputIt1.IsAtEnd() )
     {
     outputIt.Set( static_cast< typename TOutputImage::PixelType
( inputIt1.Get() - inputIt2.Get() ) );
     ++inputIt2;
     ++inputIt1;
     ++outputIt;
     }


does not produce the same output.

Am I doing something wrong ?
Or is it a problem in SubtractImageFilter ?

Attached gradient.png is the result with the subtract filter.
http://voxel.jouy.inra.fr/darcs/contrib-itk/gradient/gradient.png is the  
result without the subtract filter.
The full code is available at  
http://voxel.jouy.inra.fr/darcs/contrib-itk/gradient/

Regards,

Gaetan

-- 
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr


More information about the Insight-developers mailing list