User Tools

Site Tools


vmr.applytrf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

vmr.applytrf [2010/06/22 21:32] (current)
jochen created
Line 1: Line 1:
 +====== vmr.ApplyTRF ======
 +
 +===== Motivation =====
 +The main motivation for using this function is the ability to flexibly script spatial VMR transformation in Matlab.
 +
 +===== Method reference ('​vmr.Help('​ApplyTRF'​)'​) =====
 +<​file>​ VMR::​ApplyTRF ​ - apply transformation to VMR
 + 
 + ​FORMAT: ​      ​newvmr = vmr.ApplyTRF(trf [, opts])
 + 
 + Input fields:
 + 
 +       ​trf ​        TRF object
 +       ​opts ​       struct with optional fields
 +        .asdouble ​ store output as double (default: false)
 +        .inverse ​  apply inverse transformation (default: false)
 +        .method ​   interpolation,​ see flexinterpn_method (default: '​linear'​)
 + 
 + ​Output fields:
 + 
 +       ​newvmr ​     transformed VMR</​file>​
 +
 +===== Usage examples =====
 +  * using a TRF that was created in BrainVoyager (and instead of the file selector in the first two lines, this can be scripted!): <code matlab vmr_applytrf_bvtrf.m>​%load VMR and TRF
 +vmr = xff('​*.vmr'​);​
 +trf = xff('​*.trf'​);​
 +
 +% apply transformation with cubic interpolation
 +trfvmr = vmr.ApplyTRF(trf,​ struct('​method',​ '​cubic'​));​
 +trfvmr.SaveAs;​
 +
 +% clear objects
 +vmr.ClearObject;​
 +trf.ClearObject;​
 +trfvmr.ClearObject;</​code>​
 +  * using two VMRs, coregister them, then transform the first: <code matlab vmr_applytrf_coreg.m>​% load two VMRs
 +vmr1 = xff(sourcevmr);​
 +vmr2 = xff(targetvmr);​
 +
 +% run coregistration (requires SPM5 or SPM8 on the path!!)
 +% vmr2 is the target space (stationary),​ vmr1 the one to be resampled!
 +trf = vmrspmcoreg(vmr1,​ vmr2)
 +
 +% resample vmr1 using sinc (lanczos3) interpolation
 +vmr1_in_vmr2_space = vmr1.ApplyTRF(trf,​ struct('​method',​ '​lanczos3'​));​
 +
 +% save TRF and VMR
 +[sourcepath,​ sourcefile] = fileparts(sourcevmr);​
 +if isempty(sourcepath)
 +    sourcepath = '​.';​
 +end
 +[nullpath, targetfile] = fileparts(targetvmr);​
 +trf.SaveAs(sprintf('​%s/​%s-TO-%s.trf',​ sourcepath, sourcefile, targetfile));​
 +vmr1_in_vmr2_space.SaveAs(sprintf('​%s/​%s-TO-%s.vmr',​ sourcepath, sourcefile, targetfile));​
 +
 +% clear objects
 +clearxffobjects({vmr1,​ vmr2, trf, vmr1_in_vmr2_space});</​code>​
 +
  
vmr.applytrf.txt ยท Last modified: 2010/06/22 21:32 by jochen