Home > vbmeg > functions > tool_box > dynamics_movie > test_fig > basic_tool > make_area_surf.m

make_area_surf

PURPOSE ^

--- brain surface

SYNOPSIS ^

function Data = make_area_surf(parm)

DESCRIPTION ^

--- brain surface
 Data.V0 
 Data.F0 
--- area key to display
 Data.key 
 Data.cmap
--- surfaces for area key to display
 Data.V  
 Data.F  

 2014-11-10 Masa-aki Sato

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function    Data = make_area_surf(parm)
0002 %--- brain surface
0003 % Data.V0
0004 % Data.F0
0005 %--- area key to display
0006 % Data.key
0007 % Data.cmap
0008 %--- surfaces for area key to display
0009 % Data.V
0010 % Data.F
0011 %
0012 % 2014-11-10 Masa-aki Sato
0013 %
0014 % Copyright (C) 2011, ATR All Rights Reserved.
0015 % License : New BSD License(see VBMEG_LICENSE.txt)
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 % Read image-header
0032 [dim, Trans] = vb_get_image_info(parm.atlas_file);
0033 % dim(1:3) - the x, y and z dimensions of the volume
0034 % Trans    - a 4x4 affine transformation matrix mapping from
0035 %            voxel coordinates to MNI-mm-coordinates
0036 % XYZmni = Trans * [XYZvox; 1]
0037 
0038 % Read atlas-template image
0039 avw = avw_img_read(parm.atlas_file);
0040 Z = avw.img;
0041 % Z - 3D image data (label value)
0042 
0043 if isfield(parm,'atlasbrain') && ~isempty(parm.atlasbrain)
0044     [V0,F0] = vb_load_cortex(parm.atlasbrain); % SPM-right-m
0045     
0046     %F0 = F0.F3;  % left + right cortex
0047     FL = F0.F3L; % left cortex
0048     FR = F0.F3R; % right cortex
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; % 1mm
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     % Transform vertex coordinate to analyze right-handed coordinate
0063 %    [B, Vdim, Vsize] = vb_load_analyze_to_right(parm.atlasimage);
0064 %    Vana   = vb_spm_right_to_analyze_right(V0,Vdim,Vsize);
0065 %    V0  = trans_mni_coord(Vana, Trans0);
0066 else
0067     % Morphology smoothing
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;

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005