[vtkusers] raw slices - single file - visualize problem

Christos Panagiotou C.Panagiotou at cs.ucl.ac.uk
Thu Feb 19 05:43:03 EST 2004


guys 

i have a volume of brain slices stored in one single file (.raw)
the file comes from kitware from the following url:

ftp://public.kitware.com/pub/itk/Data/BrainWeb

the dimensions of the file are said to be xyz: 181 217 180

i try to visualize the file by the following code: 

  const char *fname = "/home/christos/PhD/Data/raw/Brain1/Brain/brainweb1e1a10f20.raw";

  vtkImageReader2 *v = vtkImageReader2::New();

    v->SetDataExtent(1,181,1,217,1,180);

    v->SetSwapBytes(2);

    v->SetDataScalarTypeToShort();

    v->SetFileName(fname);

    v->SetFileDimensionality(3);

    v->SetDataSpacing (1.0,1.0,1.0);

    v->DebugOn();

    v->Update();



which later on i pass v -> contour filter -> polydatanormals -> 
polydatamapper -> actor  -> renderer -> window ...

If run the above code what i get is an error saying:
File operation failed. row = -126, Read = 352, FilePos = -1

If i run the same example with data extent of (1,181,1,217,1,50) - i just reduced the number of slices i see of course a part of the volume.
(the weird thing is that i see 4 identical volumes in the window, each one taking a small part of the window)

so i have 2 problems... how to visualize the whole volume and how to have only one instance in the window!

(the volume is signed short)


thanks in advance for your time
christos


p.s. i give you the full code incase it helps:

--------------------------------------------------

#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageReader2.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"


int main (int argc, char **argv)
{


  const char *fname = "/home/christos/PhD/Data/raw/Brain1/Brain/brainweb1e1a10f20.raw";




  

  vtkRenderer *aRenderer = vtkRenderer::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
  renWin->AddRenderer(aRenderer);
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
  iren->SetRenderWindow(renWin);

  //----- read volume
  vtkImageReader2 *v = vtkImageReader2::New();
    v->SetDataExtent(0,180,0,216,1,50 );
    v->SetDataByteOrderToBigEndian();
    v->SetDataScalarTypeToShort();
    v->SetFileName(fname);
    v->SetFileDimensionality(3);
    v->SetSwapBytes(2);
    v->SetDataSpacing (1.0,1.0,1.0);
    v->DebugOn();
    v->Update();


  vtkContourFilter *skinExtractor = vtkContourFilter::New();
    skinExtractor->SetInput((vtkDataSet *)v->GetOutput());    
//    skinExtractor->SetValue(0, 500); 

  vtkPolyDataNormals *skinNormals = vtkPolyDataNormals::New();
    skinNormals->SetInput(skinExtractor->GetOutput());
    skinNormals->SetFeatureAngle(60.0);

  vtkPolyDataMapper *skinMapper = vtkPolyDataMapper::New();
    skinMapper->SetInput(skinNormals->GetOutput());
    skinMapper->ScalarVisibilityOff();

  vtkActor *skin = vtkActor::New();
    skin->SetMapper(skinMapper);

  vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
    outlineData->SetInput((vtkDataSet *) v->GetOutput());
  vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
    mapOutline->SetInput(outlineData->GetOutput());
  vtkActor *outline = vtkActor::New();
    outline->SetMapper(mapOutline);
    outline->GetProperty()->SetColor(0,0,0);


  aRenderer->AddActor(outline);
  aRenderer->AddActor(skin);
  aRenderer->ResetCamera ();
  aRenderer->SetBackground(1,1,1);
  renWin->SetSize(640, 480);
  aRenderer->ResetCameraClippingRange();


  iren->Initialize();
  iren->Start();

  v->Delete();
  skinExtractor->Delete();
  skinNormals->Delete();
  skinMapper->Delete();
  skin->Delete();
  outlineData->Delete();
  mapOutline->Delete();
  outline->Delete();
  iren->Delete();
  renWin->Delete();
  aRenderer->Delete();


}
------------------------------------------------------------






More information about the vtkusers mailing list