可视化标量三维体数据的方法
什么是标量三维体数据?
典型的标量三维体数据由一个三维数据数组和三个维度相同的坐标数组组成。坐标数组指定每个数据点的 x、y 和 z 坐标。
坐标的单位取决于数据的类型。例如,流数据的坐标单位可能是英寸,数据单位是 psi。
许多 MATLAB® 函数对于可视化标量数据很有用:
显示 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 colormap(map) image_num = 8; image(D(:,:,image_num)) axis image
保存 x 和 y 坐标轴范围,在本示例的下一部分使用:
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');
定义视图
定义视图并设置纵横比(view
、axis
、daspect
)。
view(35,30) axis tight daspect([1,1,.4])
添加光照
添加光照并根据三维体数据的梯度重新计算曲面法线,从而产生更平滑的光照(camlight
、lighting
、isonormals
)。增大等值顶的 AmbientStrength
属性,以增强颜色亮度而不影响等值面。设置等值面的 SpecularColorReflectance
,使镜面反射光的颜色更接近等值面的颜色,然后设置 SpecularExponent
以减小镜面反射区的大小。
lightangle(45,30); lighting gouraud hcap.AmbientStrength = 0.6; hiso.SpecularColorReflectance = 0; hiso.SpecularExponent = 50;
将等值顶与等值面相结合,以可视方式呈现 MRI 数据。
等值顶使用插补面着色,也就是说由图窗的颜色图决定补片的颜色。此示例使用数据附带的颜色图。
要显示其他数据值的等值顶,请尝试更改等值面的值或使用 subvolume
命令。有关示例,请参阅 isocaps
和 subvolume
参考页。