我有一个不规则数据,x 维度 - 384,y 维度 - 256 和 z 维度 64。现在这些坐标存储在 3 个单独的二进制文件中,并且我有一个数据文件,其中包含这些点的数据值。我想知道,我怎样才能表示这些数据以便在 vtk 中轻松可视化。
到目前为止,我们使用的是具有 fld 文件的 AVS,它可以轻松读取此类数据。我不知道如何在 vtk 中做到这一点。将不胜感激这个方向的任何指示。
我有一个不规则数据,x 维度 - 384,y 维度 - 256 和 z 维度 64。现在这些坐标存储在 3 个单独的二进制文件中,并且我有一个数据文件,其中包含这些点的数据值。我想知道,我怎样才能表示这些数据以便在 vtk 中轻松可视化。
到目前为止,我们使用的是具有 fld 文件的 AVS,它可以轻松读取此类数据。我不知道如何在 vtk 中做到这一点。将不胜感激这个方向的任何指示。
我最好的答案是编写一个读取文件的小程序,然后填充一个 vtkImageData 对象,然后使用 vtkMetaImageWriter 或其他东西保存它?
vtkSmartPointer<vtkImageData> ImageData = vtkSmartPointer<vtkImageData>::New();
ImageData->SetDimensions(384,254,64);
ImageData->SetOrigin(0.0,0.0,0.0);
ImageData->SetSpacing(1.0,1.0,1.0);
ImageData->SetScalarTypeToDouble();
ImageData->AllocateScalars();
for(int i=0; i<z_dim-1; i++){
for(int j=0;j<y_dim-1;j++){
for(int k=0;k<x_dim-1;j++){
double pix= pixel from data file
double* pixel = static_cast<double*>(ImageData->GetScalarPointer(k,j,i));
pixel[0] = pix;
}
}
}
也许您可以编写一个简短的程序将文件转换为 VTK 本机格式。它们使用起来很简单,并且有 ASCII 和二进制风格。它们在本文档中进行了描述:www.vtk.org/VTK/img/file-formats.pdf
您可能会发现这也很有帮助:http ://www.rug.nl/cit/hpcv/visualisation/VTK/avs2vtk/man.html - 如果您浏览该页面,那里有将 AVS 文件转换为 VTK 格式的脚本,这可能是一个很好的起点。
希望这会有所帮助,卡洛斯-
您可以使用paraview打开所有文件,合并点并可视化。 这是加载文件的示例
你也可以像这个例子一样保存 vtk 文件 这里是一个保存点的例子