[Insight-users] Watersheds performace in Debug mode

wassim_belhadj at topnet.tn wassim_belhadj at topnet.tn
Wed Aug 27 08:20:16 EDT 2008


Thank you very much for your reply

I tried  the wathershed segmentation example applied to "Patient01" from
http://public.kitware.com/pub/itk/Data/LiverTumor/ so :

Number of pixels in X, Y , Z  is 512 512 35
ElementSpacing = 0.601563 0.601563 5
Pixel type  is MET_USHORT

My CPU is Pentium 4, 3.00Ghz and 1Gb of Ram


The comand line was  : Watersheds3D.exe Patient01.mhd ResSegmentation.mhd
0.001 0.1


Thank you in advance


On Wed, 27 Aug 2008 08:06:51 -0400, Luis Ibanez <luis.ibanez at kitware.com>
wrote:
> 
> 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