将VtkVolume保存为stl文件(3d数据??)>

问题描述 投票:0回答:1

我现在正在使用vtk制作函数。过程如下:

  1. 加载dicom系列
  2. 我们只能看到部分在vtk分段函数中赋值。
  3. 写入stl文件
  4. 我需要一些有关将vtkVolume写入stl数据的功能。如何将vtkvolume数据保存到stl文件?

我的以下代码:-

vtkDICOMImageReader *reader = vtkDICOMImageReader::New();
reader->SetDirectoryName("Dicom_Series");
reader->Update();

vtkPiecewiseFunction* opacitytransfer = vtkPiecewiseFunction::New();
opacitytransfer->AddPoint(-700, 0.0);
opacitytransfer->AddPoint(-101, 0.0);
opacitytransfer->ClampingOff();

vtkColorTransferFunction* colortranster = vtkColorTransferFunction::New();
colortranster->AddRGBPoint(-700, 0.0, 0.0, 0.0);
colortranster->AddRGBPoint(-101, 54.0 / 255.0, 154.0 / 255.0, 254.0 / 255.0);
colortranster->AddRGBPoint(-100, 237.0 / 255.0, 204.0 / 255.0, 159.0 / 255.0);
colortranster->ClampingOff();

vtkVolumeProperty* volumeproperty = vtkVolumeProperty::New();
volumeproperty->SetColor(colortranster);
volumeproperty->SetScalarOpacity(opacitytransfer);
volumeproperty->ShadeOn();

vtkFixedPointVolumeRayCastMapper* volumeMapper = vtkFixedPointVolumeRayCastMapper::New();
volumeMapper->SetInputConnection(reader->GetOutputPort());

vtkVolume* volume1 = vtkVolume::New();
volume1->SetMapper(volumeMapper);
volume1->SetProperty(volumeproperty);

vtkRenderer* aRenderer = vtkRenderer::New();
aRenderer->AddVolume(volume1);
aRenderer->SetBackground(0, 0, 0);

vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(aRenderer);
renWin->SetSize(600, 600);
renWin->Render();

vtkRenderWindowInteractor *iren =   vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);

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

我现在正在使用vtk制作函数。过程如下:加载dicom系列,我们只能看到vtk Piecewise函数中有部分值。写stl文件,我需要一些关于...的功能...

vtk
1个回答
0
投票

您不能将卷映像写为STL文件。 STL是表面网格格式,其数据类型与图像完全不同。您需要从体积中提取等值面。为此,您可以使用VTK的MarchingCubes过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.