[vtkusers] vtkImageReslice

JULIO DANIEL judagica at hotmail.com
Wed Jan 30 08:56:50 EST 2002


this a code for vtkimageReslice and vtkImageViewer

good luck.

  renAxial = vtkRenderer::New();
  vtkRenderWindow *renWindowAxial = vtkRenderWindow::New();
  renWindowAxial->AddRenderer(renAxial);
  AxialView->SetRenderWindow(renWindowAxial);

  renSagittal = vtkRenderer::New();
  vtkRenderWindow *renWindowSagittal = vtkRenderWindow::New();
  renWindowSagittal->AddRenderer(renSagittal);
  SagittalView->SetRenderWindow(renWindowSagittal);

  renCoronal = vtkRenderer::New();
  vtkRenderWindow *renWindowCoronal = vtkRenderWindow::New();
  renWindowCoronal->AddRenderer(renCoronal);
  CoronalView->SetRenderWindow(renWindowCoronal);


// open volume
  reader = vtkVolume16Reader::New();
  reader->ReleaseDataFlagOff();

  reader->SetDataDimensions(x_dimension_volumen,y_dimension_volumen);

  reader->SetDataByteOrderToLittleEndian();

  reader->SetFilePrefix(path_volume_files);

  reader->SetImageRange(z_initial_slice,z_final_slice);

  reader->SetDataSpacing 
(x_spacing_volume,y_spacing_volume,z_spacing_volume);

  reader->SetDataOrigin(-x_spacing_volume*((x_dimension_volumen-1)/2),
                        -y_spacing_volume*((y_dimension_volumen-1)/2),
                        -z_spacing_volume*((z_dimension_volumen-1)/2));

  reader->SetDataMask(0x7fff);
  reader->UpdateWholeExtent();
// end of open file

//************************sagittal

// sagittal transform
  sagittal_transform = vtkTransform::New();
  sagittal_transform->RotateX(0);
  sagittal_transform->RotateY(-90);
  sagittal_transform->RotateZ(0);
// end sagittal transform

// sagittal cut
  sagittal_reslice = vtkImageReslice::New();
  sagittal_reslice->SetInput(reader->GetOutput());
  sagittal_reslice->SetOutputSpacing(1,1,x_spacing_volume);
  sagittal_reslice->SetResliceTransform(sagittal_transform);
  sagittal_reslice->InterpolateOn();
  sagittal_reslice->SetBackgroundLevel(1023);
//end of sagittal cut

// sagital cut to viewer
  sagittal_viewer = vtkImageViewer::New();
  sagittal_viewer->SetInput(sagittal_reslice->GetOutput());
  sagittal_viewer->SetZSlice(x_dimension_volumen-1);
  sagittal_viewer->SetColorWindow(2000);
  sagittal_viewer->SetColorLevel(1000);
// end sagital cut to viewer

// assign actor to the sagittal renderer
  renSagittal->AddActor2D(sagittal_viewer->GetActor2D());
// end assign actor to the sagittal renderer




//*****************************axial
// axial transform
  axial_transform = vtkTransform::New();
  axial_transform->RotateX(0);
  axial_transform->RotateY(0);
  axial_transform->RotateZ(0);
// end axial transform

// axial cut
  axial_reslice = vtkImageReslice::New();
  axial_reslice->SetInput(reader->GetOutput());
  axial_reslice->SetOutputSpacing(1,1,z_spacing_volume);
  axial_reslice->SetResliceTransform(axial_transform);
  axial_reslice->InterpolateOn();
  axial_reslice->SetBackgroundLevel(1023);
// end of axial cut

//axial cut to viewer
  axial_viewer = vtkImageViewer::New();
  axial_viewer->SetInput(axial_reslice->GetOutput());
  axial_viewer->SetZSlice(0);
  axial_viewer->SetColorWindow(2000);
  axial_viewer->SetColorLevel(1000);
//end of axial cut to viewer

// assign actor to the axial renderer
  renAxial->AddActor2D(axial_viewer->GetActor2D());
// end assign actor to the axial renderer



//*****************coronal
// coronal transform
  coronal_transform = vtkTransform::New();
  coronal_transform->RotateX(-90);
  coronal_transform->RotateY(180);
  coronal_transform->RotateZ(180);
// end coronal transform

// coronal cut
  coronal_reslice = vtkImageReslice::New();
  coronal_reslice->SetInput(reader->GetOutput());
  coronal_reslice->SetOutputSpacing(1,1,y_spacing_volume);
  coronal_reslice->SetResliceTransform(coronal_transform);
  coronal_reslice->InterpolateOn();
  coronal_reslice->SetBackgroundLevel(1023);
// end of coronal cut

// axial cut to viewer
  coronal_viewer = vtkImageViewer::New();
  coronal_viewer->SetInput(coronal_reslice->GetOutput());
  coronal_viewer->SetZSlice(y_dimension_volumen-1);
  coronal_viewer->SetColorWindow(2000);
  coronal_viewer->SetColorLevel(1000);
// axial cut to viewer

// assign actor to the coronal renderer
  renCoronal->AddActor2D(coronal_viewer->GetActor2D());
// end assign actor to the coronal renderer




_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx




More information about the vtkusers mailing list