在vtk中可视化不规则数据

发布于 2024-08-10 12:40:19 字数 194 浏览 5 评论 0原文

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

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

I have an irregular data, x dimension - 384, y dimension - 256 and z dimension 64. Now these coordinates are stored in 3 separate binary files and i have a data file having a data value for these points. I want to know, how can i represent such data to be easily visualized in vtk.

Till now we were using AVS which has fld files, which can read such data easily. I dont know how to do it in vtk. Would appreciate any pointers in this direction.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

丶视觉 2024-08-17 12:40:19

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

}

My best answer would be write a small program that reads in the files and then fills a vtkImageData object and then save it using vtkMetaImageWriter or something?

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; 
          } 
     }              

}

菊凝晚露 2024-08-17 12:40:19

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

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

希望这有帮助,
卡洛斯-

Maybe you can write a short program to convert the files to a VTK native format. They are straightforward to work with, and there are ASCII and binary flavors. They are described in this document: www.vtk.org/VTK/img/file-formats.pdf

You may find this helpful also: http://www.rug.nl/cit/hpcv/visualisation/VTK/avs2vtk/man.html - if you dig through the page, there are scripts there to convert AVS files to VTK formats, it may be a good start point.

Hope this helps,
Carlos-

ゝ杯具 2024-08-17 12:40:19

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

您也可以像此示例一样保存 vtk 文件
这里是保存点的示例

You can use paraview to open all files, merge the points and visualize.
here is a example for load files

you can save the vtk file too like this example
here is a example for save the points

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文