9.7.9.理解NiftiMasker和mask计算

9.7.9. 理解NiftiMasker和mask计算

原文:
https://nilearn.github.io/auto_examples/06_manipulating_images/plot_mask_computation.html?highlight=compute_epi_mask

在本例中,在本例中,Nifti掩码器(Nifti masker)用于自动计算掩码。
三种策略:
默认策略基于背景(background)
还可以使用模板(template)
对于原始EPI(raw EPI),如在静息状态或看电影时间序列中,我们需要使用NiftiMasker的“EPI”策略。

此外,我们展示了使用epi时如何微整不同参数nilearn.masking.compute_epi_mask。

from nilearn.input_data import NiftiMasker
import nilearn.image as image
from nilearn.plotting import plot_roi, plot_epi, show

基于背景计算掩码(mask)

计算掩码的默认策略(例如在NiftiMasker中)是尝试检测背景。
对于已经被修饰(masked)的数据,这将很好地工作,因为它位于一个同质的背景上

#加载Miyawaki数据
# Load Miyawaki dataset
from nilearn import datasets
miyawaki_dataset = datasets.fetch_miyawaki2008()
#打印数据集的基本信息
# print basic information on the dataset
print('First functional nifti image (4D) is located at: %s' %
      miyawaki_dataset.func[0])  # 4D data

miyawaki_filename = miyawaki_dataset.func[0]
miyawaki_mean_img = image.mean_img(miyawaki_filename)
plot_epi(miyawaki_mean_img, title='Mean EPI image')

9.7.9.理解NiftiMasker和mask计算_第1张图片
使用默认(基于背景)

masker = NiftiMasker()
masker.fit(miyawaki_filename)

# Plot the generated mask using the mask_img_ attribute
plot_roi(masker.mask_img_, miyawaki_mean_img,
         title="Mask from already masked data")

9.7.9.理解NiftiMasker和mask计算_第2张图片
用generate_report方法绘制生成的mask

report = masker.generate_report()
report

9.7.9.理解NiftiMasker和mask计算_第3张图片

9.7.9.2. 计算raw EPI数据的mask

对于raw EPI 数据来说没有一致的背景,因此要使用新的策略

#Load movie watching based brain development fmri dataset
dataset = datasets.fetch_development_fmri(n_subjects=1)
epi_filename = dataset.func[0]

#为了加速计算,把数据限制在100帧
# Restrict to 100 frames to speed up computation
from nilearn.image import index_img
epi_img = index_img(epi_filename, slice(0, 100))
#显示背景
# To display the background
mean_img = image.mean_img(epi_img)
plot_epi(mean_img, title='Mean EPI image')

9.7.9.理解NiftiMasker和mask计算_第4张图片
从EPI图像中提取简单的掩码我们需要指定一个“epi”策略,因为这是原始EPI数据。

masker = NiftiMasker(mask_strategy='epi')
masker.fit(epi_img)
report = masker.generate_report()
report

9.7.9.理解NiftiMasker和mask计算_第5张图片
生成较为展开的掩码

我们可以通过使用NiftiMasker的mask_args参数增加打开步骤的数量(opening=10)来微调掩码的轮廓。这有效地对掩码的外部体素层执行侵蚀和膨胀操作,例如可以移除图像中剩余的颅骨部分。

masker = NiftiMasker(mask_strategy='epi', mask_args=dict(opening=10))
masker.fit(epi_img)
report = masker.generate_report()
report

9.7.9.理解NiftiMasker和mask计算_第6张图片
生成较低截止值的掩码
NiftiMasker调用nilearn.masking.compute_epi_mask函数从EPI计算掩码。它有两个重要的参数:下限截止和上限截止。这些设置了灰度值界限,在该界限中,掩码算法将搜索其阈值(0是图像的最小值,1是最大值)。我们将在这里增加下限,以强制选择那些在EPI图像中显示为明亮的体素。

masker = NiftiMasker(mask_strategy='epi',
                     mask_args=dict(upper_cutoff=.9, lower_cutoff=.8,
                                    opening=False))
masker.fit(epi_img)
report = masker.generate_report()
report

9.7.9.理解NiftiMasker和mask计算_第7张图片

使用MNI模板计算掩码

还可以从MNI灰质模板计算掩模。在这种情况下,它被重采样到目标图像

masker = NiftiMasker(mask_strategy='template')
masker.fit(epi_img)
report = masker.generate_report()
report

9.7.9.理解NiftiMasker和mask计算_第8张图片

你可能感兴趣的:(Nilearn学习)