如何从VTKImageData创建VTKPolyData(表面提取)?

时间:2016-04-27 20:02:44

标签: c++ vtk

鉴于vtk图片:

vtkSmartPointer<vtkImageData> VTKImage = vtkSmartPointer<vtkImageData>::New();

这是一个包含分割结果作为二进制数据的3D图像(分段对象= 1,背景= 0), 如何提取分段对象的表面并将其保存为VTKpolyData?

2 个答案:

答案 0 :(得分:2)

最小的工作示例就是这样。

vtkSmartPointer<vtkMarchingCubes> surface = 
vtkSmartPointer<vtkMarchingCubes>::New();

#if VTK_MAJOR_VERSION <= 5
surface->SetInput(volume);
#else
surface->SetInputData(volume);
#endif
surface->SetValue(0, 0.5);
surface->Update();

vtkSmartPointer<vtkPolyData> poly = vtkSmartPointer<vtkPolyData>::New();
poly = surface->GetOutput();

答案 1 :(得分:1)

使用vtkMarchingCubes类。有一些示例herehere