Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

可视化标量三维体数据的方法

什么是标量三维体数据?

典型的标量三维体数据由一个三维数据数组和三个维度相同的坐标数组组成。坐标数组指定每个数据点的 xyz 坐标。

坐标的单位取决于数据的类型。例如,流数据的坐标单位可能是英寸,数据单位是 psi。

许多 MATLAB® 函数对于可视化标量数据很有用:

  • 切片平面通过将数据值映射到颜色,为了解数据值在三维体内的分布提供了一种途径。您可以按任意角度创建切片平面,也可以使用非平面切片。(有关如何使用切片平面的说明,请参阅 slice三维体切片示例以及用来显示环境的切片平面。)您可以指定用来为等值面着色的数据,以便通过颜色和曲面形状显示不同的信息(请参阅 isocolors)。

  • 等高线切片是在三维体内的特定坐标处绘制的等高线图。等高线图让您能够看到给定平面内哪些位置的数据值是相等的。有关示例,请参阅 contourslice

  • 等值面是通过使用等值点作为 patch 图形对象的顶点而构成的曲面。

显示 MRI 数据的方法

标量数据的示例包括磁共振成像 (MRI) 数据。这种数据通常包含在一个三维体(例如人体)内采集的多个切片平面。MATLAB 包括一个 MRI 数据集,其中包含人类头部的 27 个图像切片。本示例说明适用于 MRI 数据的以下可视化方法:

更改数据格式

MRI 数据 D 以 128×128×1×27 数组的形式存储。第三个数组维度通常用于表示图像的颜色数据。但是,由于这些是索引图像(颜色图 map 也会加载),因此第三个维度没有信息,可以使用 squeeze 命令删除。结果就是一个 128×128×27 数组。

第一步是加载数据并将数据数组从四维转换为三维。

load mri
D = squeeze(D);

显示 MRI 数据的图像

要显示其中一个 MRI 图像,请使用 image 命令:

  • 创建一个新的 figure 函数,它使用与数据一起加载的 MRI 颜色图:

  • 对数据数组进行索引,以获得第八个图像的数据。

  • 调整 axis 缩放。

figure
colormap(map)
image_num = 8;
image(D(:,:,image_num))
axis image

保存 xy 坐标轴范围,在本示例的下一部分使用:

x = xlim;
y = ylim;

显示二维等高线切片

将 MRI 数据可视化为三维体数据,因为它是从三维对象中逐步采集的切片集合。使用 contourslice 显示三维体切片的等高线图。创建与本示例第一部分中的图像具有相同方向和大小的等高线图:

为了提高细节的可见性,此等高线图使用 jet 颜色图。brighten 函数可降低颜色值的亮度。

cm = brighten(jet(length(map)),-.5);
figure
colormap(cm)
contourslice(D,[],[],image_num)
axis ij
xlim(x)
ylim(y)
daspect([1,1,1])

显示三维等高线切片

与作为二维对象的图像不同,等高线切片是可以从任何方向显示的三维对象。例如,您可以在三维视图中显示四个等高线切片。

figure
colormap(cm)
contourslice(D,[],[],[1,12,19,27],8);
view(3);
axis tight

将等值面应用于 MRI 数据

您可以使用等值面显示三维体的整体结构。如果与等值顶结合使用,这种方法可以揭示等值面内部数据的相关信息。

首先,使用 smooth3 对数据进行平滑处理,然后使用 isosurface 计算等值数据。使用 patch 将这些数据显示在图窗中(对等值顶使用原始灰度颜色图)。

figure
colormap(map)
Ds = smooth3(D);
hiso = patch(isosurface(Ds,5),...
   'FaceColor',[1,.75,.65],...
   'EdgeColor','none');
   isonormals(Ds,hiso)

isonormals 函数使用从平滑数据获得的顶点法线来渲染等值面,从而提高等值面的质量。等值面使用一种颜色来表示其等值。

添加等值顶以显示切割曲面

使用 isocaps 计算另一个补片的数据,该补片与等值面以相同的等值 (5) 显示。使用未平滑处理的数据 (D) 显示内部细节。您可以将此看作是切掉顶部的头部切割图。位置较低的等值顶在最终视图中不可见。

hcap = patch(isocaps(D,5),...
   'FaceColor','interp',...
   'EdgeColor','none');

定义视图

定义视图并设置纵横比(viewaxisdaspect)。

view(35,30) 
axis tight 
daspect([1,1,.4])

添加光照

添加光照并根据三维体数据的梯度重新计算曲面法线,从而产生更平滑的光照(camlightlightingisonormals)。增大等值顶的 AmbientStrength 属性,以增强颜色亮度而不影响等值面。设置等值面的 SpecularColorReflectance,使镜面反射光的颜色更接近等值面的颜色,然后设置 SpecularExponent 以减小镜面反射区的大小。

lightangle(45,30);
lighting gouraud
hcap.AmbientStrength = 0.6;
hiso.SpecularColorReflectance = 0;
hiso.SpecularExponent = 50;

将等值顶与等值面相结合,以可视方式呈现 MRI 数据。

等值顶使用插补面着色,也就是说由图窗的颜色图决定补片的颜色。此示例使用数据附带的颜色图。

要显示其他数据值的等值顶,请尝试更改等值面的值或使用 subvolume 命令。有关示例,请参阅 isocapssubvolume 参考页。