Dear All,<br><br>I&#39;d like to plot a histogram of an image volume, file type metaImage.<br><br>I&#39;ve managed to plot a histogram using the xyPlotActor, yet I have no way of verifying if it is alright.<br>It also produces a segmentation fault.<br>

<br>I can&#39;t get the same histogram plotted using the BarChartActor.<br><br>Could anybody verify my code of both plots? Sorry, I&#39;m a beginner, and at this point I&#39;m stuck.<br><br>Kind regards,<br><br>Michael<br>

<br>#include &lt;vtkImageData.h&gt;<br>#include &lt;vtkMetaImageReader.h&gt;<br>#include &lt;vtkImageAccumulate.h&gt;<br>#include &lt;vtkSmartPointer.h&gt;<br>#include &lt;vtkBarChartActor.h&gt;<br>#include &quot;vtkRenderer.h&quot;<br>

#include &quot;vtkRenderWindow.h&quot;<br>#include &quot;vtkRenderWindowInteractor.h&quot;<br>#include &quot;vtkPolyDataMapper.h&quot;<br>#include &quot;vtkActor.h&quot;<br>#include &quot;vtkContourFilter.h&quot;<br>#include &quot;vtkImageAccumulate.h&quot;<br>

#include &quot;vtkXYPlotActor.h&quot;<br>#include &quot;vtkImageThreshold.h&quot;<br><br>int main(int argc, char *argv[])<br>{<br>// handle the arguments<br>if(argc != 2)<br>    {<br>    vtkstd::cout &lt;&lt; &quot;Required arguments: filename.mhd&quot; &lt;&lt; vtkstd::endl;<br>

    }<br>  <br>// open a metaimage<br>vtkMetaImageReader * metaImageReader = vtkMetaImageReader::New();<br>metaImageReader-&gt;SetFileName(argv[1]);<br><br>//metaImageReader-&gt;Update();<br>vtkSmartPointer&lt;vtkImageAccumulate&gt; histogram = vtkSmartPointer&lt;vtkImageAccumulate&gt;::New();<br>

<br>histogram-&gt;SetInput(metaImageReader-&gt;GetOutput());<br>// sets number of bins: 10 = N# bins<br>  histogram-&gt;SetComponentExtent(0, 4000, 0, 0, 0, 0);<br>  histogram-&gt;SetComponentOrigin(0, 0, 0);<br>  histogram-&gt;SetComponentSpacing(0.16, 0.16, 3.26); // component spacing: depends on spacing of input volume<br>

  histogram-&gt;UpdateWholeExtent();<br><br>    vtkXYPlotActor* plot = vtkXYPlotActor::New();<br>    plot-&gt;ExchangeAxesOff();<br>    plot-&gt;SetLabelFormat(&quot;%g&quot;);<br><br> //   plot-&gt;SetXRange(0, 320);<br>

 //   plot-&gt;SetYRange(0, 10000);<br>    plot-&gt;SetXTitle(&quot;Iso Surface Level&quot;);<br>    plot-&gt;SetYTitle(&quot;Frequency&quot;);<br>    plot-&gt;AddInput(histogram-&gt;GetOutput());<br>    plot-&gt;SetXValuesToValue();<br>

<br>    vtkBarChartActor* plot2 = vtkBarChartActor::New();<br>    plot2-&gt;SetInput(histogram-&gt;GetOutput());<br><br>  vtkRenderer *aRenderer = vtkRenderer::New();<br>    vtkRenderWindow *renWin = vtkRenderWindow::New();<br>

    renWin-&gt;AddRenderer(aRenderer);<br>    vtkRenderWindowInteractor *iren =<br>    vtkRenderWindowInteractor::New();<br>    iren-&gt;SetRenderWindow(renWin);<br><br>  aRenderer-&gt;AddActor(plot);<br> <br>  renWin-&gt;SetSize(640, 480);<br>

<br>  // Initialize the event loop and then start it.<br>  iren-&gt;Initialize();<br>  iren-&gt;Start(); <br><br>   vtkRenderer *aRenderer2 = vtkRenderer::New();<br>    vtkRenderWindow *renWin2 = vtkRenderWindow::New();<br>

    renWin2-&gt;AddRenderer(aRenderer2);<br>    vtkRenderWindowInteractor *iren2 =<br>    vtkRenderWindowInteractor::New();<br>    iren2-&gt;SetRenderWindow(renWin2);<br><br>  aRenderer2-&gt;AddActor(plot2);<br> <br>  renWin2-&gt;SetSize(640, 480);<br>

<br>  // Initialize the event loop and then start it.<br>  iren2-&gt;Initialize();<br>  iren2-&gt;Start(); <br><br>  histogram-&gt;Delete();<br>  plot-&gt;Delete();<br>  plot2-&gt;Delete();<br>  iren-&gt;Delete();<br>  renWin-&gt;Delete();<br>

  aRenderer-&gt;Delete();<br><br>return (0);<br>}<br><br><br><br><br>