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 )
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
|