0001 function Data = make_area_surf(parm)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 if isfield( parm, 'keyfile') && ~isempty(parm.keyfile)
0018 [key , cmap]= textread(parm.keyfile, '%s %s','commentstyle','matlab');
0019 else
0020 [key] = get_area_key(parm.conn_file,parm.areafile,parm.Nmin);
0021 end
0022
0023 Nkey = length(key);
0024
0025 if ~exist('cmap','var') || isempty(cmap{1})
0026 cmap = make_color_map(Nkey);
0027 end
0028
0029 keyid = get_area_id(key,parm.atlas_text);
0030
0031
0032 [dim, Trans] = vb_get_image_info(parm.atlas_file);
0033
0034
0035
0036
0037
0038
0039 avw = avw_img_read(parm.atlas_file);
0040 Z = avw.img;
0041
0042
0043 if isfield(parm,'atlasbrain') && ~isempty(parm.atlasbrain)
0044 [V0,F0] = vb_load_cortex(parm.atlasbrain);
0045
0046
0047 FL = F0.F3L;
0048 FR = F0.F3R;
0049 [Vdim, Trans0] = vb_get_image_info(parm.atlasimage);
0050 Vsize = diag(Trans0);
0051 Vana = vb_spm_right_to_analyze_right(V0,Vdim,Vsize(1:3)');
0052
0053 step = 1;
0054 mask_mode = 0;
0055
0056 B = vb_cortex_fill(Vana, F0, step, [],'LR', Vdim, mask_mode);
0057 B = vb_morphology_operation(B, parm.RadiusB);
0058 [F0, V0] = vb_surf_extract(B);
0059
0060 V0 = trans_mni_coord(V0, Trans0);
0061
0062
0063
0064
0065
0066 else
0067
0068 B = vb_image_to_mask(Z, 0.5);
0069 B = vb_morphology_operation(B, parm.RadiusB);
0070
0071 [F0, V0] = vb_surf_extract(B);
0072
0073 V0 = trans_mni_coord(V0, Trans);
0074 end
0075
0076 F = cell(Nkey,1);
0077 V = cell(Nkey,1);
0078 err_index = [];
0079 for n = 1:Nkey;
0080 try
0081 Bval = [keyid(n) keyid(n)];
0082 B = vb_image_to_mask2(Z, Bval);
0083 B = vb_morphology_operation(B, parm.RadiusA);
0084
0085 [F{n}, V{n}] = vb_surf_extract(B);
0086 V{n} = trans_mni_coord(V{n}, Trans);
0087 catch
0088 err_index = [err_index; n];
0089 end
0090 end
0091
0092 if ~isempty(err_index)
0093 key(err_index) = [];
0094 V(err_index) = [];
0095 F(err_index) = [];
0096 cmap(err_index, :) = [];
0097 end
0098
0099 Data.V0 = V0;
0100 Data.F0 = F0;
0101 Data.FL = FL;
0102 Data.FR = FR;
0103 Data.V = V;
0104 Data.F = F;
0105 Data.key = key;
0106 Data.cmap= cmap;