[英]save and write a .vtk polydata file
我使用這個 puyhon 代碼將 nifti 文件轉換為 .vtk polydata 網格
import itk
import vtk
input_filename = '/home/nour/Bureau/7ans/244/whatIneed/244seg_pve_2.nii.gz'
reader=itk.ImageFileReader[itk.Image[itk.UC,3]].New()
reader.SetFileName(input_filename)
reader.Update()
itkToVtkFilter = itk.ImageToVTKImageFilter[itk.Image[itk.UC,3]].New()
itkToVtkFilter.SetInput(reader.GetOutput())
myvtkImageData = itkToVtkFilter.GetOutput()
print("myvtkImageData")
以及用於保存和寫入我使用的 .vtk 文件
writer = vtk.vtkPolyDataWriter()
writer.SetInputData()
writer.SetFileName("/home/nour/Bureau/7ans/244/whatIneed/Output.vtk")
writer.Write()
和這里的錯誤:錯誤:在 /work/standalone-x64-build/VTK-source/Common/ExecutionModel/vtkDemandDrivenPipeline.cxx, line 809 vtkCompositeDataPipeline (0x4d9cac0): Input for connection index 0 on input port index 0 for algorithm vtkPolyDataWriter( 0x4de3ea0) 是 vtkImageData 類型,但需要一個 vtkPolyData。
我想知道編寫 vtk Polydata 文件的好方法是什么。 謝謝
圖像和多邊形網格是根本不同的數據類型。 您不能只是將圖像投射到網格中。
要獲得網格,您需要進行某種類型的等值面提取。 通常,您會選擇一些圖像強度作為表面的值,然后您將使用諸如 Marching Cubes 之類的算法來創建該值的網格。
在 VTK 中,您可以使用 vtkContourFilter 從圖像創建網格。 VTK 示例網站上有許多示例展示了如何使用過濾器。 這是一個:
https://lorensen.github.io/VTKExamples/site/Python/ImplicitFunctions/Sphere/
非常感謝您。 據我了解:1 讀取 nifti 文件(分段文件) 2 應用 itktovtkfilter 3 創建網格(使用 vtkContourFilter) 4 最后將其轉換為 polydata 並將其保存到 .vtk 文件
這是正確的 ??
您需要將圖像(規則網格)轉換為多邊形網格,才能將其保存為.vtk文件。 對於 2D 網格,這可以使用vtkExtractSurface
過濾器完成。
另一種解決方案是使用另一種格式( .vtk是舊格式):
vtkXMLImageDataWriter
,使用該.vti擴展。vtkXMLPolyDataWriter
,它使用.vtp擴展名並提供多邊形網格。 您還可以使用vtkXMLUnstructuredGridWriter
,它使用.vtu擴展名並且可以包含 3D 單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.