2

我有一个不规则数据,x 维度 - 384,y 维度 - 256 和 z 维度 64。现在这些坐标存储在 3 个单独的二进制文件中,并且我有一个数据文件,其中包含这些点的数据值。我想知道,我怎样才能表示这些数据以便在 vtk 中轻松可视化。

到目前为止,我们使用的是具有 fld 文件的 AVS,它可以轻松读取此类数据。我不知道如何在 vtk 中做到这一点。将不胜感激这个方向的任何指示。

4

3 回答 3

2

我最好的答案是编写一个读取文件的小程序,然后填充一个 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; 
          } 
     }              

}

于 2012-05-17T12:32:02.103 回答
1

也许您可以编写一个简短的程序将文件转换为 VTK 本机格式。它们使用起来很简单,并且有 ASCII 和二进制风格。它们在本文档中进行了描述:www.vtk.org/VTK/img/file-formats.pdf

您可能会发现这也很有帮助:http ://www.rug.nl/cit/hpcv/visualisation/VTK/avs2vtk/man.html - 如果您浏览该页面,那里有将 AVS 文件转换为 VTK 格式的脚本,这可能是一个很好的起点。

希望这会有所帮助,卡洛斯-

于 2009-12-12T21:59:31.080 回答
0

您可以使用paraview打开所有文件,合并点并可视化。 这是加载文件的示例

你也可以像这个例子一样保存 vtk 文件 这里是一个保存点的例子

于 2013-04-24T05:00:22.617 回答