Hi,<br><br>I want to read a series of 2D dicom images. Then, I&#39;ll display it as a 3D volume. For that, I followed this steps:<br><br>1- ipp sorter<br>2- setfilenames<br>3- vtkimagechangeinformation<br><br>After these, I tried to visualize them using vtkimageviewer2. <br>


I&#39;m sending almost all the code I wrote. I&#39;m pretty sure it loads and sorts the images. But it gives an error like 
<br><br>

<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="font-family:&#39;Monospace&#39;;font-size:9pt;color:#3c3c3c">Sorting succeeded:0.5</span></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="font-family:&#39;Monospace&#39;;font-size:9pt;color:#3c3c3c">Sorting succeeded:1.5</span></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><span style="font-family:&#39;Monospace&#39;;font-size:9pt;font-weight:600;color:#be1414">The program has unexpectedly finished. <span style="background-color:rgb(0,0,0)"><span><span style="background-color:rgb(255,255,255)"><span></span></span></span></span></span></p>


<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><br><br>vtkGDCMImageReader *dicomReader =<br>        vtkGDCMImageReader::New();<br><br>std::vector&lt;std::string&gt; filenames;<br>


const char *filename = &quot;/home/telemed/Downloads/Dentascan&quot;;<br><br>gdcm::Directory d;<br>d.Load( filename, false);<br><br>filenames = d.GetFilenames();<br><br>gdcm::IPPSorter s;<br>s.SetComputeZSpacing( true );<br>


s.SetZSpacingTolerance( 1e-3 );<br>bool b = s.Sort( filenames );<br> if( !b )<br>    {<br>    std::cerr &lt;&lt; &quot;Failed to sort:&quot; &lt;&lt; &quot;s&quot; &lt;&lt; std::endl;<br>    return 1;<br>    }<br> std::cout &lt;&lt; &quot;Sorting succeeded:&quot; &lt;&lt; s.GetZSpacing() &lt;&lt; std::endl;<br>


 //s.Print( std::cout );<br> const std::vector&lt;std::string&gt; &amp; sorted = s.GetFilenames();<br><br> vtkStringArray *files =<br>         vtkStringArray::New();<br> std::vector&lt; std::string &gt;::const_iterator it = sorted.begin();<br>


 for( ; it != sorted.end(); ++it)<br> {<br> const std::string &amp;f = *it;<br><br> files-&gt;InsertNextValue( f.c_str() );<br> }<br> dicomReader-&gt;SetFileNames( files );<br> //dicomReader-&gt;Update();<br><br> vtkImageChangeInformation *changer =<br>


         vtkImageChangeInformation::New();<br>        changer-&gt;SetInputConnection(dicomReader-&gt;GetOutputPort());<br>        changer-&gt;SetOutputSpacing(VTK_DOUBLE_MAX,VTK_DOUBLE_MAX, 2.0);<br>        changer-&gt;Update();<br>


<br><br> vtkInteractorStyleImage *imageStyle =<br>         vtkInteractorStyleImage::New();<br> vtkRenderWindowInteractor *interactor =<br>         vtkRenderWindowInteractor::New();<br> // Calculate the center of the volume<br>


<br>  dicomReader-&gt;GetOutput()-&gt;UpdateInformation();<br>  int extent[6];<br>  double spacing[3];<br>  double origin[3];<br>  dicomReader-&gt;GetOutput()-&gt;GetWholeExtent(extent);<br>  dicomReader-&gt;GetOutput()-&gt;GetSpacing(spacing);<br>


  dicomReader-&gt;GetOutput()-&gt;GetOrigin(origin);<br>  spacing[2] = 1.5;<br><br>  vtkImageData* image = vtkImageData ::New();<br>        image-&gt;SetSpacing(spacing);<br><br>  std::cout &lt;&lt; &quot;Sorting succeeded:&quot; &lt;&lt; spacing[2] &lt;&lt; std::endl;<br>


  double center[3];<br>  center[0] = origin[0] + spacing[0] * 0.5 * (extent[0] + extent[1]);<br>  center[1] = origin[1] + spacing[1] * 0.5 * (extent[2] + extent[3]);<br>  center[2] = origin[2] + spacing[2] * 0.5 * (extent[4] + extent[5]);<br>


<br>  // Matrices for axial, coronal, sagittal, oblique view orientations<br>      static double axialElements[16] = {<br>               1, 0, 0, center[0],<br>               0, 1, 0, center[1],<br>               0, 0, 1, center[2],<br>


               0, 0, 0, 1 };<br><br>    static double coronalElements[16] = {<br>               1, 0, 0, center[0],<br>               0, 0, 1, center[1],<br>               0,-1, 0, center[2],<br>               0, 0, 0, 1 };<br>


<br>    static double sagittalElements[16] = {<br>               0, 0,-1, center[0],<br>               1, 0, 0, center[1],<br>               0,-1, 0, center[2],<br>               0, 0, 0, 1 };<br><br>    // Set the slice orientation<br>


  vtkMatrix4x4 *resliceAxes = vtkMatrix4x4::New();<br>        resliceAxes-&gt;DeepCopy(coronalElements);<br><br><br>  vtkImageReslice *Reslice = vtkImageReslice::New();<br>        Reslice-&gt;SetInputConnection(changer-&gt;GetOutputPort());<br>


        Reslice-&gt;SetOutputDimensionality(3);<br>        Reslice-&gt;SetResliceAxes(resliceAxes);<br>        Reslice-&gt;SetInterpolationModeToLinear();<br><br>  vtkImageViewer2 *viewer = vtkImageViewer2::New();<br>        viewer-&gt;SetupInteractor(interactor);<br>


        viewer-&gt;SetSize(500,500);<br>        viewer-&gt;SetColorWindow(1024);<br>        viewer-&gt;SetColorLevel(800);<br>        viewer-&gt;SetInputConnection(Reslice-&gt;GetOutputPort());<br><br>    // Create a greyscale lookup table<br>


  vtkLookupTable *table = vtkLookupTable::New();<br>       table-&gt;SetRange(0, 200); // image intensity range<br>       table-&gt;SetValueRange(0.0, 1.0); // from black to white<br>       table-&gt;SetSaturationRange(0.0, 0.0); // no color saturation<br>


       table-&gt;SetRampToLinear();<br>       table-&gt;Build();<br><br>    // Map the image through the lookup table<br>  vtkImageMapToColors *color = vtkImageMapToColors::New();<br>       color-&gt;SetLookupTable(table);<br>


       color-&gt;SetInputConnection(Reslice-&gt;GetOutputPort());<br><br>    // Display the image<br>  vtkImageActor *actor = vtkImageActor::New();<br>       actor-&gt;SetInput(color-&gt;GetOutput());<br>  vtkRenderer *renderer = vtkRenderer::New();<br>


       renderer-&gt;AddActor(actor);<br>  vtkRenderWindow *window = vtkRenderWindow::New();<br>       window-&gt;AddRenderer(renderer);<br><br><br>       interactor-&gt;SetInteractorStyle(imageStyle);<br>       window-&gt;SetInteractor(interactor);<br>


       window-&gt;Render();<br>       interactor-&gt;Start();<br><br>Thanks for your help.<br> <br><span style="font-family:&#39;Monospace&#39;;font-size:9pt;font-weight:600;color:#be1414"><span style="background-color:rgb(0,0,0)"><span><span style="background-color:rgb(255,255,255)"><span></span></span></span></span></span></p>