Load BrainVoyager/FreeSurfer files [VL,FL,nL,VR,FR,nR] = vb_load_orig_brain_surf(brain_parm) --- Input brain_parm : structure with following field (used for BrainVoyager files) .BV_left_file : Brain-Voyager left surface file .BV_right_file : Brain-Voyager right surface file (used for FreeSurfer files) .FS_left_file : FreeSurfer left surface file .FS_right_file : FreeSurfer right surface file .FS_xfm_file : Talairach transformation file --- Output VL/R Left/Right Brain-Voyager (FreeSurfer) vertex coordinate FL/R triangle patch nL/R normal unit vector (Outward) --- Coordinate is Right-hand SPM coordinate X: Left(-191/2) -> Right(191/2) Y: Back(-256/2) -> Front(256/2) Z: Bottom(-256/2) -> Top(256/2) [history] M. Sato 2006-7-21 2010-05-28 Taku Yoshioka Minor change (verbose level support) Copyright (C) 2011, ATR All Rights Reserved. License : New BSD License(see VBMEG_LICENSE.txt)
0001 function [V0L,F0L,n0L,V0R,F0R,n0R] = vb_load_orig_brain_surf(brain_parm); 0002 % Load BrainVoyager/FreeSurfer files 0003 % [VL,FL,nL,VR,FR,nR] = vb_load_orig_brain_surf(brain_parm) 0004 % 0005 %--- Input 0006 % 0007 % brain_parm : structure with following field 0008 % (used for BrainVoyager files) 0009 % .BV_left_file : Brain-Voyager left surface file 0010 % .BV_right_file : Brain-Voyager right surface file 0011 % 0012 % (used for FreeSurfer files) 0013 % .FS_left_file : FreeSurfer left surface file 0014 % .FS_right_file : FreeSurfer right surface file 0015 % .FS_xfm_file : Talairach transformation file 0016 % 0017 %--- Output 0018 % VL/R Left/Right Brain-Voyager (FreeSurfer) vertex coordinate 0019 % FL/R triangle patch 0020 % nL/R normal unit vector (Outward) 0021 % 0022 % --- Coordinate is Right-hand SPM coordinate 0023 % X: Left(-191/2) -> Right(191/2) 0024 % Y: Back(-256/2) -> Front(256/2) 0025 % Z: Bottom(-256/2) -> Top(256/2) 0026 % 0027 % [history] 0028 % M. Sato 2006-7-21 0029 % 2010-05-28 Taku Yoshioka 0030 % Minor change (verbose level support) 0031 % 0032 % Copyright (C) 2011, ATR All Rights Reserved. 0033 % License : New BSD License(see VBMEG_LICENSE.txt) 0034 0035 % Define constant 0036 % (Center of image in BV) = (Center of image in SPM space) 0037 TRANS_COORDINATE = 2; % = 0 : SBI-compatible-version 0038 0039 TRANS_NORMAL = 1; 0040 0041 tic; 0042 if isfield(brain_parm,'BV_left_file') & ... 0043 ~isempty(brain_parm.BV_left_file), 0044 % 0045 % --- Brain-Voyager coordinate 0046 % 0047 % [Left-hand coordinate] 0048 % X:Front(0) -> Back(255) 0049 % Y:Top(0) -> Bottom(255) 0050 % Z:Right(0) -> Left(255) 0051 0052 % V0L/R Brain-Voyager coordinate 0053 % n0L/R inward-normal unit vector 0054 % FOL/R triangle patch 0055 0056 vb_disp('Read BrainVoyager SRF files '); 0057 0058 Srf = vb_ScriptLoadSRF(brain_parm.BV_left_file); 0059 V0L = [Srf.VertexX, Srf.VertexY, Srf.VertexZ]; 0060 n0L = [Srf.NormalX, Srf.NormalY, Srf.NormalZ]; 0061 F0L = Srf.Triangles+1; 0062 0063 Srf = vb_ScriptLoadSRF(brain_parm.BV_right_file); 0064 V0R = [Srf.VertexX, Srf.VertexY, Srf.VertexZ]; 0065 n0R = [Srf.NormalX, Srf.NormalY, Srf.NormalZ]; 0066 F0R = Srf.Triangles+1; 0067 0068 vb_disp_nonl('Coordinate transformation (BV to SPM): '); 0069 0070 V0L = vb_bvoyger_to_spm_right(V0L,TRANS_COORDINATE); 0071 V0R = vb_bvoyger_to_spm_right(V0R,TRANS_COORDINATE); 0072 n0L = vb_bvoyger_to_spm_right(n0L,TRANS_NORMAL); 0073 n0R = vb_bvoyger_to_spm_right(n0R,TRANS_NORMAL); 0074 0075 % Outward normal vector 0076 n0L = -n0L; 0077 n0R = -n0R; 0078 0079 elseif isfield(brain_parm,'FS_left_file') & ... 0080 ~isempty(brain_parm.FS_left_file), 0081 0082 % Check FS_xfm_file parameter 0083 if ~isfield(brain_parm,'FS_xfm_file') 0084 brain_parm.FS_xfm_file = []; 0085 end 0086 0087 % FreeSurfer files 0088 vb_disp_nonl('Read FreeSurfer .asc files: '); 0089 0090 [V0L,F0L] = vb_fs_load_surface(brain_parm.FS_left_file,... 0091 brain_parm.FS_xfm_file,1.0); 0092 [V0R,F0R] = vb_fs_load_surface(brain_parm.FS_right_file,... 0093 brain_parm.FS_xfm_file,1.0); 0094 0095 % Outward normal vector 0096 [F0L,V0L,n0L] = vb_out_normal_surf(F0L,V0L); 0097 [F0R,V0R,n0R] = vb_out_normal_surf(F0R,V0R); 0098 end 0099 0100 vb_disp(sprintf('%f[sec]',toc)); 0101 0102 clear Srf 0103