ROI 和 mask: 脑地图的操作——提取

ROI map就是在一个标准脑空间里的坐标,是我们做脑网络分析的常用手段。其数据是一个3D的矩阵,矩阵中大于0的值为ROI,当有多个ROI的时候,用不同的值来表示。

有时候我们不需要全部的ROI,比如,我们只想要默认网络的map,就可以在YEO或者其它的模板上抠出来。

其原理很简单,首先用spm_vol和spm_read_vols函数读取nii文件,获得map数据。之后就是一些简单的矩阵运算了。

献上写好的函数

输入roi map可以是矩阵或者nii文件,ROIindex可以多个roi的值,输出为提取后的ROI map和合并的ROI map

copy之后保存即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function  varargout=  TBX_extractROIfromTemple(varargin )
% TBX_extractROIfromTemple(templatepathORmat , ROIindex , outputfullpath)
% example :
% TBX_extractROIfromTemple('./aal.nii' , [3 4] , 'aal_Frontal_Sup.nii')



if nargin >0
template = varargin{1} ;
end
if nargin >1
ROIindex = varargin{2} ;
end
if nargin >2
outputpath = varargin{3} ;
end



if ischar(template)
v = spm_vol( template);
template = spm_read_vols(v) ;
end


mask = template*0 ;

for i = 1:length(ROIindex)
roi = ROIindex(i) ;
mask( template==roi)=1;
end


template(~mask) = 0;
mask = template;

if nargin>2
v.fname = outputpath;
spm_write_vol( v,mask) ;

v.fname = strrep( outputpath , '.nii' , '_mask.nii' );
spm_write_vol( v, logical( mask)) ;

else
varargout{1}= mask;
end

ROI 和 mask: 脑地图的操作——提取

https://neurospider.cn/post/24812/

Author

SuperSpider

Posted on

2021-04-15

Updated on

2022-05-04

Licensed under