[Insight-users] Watershed Segmentation - problem running itkWSRawToPNG.cxx
neha k
itkneha1 at yahoo.com
Fri, 27 Feb 2004 16:40:57 -0800 (PST)
--0-1803944301-1077928857=:96858
Content-Type: text/plain; charset=us-ascii
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 brest 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
--0-1803944301-1077928857=:96858
Content-Type: text/html; charset=us-ascii
<DIV>Hi Luis,</DIV>
<DIV> </DIV>
<DIV>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-></DIV>
<DIV>reader--->AnisotropicDiffusionFilter--->GradientMagnitudeFilter--->WaterShed</DIV>
<DIV> </DIV>
<DIV>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.</DIV>
<DIV>I tried with 3 different values for conductance_term, threshold and Level. But still the output file has 0 bytes.</DIV>
<DIV> </DIV>
<DIV>Please let me know if I am missing anything while using watershed.</DIV>
<DIV> </DIV>
<DIV>Following the simple code i am using -></DIV>
<DIV>***********************************************************************************<BR><FONT size=2>
<P>void segment()</P>
<P>{</P>
<P><U>// declarations</U></P>
<P>int threshold = 0.30, floodLevel = 0.50;</P>
<P>int noOfIterations = 3, retVal = 1, checkExtn =0;</P>
<P>char answer='y', inputFile[255]="breast.mhd", outputFile[255]="breast_op.mhd";</P>
<P>float timeStep = 0.25, </P>
<P>conductance = 5.0;</P>
<P></P>
<P>typedef itk::Image< InputPixelType, 2 > InputImageType; // float type</P>
<P>typedef itk::Image< OutputPixelType, 2 > OutputImageType; // float type</P>
<P>typedef itk::Image<unsigned long, 2> LabeledImageType; </P>
<P>typedef itk::Image<float, 2> ScalarImageType;</P>
<P>typedef itk::Image<unsigned long, 2> WriteImageType; </P>
<P>typedef itk::GradientAnisotropicDiffusionImageFilter<InputImageType, OutputImageType > FilterType;</P>
<P>FilterType::Pointer filter = FilterType::New();</P>
<P>// Instantiate Gradient Magnitude Filter typedef itk::GradientMagnitudeImageFilter<InputImageType, OutputImageType></P>
<P>GradientFilterType;</P>
<P>GradientFilterType::Pointer gradientFilter = GradientFilterType::New(); </P>
<P>typedef itk::WatershedImageFilter<ScalarImageType> WatershedFilterType;</P>
<P>WatershedFilterType::Pointer watershed = WatershedFilterType::New(); </P>
<P>typedef itk::ImageFileWriter< WriteImageType > WriterType; // write output image as short - use rescaler </P>
<P>WriterType::Pointer writer = WriterType::New();</P>
<P>typedef itk::ImageFileReader< InputImageType > ReaderType; // read input image as float</P>
<P>ReaderType::Pointer reader = ReaderType::New();</P>
<P></P>
<P>reader->SetFileName(inputFile); </P>
<P>writer->SetFileName( outputFile );</P>
<P><U>// Read Input Image of RAW Type (uses MetaImage Header)</U></P>
<P>try { reader->Update(); }</P>
<P>catch( itk::ExceptionObject & e ) {</P>
<P>std::cerr << "Exception caught during Raw file reading " << std::endl;</P>
<P>std::cerr << e << std::endl;</P>
<P>std::cout<< "\n\nMake Sure if the file name you specified already exists...\n"; </P>
<P>return -1;</P>
<P>} </P>
<P></P>
<P><U>// First apply Edge Preserving smoothing filter "Anisotropic Diffusion Filter"</U></P>
<P>filter->SetInput( reader->GetOutput() ); </P>
<P>filter->SetIterations(noOfIterations); // default value -> 3</P>
<P>filter->SetConductanceParameter(conductance); // default value -> 5.0</P>
<P>filter->SetTimeStep(timeStep); // default value -> 0.25 for 2-D image </P>
<P><U>// Pass the output of Anisotropic Diffusion Filter to GradientMagnitudeFilter</U></P>
<P>gradientFilter->SetInput( filter->GetOutput() );</P>
<P><U>// Apply Watershed Segmentation</U></P>
<P>watershed->SetInput(gradientFilter->GetOutput()); </P>
<P>watershed->SetThreshold(threshold); // 0.30</P>
<P>watershed->SetLevel(floodLevel); // 0.50 </P>
<P>writer->SetInput(watershed->GetOutput()); </P>
<P></P>
<P><U>// Execute the pipeline</U></P>
<P>try { writer->Update(); }</P>
<P>catch( itk::ExceptionObject & excep ){</P>
<P>std::cerr << "Exception caught !" << std::endl;</P>
<P>std::cerr << excep << std::endl;</P>
<P>retVal = -1;</P>
<P>} </P>
<P>}</P></FONT></DIV>
<DIV> </DIV>
<DIV>***********************************************************************************<BR><BR><B><I>Joshua Cates <cates at sci.utah.edu></I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Hi,<BR><BR>Thanks for the feedback on the watershed example. This code is old and <BR>probably in need of updating for more recent developments in the ITK IO <BR>classes. I will take a look.<BR><BR>Josh.<BR><BR>On Mon, 23 Feb 2004, neha k wrote:<BR><BR>> <BR>> Hi All,<BR>> <BR>> I am trying to run exampleI programs in Watershed segmetnation. I tried<BR>> the example program with Input file as PGM file (in.pgm) which is of<BR>> size (24*7). When I run itkWatershedSegmentationExample.cxx, I get 5<BR>> output files of raw format (with level = 0.50). When I set any of those<BR>> 5 output files as an input file to second program itkWSRawToPNG.cxx so<BR>> that I can convert it to png file to view, program crashes( on statement<BR>> reader_update()). What should be the input file given to this second<BR>> program? Also, if i want to segment the raw brest
images, what reader<BR>> should I use and how should i generate the output files? What filters,<BR>> mappers should I use to apply watershed segmentation on grayscale breast<BR>> images of Raw format to find out if there is any lesion inside the brest<BR>> image? (Currently, I am using MetaImageReader to apply other ITK filters<BR>> on breast images.)<BR>> <BR>> Any suggestions are appreiated.<BR>> <BR>> My input PGM file is as follows<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>> <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>> 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>> 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</BLOCKQUOTE><p><hr SIZE=1>
Do you Yahoo!?<br>
Get better spam protection with <a href="http://us.rd.yahoo.com/mailtag_us/*http://antispam.yahoo.com/tools">Yahoo! Mail</a>
--0-1803944301-1077928857=:96858--