4ac11e20dcd3c2e8e24a430db99b4a5bcf711293
Christoph Budziszewski heavy CrossVal Toolbox deve...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m  1) function coordinateStruct = computeCoordinates(imageStruct)
computeCoordinates.m  2) %imageStruct.(someName).images
computeCoordinates.m  3) %imageStruct.(someName).roiImages
computeCoordinates.m  4) coordinateStruct = struct;
computeCoordinates.m  5) 
computeCoordinates.m  6) subjectCellList = fieldnames(imageStruct);
computeCoordinates.m  7) 
computeCoordinates.m  8) for subject = 1:length(subjectCellList)
computeCoordinates.m  9)     subjectFieldName = cell2mat(subjectCellList(subject));
computeCoordinates.m 10)     % ROI Image Coordinates
computeCoordinates.m 11)     V  = imageStruct.(subjectFieldName).images;
computeCoordinates.m 12)     Vm = imageStruct.(subjectFieldName).roiImages;
computeCoordinates.m 13)     coordinateStruct.(subjectFieldName) = ...
computeCoordinates.m 14)         computeRoiImageCoordinates(V,Vm);
computeCoordinates.m 15)     % Parsed Voxel Definitions
computeCoordinates.m 16)     coordinateStruct.(subjectFieldName) = ...
computeCoordinates.m 17)         appendManualVoxelCoordinates(coordinateStruct.(subjectFieldName),V);
computeCoordinates.m 18)     
computeCoordinates.m 19) end
computeCoordinates.m 20) end
computeCoordinates.m 21) 
computeCoordinates.m 22) function coordinates = appendManualVoxelCoordinates(coordinateStruct,V)
computeCoordinates.m 23)     coordinates =coordinateStruct;
computeCoordinates.m 24) end
computeCoordinates.m 25) 
computeCoordinates.m 26) function coordinates = computeRoiImageCoordinates(V,Vm)
computeCoordinates.m 27)     nVolImage = length(V);
computeCoordinates.m 28)     nRoiImage = length(Vm);
computeCoordinates.m 29)     
computeCoordinates.m 30)     coordinates = cell(nVolImage,1);
computeCoordinates.m 31)  
computeCoordinates.m 32)     for iVolImage = 1:nVolImage
computeCoordinates.m 33)         coordinates{iVolImage} = [];
computeCoordinates.m 34)         for jRoiImage = 1:nRoiImage
Christoph Budziszewski possibly working version, c...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 35)             [x,y,z] = computeCoordinateVector(V(iVolImage),Vm(jRoiImage));
computeCoordinates.m 36)             coordinates{iVolImage} = [coordinates{iVolImage}; x, y, z];
computeCoordinates.m 37)         end
computeCoordinates.m 38)     end
computeCoordinates.m 39) end
computeCoordinates.m 40) 
computeCoordinates.m 41) function [x,y,z] = computeCoordinateVector(VolumeImage,RoiImage)
Christoph Budziszewski heavy CrossVal Toolbox deve...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 42)             x = []; y = []; z = [];
Christoph Budziszewski possibly working version, c...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 43)             [x1 y1] = ndgrid(1:VolumeImage.dim(1),1:VolumeImage.dim(2));
computeCoordinates.m 44)             for p = 1:VolumeImage.dim(3) % resample mask RoiImage in space of VolumeImage
Christoph Budziszewski heavy CrossVal Toolbox deve...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 45)                 B = spm_matrix([0 0 -p 0 0 0 1 1 1]);
Christoph Budziszewski possibly working version, c...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 46)                 M = inv(B*inv(VolumeImage.mat)*RoiImage.mat);
computeCoordinates.m 47)                 msk = find(spm_slice_vol(RoiImage,M,VolumeImage.dim(1:2),0));
Christoph Budziszewski heavy CrossVal Toolbox deve...

Christoph Budziszewski authored 15 years ago

computeCoordinates.m 48)                 if ~isempty(msk)
computeCoordinates.m 49)                     z1 = p*ones(size(msk(:)));
computeCoordinates.m 50)                     x = [x; x1(msk(:))];
computeCoordinates.m 51)                     y = [y; y1(msk(:))];
computeCoordinates.m 52)                     z = [z; z1];
computeCoordinates.m 53)                 end;
computeCoordinates.m 54)             end;