Dear David,<br><br>Actually, I took Dean&#39;s examples and added a bit of code that saves the frequencies<br>and their components to a text file. The text file can be opened in a spreadsheet program,<br>so you can produce the same plot.<br>

<br>It&#39;s not a very significant change, might be useful for people that are writing about<br>their data set?<br><br>Michael<br><br><div class="gmail_quote">On Sat, Jan 9, 2010 at 12:08 AM, David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria%2Bvtk@gmail.com">daviddoria+vtk@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Thu, Jan 7, 2010 at 9:31 AM, michiel mentink<br>
<div><div></div><div class="h5">&lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk">michael.mentink@st-hughs.ox.ac.uk</a>&gt; wrote:<br>
&gt; oops. Forgot a small error. Correct now.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; #include &lt;vtkActor.h&gt;<br>
&gt; #include &lt;vtkImageAccumulate.h&gt;<br>
&gt; #include &lt;vtkImageData.h&gt;<br>
&gt; #include &lt;vtkImageExtractComponents.h&gt;<br>
&gt; #include &lt;vtkJPEGReader.h&gt;<br>
&gt; #include &lt;vtkRenderer.h&gt;<br>
&gt; #include &lt;vtkRenderWindow.h&gt;<br>
&gt; #include &lt;vtkRenderWindowInteractor.h&gt;<br>
&gt; #include &lt;vtkSmartPointer.h&gt;<br>
&gt; #include &lt;vtkStdString.h&gt;<br>
&gt; #include &lt;vtkXYPlotActor.h&gt;<br>
&gt; #include &lt;vtkPointData.h&gt;<br>
&gt;<br>
&gt; int main( int argc, char *argv[] )<br>
&gt; {<br>
&gt;   // Handle the arguments<br>
&gt;   if( argc &lt; 2 )<br>
&gt;     {<br>
&gt;     vtkstd::cout &lt;&lt; &quot;Required arguments: filename.jpg, [optional ignore<br>
&gt; zero:] &lt;y/n&gt;&quot; &lt;&lt; vtkstd::endl;<br>
&gt;     return EXIT_FAILURE;<br>
&gt;     }<br>
&gt;<br>
&gt;   int ignoreZero = 0;<br>
&gt;   if( argc == 3 )<br>
&gt;     {<br>
&gt;     vtkStdString ignore = argv[2];<br>
&gt;     cout &lt;&lt; ignore &lt;&lt; endl;<br>
&gt;     if( ignore == &quot;y&quot; || ignore == &quot;Y&quot; )<br>
&gt;       {<br>
&gt;       ignoreZero = 1;<br>
&gt;       }<br>
&gt;     }<br>
&gt;<br>
&gt;   // Read a jpeg image<br>
&gt;   //<br>
&gt;   vtkSmartPointer&lt;vtkJPEGReader&gt; reader =<br>
&gt; vtkSmartPointer&lt;vtkJPEGReader&gt;::New();<br>
&gt;   if( !reader-&gt;CanReadFile( argv[1] ) )<br>
&gt;     {<br>
&gt;     vtkstd::cout &lt;&lt; &quot;Error: cannot read &quot; &lt;&lt; argv[1] &lt;&lt; vtkstd::endl;<br>
&gt;     return EXIT_FAILURE;<br>
&gt;     }<br>
&gt;   reader-&gt;SetFileName( argv[1] );<br>
&gt;   reader-&gt;Update();<br>
&gt;<br>
&gt;   int numComponents = reader-&gt;GetOutput()-&gt;GetNumberOfScalarComponents();<br>
&gt;   if( numComponents &gt; 3 )<br>
&gt;     {<br>
&gt;     vtkstd::cout &lt;&lt; &quot;Error: cannot process an image with &quot; &lt;&lt; numComponents<br>
&gt; &lt;&lt; &quot; components!&quot; &lt;&lt; vtkstd::endl;<br>
&gt;     return EXIT_FAILURE;<br>
&gt;     }<br>
&gt;<br>
&gt;   // Create a vtkXYPlotActor<br>
&gt;   //<br>
&gt;   vtkSmartPointer&lt;vtkXYPlotActor&gt; plot =<br>
&gt; vtkSmartPointer&lt;vtkXYPlotActor&gt;::New();<br>
&gt;   plot-&gt;ExchangeAxesOff();<br>
&gt;   plot-&gt;SetLabelFormat( &quot;%g&quot; );<br>
&gt;   plot-&gt;SetXTitle( &quot;Level&quot; );<br>
&gt;   plot-&gt;SetYTitle( &quot;Frequency&quot; );<br>
&gt;   plot-&gt;SetXValuesToValue();<br>
&gt;<br>
&gt;   double xmax = 0.;<br>
&gt;   double ymax = 0.;<br>
&gt;<br>
&gt;   double colors[3][3] = {<br>
&gt;     { 1, 0, 0 },<br>
&gt;     { 0, 1, 0 },<br>
&gt;     { 0, 0, 1 } };<br>
&gt;<br>
&gt;     const char* labels[3] = {<br>
&gt;       &quot;Red&quot;, &quot;Green&quot;, &quot;Blue&quot; };<br>
&gt;<br>
&gt;   // Process the image, extracting and plotting a histogram for each<br>
&gt; component<br>
&gt;   //<br>
&gt;   //<br>
&gt;<br>
&gt;     ofstream myfile;<br>
&gt;     myfile.open (&quot;histogram.txt&quot;);<br>
&gt;     myfile &lt;&lt; &quot;Pixel intensities and their counts.\n&quot;;<br>
&gt;<br>
&gt;   for( int i = 0; i &lt; numComponents; ++i )<br>
&gt;   {<br>
&gt;     vtkSmartPointer&lt;vtkImageExtractComponents&gt; extract =<br>
&gt; vtkSmartPointer&lt;vtkImageExtractComponents&gt;::New();<br>
&gt;     extract-&gt;SetInputConnection( reader-&gt;GetOutputPort() );<br>
&gt;     extract-&gt;SetComponents( i );<br>
&gt;     extract-&gt;Update();<br>
&gt;<br>
&gt;     double range[2];<br>
&gt;     extract-&gt;GetOutput()-&gt;GetScalarRange( range );<br>
&gt;     vtkSmartPointer&lt;vtkImageAccumulate&gt; histogram =<br>
&gt; vtkSmartPointer&lt;vtkImageAccumulate&gt;::New();<br>
&gt;     histogram-&gt;SetInputConnection( extract-&gt;GetOutputPort() );<br>
&gt;     histogram-&gt;SetComponentExtent(<br>
&gt; 0,static_cast&lt;int&gt;(range[1])-static_cast&lt;int&gt;(range[0])-1,0,0,0,0 );<br>
&gt;     histogram-&gt;SetComponentOrigin( range[0],0,0 );<br>
&gt;     histogram-&gt;SetComponentSpacing( 1,0,0 );<br>
&gt;     histogram-&gt;SetIgnoreZero( ignoreZero );<br>
&gt;     histogram-&gt;Update();<br>
&gt;<br>
&gt;     if( range[1] &gt; xmax ) xmax = range[1];<br>
&gt;     if( histogram-&gt;GetOutput()-&gt;GetScalarRange()[1] &gt; ymax ) ymax =<br>
&gt; histogram-&gt;GetOutput()-&gt;GetScalarRange()[1];<br>
&gt;<br>
&gt;     plot-&gt;AddInput( histogram-&gt;GetOutput() );<br>
&gt;<br>
&gt;     if( numComponents &gt; 1 )<br>
&gt;       {<br>
&gt;       plot-&gt;SetPlotColor(i,colors[i]);<br>
&gt;       plot-&gt;SetPlotLabel(i,labels[i]);<br>
&gt;       plot-&gt;LegendOn();<br>
&gt;<br>
&gt;       myfile &lt;&lt; &quot;\n&quot; &lt;&lt; labels[i] &lt;&lt; &quot;\n\n&quot;;<br>
&gt;       }<br>
&gt;<br>
&gt;     unsigned int temp = (range[1]-1);<br>
&gt;     unsigned int frequency[temp];<br>
&gt;<br>
&gt;     std::cout&lt;&lt; &quot;range: &quot; &lt;&lt; range[0] &lt;&lt; &quot; &quot; &lt;&lt; range[1] &lt;&lt;std::endl;<br>
&gt;<br>
&gt;     unsigned int j;<br>
&gt;<br>
&gt;     for(j=0;j&lt;temp;j++){<br>
&gt;        frequency[j]=0;<br>
&gt;               frequency[j] =<br>
&gt; histogram-&gt;GetOutput()-&gt;GetPointData()-&gt;GetScalars()-&gt;GetTuple1(j);<br>
&gt;            myfile &lt;&lt; j &lt;&lt; &quot;\t&quot; &lt;&lt; frequency[j] &lt;&lt; &quot;\n&quot;;<br>
&gt;     }<br>
&gt;   }<br>
&gt;<br>
&gt;   myfile.close();<br>
&gt;<br>
&gt;   plot-&gt;SetXRange( 0, xmax );<br>
&gt;   plot-&gt;SetYRange( 0, ymax );<br>
&gt;<br>
&gt;   // Visualize the histogram(s)<br>
&gt;   vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
&gt; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&gt;   renderer-&gt;AddActor(plot);<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
&gt; vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
&gt;   renderWindow-&gt;AddRenderer( renderer );<br>
&gt;   renderWindow-&gt;SetSize(640, 480);<br>
&gt;<br>
&gt;   vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; interactor =<br>
&gt;       vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&gt;   interactor-&gt;SetRenderWindow( renderWindow );<br>
&gt;<br>
&gt;   // Initialize the event loop and then start it<br>
&gt;   interactor-&gt;Initialize();<br>
&gt;   interactor-&gt;Start();<br>
&gt;<br>
&gt;<br>
&gt;   return  EXIT_SUCCESS;<br>
&gt; }<br>
&gt;<br>
&gt;<br>
&gt; On Thu, Jan 7, 2010 at 2:29 PM, michiel mentink<br>
&gt; &lt;<a href="mailto:michael.mentink@st-hughs.ox.ac.uk">michael.mentink@st-hughs.ox.ac.uk</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Dear David,<br>
&gt;&gt;<br>
&gt;&gt; thank you for the example, there were some things that were different:<br>
&gt;&gt; this bit in the code I certainly coded differently than in the example:<br>
&gt;&gt;<br>
&gt;&gt;   histogram-&gt;SetComponentExtent(0, 4000, 0, 0, 0, 0);<br>
&gt;&gt;   histogram-&gt;SetComponentOrigin(0, 0, 0);<br>
&gt;&gt;   histogram-&gt;SetComponentSpacing(0.16, 0.16, 3.26); // component spacing:<br>
&gt;&gt; depends on spacing of input volume<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m still a bit confused about the componentspacing.. as described above,<br>
&gt;&gt; I assumed it to be dependent on the input volume,<br>
&gt;&gt; but it is not???<br>
&gt;&gt;<br>
&gt;&gt; Anyway, I&#39;ve extended your example a bit with writing the corresponding<br>
&gt;&gt; intensity levels to a file, for opening in a spreadsheet program.<br>
&gt;&gt; I&#39;m not sure if it&#39;s too basic to put in the Examples section, but it<br>
&gt;&gt; helped me and maybe someone else could benefit from it too.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Michael<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; #include &lt;vtkActor.h&gt;<br>
&gt;&gt; #include &lt;vtkImageAccumulate.h&gt;<br>
&gt;&gt; #include &lt;vtkImageData.h&gt;<br>
&gt;&gt; #include &lt;vtkImageExtractComponents.h&gt;<br>
&gt;&gt; #include &lt;vtkJPEGReader.h&gt;<br>
&gt;&gt; #include &lt;vtkRenderer.h&gt;<br>
&gt;&gt; #include &lt;vtkRenderWindow.h&gt;<br>
&gt;&gt; #include &lt;vtkRenderWindowInteractor.h&gt;<br>
&gt;&gt; #include &lt;vtkSmartPointer.h&gt;<br>
&gt;&gt; #include &lt;vtkStdString.h&gt;<br>
&gt;&gt; #include &lt;vtkXYPlotActor.h&gt;<br>
&gt;&gt; #include &lt;vtkPointData.h&gt;<br>
&gt;&gt;<br>
&gt;&gt; int main( int argc, char *argv[] )<br>
&gt;&gt; {<br>
&gt;&gt;   // Handle the arguments<br>
&gt;&gt;   if( argc &lt; 2 )<br>
&gt;&gt;     {<br>
&gt;&gt;     vtkstd::cout &lt;&lt; &quot;Required arguments: filename.jpg, [optional ignore<br>
&gt;&gt; zero:] &lt;y/n&gt;&quot; &lt;&lt; vtkstd::endl;<br>
&gt;&gt;     return EXIT_FAILURE;<br>
&gt;&gt;     }<br>
&gt;&gt;<br>
&gt;&gt;   int ignoreZero = 0;<br>
&gt;&gt;   if( argc == 3 )<br>
&gt;&gt;     {<br>
&gt;&gt;     vtkStdString ignore = argv[2];<br>
&gt;&gt;     cout &lt;&lt; ignore &lt;&lt; endl;<br>
&gt;&gt;     if( ignore == &quot;y&quot; || ignore == &quot;Y&quot; )<br>
&gt;&gt;       {<br>
&gt;&gt;       ignoreZero = 1;<br>
&gt;&gt;       }<br>
&gt;&gt;     }<br>
&gt;&gt;<br>
&gt;&gt;   // Read a jpeg image<br>
&gt;&gt;   //<br>
&gt;&gt;   vtkSmartPointer&lt;vtkJPEGReader&gt; reader =<br>
&gt;&gt; vtkSmartPointer&lt;vtkJPEGReader&gt;::New();<br>
&gt;&gt;   if( !reader-&gt;CanReadFile( argv[1] ) )<br>
&gt;&gt;     {<br>
&gt;&gt;     vtkstd::cout &lt;&lt; &quot;Error: cannot read &quot; &lt;&lt; argv[1] &lt;&lt; vtkstd::endl;<br>
&gt;&gt;     return EXIT_FAILURE;<br>
&gt;&gt;     }<br>
&gt;&gt;   reader-&gt;SetFileName( argv[1] );<br>
&gt;&gt;   reader-&gt;Update();<br>
&gt;&gt;<br>
&gt;&gt;   int numComponents = reader-&gt;GetOutput()-&gt;GetNumberOfScalarComponents();<br>
&gt;&gt;   if( numComponents &gt; 3 )<br>
&gt;&gt;     {<br>
&gt;&gt;     vtkstd::cout &lt;&lt; &quot;Error: cannot process an image with &quot; &lt;&lt;<br>
&gt;&gt; numComponents &lt;&lt; &quot; components!&quot; &lt;&lt; vtkstd::endl;<br>
&gt;&gt;     return EXIT_FAILURE;<br>
&gt;&gt;     }<br>
&gt;&gt;<br>
&gt;&gt;   // Create a vtkXYPlotActor<br>
&gt;&gt;   //<br>
&gt;&gt;   vtkSmartPointer&lt;vtkXYPlotActor&gt; plot =<br>
&gt;&gt; vtkSmartPointer&lt;vtkXYPlotActor&gt;::New();<br>
&gt;&gt;   plot-&gt;ExchangeAxesOff();<br>
&gt;&gt;   plot-&gt;SetLabelFormat( &quot;%g&quot; );<br>
&gt;&gt;   plot-&gt;SetXTitle( &quot;Level&quot; );<br>
&gt;&gt;   plot-&gt;SetYTitle( &quot;Frequency&quot; );<br>
&gt;&gt;   plot-&gt;SetXValuesToValue();<br>
&gt;&gt;<br>
&gt;&gt;   double xmax = 0.;<br>
&gt;&gt;   double ymax = 0.;<br>
&gt;&gt;<br>
&gt;&gt;   double colors[3][3] = {<br>
&gt;&gt;     { 1, 0, 0 },<br>
&gt;&gt;     { 0, 1, 0 },<br>
&gt;&gt;     { 0, 0, 1 } };<br>
&gt;&gt;<br>
&gt;&gt;     const char* labels[3] = {<br>
&gt;&gt;       &quot;Red&quot;, &quot;Green&quot;, &quot;Blue&quot; };<br>
&gt;&gt;<br>
&gt;&gt;   // Process the image, extracting and plotting a histogram for each<br>
&gt;&gt; component<br>
&gt;&gt;   //<br>
&gt;&gt;   //<br>
&gt;&gt;<br>
&gt;&gt;     ofstream myfile;<br>
&gt;&gt;     myfile.open (&quot;histogram.txt&quot;);<br>
&gt;&gt;     myfile &lt;&lt; &quot;Pixel intensities and their counts.\n&quot;;<br>
&gt;&gt;<br>
&gt;&gt;   for( int i = 0; i &lt; numComponents; ++i )<br>
&gt;&gt;   {<br>
&gt;&gt;     vtkSmartPointer&lt;vtkImageExtractComponents&gt; extract =<br>
&gt;&gt; vtkSmartPointer&lt;vtkImageExtractComponents&gt;::New();<br>
&gt;&gt;     extract-&gt;SetInputConnection( reader-&gt;GetOutputPort() );<br>
&gt;&gt;     extract-&gt;SetComponents( i );<br>
&gt;&gt;     extract-&gt;Update();<br>
&gt;&gt;<br>
&gt;&gt;     double range[2];<br>
&gt;&gt;     extract-&gt;GetOutput()-&gt;GetScalarRange( range );<br>
&gt;&gt;     vtkSmartPointer&lt;vtkImageAccumulate&gt; histogram =<br>
&gt;&gt; vtkSmartPointer&lt;vtkImageAccumulate&gt;::New();<br>
&gt;&gt;     histogram-&gt;SetInputConnection( extract-&gt;GetOutputPort() );<br>
&gt;&gt;     histogram-&gt;SetComponentExtent(<br>
&gt;&gt; 0,static_cast&lt;int&gt;(range[1])-static_cast&lt;int&gt;(range[0])-1,0,0,0,0 );<br>
&gt;&gt;     histogram-&gt;SetComponentOrigin( range[0],0,0 );<br>
&gt;&gt;     histogram-&gt;SetComponentSpacing( 1,0,0 );<br>
&gt;&gt;     histogram-&gt;SetIgnoreZero( ignoreZero );<br>
&gt;&gt;     histogram-&gt;Update();<br>
&gt;&gt;<br>
&gt;&gt;     if( range[1] &gt; xmax ) xmax = range[1];<br>
&gt;&gt;     if( histogram-&gt;GetOutput()-&gt;GetScalarRange()[1] &gt; ymax ) ymax =<br>
&gt;&gt; histogram-&gt;GetOutput()-&gt;GetScalarRange()[1];<br>
&gt;&gt;<br>
&gt;&gt;     plot-&gt;AddInput( histogram-&gt;GetOutput() );<br>
&gt;&gt;<br>
&gt;&gt;     if( numComponents &gt; 1 )<br>
&gt;&gt;       {<br>
&gt;&gt;       plot-&gt;SetPlotColor(i,colors[i]);<br>
&gt;&gt;       plot-&gt;SetPlotLabel(i,labels[i]);<br>
&gt;&gt;       plot-&gt;LegendOn();<br>
&gt;&gt;<br>
&gt;&gt;       myfile &lt;&lt; &quot;\n&quot; &lt;&lt; labels[i] &lt;&lt; &quot;\n\n&quot;;<br>
&gt;&gt;       }<br>
&gt;&gt;<br>
&gt;&gt;     unsigned int temp = (range[1]-1);<br>
&gt;&gt;     unsigned int frequency[numLevels];<br>
&gt;&gt;<br>
&gt;&gt;     std::cout&lt;&lt; &quot;range: &quot; &lt;&lt; range[0] &lt;&lt; &quot; &quot; &lt;&lt; range[1] &lt;&lt;std::endl;<br>
&gt;&gt;<br>
&gt;&gt;     unsigned int j;<br>
&gt;&gt;<br>
&gt;&gt;     for(j=0;j&lt;temp;j++){<br>
&gt;&gt;        frequency[j]=0;<br>
&gt;&gt;               frequency[j] =<br>
&gt;&gt; histogram-&gt;GetOutput()-&gt;GetPointData()-&gt;GetScalars()-&gt;GetTuple1(j);<br>
&gt;&gt;            myfile &lt;&lt; j &lt;&lt; &quot;\t&quot; &lt;&lt; frequency[j] &lt;&lt; &quot;\n&quot;;<br>
&gt;&gt;     }<br>
&gt;&gt;   }<br>
&gt;&gt;<br>
&gt;&gt;   myfile.close();<br>
&gt;&gt;<br>
&gt;&gt;   plot-&gt;SetXRange( 0, xmax );<br>
&gt;&gt;   plot-&gt;SetYRange( 0, ymax );<br>
&gt;&gt;<br>
&gt;&gt;   // Visualize the histogram(s)<br>
&gt;&gt;   vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
&gt;&gt; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&gt;&gt;   renderer-&gt;AddActor(plot);<br>
&gt;&gt;<br>
&gt;&gt;   vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
&gt;&gt; vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
&gt;&gt;   renderWindow-&gt;AddRenderer( renderer );<br>
&gt;&gt;   renderWindow-&gt;SetSize(640, 480);<br>
&gt;&gt;<br>
&gt;&gt;   vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; interactor =<br>
&gt;&gt;       vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&gt;&gt;   interactor-&gt;SetRenderWindow( renderWindow );<br>
&gt;&gt;<br>
&gt;&gt;   // Initialize the event loop and then start it<br>
&gt;&gt;   interactor-&gt;Initialize();<br>
&gt;&gt;   interactor-&gt;Start();<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;   return  EXIT_SUCCESS;<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I reorganized the code a little bit, changed the input to a jpeg, and<br>
&gt;&gt;&gt; posted an example in the &quot;broken&quot; section:<br>
&gt;&gt;&gt; <a href="http://www.cmake.org/Wiki/VTK/Examples/Histogram" target="_blank">http://www.cmake.org/Wiki/VTK/Examples/Histogram</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Maybe this will double your chances of someone seeing it and figuring<br>
&gt;&gt;&gt; out what is wrong :)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; David<br>
<br>
</div></div>Michiel,<br>
<br>
Dean has kindly been working on some examples:<br>
<div class="im"><br>
<a href="http://www.cmake.org/Wiki/VTK/Examples/Histogram" target="_blank">http://www.cmake.org/Wiki/VTK/Examples/Histogram</a><br>
</div><a href="http://www.cmake.org/Wiki/VTK/Examples/HistogramBarChart" target="_blank">http://www.cmake.org/Wiki/VTK/Examples/HistogramBarChart</a><br>
<br>
Have you done something that is not present in one of these? If so,<br>
can you explain the difference and we&#39;ll work together to create a<br>
third example.<br>
<div><div></div><div class="h5"><br>
Thanks,<br>
<br>
David<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
</div></div></blockquote></div><br>