Hi everyone:<div><br></div><div><br></div><div>I have a series of .png lung data and I use ImageSeriesReadWrite example to write the series into volume. Then I use VTK to display the volume.</div><div><br></div><div>The former part of the project seems to work well, since I got the .vtk volume. However, the window shows nothing at last when I was trying to use vtkContourFilter as the filter to display the lung.</div>
<div><br></div><div>I am not sure if I missed to set some data of the volume or this is the visualization problem. Can you help me with this?</div><div><br></div><div>Thanks a lot!</div><div><br></div><div>Best,</div><div>
Yili </div><div><br></div><div>This is the code I changed from the example:</div><div><br></div><div><div>int main( int argc, char ** argv )</div><div>{</div><div> </div><div>  if( argc &lt; 4 )</div><div>    {</div><div>
    std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;</div><div>    std::cerr &lt;&lt; argv[0] &lt;&lt; &quot; firstSliceValue lastSliceValue  outputImageFile &quot; &lt;&lt; std::endl;</div><div>    return EXIT_FAILURE;</div>
<div>    }</div><div><br></div><div><br></div><div><br></div><div>  typedef unsigned char                       PixelType;</div><div>  const unsigned int Dimension = 3;</div><div><br></div><div>  typedef itk::Image&lt; PixelType, Dimension &gt;  ImageType;</div>
<div><br></div><div>  typedef itk::ImageSeriesReader&lt; ImageType &gt;  ReaderType;</div><div>  typedef itk::ImageFileWriter&lt;   ImageType &gt;  WriterType;</div><div><br></div><div>  ReaderType::Pointer reader = ReaderType::New();</div>
<div>  WriterType::Pointer writer = WriterType::New();</div><div><br></div><div><br></div><div>  const unsigned int first = atoi( argv[1] );</div><div>  const unsigned int last  = atoi( argv[2] );</div><div><br></div><div>
  const char * outputFilename = argv[3];</div><div><br></div><div>//============================================Reader Part==============================================</div><div><br></div><div>  typedef itk::NumericSeriesFileNames    NameGeneratorType;</div>
<div><br></div><div>  NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();</div><div><br></div><div><br></div><div>   </div><div><br></div><div>  nameGenerator-&gt;SetSeriesFormat( &quot;h1-1.%03d.png&quot; );</div>
<div><br></div><div>  nameGenerator-&gt;SetStartIndex( first );</div><div>  nameGenerator-&gt;SetEndIndex( last );</div><div>  nameGenerator-&gt;SetIncrementIndex( 1 );</div><div><br></div><div>  system(&quot;pause&quot;);</div>
<div>  itk::PNGImageIO::Pointer pngIO=itk::PNGImageIO::New();</div><div>  pngIO-&gt;SetNumberOfDimensions(3);</div><div><br></div><div><br></div><div>  pngIO-&gt;SetDimensions(0,512);</div><div>  pngIO-&gt;SetDimensions(1,512);</div>
<div>  pngIO-&gt;SetDimensions(2,259);</div><div><br></div><div>  reader-&gt;SetImageIO( pngIO);</div><div><br></div><div><br></div><div><br></div><div><br></div><div>  reader-&gt;SetFileNames( nameGenerator-&gt;GetFileNames()  );</div>
<div>  system(&quot;pause&quot;);</div><div>  reader-&gt;Update();</div><div>  system(&quot;pause&quot;);</div><div><br></div><div>  std::cout&lt;&lt;pngIO-&gt;GetImageSizeInBytes()&lt;&lt;&quot; &quot;&lt;&lt;512*512&lt;&lt;std::endl;</div>
<div>  std::cout&lt;&lt;pngIO-&gt;GetIORegion()&lt;&lt;std::endl;</div><div><br></div><div>//===============================================Writer Part=============================================</div><div><br></div><div>
  itk::VTKImageIO::Pointer vtkIO=itk::VTKImageIO::New();</div><div><br></div><div>  vtkIO-&gt;SetFileTypeToBinary();</div><div><br></div><div>  vtkIO-&gt;SetNumberOfDimensions(3);</div><div>  vtkIO-&gt;SetNumberOfComponents(1);</div>
<div><br></div><div>  vtkIO-&gt;SetDimensions(0,512);</div><div>  vtkIO-&gt;SetDimensions(1,512);</div><div>  vtkIO-&gt;SetDimensions(2,259);</div><div><br></div><div>  vtkIO-&gt;SetSpacing(0,1);</div><div>  vtkIO-&gt;SetSpacing(1,1);</div>
<div>  vtkIO-&gt;SetSpacing(2,2.23776);</div><div><br></div><div>  writer-&gt;SetImageIO(vtkIO);</div><div><br></div><div><br></div><div>  writer-&gt;SetFileName( outputFilename );</div><div><br></div><div>  writer-&gt;SetInput( reader-&gt;GetOutput() );</div>
<div><br></div><div>  try </div><div>    { </div><div>    writer-&gt;Update(); </div><div>    } </div><div>  catch( itk::ExceptionObject &amp; err ) </div><div>    { </div><div>    std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl; </div>
<div>    std::cerr &lt;&lt; err &lt;&lt; std::endl; </div><div>    return EXIT_FAILURE;</div><div>    } </div><div><br></div><div>  std::cout&lt;&lt;vtkIO-&gt;GetIORegion()&lt;&lt;std::endl;</div><div><br></div><div>//==========================================Visualizing Part===============================================</div>
<div><br></div><div><br></div><div>  vtkStructuredPointsReader* vtkReader=vtkStructuredPointsReader::New();</div><div><br></div><div>  vtkReader-&gt;SetFileName(&quot;h1-1.vtk&quot;);</div><div>  vtkReader-&gt;Update();</div>
<div>  </div><div>  vtkContourFilter *iso=vtkContourFilter::New();</div><div>  iso-&gt;SetInputConnection(vtkReader-&gt;GetOutputPort());</div><div>  iso-&gt;SetValue(0,128.0f);</div><div><br></div><div>  </div><div>  vtkRenderer* ren=vtkRenderer::New();</div>
<div>  vtkRenderWindow* renWin=vtkRenderWindow::New();</div><div>  renWin-&gt;AddRenderer(ren);</div><div><br></div><div>  </div><div>  vtkPolyDataMapper* volumeMapper=vtkPolyDataMapper::New();</div><div>  volumeMapper-&gt;SetInputConnection(iso-&gt;GetOutputPort());</div>
<div>  volumeMapper-&gt;ScalarVisibilityOff();</div><div><br></div><div> </div><div>  vtkRenderWindowInteractor* iren=vtkRenderWindowInteractor::New();</div><div><br></div><div>  vtkActor* isoActor=vtkActor::New();</div><div>
  isoActor-&gt;SetMapper(volumeMapper);</div><div><br></div><div><br></div><div>  vtkProperty* prop=vtkProperty::New();</div><div>  prop-&gt;SetColor(0,1,0);</div><div><br></div><div> </div><div>  isoActor-&gt;SetProperty(prop);</div>
<div>  isoActor-&gt;ApplyProperties();</div><div><br></div><div><br></div><div>  ren-&gt;AddActor(isoActor);</div><div> </div><div>  iren-&gt;SetRenderWindow(renWin);</div><div>  renWin-&gt;SetSize(400,400);</div><div>  iren-&gt;Initialize();</div>
<div>  iren-&gt;Start();</div><div><br></div><div><br></div><div>  return EXIT_SUCCESS;</div><div>}</div><div><br></div><div><br></div><div><br></div></div>