[Insight-users] Watershed Segmentation - running itkWatershedSegment1.cxx
neha k
itkneha1 at yahoo.com
Wed, 3 Mar 2004 06:59:37 -0800 (PST)
--0-2050572023-1078325977=:63756
Content-Type: text/plain; charset=us-ascii
Hi Luis,
Thanks for the suggestion. The example program in ITK/Examples/Segmentation/itkWatershedSegment1.cxx is working properly for breast image. I get RGB output image.
I have one question about above example. I input the breast image as MetaHeader image (breast.mhd). Is it correct to read this image as RGB pixel type(program reads image as RGB pixel type) when input image grayscale raw image?. I am little confused here.
Now about problem in my program of getting output of 0 bytes, should I try to convert the output of watershed to RGB pixel similar to one in above example program. What itk class should I use? (input breast images are grayscale raw images)
Thanks,
Neha
Luis Ibanez <luis.ibanez at kitware.com> wrote:
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 /* 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
>
> {\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 }}
_______________________________________________
Insight-users mailing list
Insight-users at itk.org
http://www.itk.org/mailman/listinfo/insight-users
---------------------------------
Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online
--0-2050572023-1078325977=:63756
Content-Type: text/html; charset=us-ascii
<DIV>Hi Luis,</DIV>
<DIV> </DIV>
<DIV>Thanks for the suggestion. The example program in ITK/Examples/Segmentation/itkWatershedSegment1.cxx is working properly for breast image. I get RGB output image. </DIV>
<DIV> </DIV>
<DIV>I have one question about above example. I input the breast image as MetaHeader image (breast.mhd). Is it correct to read this image as RGB pixel type(program reads image as RGB pixel type) when input image grayscale raw image?. I am little confused here. </DIV>
<DIV> </DIV>
<DIV>Now about problem in my program of getting output of 0 bytes, should I try to convert the output of watershed to RGB pixel similar to one in above example program. What itk class should I use? (input breast images are grayscale raw images)</DIV>
<DIV> </DIV>
<DIV>Thanks,</DIV>
<DIV>Neha <BR><BR><B><I>Luis Ibanez <luis.ibanez at kitware.com></I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid"><BR>Hi Neha,<BR><BR><BR>There is no reason for a writer to produce<BR>an image of zero size. Unless an exception<BR>is thrown during the writing process, or<BR>it is actually receiving an image with a<BR>region of size zero.<BR><BR><BR><BR>Please do the following experiment:<BR><BR>Use the example in<BR><BR>Insight/Examples/Segmentation/<BR>WatershedSegmentation1.cxx<BR><BR><BR>for processing your (256 x 256) image.<BR>and let us know what you get.<BR><BR><BR><BR>Thanks<BR><BR><BR>Luis<BR><BR><BR><BR><BR>----------------<BR>neha k wrote:<BR><BR>> Hi Luis,<BR>> <BR>> Initially, While trying program "itkWatershedSegmentationExample.cxx" I <BR>> used very small PGM file (24*7) just to see the working of above <BR>> program, and it gave me 5 output files of RAW format(With Level = 0.50) <BR>> for Level values 0.10, 0.20...0.50<BR>> <BR>> But yet I do not know how
the original file looks lilke. I tried to use <BR>> second program "itkWSRawToPNG.cxx" to see the output in PNG format but <BR>> it crashes on reader->update().<BR>> <BR>> I am currently reading "Breast.raw" (256*256 - unsigned short-little <BR>> endian) using MetaImage Reader, then apply <BR>> AnisotropicDiffusionFilter and then GradientFilter on it.<BR>> Here, I checked by writing the output of those to a file and it gives me <BR>> correct output with AnisotropicDiffusionFilter->GradientFilter->writer.<BR>> <BR>> But when I apply watershed as -<BR>> AnisotropicDiffusionFilter->GradientFilter->watershed->writer<BR>> <BR>> I get the output file of 0 bytes<BR>> <BR>> I have added the lines suggested by you as follows: (Pls. scroll down <BR>> for complete code)<BR>> <BR>> watershed->SetThreshold(threshold);<BR>> watershed->SetLevel(floodLevel); <BR>>
watershed->SetInput(gradientFilter->GetOutput());<BR>> watershed->Update();<BR>> watershed->GetInput()->Print( std::cout );<BR>> watershed->GetOutput()->Print( std::cout ); <BR>> writer->SetInput(watershed->GetOutput()); <BR>> writer->update();<BR>> <BR>> I have attached a word file containing the output of above.<BR>> <BR>> My Questions<BR>> ---------------------<BR>> 1. To see the segmented output, should I convert output of <BR>> watershed(after getting file size of original input file), to PNG format?<BR>> 2. What is missing in the my program ?<BR>> <BR>> Please let me know what is going wrong. Thank you very much,<BR>> <BR>> Neha<BR>> <BR>> <BR>> */Luis Ibanez <LUIS.IBANEZ at KITWARE.COM>/* wrote:<BR>> <BR>> <BR>> Hi Neha,<BR>> <BR>> <BR>> If your image size really<BR>> <BR>> 24 pixels by 7 pixels ?<BR>> <BR>> <BR>> The chances of getting any
significant<BR>> segmentation from such a small image are<BR>> very slim.<BR>> <BR>> <BR>> You said that the output of the GradientMagnitude<BR>> filter is working ok, did you verified this by<BR>> saving the image to a file ?<BR>> <BR>> <BR>> <BR>> Could you please add the lines:<BR>> <BR>> watershed->Update();<BR>> watershed->GetInput()->Print( std::cout );<BR>> watershed->GetOutput()->Print( std::cout );<BR>> <BR>> Put this lines just before you invoke the writer's<BR>> Update() method, execute the program and post the<BR>> results to the list.<BR>> <BR>> <BR>> <BR>> Thanks<BR>> <BR>> <BR>> Luis<BR>> <BR>> <BR>> <BR>> -----------------<BR>> neha k wrote:<BR>> <BR>> > Hi Luis,<BR>> ><BR>> > Due to problem in example program itkWSRawToPNG.cxx, I have written<BR>> > following simple code for experiment to work on RAW grayscale<BR>> file. I<BR>>
> am using this pipeline of filters-><BR>> ><BR>> reader--->AnisotropicDiffusionFilter--->GradientMagnitudeFilter--->WaterShed<BR>> ><BR>> > Problem is : Output file is of "0" Bytes. But From<BR>> > GradientMagnitudeFilter, I get desired output. But watershed does<BR>> not<BR>> > give output file of original input size, instead it is Zero.<BR>> > I tried with 3 different values for conductance_term, threshold and<BR>> > Level. But still the output file has 0 bytes.<BR>> ><BR>> > Please let me know if I am missing anything while using watershed.<BR>> ><BR>> > Following the simple code i am using -><BR>> ><BR>> ***********************************************************************************<BR>> ><BR>> > void segment()<BR>> ><BR>> > {<BR>> ><BR>> > _// declarations_<BR>> ><BR>> > int threshold = 0.30, floodLevel = 0.50;<BR>>
><BR>> > int noOfIterations = 3, retVal = 1, checkExtn =0;<BR>> ><BR>> > char answe r='y', inputFile[255]="breast.mhd", //256*256-little<BR>> endian<BR>> > outputFile[255]="breast_op.mhd";<BR>> ><BR>> > float timeStep = 0.25,<BR>> ><BR>> > conductance = 5.0;<BR>> ><BR>> > typedef itk::Image< InputPixelType, 2 > InputImageType; // float type<BR>> ><BR>> > typedef itk::Image< OutputPixelType, 2 > OutputImageType; //<BR>> float type<BR>> ><BR>> > typedef itk::Image LabeledImageType;<BR>> ><BR>> > typedef itk::Image ScalarImageType;<BR>> ><BR>> > typedef itk::Image WriteImageType;<BR>> ><BR>> > typedef itk::GradientAnisotropicDiffusionImageFilter<BR>> > OutputImageType > FilterType;<BR>> ><BR>> > FilterType::Pointer filter = FilterType::New();<BR>> ><BR>> > // Instantiate Gradient Magnitude Filter typedef<BR>>
> itk::GradientMagnitudeImageFilter<BR>> ><BR>> > GradientFilterType;<BR>> ><BR>> > GradientFilterType::Pointer gradientF ilter =<BR>> GradientFilterType::New();<BR>> ><BR>> > typedef itk::WatershedImageFilter WatershedFilterType;<BR>> ><BR>> > WatershedFilterType::Pointer watershed = WatershedFilterType::New();<BR>> ><BR>> > typedef itk::ImageFileWriter< WriteImageType > WriterType; // write<BR>> > output image as short - use rescaler<BR>> ><BR>> > WriterType::Pointer writer = WriterType::New();<BR>> ><BR>> > typedef itk::ImageFileReader< InputImageType > ReaderType; //<BR>> read input<BR>> > image as float<BR>> ><BR>> > ReaderType::Pointer reader = ReaderType::New();<BR>> ><BR>> > reader->SetFileName(inputFile);<BR>> ><BR>> > writer->SetFileName( outputFile );<BR>> ><BR>> > _// Read Input Image of RAW Type (uses
MetaImage Header)_<BR>> ><BR>> > try { reader->Update(); }<BR>> ><BR>> > catch( itk::ExceptionObject & e ) {<BR>> ><BR>> > std::cerr << "Exception caught during Raw file reading " <<<BR>> std::endl;<BR>> ><BR>> > ; std::cerr << e << std::endl;<BR>> ><BR>> > std::cout<< "\n\nMake Sure if the file name you specified already<BR>> > exists...\n";<BR>> ><BR>> > return -1;<BR>> ><BR>> > }<BR>> ><BR>> > _// First apply Edge Preserving smoothing filter "Anisotropic<BR>> Diffusion<BR>> > Filter"_<BR>> ><BR>> > filter->SetInput( reader->GetOutput() );<BR>> ><BR>> > filter->SetIterations(noOfIterations); // default value -> 3<BR>> ><BR>> > filter->SetConductanceParameter(conductance); // default value -> 5.0<BR>> ><BR>> > filter->SetTimeStep(timeStep); // default value ->
0.25 for 2-D image<BR>> ><BR>> > _// Pass the output of Anisotropic Diffusion Filter to<BR>> > GradientMagnitudeFilter_<BR>> ><BR>> > gradientFilter->SetInput( filter->GetOutput() );<BR>> ><BR>> > _// Apply Watershed Segmentation_<BR>> ><BR>> > watershed->SetInput(gradientFilter->GetOutput());<BR>> ><BR>> > watershed->SetThreshold(threshold); // 0.30<BR>> ><BR>> > watershed->SetLevel(floodLevel); // 0.50<BR>> ><BR>> > writer->SetInput(watershed->GetOutput());<BR>> ><BR>> > _// Execute the pipeline_<BR>> ><BR>> > try { writer->Update(); }<BR>> ><BR>> > catch( itk::ExceptionObject & excep ){<BR>> ><BR>> > std::cerr << "Exception caught !" << std::endl;<BR>> ><BR>> > std::cerr << excep << std::endl;<BR>> ><BR>> > retVal = -1;<BR>> ><BR>> > }<BR>>
><BR>> > }<BR>> ><BR>> ><BR>> ><BR>> ***********************************************************************************<BR>> ><BR>> > */Joshua Cates /* wrote:<BR>> ><BR>> > Hi,<BR>> ><BR>> > Thanks for the feedback on the watershed example. This code is<BR>> old and<BR>> > probably in need of updating for more recent developments in the<BR>> ITK IO<BR>> > classes. I will take a look.<BR>> ><BR>> > Josh.<BR>> ><BR>> > On Mon, 23 Feb 2004, n eha k wrote:<BR>> ><BR>> > ><BR>> > > Hi All,<BR>> > ><BR>> > > I am trying to run exampleI programs in Watershed segmetnation. I<BR>> > tried<BR>> > > the example program with Input file as PGM file (in.pgm) which<BR>> is of<BR>> > > size (24*7). When I run itkWatershedSegmentationExample.cxx, I<BR>> get 5<BR>> > > output files of raw format (with level =
0.50). When I set any of<BR>> > those<BR>> > > 5 output files as an input file to second program<BR>> > itkWSRawToPNG.cxx so<BR>> > > that I can convert it to png file to view, program crashes( on<BR>> > statement<BR>> > > reader_update()). What should be the input file given to this<BR>> second<BR>> > > program? Also, if i want to segment the raw br est images, what<BR>> > reader<BR>> > > should I use and how should i generate the output files? What<BR>> > filters,<BR>> > > mappers should I use to apply watershed segmentation on grayscale<BR>> > breast<BR>> > > images of Raw for mat to find out if there is any lesion inside<BR>> > the brest<BR>> > > image? (Currently, I am using MetaImageReader to apply other ITK<BR>> > filters<BR>> > > on breast images.)<BR>> > ><BR>> > > Any suggestions are appreiated.<BR>> > ><BR>> >
> My input PGM file is as follows<BR>> > ><BR>> > ><BR>> ><BR>> ***************************************************************************************<BR>> > ><BR>> > > P2<BR>> > ><BR>> > > 24 7<BR>> > ><BR>> > > 15<BR>> > ><BR>> > > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0<BR>> > ><BR>> > > 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0<BR>> > ><BR>> > > 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0<BR>> > ><BR>> > > 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0<BR>> > ><BR>> > > 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0<BR>> > > *> 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0<BR>> > ><BR>> & 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<BR>> > ><BR>> > ><BR>> > ><BR>> > ><BR>>
><BR>> ***************************************************************************************<BR>> ><BR>> > ><BR>> > > Thanks,<BR>> > ><BR>> > > Neha<BR>> > ><BR>> > ><BR>> > > ---------------------------------<BR>> > > Do you Yahoo!?<BR>> > > Yahoo! Mail SpamGuard - Read only the mail you want.<BR>> ><BR>> > _______________________________________________<BR>> > Insight-users mailing list<BR>> > Insight-users at itk.org<BR>> > http://www.itk.org/mailman/listinfo/insight-users*<BR>> ><BR>> ><BR>> ------------------------------------------------------------------------<BR>> > *Do you Yahoo!?<BR>> > Get better spam protection with Yahoo! Mail<BR>> > *<BR>> <BR>> <BR>> <BR>> _______________________________________________<BR>> Insight-users mailing list<BR>> Insight-users at itk.org<BR>>
http://www.itk.org/mailman/listinfo/insight-users<BR>> <BR>> ------------------------------------------------------------------------<BR>> Do you Yahoo!?<BR>> Get better spam protection with Yahoo! Mail <BR>> <HTTP: tools antispam.yahoo.com *http: mailtag_us us.rd.yahoo.com><BR>> {\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose <BR>> 02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 <BR>> Times New Roman CE;} {\f37\froman\fcharset204\fprq2 Times New Roman <BR>> Cyr;}{\f39\froman\fcharset161\fprq2 Times New Roman <BR>> Greek;}{\f40\froman\fcharset162\fprq2 Times New Roman <BR>> Tur;}{\f41\froman\fcharset177\fprq2 Times New Roman (Hebrew);} <BR>> {\f42\froman\fcharset178\fprq2 Times New Roman <BR>> (Arabic);}{\f43\froman\fcharset186\fprq2 Times New Roman <BR>> Baltic;}{\f44\froman\fcharset163\fprq2 Times New Roman <BR>>
(Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255; <BR>> \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; <BR>> \red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql <BR>> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 <BR>> \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 <BR>> Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph <BR>> Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv <BR>> \ql <BR>> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 <BR>>
\fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 <BR>> \ssemihidden Normal Table;}}{\*\rsidtbl <BR>> \rsid11687438\rsid15806933}{\*\generator Microsoft Word <BR>> 10.0.3416;}{\info {\author shilpa}{\operator <BR>> shilpa}{\creatim\yr2004\mo3\dy1\hr17\min44}{\revtim\yr2004\mo3\dy1\hr17\min45}{\version2}{\edmins1}{\nofpages2}{\nofwords294}{\nofchars1678}{\*\company <BR>> WPI}{\nofcharsws1969}{\vern16453}} <BR>> \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale90\nolnhtadjtbl\rsidroot15806933 <BR>> \fet0\sectd \linex0\sectdefaultcl\sftnbj <BR>> {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta <BR>> .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta <BR>> .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta <BR>> .}}{\*\pnseclvl4 \pnlcltr\pnstart1\pnindent720\pnhang
{\pntxta <BR>> )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta <BR>> )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta <BR>> )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (} {\pntxta <BR>> )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta <BR>> )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta <BR>> )}}\pard\plain \ql <BR>> \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid15806933 <BR>> \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 <BR>> {\insrsid15806933\charrsid15806933 Enter Input File Name with <BR>> extention(.mhd) only -->c:\\breast.mhd \par Enter Output File Name with <BR>> extention(.mhd) only -->c:\\breast_segment.mhd}{\insrsid15806933 \par <BR>> ----------------------------------------------------------------------------------------------------}{\insrsid15806933\charrsid15806933 <BR>>
\par Image (00225EE0) \par Reference Count: 3 \par Modified Time: 147 <BR>> \par Debug: Off \par Observers: \par none \par Source: (00225660) \par <BR>> Source output index: 0 \par Release Data: Off \par Data Released: False <BR>> \par Global Release Data: Off \par PipelineMTime: 133 \par UpdateTime: <BR>> 149 \par LastRequestedRegionWasOutsideOfTheBufferedRegion: 0 \par <BR>> LargestPossibleRegion: \par Dimension: 2 \par Index: [0, 0] \par Size: <BR>> [256, 256] \par BufferedRegion: \par Dimension: 2 \par Index: [0, 0] <BR>> \par Size: [256, 256] \par RequestedRegion: \par Dimension: 2 \par <BR>> Index: [0, 0] \par Size: [256, 256] \par Origin: [0, 0] \par Spacing: <BR>> [0.703, 0.585] \par PixelContainer: ImportImageContainer (002254C8) \par <BR>> Reference Count: 2 \par Modified Time: 148 \par Debug: Off \par <BR>> Observers: \par none \par Pointer: 002254F4 \par Container manages <BR>> memory: true \par Size: 65536 \par Capacity: 65536 \par
\par Image <BR>> (00226DB8) \par Reference Count: 1 \par Modified Time: 190 \par Debug: <BR>> Off \par Observers: \par none \par Source: (00226068) \par Source output <BR>> index: 0 \par Release Data: Off \par Data Released: False \par Global <BR>> Release Data: Off \par PipelineMTime: 133 \par UpdateTime: 191 \par <BR>> LastRequestedRegionWasOutsideOfTheBufferedRegion: 1 \par <BR>> LargestPossibleRegion: \par Dimension: 2 \par Index: [0, 0] \par Size: <BR>> [256, 256] \par BufferedRegion: \par Dimension: 2 \par Index: [0, 0] <BR>> \par Size: [256, 256] \par RequestedRegion: \par Dimension: 2 \par <BR>> Index: [0, 0] \par Size: [256, 256] \par Origin: [0, 0] \par Spacing: <BR>> [0.703, 0.585] \par PixelContainer: ImportImageContainer (01A9FFC0) \par <BR>> Reference Count: 3 \par Modified Time: 187 \par Debug: Off \par <BR>> Observers: \par none \par Pointer: 01A9FFEC \par Container manages <BR>> memory: true \par Size: 65536 \par Capacity:
65536 \par <BR>> }{\insrsid15806933 <BR>> ----------------------------------------------------------------------------------------------------}{\insrsid15806933\charrsid15806933 <BR>> \par \par File succesfully writen ! \par Press any key to <BR>> continue}{\insrsid15806933\charrsid15806933 \par }}<BR><BR><BR><BR>_______________________________________________<BR>Insight-users mailing list<BR>Insight-users at itk.org<BR>http://www.itk.org/mailman/listinfo/insight-users</BLOCKQUOTE><p><hr SIZE=1>
Do you Yahoo!?<br>
Yahoo! Finance: <a href="http://us.rd.yahoo.com/evt=22055/*http://taxes.yahoo.com/filing.html">Get your refund fast by filing online</a>
--0-2050572023-1078325977=:63756--