跳转到内容

MINC/工具/emma/emma-标签

来自维基教科书,开放的书籍,开放的世界

使用 MATLAB 进行标记区域分析

[编辑 | 编辑源代码]

MATLAB 非常适合分析通过使用显示程序收集的数据。此演示页面简要概述了可以对这些数据执行的一些分析。

这是一个使用 MATLAB 分析油漆(标签)数据的演示。首先,我们必须选择要分析的研究。这可以通过 EMMAopenimage函数来完成,该函数返回对研究的句柄

h=openimage('/data/disk2/wolforth/minc/farduharson_leslie_tal.mnc');

我们还可以从标签文件(由显示).

tags = loadtagfile('/data/disk2/wolforth/minc/farduharson_right44.tag');

从标签文件中读取的点坐标以与它们派生的体积相同的空间表示。因此,如果体积存储在 Talairach 空间中(在本例中),标签文件中的坐标将位于 Talairach 空间中。为了识别哪些体素被标记,我们必须从体积的世界空间(在本例中为 Talairach 空间)转换为体素空间。这可以通过world2voxel函数来完成

[x,y,z] = world2voxel(h,tags(:,1),tags(:,2),tags(:,3));

由于我们使用的体积存储为横向切片,我们可以通过简单地检查z坐标来找出哪些切片对我们来说很有趣

>> min(z)

ans =

    44

>> max(z)

ans =

    85

通过检查z坐标,我们看到切片 65 位于有绘制点的切片中。我们可以使用 EMMA 加载此图像并将其显示出来getimagesviewimage函数

MRI = getimages(h,65);
viewimage(MRI);

现在,让我们制作一个掩码,其中绘制的像素设置为某个非零值,而未绘制的像素设置为零。我们首先将掩码初始化为全零

mask = zeros(256,256);

接下来,找到所有位于切片 65(我们感兴趣的切片)内的点

index=find(z==65);
xi=x(index);
yi=y(index);

最后,将掩码中绘制的体素设置为某个方便的值

for i=1:length(xi);
    mask(xi(i),yi(i)) = max(MRI) 500;
end

现在我们有了掩码,我们可以查看叠加在基础结构上的绘制图像。请注意,在将掩码添加到变量之前,我们必须重新调整掩码的形状MRI因为MRI是一个列向量图像,而掩码是一个方形矩阵。

viewimage (reshape(mask,length(MRI),1)   MRI);

文件:TaggedMRI.gif

我们还可以获取标记像素的强度直方图

[no,xo] = gettaggedhist(h,tags);

此直方图可以使用 MATLAB 条形函数查看。我们排除第一个箱,因为它包含了掩码中的所有零

figure;
bar (xo(2:length(xo)), no(2:length(xo)));

文件:Taggedhist.gif

我们还可以为整个图像上的像素强度生成直方图(这需要一些时间)。在这里,我们指定要一个包含 50 个箱的直方图

[n1,x1] = getvolumehist (h,50);

此直方图也可以使用 MATLABbar函数来完成

figure;
bar (x1, n1);

文件:Untaggedhist.gif

华夏公益教科书