[Insight-users] Watersheds performace in Debug mode

wassim_belhadj at topnet.tn wassim_belhadj at topnet.tn
Wed Aug 27 07:33:56 EDT 2008


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