This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Last revision Both sides next revision | ||
creating_and_combining_masks_from_vtcs [2010/06/23 06:10] jochen two typos... |
creating_and_combining_masks_from_vtcs [2010/06/25 20:47] jochen added code for existing mask files |
||
---|---|---|---|
Line 26: | Line 26: | ||
* clear mask object | * clear mask object | ||
- | ===== Code ===== | + | ==== Code ==== |
<code matlab create_msk_from_vtcs.m>% settings | <code matlab create_msk_from_vtcs.m>% settings | ||
% - intensity threshold: values < 10 are treated as relative threshold! | % - intensity threshold: values < 10 are treated as relative threshold! | ||
Line 121: | Line 121: | ||
mdm.ClearObject;</code> | mdm.ClearObject;</code> | ||
+ | ===== Alternative algorithm ===== | ||
+ | In case the MSK files/objects have already been created (e.g. as gray matter mask per subject), this is a way to average them. **This will only work if the masks are in the same space, e.g. large TAL box!** | ||
+ | |||
+ | * making settings (i.e. percentage threshold for combined mask) | ||
+ | * locating all mask files to be averaged | ||
+ | * loading all masks and adding the data | ||
+ | * thresholding the data | ||
+ | * saving new mask | ||
+ | |||
+ | ==== Code ==== | ||
+ | <code matlab combine_existing_msks.m>% settings (80% of masks must have a set voxel) | ||
+ | gthresh = 0.8; | ||
+ | |||
+ | % locate masks | ||
+ | % - this could be enhanced by changing the pattern, e.g. using | ||
+ | % 'SK*_TAL*.msk' to locate only masks of subjects beginning with SK in TAL space | ||
+ | % - additionally, the startfolder and depth could be altered | ||
+ | mskfiles = findfiles(pwd, '*.msk'); | ||
+ | % alternative: mskfiles = findfiles([pwd '/SK*/VTC*/RUN*'], 'SK*TAL*.msk', 'depth=1'); | ||
+ | |||
+ | % loop over masks | ||
+ | msk = []; | ||
+ | for mc = 1:numel(mskfiles) | ||
+ | |||
+ | % clear old mask | ||
+ | if ~isempty(msk) | ||
+ | msk.ClearObject; | ||
+ | end | ||
+ | |||
+ | % load mask | ||
+ | msk = xff(mskfiles{mc}); | ||
+ | | ||
+ | % for first mask | ||
+ | if mc == 1 | ||
+ | | ||
+ | % copy data | ||
+ | mask = uint16(msk.Mask); | ||
+ | | ||
+ | % otherwise | ||
+ | else | ||
+ | | ||
+ | % add data | ||
+ | mask = mask + uint16(msk.Mask); | ||
+ | end | ||
+ | end | ||
+ | |||
+ | % threshold mask | ||
+ | mask = uint8(mask > uint16(ceil(gthresh * numel(mskfiles)))); | ||
+ | |||
+ | % store | ||
+ | msk.Mask = mask; | ||
+ | |||
+ | % save | ||
+ | msk.SaveAs; | ||
+ | |||
+ | % clear object | ||
+ | msk.ClearObject;</code> |