Skip to content

Instantly share code, notes, and snippets.

@satra
Created December 9, 2011 14:51
Show Gist options
  • Save satra/1451812 to your computer and use it in GitHub Desktop.
Save satra/1451812 to your computer and use it in GitHub Desktop.
apply transforms to trackvis tracks.
from enthought.mayavi import mlab
import streamlines
import numpy as np
from nibabel import load
from colorsys import rgb_to_hsv
# filename = "DeterministicTractography/QBALLRecon/hardiO10.trk"
trkfilename = "/software/data/STUT/DTI_TV/PWS04/dtk_35/dti_35.trk" #%hardiO10.trk_cross_streamline_id_20.trk"
bfilename = "/software/data/STUT/DTI_TV/PWS04/dt_recon/lowb.nii"
mrfilename = "/software/data/MIBR/data/PWS04/head.nii"
reg = np.genfromtxt('/software/data/STUT/DTI_TV/PWS04/dt_recon/register.dat',skiprows=4,comments='r')
bimg = load(bfilename)
mrimg = load(mrfilename)
M = np.array([[-1,0,0,128],
[0, 0, 1, -128],
[0, -1, 0, 128],
[0,0,0,1]],dtype=float)
M1 = np.array([[-2,0,0,128],
[0, 0, 2, -64],
[0, -2, 0, 128],
[0,0,0,1]],dtype=float)
s = streamlines.Streamlines()
s.loadTrk(trkfilename)
s.printHeaderTrk()
aff = bimg.get_affine()
#xfm = np.dot(np.dot(np.dot(img2.get_affine(),np.linalg.inv(M)),reg),aff)
xfm = np.dot(mrimg.get_affine(),np.dot(np.linalg.inv(M),np.dot(np.linalg.inv(reg),M1)))
print xfm
#s.affineTransform(np.dot(aff[0:3,0:3],np.diag(1./s.header['voxel_size'])),aff[0:3,3])
s.affineTransform(np.dot(xfm[0:3,0:3],np.diag(1./s.header['voxel_size'])),xfm[0:3,3])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment