Advertisement
Guest User

[C++] 3D imaging using vtk v.2

a guest
Nov 30th, 2015
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.30 KB | None | 0 0
  1. void MainWindow::displayOriImage(PointerImage3D img)
  2. {
  3.     typedef itk::ImageToVTKImageFilter<Image3DType> TemplatedConnectorType;
  4.     TemplatedConnectorType::Pointer con = TemplatedConnectorType::New();
  5.     con->SetInput(img);
  6.     try {
  7.         con->Update();
  8.     } catch (itk::ExceptionObject &e)
  9.     {
  10.         cerr << e << endl;
  11.     }
  12.     Image3DType::SizeType size = img->GetLargestPossibleRegion().GetSize();
  13.     Image3DType::IndexType start = img->GetLargestPossibleRegion().GetIndex();
  14.  
  15.     vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
  16.     vtkSmartPointer<vtkRenderWindow> wnd = vtkSmartPointer<vtkRenderWindow>::New();
  17.     vtkSmartPointer<vtkRenderWindowInteractor> wndInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
  18.  
  19.     wnd->SetSize(520,520);
  20.     wnd->AddRenderer(renderer);
  21.     wndInteractor->SetRenderWindow(wnd);
  22.  
  23.     vtkSmartPointer<vtkProperty> property = vtkSmartPointer<vtkProperty>::New();
  24.     vtkSmartPointer<vtkCellPicker> picker = vtkSmartPointer<vtkCellPicker>::New();
  25.     picker->SetTolerance(0.005);
  26.  
  27.     vtkSmartPointer<vtkImagePlaneWidget> xPlane = vtkSmartPointer<vtkImagePlaneWidget>::New();
  28.     vtkSmartPointer<vtkImagePlaneWidget> yPlane = vtkSmartPointer<vtkImagePlaneWidget>::New();
  29.     vtkSmartPointer<vtkImagePlaneWidget> zPlane = vtkSmartPointer<vtkImagePlaneWidget>::New();
  30.  
  31.     xPlane->DisplayTextOn();
  32.     xPlane->SetInputData(con->GetOutput());
  33.     xPlane->SetPlaneOrientationToXAxes();
  34.     xPlane->SetSliceIndex(0);
  35.     xPlane->SetPicker(picker);
  36.     xPlane->RestrictPlaneToVolumeOn();
  37.     xPlane->GetPlaneProperty()->SetColor(1.0,0.0,0.0);
  38.     xPlane->SetTexturePlaneProperty(property);
  39.     xPlane->SetDefaultRenderer(renderer);
  40.     xPlane->SetResliceInterpolateToNearestNeighbour();
  41.  
  42.     yPlane->DisplayTextOn();
  43.     yPlane->SetInputData(con->GetOutput());
  44.     yPlane->SetPlaneOrientationToYAxes();
  45.     yPlane->SetSliceIndex(0);
  46.     yPlane->SetPicker(picker);
  47.     yPlane->RestrictPlaneToVolumeOn();
  48.     yPlane->GetPlaneProperty()->SetColor(0.0,1.0,0.0);
  49.     yPlane->SetTexturePlaneProperty(property);
  50.     yPlane->SetDefaultRenderer(renderer);
  51.     yPlane->SetLookupTable(xPlane->GetLookupTable());
  52.  
  53.     zPlane->DisplayTextOn();
  54.     zPlane->SetInputData(con->GetOutput());
  55.     zPlane->SetPlaneOrientationToZAxes();
  56.     zPlane->SetSliceIndex(0);
  57.     zPlane->SetPicker(picker);
  58.     zPlane->RestrictPlaneToVolumeOn();
  59.     zPlane->GetPlaneProperty()->SetColor(0.0,0.0,1.0);
  60.     zPlane->SetTexturePlaneProperty(property);
  61.     zPlane->SetDefaultRenderer(renderer);
  62.     zPlane->SetLookupTable(xPlane->GetLookupTable());
  63.  
  64.     xPlane->SetInteractor(wndInteractor);
  65.     xPlane->On();
  66.     xPlane->InteractionOn();
  67.  
  68.     yPlane->SetInteractor(wndInteractor);
  69.     yPlane->On();
  70.     yPlane->InteractionOn();
  71.  
  72.     zPlane->SetInteractor(wndInteractor);
  73.     zPlane->On();
  74.     zPlane->InteractionOn();
  75.  
  76.     renderer->SetBackground(0.4392, 0.5020, 0.5647);
  77.  
  78.     vtkSmartPointer<vtkImageResliceMapper> mapper = vtkSmartPointer<vtkImageResliceMapper>::New();
  79.     vtkSmartPointer<vtkImageActor> actor = vtkSmartPointer<vtkImageActor>::New();
  80.  
  81.     actor->SetMapper(mapper);
  82.     mapper->SetInputData(con->GetOutput());
  83.     renderer->AddActor(actor);
  84.  
  85.     renderer->ResetCamera();
  86.     wnd->Render();
  87.     wndInteractor->Start();
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement