[Insight-users] Watershed Segmentation - problem running itkWSRawToPNG.cxx
Luis Ibanez
luis.ibanez at kitware.com
Mon, 01 Mar 2004 22:14:29 -0500
Hi Neha,
There is no reason for a writer to produce
an image of zero size. Unless an exception
is thrown during the writing process, or
it is actually receiving an image with a
region of size zero.
Please do the following experiment:
Use the example in
Insight/Examples/Segmentation/
WatershedSegmentation1.cxx
for processing your (256 x 256) image.
and let us know what you get.
Thanks
Luis
----------------
neha k wrote:
> Hi Luis,
>
> Initially, While trying program "itkWatershedSegmentationExample.cxx" I
> used very small PGM file (24*7) just to see the working of above
> program, and it gave me 5 output files of RAW format(With Level = 0.50)
> for Level values 0.10, 0.20...0.50
>
> But yet I do not know how the original file looks lilke. I tried to use
> second program "itkWSRawToPNG.cxx" to see the output in PNG format but
> it crashes on reader->update().
>
> I am currently reading "Breast.raw" (256*256 - unsigned short-little
> endian) using MetaImage Reader, then apply
> AnisotropicDiffusionFilter and then GradientFilter on it.
> Here, I checked by writing the output of those to a file and it gives me
> correct output with AnisotropicDiffusionFilter->GradientFilter->writer.
>
> But when I apply watershed as -
> AnisotropicDiffusionFilter->GradientFilter->watershed->writer
>
> I get the output file of 0 bytes
>
> I have added the lines suggested by you as follows: (Pls. scroll down
> for complete code)
>
> watershed->SetThreshold(threshold);
> watershed->SetLevel(floodLevel);
> watershed->SetInput(gradientFilter->GetOutput());
> watershed->Update();
> watershed->GetInput()->Print( std::cout );
> watershed->GetOutput()->Print( std::cout );
> writer->SetInput(watershed->GetOutput());
> writer->update();
>
> I have attached a word file containing the output of above.
>
> My Questions
> ---------------------
> 1. To see the segmented output, should I convert output of
> watershed(after getting file size of original input file), to PNG format?
> 2. What is missing in the my program ?
>
> Please let me know what is going wrong. Thank you very much,
>
> Neha
>
>
> */Luis Ibanez <luis.ibanez at kitware.com>/* wrote:
>
>
> 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 answe r='y', inputFile[255]="breast.mhd", //256*256-little
> endian
> > 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 LabeledImageType;
> >
> > typedef itk::Image ScalarImageType;
> >
> > typedef itk::Image WriteImageType;
> >
> > typedef itk::GradientAnisotropicDiffusionImageFilter
> > OutputImageType > FilterType;
> >
> > FilterType::Pointer filter = FilterType::New();
> >
> > // Instantiate Gradient Magnitude Filter typedef
> > itk::GradientMagnitudeImageFilter
> >
> > GradientFilterType;
> >
> > GradientFilterType::Pointer gradientF ilter =
> GradientFilterType::New();
> >
> > typedef itk::WatershedImageFilter 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 /* 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, n eha 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 for mat 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
> > >
> & gt; > 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
> > *
>
>
>
> _______________________________________________
> 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>
> {\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose
> 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2
> Times New Roman CE;} {\f37\froman\fcharset204\fprq2 Times New Roman
> Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman
> Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman
> Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);}
> {\f42\froman\fcharset178\fprq2 Times New Roman
> (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman
> Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman
> (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
> \red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
> \red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql
> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
> \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0
> Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph
> Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
> \ql
> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
> \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11
> \ssemihidden Normal Table;}}{\*\rsidtbl
> \rsid11687438\rsid15806933}{\*\generator Microsoft Word
> 10.0.3416;}{\info {\author shilpa}{\operator
> shilpa}{\creatim\yr2004\mo3\dy1\hr17\min44}{\revtim\yr2004\mo3\dy1\hr17\min45}{\version2}{\edmins1}{\nofpages2}{\nofwords294}{\nofchars1678}{\*\company
> WPI}{\nofcharsws1969}{\vern16453}}
> \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale90\nolnhtadjtbl\rsidroot15806933
> \fet0\sectd \linex0\sectdefaultcl\sftnbj
> {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta
> .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta
> .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta
> .}}{\*\pnseclvl4 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxta
> )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta
> )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta
> )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (} {\pntxta
> )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta
> )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta
> )}}\pard\plain \ql
> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15806933
> \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
> {\insrsid15806933\charrsid15806933 Enter Input File Name with
> extention(.mhd) only -->c:\\breast.mhd \par Enter Output File Name with
> extention(.mhd) only -->c:\\breast_segment.mhd}{\insrsid15806933 \par
> ----------------------------------------------------------------------------------------------------}{\insrsid15806933\charrsid15806933
> \par Image (00225EE0) \par Reference Count: 3 \par Modified Time: 147
> \par Debug: Off \par Observers: \par none \par Source: (00225660) \par
> Source output index: 0 \par Release Data: Off \par Data Released: False
> \par Global Release Data: Off \par PipelineMTime: 133 \par UpdateTime:
> 149 \par LastRequestedRegionWasOutsideOfTheBufferedRegion: 0 \par
> LargestPossibleRegion: \par Dimension: 2 \par Index: [0, 0] \par Size:
> [256, 256] \par BufferedRegion: \par Dimension: 2 \par Index: [0, 0]
> \par Size: [256, 256] \par RequestedRegion: \par Dimension: 2 \par
> Index: [0, 0] \par Size: [256, 256] \par Origin: [0, 0] \par Spacing:
> [0.703, 0.585] \par PixelContainer: ImportImageContainer (002254C8) \par
> Reference Count: 2 \par Modified Time: 148 \par Debug: Off \par
> Observers: \par none \par Pointer: 002254F4 \par Container manages
> memory: true \par Size: 65536 \par Capacity: 65536 \par \par Image
> (00226DB8) \par Reference Count: 1 \par Modified Time: 190 \par Debug:
> Off \par Observers: \par none \par Source: (00226068) \par Source output
> index: 0 \par Release Data: Off \par Data Released: False \par Global
> Release Data: Off \par PipelineMTime: 133 \par UpdateTime: 191 \par
> LastRequestedRegionWasOutsideOfTheBufferedRegion: 1 \par
> LargestPossibleRegion: \par Dimension: 2 \par Index: [0, 0] \par Size:
> [256, 256] \par BufferedRegion: \par Dimension: 2 \par Index: [0, 0]
> \par Size: [256, 256] \par RequestedRegion: \par Dimension: 2 \par
> Index: [0, 0] \par Size: [256, 256] \par Origin: [0, 0] \par Spacing:
> [0.703, 0.585] \par PixelContainer: ImportImageContainer (01A9FFC0) \par
> Reference Count: 3 \par Modified Time: 187 \par Debug: Off \par
> Observers: \par none \par Pointer: 01A9FFEC \par Container manages
> memory: true \par Size: 65536 \par Capacity: 65536 \par
> }{\insrsid15806933
> ----------------------------------------------------------------------------------------------------}{\insrsid15806933\charrsid15806933
> \par \par File succesfully writen ! \par Press any key to
> continue}{\insrsid15806933\charrsid15806933 \par }}