ROI 和 mask: 脑地图的操作——救急,我的mask没有labels!

有时候,我们得到的mask并没有标明其ROI节点属于什么区域,例如power264模板。当然我们可以逐个按照坐标查询,也可以用各种viewer逐个的可视化查询。但这种操作也都存在一个问题,即不好处理当ROI跨越多个区域的情况。

因此,我们可以将mask映射到已有label的模板上,例如AAL、brodman等等。

这样就可以精确的输出这些ROI所涉及的所有区域名称。

献上写好的代码

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
function [reflect , Map ]=TBX_LabelAtlasByAnother(AtlasToBeLabel , AtlasWithLabel_atlas, AtlasWithLabel_label) 
% inpute atlas should be same size


%AtlasToBeLabel = 'Reslice_shen_2mm_268_parcellation.nii'
%AtlasWithLabel_atlas ='Reslice_AAL3v1_170.nii';
%AtlasWithLabel_label ='AAL3v1.nii.txt' ;



v = spm_vol(AtlasWithLabel_atlas) ;
labelAtlas = spm_read_vols(v);

v = spm_vol(AtlasToBeLabel) ;
atlastobelabel = spm_read_vols(v);



NewAtlas = atlastobelabel;
NewAtlas(logical(atlastobelabel)) = labelAtlas(logical(atlastobelabel));



reflect = [ reshape(atlastobelabel,[],1) reshape(NewAtlas ,[],1)] ;
reflect( sum(reflect,2)==0,:)=[];
% save aal3powerReflect.mat reflect

labels = readtable(AtlasWithLabel_label);
labels = table2cell(labels);
Map = {};
for i = 1:max(atlastobelabel,[],'all')
idx = atlastobelabel==i;
lbidx = unique(NewAtlas(idx));
Map{i,1} = lbidx(lbidx~=0);
Map{i,2} = labels(Map{i,1},2);
end
%open Map


ROI 和 mask: 脑地图的操作——救急,我的mask没有labels!

https://neurospider.cn/post/36190/

Author

SuperSpider

Posted on

2021-07-14

Updated on

2022-05-04

Licensed under