[Insight-users] Watersheds performace in Debug mode

Luis Ibanez luis.ibanez at kitware.com
Wed Aug 27 08:06:51 EDT 2008


Hi Wassim,


What are the characteristics of your image ?

1) Number of pixels in X, Y , Z ?
2) Pixel spacing in X, Y, Z ?
3) Pixel type ?


What arguments did you use in the command line ?


What are the characteristics of your computer ?

a) Processor & clock rate
b) Operating system
c) Compiler ?
d) Compilation options ? Relese/Debug ?
e) Amount of RAM memory ?


My guess is that your computer is currently
swapping memory...


   Please let us know, so we don't have to guess.


      Thanks


         Luis


--------------------------------
wassim_belhadj at topnet.tn wrote:
> Hi
> The code has been executed for more than 20 hours but nothing !!!!!!
> The code still running as it get stuck in a loop
> 
> 
> On Wed, 27 Aug 2008 11:20:07 +0000 (GMT), sara meghellati
> <sara_meghellati at yahoo.fr> wrote:
> 
>>Hi, 
>>the code that I have past and the one of Luis are both working. there is
>>nothing wrong with the code. it deos just take time to produce result and
>>this depends in your machine performance. for example I tried the code in
>>other computer P4,...and it still running for more than one hour
>>without producing the result, so I stoped it.  let your code run for
> 
> more
> 
>>time.
>>Cheers 
>>Sara
>>
>>--- En date de : Mer 27.8.08, wassim_belhadj at topnet.tn
>><wassim_belhadj at topnet.tn> a écrit :
>>
>>De: wassim_belhadj at topnet.tn <wassim_belhadj at topnet.tn>
>>Objet: Re: [Insight-users] Watersheds performace in Debug mode
>>À: "Luis Ibanez" <luis.ibanez at kitware.com>
>>Cc: sara_meghellati at yahoo.fr, "insight itk" <insight-users at itk.org>
>>Date: Mercredi 27 Août 2008, 8h40
>>
>>Hi 
>>I tried  the wathershed segmentation example applied to "Patient01"
>>from
>>http://public.kitware.com/pub/itk/Data/LiverTumor/.
>>The code still running as it get stuck in a loop. I used 0.001 for
>>threshold and 0.1 for the level parameter.
>>My CPU is Pentium 4, 3.00Ghz and 1Gb of Ram
>>How have you been able to Operate the example ?
>>I need Your Help Please.
>>This is the  source code  :
>>/**********************************************************************/
>>/**********************************************************************/
>>/**********************************************************************/
>>/**********************************************************************/
>>
>>#include "itkWatershedImageFilter.h"
>>#include "itkImage.h"
>>#include "itkImageFileReader.h"
>>#include "itkImageFileWriter.h"
>>#include "itkScalarToRGBPixelFunctor.h"
>>#include "itkUnaryFunctorImageFilter.h"
>>#include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
>>
>>
>>int main( int argc, char *argv[] )
>>{
>>
>>
>>  if( argc < 5 )
>>    {
>>    std::cerr << "Missing Parameters " << std::endl;
>>    std::cerr << "Usage: " << argv[0];
>>    std::cerr << " inputImage  outputImage lowerThreshold 
>>outputScaleLevel" << std::endl;
>>    return 1;
>>    }
>>
>>  typedef float                             InternalPixelType;
>>  typedef itk::RGBPixel<unsigned char>      RGBPixelType;
>>
>>  const   unsigned int                      Dimension = 3;
>>
>>
>>  typedef itk::Image< InternalPixelType,  Dimension >  InternalImageType;
>>  typedef itk::Image< RGBPixelType,       Dimension >  RGBImageType;
>>
>>                       
>>  //
>>  // We instantiate reader and writer types
>>  //
>>  typedef  itk::ImageFileReader< InternalImageType   >  ReaderType;
>>  typedef  itk::ImageFileWriter< RGBImageType  >        WriterType;
>>
>>  ReaderType::Pointer reader = ReaderType::New();
>>  WriterType::Pointer writer = WriterType::New();
>>
>>  reader->SetFileName( argv[1] );
>>  writer->SetFileName( argv[2] );
>>
>>
>>  //
>>  //  Instantiate the GradientMagnitude image filter
>>  //
>>  typedef   itk::GradientMagnitudeRecursiveGaussianImageFilter<
>>                                                     InternalImageType,
>>                                                     InternalImageType 
>>                                                          >
>>GradientMagnitudeFilterType;
>>
>>  GradientMagnitudeFilterType::Pointer gradienMagnitudeFilter =
>>GradientMagnitudeFilterType::New();
>>
>>  gradienMagnitudeFilter->SetInput( reader->GetOutput() );
>>  gradienMagnitudeFilter->SetSigma( 1.0 );
>>
>>
>>  //
>>  //  Instantiate the Watershed filter
>>  //
>>
>>  typedef  itk::WatershedImageFilter< 
>>                              InternalImageType 
>>                                            > WatershedFilterType;
>>
>>  WatershedFilterType::Pointer watershedFilter =
>>WatershedFilterType::New();
>>
>>  watershedFilter->SetInput( gradienMagnitudeFilter->GetOutput() );
>>
>>  watershedFilter->SetThreshold( atof( argv[3] ) );
>>  watershedFilter->SetLevel(     atof( argv[4] ) );
>>
>>
>>  //
>>  //  Instantiate the filter that will encode the label image
>>  //  into a color image (random color attribution).
>>  //
>>
>>  typedef itk::Functor::ScalarToRGBPixelFunctor< 
>>                                           unsigned long
>>                                                    >
> 
> ColorMapFunctorType;
> 
>>  typedef WatershedFilterType::OutputImageType  LabeledImageType;
>>
>>  typedef itk::UnaryFunctorImageFilter< 
>>                                LabeledImageType,
>>                                RGBImageType,
>>                                ColorMapFunctorType
>>                                                > ColorMapFilterType;
>>
>>  ColorMapFilterType::Pointer colorMapFilter = ColorMapFilterType::New();
>>
>>  colorMapFilter->SetInput(  watershedFilter->GetOutput() );
>>
>>  writer->SetInput( colorMapFilter->GetOutput() );
>>
>>  try
>>    {
>>    writer->Update();
>>    }
>>  catch( itk::ExceptionObject & excep )
>>    {
>>    std::cerr << "Exception caught !" << std::endl;
>>    std::cerr << excep << std::endl;
>>    }
>>
>>
>>  return 0;
>>
>>}
>>/**********************************************************************/
>>/**********************************************************************/
>>/**********************************************************************/
>>
>>
>>
>>
>>On Tue, 26 Aug 2008 11:04:50 -0400, Luis Ibanez <luis.ibanez at kitware.com>
>>wrote:
>>
>>>Sara,
>>>
>>>When reporting performance issues,
>>>please build first under *Release* mode.
>>>
>>>As Dan described, you can easily find differences of one order of
>>>magnitude between the performance on Debug and Release modes.
>>>
>>>This is mainly due to the heavy use we made of C++ templates in ITK.
>>>
>>>
>>>    Regards,
>>>
>>>
>>>        Luis
>>>
>>>
>>>-------------------------
>>>sara meghellati wrote:
>>>
>>>>No, it was in debug mode. I will give a try at release mode.
>>>>Thanks Dan.
>>>>Cheers
>>>>Sara
>>>>
>>>>--- En date de : *Mar 26.8.08, Dan Mueller
>>
>>/<dan.muel at gmail.com>/* a
>>
>>>écrit :
>>>
>>>>    De: Dan Mueller <dan.muel at gmail.com>
>>>>    Objet: Re: [Insight-users] nobody could answer me ? Fw : Please
>>>>    help:problem with wathershed segmentation applied to 3D grayscale
>>>
>>>Image
>>>
>>>>    À: sara_meghellati at yahoo.fr
>>>>    Cc: "Luis Ibanez" <luis.ibanez at kitware.com>,
>>
>>"insight itk"
>>
>>>>    <insight-users at itk.org>
>>>>    Date: Mardi 26 Août 2008, 10h42
>>>>
>>>>Hi Sara,
>>>>
>>>>Did you compile the code in Release mode? Compiling in Release mode
>>>>(as opposed to Debug mode) significantly improves performance...
>>>>
>>>>2008/8/26 sara meghellati <sara_meghellati at yahoo.fr>:
>>>>
>>>>>Dear Luis,
>>>>>I would like to thank you and all the other itk members who have
>>>
>>>replied
>>>
>>>>me
>>>>
>>>>>regarding my question.
>>>>>I have gave a try with your code. my CPU is Intel core 2, 2.41 Ghz
>>
>>and
>>
>>>2
>>>
>>>>Gb
>>>>
>>>>>of Ram. it takes nearly 34 minutes. So I have tried my code, its
>>>
>>>working
>>>
>>>>and
>>>>
>>>>>it takes also nearly 34 minutes. I used 0.001 for threshold and
>>
>>0.1 for
>>
>>>>the
>>>>
>>>>>level parameter.
>>>>>Sara
>>>>>Best regards
>>>>>
>>>>>--- En date de : Ven 22.8.08, Luis Ibanez
>>
>><luis.ibanez at kitware.com>
>>
>>>>a
>>>>
>>>>>écrit :
>>>>>
>>>>>De: Luis Ibanez <luis.ibanez at kitware.com>
>>>>>Objet: Re: [Insight-users] nobody could answer me ? Fw : Please
>>>>
>>>>help:problem
>>>>
>>>>>with wathershed segmentation applied to 3D grayscale Image
>>>>>À: sara_meghellati at yahoo.fr
>>>>>Cc: "insight itk" <insight-users at itk.org>
>>>>>Date: Vendredi 22 Août 2008, 18h59
>>>>>
>>>>>
>>>>>Hi Sara,
>>>>>
>>>>>Thanks for your detailed question regarding Watersheds.
>>>>>
>>>>>
>>>>>Please take a look at the attached code.
>>>>>
>>>>>It process the image "Patient01" from
>>>>>
>>>>>        http://public.kitware.com/pub/itk/Data/LiverTumor/.
>>>>>
>>>>>in a time of
>>>>>
>>>>>                    4 minutes 38 seconds.
>>>>>
>>>>>This was profiled in an QuadCore Intel Xeon 2.66 Ghz. (with 16Gb
>>
>>RAM).
>>
>>>>>(although the process uses only one of the cores)
>>>>>
>>>>>Note that the process peaks 1Gb of memory allocation when it is
>>>
>>>running.
>>>
>>>>>Depending on the configuration of your system, it may be that the
>>>
>>>program
>>>
>>>>>started swapping memory at some point.
>>>>>
>>>>>Please give a try at the attached code and let us know what you
>>
>>find.
>>
>>>>>
>>>>>     Regards,
>>>>>
>>>>>
>>>>>          Luis
>>>>>
>>>>>
>>>>>
>>>>
> -----------------------------------------------------------------------------------------------------------------------------------
> 
>>>>>On Fri, Aug 22, 2008 at 11:19 AM, sara meghellati
>>>>
>>>><sara_meghellati at yahoo.fr>
>>>>
>>>>>wrote:
>>>>>
>>>>>>I'm sending again my questions as nobody have answered me.
>>>>>>
>>>>>>--- En date de : Ven 22.8.08, sara meghellati
>>>>
>>>><sara_meghellati at yahoo.fr> a
>>>>
>>>>>>écrit :
>>>>>>
>>>>>>De: sara meghellati <sara_meghellati at yahoo.fr>
>>>>>>Objet: [Insight-users] Please help:problem with wathershed
>>>>
>>>>segmentation
>>>>
>>>>>>applied to 3D grayscale Image
>>>>>>À: "insight itk" <insight-users at itk.org>
>>>>>>Date: Vendredi 22 Août 2008, 13h48
>>>>>>
>>>>>>Dear itk experts,
>>>>>>
>>>>>>I'm segmenting a volume (3D grayscale image) using
>>
>>watershed
>>
>>>>method
>>>>
>>>>>>inspired from the WatershedSegmentation1
>>>>>>
>>>>>>(2D RGB image as input)example provided within itk.
>>>>>>
>>>>>>My code is well working for 2D grayscale images but when I
>>
>>change
>>
>>>>>>the dimension to 3, the code
>>>>>> still running as it get stuck in a
>>>>>>
>>>>>>loop!! I wait for more than 18min but no results!! Is it
>>
>>normal
>>
>>>>>>that this kind of segmentation takes age to give the result in
>>
>>3d
>>
>>>>>>image or there is some thing wrong with my code? Please could
>>
>>you help
>>
>>>>me
>>>>
>>>>>>on that? Also, how can I follow the progress of the code?
>>>>>>
>>>>>>I pass my code bellow. In this example I used the 3D data
>>
>>provided
>>
>>>>>>in http://public.kitware.com/pub/itk/Data/LiverTumor/.
>>>>>>
>>>>>>#include <iostream>
>>>>>>
>>>>>>#include "itkImage.h"
>>>>>>
>>>>>>#include
>>
>>"itkGradientAnisotropicDiffusionImageFilter.h"
>>
>>>>>#include "itkGradientMagnitudeImageFilter.h"
>>>>>
>>>>>#include "itkWatershedImageFilter.h"
>>>>>
>>>>>#include "itkImageFileReader.h"
>>>>>
>>>>>#include "itkImageFileWriter.h"
>>>>>
>>>>>#include "itkVectorCastImageFilter.h"
>>>>>
>>>>>#include "itkUnaryFunctorImageFilter.h"
>>>>>
>>>>>#include "itkScalarToRGBPixelFunctor.h"
>>>>>
>>>>>
>>>>>
>>>>>#include "itkVTKImageExport.h"
>>>>>
>>>>>#include "itkVTKImageImport.h"
>>>>>
>>>>>
>>>>>
>>>>>#include "vtkImageData.h"
>>>>>
>>>>>#include "vtkImageImport.h"
>>>>>
>>>>>#include "vtkImageExport.h"
>>>>>
>>>>>#include "vtkImageActor.h"
>>>>>
>>>>>#include "vtkRenderer.h"
>>>>>
>>>>>#include "vtkRenderWindow.h"
>>>>>
>>>>>#include "vtkRenderWindowInteractor.h"
>>>>>
>>>>>#include "vtkInteractorStyleTrackballCamera.h"
>>>>>
>>>>>#include "vtkImageShiftScale.h"
>>>>>
>>>>>
>>>>>
>>>>>// This function will connect the given itk::VTKImageExport filter
>>
>>to
>>
>>>the
>>>
>>>>>given vtkImageImport filter.
>>>>>
>>>>>template <typename ITK_Exporter, typename VTK_Importer>
>>>>>
>>>>>void ConnectPipelines(ITK_Exporter exporter, VTK_Importer*
>>
>>importer)
>>
>>>>>{
>>>>>
>>>>>
>>>>>
>>>>
> importer->SetUpdateInformationCallback(exporter->GetUpdateInformationCallback());
> 
>>>>>
>>>>>
> importer->SetPipelineModifiedCallback(exporter->GetPipelineModifiedCallback());
> 
>>>>> 
>>>>
>>importer->SetWholeExtentCallback(exporter->GetWholeExtentCallback());
>>
>>>>> 
>>
>>importer->SetSpacingCallback(exporter->GetSpacingCallback());
>>
>>>>> 
>>
>>importer->SetOriginCallback(exporter->GetOriginCallback());
>>
>>>>> 
>>>>
>>importer->SetScalarTypeCallback(exporter->GetScalarTypeCallback());
>>
>>>>>
>>>>>
> importer->SetNumberOfComponentsCallback(exporter->GetNumberOfComponentsCallback());
> 
>>>>>
>>>>>
> importer->SetPropagateUpdateExtentCallback(exporter->GetPropagateUpdateExtentCallback());
> 
>>>>> 
>>>>
>>importer->SetUpdateDataCallback(exporter->GetUpdateDataCallback());
>>
>>>>> 
>>>>
>>importer->SetDataExtentCallback(exporter->GetDataExtentCallback());
>>
>>>>> 
>>>>
>>importer->SetBufferPointerCallback(exporter->GetBufferPointerCallback());
>>
>>>>> 
>>
>>importer->SetCallbackUserData(exporter->GetCallbackUserData());
>>
>>>>>}
>>>>>
>>>>>
>>>>>
>>>>>int main( )
>>>>>
>>>>>{
>>>>>
>>>>>      typedef itk::Image<float, 3>           ImageType;
>>>>>
>>>>>      typedef itk::Image<unsigned long, 3>  
>>
>>LabeledImageType;
>>
>>>>>      typedef itk::Image<float, 3>          
>>
>>ScalarImageType;
>>
>>>>>      // for visualization purposes
>>>>>
>>>>>      typedef itk::RGBPixel<unsigned char>   RGBPixelType;
>>>>>
>>>>>      typedef itk::Image<RGBPixelType, 3>    RGBImageType;
>>>>>
>>>>>
>>>>>
>>>>>      typedef itk::ImageFileReader<ImageType>
>>
>>FileReaderType;
>>
>>>>>      typedef
>>
>>itk::GradientAnisotropicDiffusionImageFilter<ImageType,
>>
>>>>>ImageType>  DiffusionFilterType;
>>>>>
>>>>>      typedef
>>
>>itk::GradientMagnitudeImageFilter<ImageType,ImageType>
>>
>>>>>GradientMagnitudeFilterType;
>>>>>
>>>>>      typedef itk::WatershedImageFilter<ScalarImageType>
>>>>>WatershedFilterType;
>>>>>
>>>>>      typedef itk::ImageFileWriter<RGBImageType>
>>
>>FileWriterType;
>>
>>>>>
>>>>>
>>>>>      FileReaderType::Pointer reader = FileReaderType::New
>>>>>
>>>>>      reader->SetFileName(
>>
>>"c:/images/3DImages/Patient01.mhd"
>>
>>>> );
>>>>
>>>>>     
>>>>
>>//reader->SetFileName("c:/Images/BrainProtonDensitySlice.png");
>>
>>>>>
>>>>>
>>>>>      DiffusionFilterType::Pointer diffusion =
>>>
>>>DiffusionFilterType::New();
>>>
>>>>>      diffusion->SetNumberOfIterations( atoi("10") );
>>>>>
>>>>>      diffusion->SetConductanceParameter( atof("2.0")
>>
>>);
>>
>>>>>      diffusion->SetTimeStep(0.0625);
>>>>>
>>>>>
>>>>>
>>>>>      GradientMagnitudeFilterType::Pointer gradient =
>>>>>GradientMagnitudeFilterType::New();
>>>>>
>>>>>
>>>>>
>>>>>      WatershedFilterType::Pointer watershed =
>>>
>>>WatershedFilterType::New();
>>>
>>>>>      watershed->SetLevel( atof("0.15") );
>>>>>
>>>>>      watershed->SetThreshold( atof("0.001") );
>>>>>
>>>>>      typedef itk::Functor::ScalarToRGBPixelFunctor<unsigned
>>
>>long>
>>
>>>>>ColorMapFunctorType;
>>>>>
>>>>>      typedef itk::UnaryFunctorImageFilter<LabeledImageType,
>>>>>RGBImageType, ColorMapFunctorType> ColorMapFilterType;
>>>>>
>>>>>      ColorMapFilterType::Pointer colormapper =
>>>
>>>ColorMapFilterType::New();
>>>
>>>>>
>>>>>
>>>>>      FileWriterType::Pointer writer = FileWriterType::New();
>>>>>
>>>>>     
>>
>>writer->SetFileName("c:/Images/WatershedSegImg.mhd");
>>
>>>>>
>>>>>
>>>>>      diffusion->SetInput(reader->GetOutput());
>>>>>
>>>>>      gradient->SetInput(diffusion->GetOutput());
>>>>>
>>>>>      watershed->SetInput(gradient->GetOutput());
>>>>>
>>>>>      colormapper->SetInput(watershed->GetOutput());
>>>>>
>>>>>      writer->SetInput(colormapper->GetOutput());
>>>>>
>>>>>      writer->Update();
>>>>>
>>>>>
>>>>>
>>>>>try
>>>>>
>>>>>    {
>>>>>
>>>>>            writer->Update();
>>>>>
>>>>>    }
>>>>>
>>>>>  catch (itk::ExceptionObject &e)
>>>>>
>>>>>    {
>>>>>
>>>>>            std::cerr << e << std::endl;
>>>>>
>>>>>    }
>>>>>
>>>>>
>>>>>
>>>>>  return 0;
>>>>>
>>>>>
>>>>>
>>>>>}
>>>>>
>>>>>Thanks
>>>>>
>>>>>Sara
>>>>
>>>>
>>>>
>>------------------------------------------------------------------------
>>
>>>>Envoyé avec Yahoo! Mail 
>>>>
>>>
> <http://us.rd.yahoo.com/mailuk/taglines/isp/control/*http://us.rd.yahoo.com/evt=52423/*http://fr.docs.yahoo.com/mail/overview/index.html>.
> 
>>>>Une boite mail plus intelligente.
>>>
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users at itk.org
>>>http://www.itk.org/mailman/listinfo/insight-users
>>>
>>
>>
>>
>>
>>     
>>
> 
> _____________________________________________________________________________
> 
>>Envoyez avec Yahoo! Mail. Une boite mail plus intelligente
>>http://mail.yahoo.fr
> 
> 
> 


More information about the Insight-users mailing list