vtk常用类总结

1将VTKImageData转化成VTKPolydata,应该其他数据类型转化polydata也行

vtkSmartPointer<vtkImageDataGeometryFilter>ConvertImageToPloy = vtkSmartPointer<vtkImageDataGeometryFilter>::New();

2vtkPolyDataToImageStencilvtkImageStencil切割vtkimageData,输入模型可以是polydata.

vtkSmartPointer<vtkPolyDataToImageStencil > poly2Stencil = vtkSmartPointer<vtkPolyDataToImageStencil >::New();

poly2Stencil->SetInputConnection(m_spAppendPolyData->GetOutputPort());

int originalExtent[6] = {0};
vtkSmartPointer<vtkImageData>GropResut = NULL;
 if (m_pMipMprViewModel != NULL)
 {

    GropResut =m_pMipMprViewModel->GetCropResultImageData();
    //GropResut->GetExtent(originalExtent);
  }
  else
  {
      GropResut = m_VrOriData;
      // m_VrOriData->GetExtent(originalExtent);
  }
   poly2Stencil->SetOutputOrigin(GropResut->GetOrigin());
   poly2Stencil->SetOutputSpacing(GropResut->GetSpacing());
   poly2Stencil->SetOutputWholeExtent(originalExtent);
   poly2Stencil->Update();

 vtkSmartPointer<vtkImageStencil> ellipseStencil =vtkSmartPointer<vtkImageStencil>::New();  
ellipseStencil->SetStencilData(poly2Stencil->GetOutput());
ellipseStencil->SetInputData( GropResut); ellipseStencil->ReverseStencilOff(); double dRange[2] = {.0}; GropResut->GetScalarRange( dRange ); ellipseStencil->SetBackgroundValue(dRange[0]);ellipseStencil->Update();

3简单的管道建立

  vtkSmartPointer<vtkPolyDataMapper> testPolyDataMapper =vtkSmartPointer<vtkPolyDataMapper>::New();

   vtkSmartPointer<vtkActor>testActor = vtkSmartPointer<vtkActor>::New();

    vtkSmartPointer<vtkRenderer> testRenderer =vtkSmartPointer<vtkRenderer>::New();

    vtkSmartPointer<vtkRenderWindow> testWindow =vtkSmartPointer<vtkRenderWindow>::New();

    vtkSmartPointer<vtkRenderWindowInteractor>testWindowIter = vtkSmartPointer<vtkRenderWindowInteractor>::New();

     testPolyDataMapper->SetInputConnection(IntersectionData->GetOutputPort());

     testPolyDataMapper->ScalarVisibilityOff();

     testActor->SetMapper(testPolyDataMapper);

     testRenderer->AddViewProp(testActor);

     testRenderer->AddActor(testActor);

     testWindow->AddRenderer(testRenderer);

     testWindowIter->SetRenderWindow(testWindow);

      testWindow->Render();

      testWindowIter->Start();

4vtkImageShrink3D类实现图像降采样。降采样需要设置每个方向的采样率,降采样率越大,图像越模糊。升采样的原理与降采样原理一致,只是增加采样点数来增加图像的维数。VTKvtkImageMagnify来实现图像的升采样

vtkSmartPointer<vtkImageShrink3D> shrinkFilter =  vtkSmartPointer<vtkImageShrink3D>::New();  
shrinkFilter->SetInputConnection(reader->GetOutputPort());//建立管道  
shrinkFilter->SetShrinkFactors(16, 16, 1);//设置降采样率  
shrinkFilter->Update();  
  
vtkSmartPointer<vtkImageMagnify> magnifyFilter =  
vtkSmartPointer<vtkImageMagnify>::New();  
magnifyFilter->SetInputConnection(reader->GetOutputPort());  
magnifyFilter->SetMagnificationFactors(10, 10, 1);  
magnifyFilter->Update(); 



猜你喜欢

转载自blog.csdn.net/zzhouzhou237/article/details/80446897