可视化大型 3D 体积的工具

计算科学 可视化
2021-12-16 17:50:35

我有一系列 2D 图像(png 文件)编码大型生物 3D 体积的分区(分段)。在这些文件中,每个像素都有一种颜色,代表该像素所属的 3D 对象。

我想知道是否有人知道我可以使用的工具,希望是现成的,以 3D 形式可视化这些数据。

我最感兴趣的是免费的或在学术界免费使用的工具。

如果您愿意,我们可以制作这个社区维基。

4个回答

您可以使用VisIt来执行此可视化。根据访问常见问题解答:

VisIt 可以读取由流行的图像编辑软件创建的多种图像文件格式,包括:BMP、JPEG、PNG、PPM、PNM、RGB、TIFF。图像堆栈也可以使用 .imgvol 文件组装成 3D 体积,该文件是一个文本文件,其中包含要组装到 3D 体积中的文件的名称。

例如,我创建了 20 个抛物面切片并将每个切片输出到 PNG 文件中。然后我创建了 imagelist.imgvol,其中包含:

Z_START: 0.0
Z_STEP: 5
test1.png
test2.png
test3.png
test4.png
test5.png
test6.png
test7.png
test8.png
test9.png
test10.png
test11.png
test12.png
test13.png
test14.png
test15.png
test16.png
test17.png
test18.png
test19.png
test20.png

请注意,我使用 Z_STEP 重新缩放 z 轴。然后我在 VisIt 中打开 imgvol 文件,然后单击Add -> Contour -> Intensity. 这将产生以下图像: 在此处输入图像描述

ParaView www.paraview.org -如果您需要将数据处理成 ParaView 喜欢的内容(例如原始数据),也可以使用 ImageJ http://fiji.sc/wiki/index.php/Fiji 。

我会将堆栈加载到 ImageJ 中(它也有 3D 查看器 - 所以试试看),然后将其保存为原始文件,并使用 x_y_z_datasize 命名文件(例如 my_file_1000x1000x20_8bit.raw)。

然后使用 0-999、0-999、0-19 的范围在 ParaView 中加载原始数据,并使用 endiness 和数据大小,直到你得到看起来不错的东西。提示是从切片开始,然后发展到体积。

查看 ParaView wiki 了解更多详情。

我强烈推荐Python + Mayavi它是跨平台的、快速的、强大的、简单的!这是 7 行代码的表面图,包括加载文件!

from scipy import array, misc
from mayavi import mlab

directory = "some-data"
data = array([misc.imread(os.path.join(directory, f)) for f in os.listdir(directory)])

unique_colors = set(list(data))
for color in unique_colors:
    mlab.comtour3d(1.*(data==color), contours=[0.5])

这将为您提供一个可交互的 GUI,其中包含可配置的数据网格。手动或编程的定制空间几乎是无限的!

我强烈推荐ImageJ它是一款出色的免费软件,可用于以任何格式可视化断层数据或图像序列。它有大量用于专业图像处理的插件,例如分割、对象计数、3D 重建、阈值处理等。