簡體   English   中英

保存並寫入 .vtk polydata 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM