function coregisterSPMtoFreeSurfer
freesurferPath='/the/path/to/your/freesurfer/subjectdirectory/';
subjects = {...
'CBUXXXYYY',...
'CBUXXXYY2',...
};
nSubjects=length(subjects);
% parameters for co-registration:
% ---------------------------------------------------
% (will be replaced by defaults if not specified):
coreg.cost_fun = 'nmi'; % which cost function to use - normalised mutual information
coreg.sep = [4 2]; % resolution at which to sample images
coreg.tol = [0.0200 0.0200 0.0200 0.0010 0.0010 0.0010 ...
0.0100 0.0100 0.0100 0.0010 0.0010 0.0010]; % tolerance for parameters
coreg.fwhm = [7 7]; % degree of smoothing to apply to images before registration
for subI=1:nSubjects
% specify the reference high resolution anatomical (freeSurfer)
fs_anat = fullfile(freesurferPath,subjects{subI},'mri','anat.nii');
% specify the source high resolution anatomical (copied SPM one)
spm_anat = get_files(fullfile(freesurferPath,subjects{subI},'spm_maps'),'s*.nii');
x=spm_coreg(fs_anat,spm_anat,coreg); % find the coreg parameters
% convert the coreg parameters into an affine transformation matrix
M = inv(spm_matrix(x));
MM = zeros(4,4,1);
MM(:,:,1) = spm_get_space(spm_anat);
% modify the header of the source structural image
spm_get_space(spm_anat, M*MM(:,:,1));
end
end
function files = get_files(direc, filt)
% =========================================================================
% return a list of files
% filt = filter string
% direc = cell array of directory names
% revised 07-2011 Ian Charest
if nargin~=2, error('get_files:missing inputs, Please input folder(s) and file filter.'); end%if
files = [];
if ischar(direc) % if direc is already a character array
currDir = direc;
tmp = dir(fullfile(currDir,filt)); % find all files matching f*.nii
tmp = [repmat([currDir filesep],size(tmp,1),1) char(tmp.name)]; % build the full path name for these files
files = char(files,tmp);
else % if direc is a cell array
if size(direc,1)>size(direc,2)
nRuns=size(direc,1);
else
nRuns=size(direc,2);
end
for runI=1:nRuns % loop through each EPI session
currDir = char(direc{runI});
tmp = dir(fullfile(currDir,filt)); % find all files matching f*.nii
tmp = [repmat([currDir filesep],size(tmp,1),1) char(tmp.name)]; % build the full path name for these files
files = char(files,tmp);
end
end
files = files(~all(files'==' ')',:);
end
CbuImaging: FreesurferGoodies/coregisterSPMtoFreeSurfer (last edited 2013-06-25 11:31:13 by IanCharest)