MINC/工具/emma/emma-demo2
本教程涵盖了使用 MATLAB 和 EMMA 工具包进行高级图像处理。它假设读者已经熟悉 EMMA 和基本的图像处理。
让我们首先假设我们已经将动态 PET 研究的一个切片中的 21 帧加载到名为PET的变量中。我们希望创建一个蒙版,其中大脑所在的位置为 1,其他位置为 0。如果这是一个氧气研究,一种简单的方法是随时间对图像进行积分,然后使用阈值选择蒙版像素的值。假设一个名为ftimes的变量包含帧的中帧时间
img = ntrapz(ftimes,PET')';
是积分图像。我们现在希望为蒙版选择像素。MATLAB 能够对值向量执行布尔运算,因此这非常容易
mask = img>(mean(img)*threshold);
在这种情况下,mask中的像素将被设置为 1,如果积分图像的值大于整个图像的平均值乘以某个阈值。要创建一个蒙版,将除大脑外的所有内容都屏蔽掉,我们通常会选择一个阈值为 1(积分图像中所有值大于积分图像平均值的像素都被选中)
mask = img>(mean(img));
这会生成一个看起来像这样的图像
只需将这两个图像相乘,就可以轻松地将此蒙版应用于原始图像
masked_frame = PET(:,17) .* mask;
这将生成第 17 帧的蒙版版本,看起来像
在执行 PET 研究时,通常会收集来自多个受试者的一组数据。收集完所有数据后,必须将来自各种独立研究的数据平均在一起。MATLAB 允许以非常直接的方式对图像执行数学运算。假设我们有一组存储在变量P1, P2, P3, P4中的图像,并且我们希望对这四张图像进行平均,结果很简单
average_image = (P1 P2 P3 P4)/4;
使用 MATLAB 生成时间活动曲线非常简单。EMMA 提供了一个名为maketac的函数,该函数根据给定的点的 x 和 y 坐标以及一组动态 PET 图像,将返回基于 5 像素正方形感兴趣区域 (ROI) 的时间活动曲线。在maketac函数中使用的方法可以扩展到任何大小/形状的 ROI。其使用的一个示例是
viewimage(img); [x,y]=getpixel(1); tac = maketac(x,y,PET); figure; plot(ftimes,tac);
第一行显示积分图像(之前计算的),第二行提示用户在图像中单击一个点(返回该点的 x 和 y 坐标),第三行创建时间活动曲线并将其保存在变量tac中,最后两行创建曲线的图(请记住,ftimes包含之前检索的中帧时间)。生成的绘图可能如下所示