<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Hi,<br>I'm really ashamed. i know i disturb you from your work.i have buy a book of c++ and i use internet but in&nbsp; vain i still don't know <br>many things and i still learning at the same time. i will try and try to command better c++ and itk.the begining is still difficult.Really thank you for your help but want to konw others things if itis possible:<br><br>you have said :<br>&gt;&gt;Do not do that. Pass the arguments in at the command line properly.<br>&gt;&gt;Also if argc =2 then only argv[0] and argv[1] are valid. C starts<br>&gt;&gt;counting at 0.<br>please explain more to me what i must do step by step:<br>how do&nbsp; i&nbsp; pass the arguments at the command line properly . it's one of my problem? what i must do exactly<br>all i know that i debogue from c++ and after that i'll
 have the ms dos screen and i haven't the posibility to write the arguments in this screen because it's mentioned that i should clik to any key in the key board.<br><br>Regards<br><br><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font size="2" face="Tahoma"><hr size="1"><b><span style="font-weight: bold;">De :</span></b> John Drescher &lt;drescherjm@gmail.com&gt;<br><b><span style="font-weight: bold;">À :</span></b> Syrine Sahmim &lt;syrine.sahmim@yahoo.fr&gt;<br><b><span style="font-weight: bold;">Cc :</span></b> insight-users@itk.org<br><b><span style="font-weight: bold;">Envoyé le :</span></b> Mardi, 4 Août 2009, 14h22mn 44s<br><b><span style="font-weight: bold;">Objet&nbsp;:</span></b> Re: Need to correct this example<br></font><br>On Tue, Aug 4, 2009 at 7:34 AM, Syrine Sahmim&lt;<a ymailto="mailto:syrine.sahmim@yahoo.fr"
 href="mailto:syrine.sahmim@yahoo.fr">syrine.sahmim@yahoo.fr</a>&gt; wrote:<br>&gt; Hi,<br>&gt; I send again the same mail because i need help really.<br>&gt; i try to apply a discrete gaussian filter on a serie of 3D dicom images.so i<br>&gt; try to do what Luis said to me to read the dicom serie before and then add<br>&gt; the discrete gaussian filter. the code that i wrote is the follwing, please<br>&gt; can you help me toi correct it. really i need help.<br>&gt; #if defined(_MSC_VER)<br>&gt; #pragma warning ( disable : 4786 )<br>&gt; #endif<br>&gt;<br>&gt; #ifdef __BORLANDC__<br>&gt; #define ITK_LEAN_AND_MEAN<br>&gt; #endif<br>&gt;<br>&gt;<br>&gt; #include "itkOrientedImage.h"<br>&gt; #include "itkGDCMImageIO.h"<br>&gt; #include "itkGDCMSeriesFileNames.h"<br>&gt; #include "itkImageSeriesReader.h"<br>&gt; #include "itkImageFileWriter.h"<br>&gt;<br>&gt;<br>&gt; #include "itkRescaleIntensityImageFilter.h"<br>&gt; #include
 "itkDiscreteGaussianImageFilter.h"<br>&gt;<br>&gt;<br>&gt; int main( int argc, char* argv[] )<br>&gt; {<br>&gt;<br>&gt; &nbsp;/* if( argc &lt; 3 )<br>&gt; &nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; "Usage: " &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; std::cerr &lt;&lt; argv[0] &lt;&lt; " DicomDirectory&nbsp; outputFileName&nbsp; [seriesName]"<br>&gt; &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<br>&gt; &nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt; */<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; argc = 2;<br>&gt; &nbsp;&nbsp;&nbsp; argv[1] = "dicom";<br>&gt; &nbsp;&nbsp;&nbsp; argv[2] = "dicomMRA.hdr";<br>&gt;<br><br>Do not do that. Pass the arguments in at the command line properly.<br>Also if argc =2 then only argv[0] and argv[1] are valid. C starts<br>counting at 0.<br><br>&gt; &nbsp; typedef signed short&nbsp;&nbsp;&nbsp; PixelType;<br>&gt; &nbsp; const unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dimension =
 3;<br>&gt;<br>&gt; &nbsp; typedef itk::OrientedImage&lt; PixelType, Dimension &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageType;<br>&gt;<br>&gt; &nbsp; typedef itk::ImageSeriesReader&lt; ImageType &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReaderType;<br>&gt; &nbsp; ReaderType::Pointer reader = ReaderType::New();<br>&gt;<br>&gt; &nbsp; typedef itk::GDCMImageIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIOType;<br>&gt; &nbsp; ImageIOType::Pointer dicomIO = ImageIOType::New();<br>&gt;<br>&gt; &nbsp; reader-&gt;SetImageIO( dicomIO );<br>&gt;<br>&gt; &nbsp; typedef itk::GDCMSeriesFileNames NamesGeneratorType;<br>&gt; &nbsp; NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();<br>&gt;<br>&gt; &nbsp; nameGenerator-&gt;SetUseSeriesDetails( true );<br>&gt; &nbsp; nameGenerator-&gt;AddSeriesRestriction("0008|0021" );<br>&gt;<br>&gt; &nbsp; nameGenerator-&gt;SetDirectory( argv[1] );<br>&gt;<br>&gt;<br>&gt;<br>&gt; &nbsp;
 try<br>&gt; &nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; "The directory: " &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; argv[1] &lt;&lt; std::endl ;<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Contains the following DICOM Series: ";<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&gt;<br>&gt;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; typedef std::vector&lt; std::string &gt;&nbsp;&nbsp;&nbsp; SeriesIdContainer;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; const SeriesIdContainer &amp; seriesUID = nameGenerator-&gt;GetSeriesUIDs();<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();<br>&gt; &nbsp;&nbsp;&nbsp; SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();<br>&gt; &nbsp;&nbsp;&nbsp; while( seriesItr != seriesEnd )<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 std::cout &lt;&lt; seriesItr-&gt;c_str() &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seriesItr++;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; std::string seriesIdentifier;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; if( argc &gt; 3 ) // If no optional series identifier<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seriesIdentifier = argv[3];<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt; &nbsp;&nbsp;&nbsp; else<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seriesIdentifier = seriesUID.begin()-&gt;c_str();<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Now reading series: " &lt;&lt; std::endl &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; seriesIdentifier &lt;&lt; std::endl;<br>&gt;
 &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; typedef std::vector&lt; std::string &gt;&nbsp;&nbsp; FileNamesContainer;<br>&gt; &nbsp;&nbsp;&nbsp; FileNamesContainer fileNames;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; fileNames = nameGenerator-&gt;GetFileNames( seriesIdentifier );<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; reader-&gt;SetFileNames( fileNames );<br>&gt;<br>&gt;<br>&gt;<br>&gt; &nbsp;&nbsp;&nbsp; try<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader-&gt;Update();<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt; &nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;ex)<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; ex &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt;<br>&gt; }<br>&gt; &nbsp; catch
 (itk::ExceptionObject &amp;ex)<br>&gt; &nbsp;&nbsp;&nbsp; {<br>&gt; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; ex &lt;&lt; std::endl;<br>&gt; &nbsp;&nbsp;&nbsp; return EXIT_FAILURE;<br>&gt; &nbsp;&nbsp;&nbsp; }<br>&gt;<br>&gt; typedef itk::DiscreteGaussianImageFilter&lt;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputImageType, OutputImageType &gt;&nbsp; FilterType;<br>&gt;<br>&gt; &nbsp; FilterType::Pointer filter = FilterType::New();<br>&gt; &nbsp;filter-&gt;SetInput( reader-&gt;GetOutput() );<br>&gt;<br><br>The following can not possibly work because you forced argc = 2<br><br>&gt; const double gaussianVariance = atof( argv[3] );<br>&gt; &nbsp; const unsigned int maxKernelWidth = atoi( argv[4] );<br>&gt; &nbsp;filter-&gt;SetVariance( gaussianVariance );<br>&gt; &nbsp; filter-&gt;SetMaximumKernelWidth( maxKernelWidth );<br>&gt; &nbsp; filter-&gt;Update();<br>&gt;<br>&gt;<br>&gt; &nbsp; typedef
 unsigned char WritePixelType;<br>&gt; &nbsp; typedef itk::Image&lt; WritePixelType, 2 &gt; WriteImageType;<br>&gt; &nbsp; typedef itk::RescaleIntensityImageFilter&lt;<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputImageType, WriteImageType &gt; RescaleFilterType;<br>&gt; &nbsp; RescaleFilterType::Pointer rescaler = RescaleFilterType::New();<br>&gt;<br>&gt; &nbsp; rescaler-&gt;SetOutputMinimum(&nbsp;&nbsp; 0 );<br>&gt; &nbsp; rescaler-&gt;SetOutputMaximum( 255 );<br>&gt;<br>&gt; &nbsp; typedef itk::ImageFileWriter&lt; WriteImageType &gt;&nbsp; WriterType;<br>&gt; &nbsp; WriterType::Pointer writer = WriterType::New();<br>&gt; &nbsp; writer-&gt;SetFileName( argv[2] );<br>&gt; &nbsp; rescaler-&gt;SetInput( filter-&gt;GetOutput() );<br>&gt; &nbsp; writer-&gt;SetInput( rescaler-&gt;GetOutput() );<br>&gt; &nbsp; writer-&gt;Update();<br>&gt; &nbsp; return EXIT_SUCCESS;<br>&gt;<br>&gt; }<br>&gt;
 &nbsp;&nbsp;&nbsp; thanks to all<br>&gt;<br></div></div></div><br>



      </body></html>