[英]writing huge number of points to vtk file format
我正在用python编写脚本,该脚本正在解析约500张宽度为1810px且高度为1808px的图像(3d对象的切片)。 我想从所有这些图像中写入点(使用原始颜色)并将其保存为vtk文件格式。 为了测试目的,我从vtk修改了示例:
import vtk
from vtk import *
#setup points and vertices
Points = vtk.vtkPoints()
Vertices = vtk.vtkCellArray()
for x in xrange(0, 1808):
for y in xrange(0, 1810):
for z in xrange(0, 544):
id = Points.InsertNextPoint(x, y, z)
Vertices.InsertNextCell(1)
Vertices.InsertCellPoint(id)
polydata = vtk.vtkPolyData()
polydata.SetPoints(Points)
polydata.SetVerts(Vertices)
polydata.Modified()
if vtk.VTK_MAJOR_VERSION <= 5:
polydata.Update()
writer = vtk.vtkXMLPolyDataWriter()
writer.SetFileName("TriangleColoredPoints.vtp")
if vtk.VTK_MAJOR_VERSION <= 5:
writer.SetInput(polydata)
else:
writer.SetInputData(polydata)
writer.Write()
现在它甚至都没有读取图像,但是问题是当我添加所有这些点时,我的内存不足了。 有什么办法可以将这些点保存为块吗?
看起来您正在尝试以大约1800x1800x500点(约16亿点)的大小写一个多数据。 数以百万计的可能是有可能的,但数十亿美元是不可能的,无论如何还没有。 看起来您将需要减少问题的大小。 如果确实减小了问题的大小,请使用vtkXMLPolyDataWriter。 它有
writer->SetDataModeToBinary();
writer->SetCompressorTypeToZLib();
这对于将大型模型紧凑地写入文件系统很有用。
或者,您可以将图像存储为上述注释中提到的单个卷(1800x1800x500,vtkImageData),但是仍然会占用非常大的内存。 然后,您可以进行体绘制或行进立方体以获取曲面等。但是,如果没有更多详细信息,您将尝试实现目标,那么就很难再回答了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.