有时候,我们得到的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)
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,:)=[];
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
|