[Insight-users] Watershed Segmentation - problem running itkWSRawToPNG.cxx
Luis Ibanez
luis.ibanez at kitware.com
Sat, 28 Feb 2004 11:07:33 -0500
Hi Neha,
If your image size really
24 pixels by 7 pixels ?
The chances of getting any significant
segmentation from such a small image are
very slim.
You said that the output of the GradientMagnitude
filter is working ok, did you verified this by
saving the image to a file ?
Could you please add the lines:
watershed->Update();
watershed->GetInput()->Print( std::cout );
watershed->GetOutput()->Print( std::cout );
Put this lines just before you invoke the writer's
Update() method, execute the program and post the
results to the list.
Thanks
Luis
-----------------
neha k wrote:
> Hi Luis,
>
> Due to problem in example program itkWSRawToPNG.cxx, I have written
> following simple code for experiment to work on RAW grayscale file. I
> am using this pipeline of filters->
> reader--->AnisotropicDiffusionFilter--->GradientMagnitudeFilter--->WaterShed
>
> Problem is : Output file is of "0" Bytes. But From
> GradientMagnitudeFilter, I get desired output. But watershed does not
> give output file of original input size, instead it is Zero.
> I tried with 3 different values for conductance_term, threshold and
> Level. But still the output file has 0 bytes.
>
> Please let me know if I am missing anything while using watershed.
>
> Following the simple code i am using ->
> ***********************************************************************************
>
> void segment()
>
> {
>
> _// declarations_
>
> int threshold = 0.30, floodLevel = 0.50;
>
> int noOfIterations = 3, retVal = 1, checkExtn =0;
>
> char answer='y', inputFile[255]="breast.mhd",
> outputFile[255]="breast_op.mhd";
>
> float timeStep = 0.25,
>
> conductance = 5.0;
>
> typedef itk::Image< InputPixelType, 2 > InputImageType; // float type
>
> typedef itk::Image< OutputPixelType, 2 > OutputImageType; // float type
>
> typedef itk::Image<unsigned long, 2> LabeledImageType;
>
> typedef itk::Image<float, 2> ScalarImageType;
>
> typedef itk::Image<unsigned long, 2> WriteImageType;
>
> typedef itk::GradientAnisotropicDiffusionImageFilter<InputImageType,
> OutputImageType > FilterType;
>
> FilterType::Pointer filter = FilterType::New();
>
> // Instantiate Gradient Magnitude Filter typedef
> itk::GradientMagnitudeImageFilter<InputImageType, OutputImageType>
>
> GradientFilterType;
>
> GradientFilterType::Pointer gradientFilter = GradientFilterType::New();
>
> typedef itk::WatershedImageFilter<ScalarImageType> WatershedFilterType;
>
> WatershedFilterType::Pointer watershed = WatershedFilterType::New();
>
> typedef itk::ImageFileWriter< WriteImageType > WriterType; // write
> output image as short - use rescaler
>
> WriterType::Pointer writer = WriterType::New();
>
> typedef itk::ImageFileReader< InputImageType > ReaderType; // read input
> image as float
>
> ReaderType::Pointer reader = ReaderType::New();
>
> reader->SetFileName(inputFile);
>
> writer->SetFileName( outputFile );
>
> _// Read Input Image of RAW Type (uses MetaImage Header)_
>
> try { reader->Update(); }
>
> catch( itk::ExceptionObject & e ) {
>
> std::cerr << "Exception caught during Raw file reading " << std::endl;
>
> std::cerr << e << std::endl;
>
> std::cout<< "\n\nMake Sure if the file name you specified already
> exists...\n";
>
> return -1;
>
> }
>
> _// First apply Edge Preserving smoothing filter "Anisotropic Diffusion
> Filter"_
>
> filter->SetInput( reader->GetOutput() );
>
> filter->SetIterations(noOfIterations); // default value -> 3
>
> filter->SetConductanceParameter(conductance); // default value -> 5.0
>
> filter->SetTimeStep(timeStep); // default value -> 0.25 for 2-D image
>
> _// Pass the output of Anisotropic Diffusion Filter to
> GradientMagnitudeFilter_
>
> gradientFilter->SetInput( filter->GetOutput() );
>
> _// Apply Watershed Segmentation_
>
> watershed->SetInput(gradientFilter->GetOutput());
>
> watershed->SetThreshold(threshold); // 0.30
>
> watershed->SetLevel(floodLevel); // 0.50
>
> writer->SetInput(watershed->GetOutput());
>
> _// Execute the pipeline_
>
> try { writer->Update(); }
>
> catch( itk::ExceptionObject & excep ){
>
> std::cerr << "Exception caught !" << std::endl;
>
> std::cerr << excep << std::endl;
>
> retVal = -1;
>
> }
>
> }
>
>
> ***********************************************************************************
>
> */Joshua Cates <cates at sci.utah.edu>/* wrote:
>
> Hi,
>
> Thanks for the feedback on the watershed example. This code is old and
> probably in need of updating for more recent developments in the ITK IO
> classes. I will take a look.
>
> Josh.
>
> On Mon, 23 Feb 2004, neha k wrote:
>
> >
> > Hi All,
> >
> > I am trying to run exampleI programs in Watershed segmetnation. I
> tried
> > the example program with Input file as PGM file (in.pgm) which is of
> > size (24*7). When I run itkWatershedSegmentationExample.cxx, I get 5
> > output files of raw format (with level = 0.50). When I set any of
> those
> > 5 output files as an input file to second program
> itkWSRawToPNG.cxx so
> > that I can convert it to png file to view, program crashes( on
> statement
> > reader_update()). What should be the input file given to this second
> > program? Also, if i want to segment the raw br est images, what
> reader
> > should I use and how should i generate the output files? What
> filters,
> > mappers should I use to apply watershed segmentation on grayscale
> breast
> > images of Raw format to find out if there is any lesion inside
> the brest
> > image? (Currently, I am using MetaImageReader to apply other ITK
> filters
> > on breast images.)
> >
> > Any suggestions are appreiated.
> >
> > My input PGM file is as follows
> >
> >
> ***************************************************************************************
> >
> > P2
> >
> > 24 7
> >
> > 15
> >
> > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> >
> > 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0
> >
> > 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0
> >
> > 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0
> >
> > 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0
> > *> 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0
> >
> > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> >
> >
> >
> >
> ***************************************************************************************
>
> >
> > Thanks,
> >
> > Neha
> >
> >
> > ---------------------------------
> > Do you Yahoo!?
> > Yahoo! Mail SpamGuard - Read only the mail you want.
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users*
>
> ------------------------------------------------------------------------
> *Do you Yahoo!?
> Get better spam protection with Yahoo! Mail
> <http://us.rd.yahoo.com/mailtag_us/*http://antispam.yahoo.com/tools> *