def __init__(self, filename=None, grid=None, displacement=None, shape=None): if filename is not None: t = nib.load(filename) self.ndim = t.shape[-1] self.shape = t.shape[:-1] data = np.copy(t.get_data(), order='C').astype(np.float) transpose_axis = (self.ndim, ) for i in xrange(self.ndim): transpose_axis = transpose_axis + (i, ) data = np.transpose(data, transpose_axis) self.grid = data + identity_mapping(self.shape) elif grid is not None: self.shape = grid.shape[1:] self.ndim = grid.shape[0] self.grid = np.copy(grid).astype(np.float) elif displacement is not None: self.shape = displacement.shape[1:] self.ndim = displacement.shape[0] self.grid = displacement + identity_mapping(self.shape) elif shape is not None: self.ndim = len(shape) self.shape = shape self.grid = identity_mapping(self.shape)
def init_mappings(self): self.initial_grid = identity_mapping(self.shape) self.forward_mappings = np.ones((self.n_step + 1, self.ndim) + self.shape) * self.initial_grid self.backward_mappings = np.copy(self.forward_mappings) # jacobian determinants of forward mappings self.forward_dets = np.ones((self.n_step + 1, ) + self.shape) # jacobian determinants of backward mappings self.backward_dets = np.ones((self.n_step + 1, ) + self.shape)
def init_mappings(self): self.initial_grid = identity_mapping(self.shape) self.forward_mappings = np.ones( (self.n_step + 1, self.ndim) + self.shape) * self.initial_grid self.backward_mappings = np.copy(self.forward_mappings) # jacobian determinants of forward mappings self.forward_dets = np.ones( (self.n_step + 1,) + self.shape) # jacobian determinants of backward mappings self.backward_dets = np.ones( (self.n_step + 1,) + self.shape)
def save(self, filename, affine=np.identity(4)): displacement = self.grid - identity_mapping(self.shape) transpose_axis = () for i in xrange(1, self.ndim + 1): transpose_axis = transpose_axis + (i, ) transpose_axis += (0, ) displacement = np.transpose(displacement, transpose_axis) nib.save(nib.Nifti1Image(displacement, affine), filename) print "saved transformation: %s" % filename
def save(self, filename, affine=np.identity(4)): displacement = self.grid - identity_mapping(self.shape) transpose_axis = () for i in xrange(1, self.ndim + 1): transpose_axis = transpose_axis + (i,) transpose_axis += (0,) displacement = np.transpose(displacement, transpose_axis) nib.save(nib.Nifti1Image(displacement, affine), filename) print "saved transformation: %s" % filename
def __init__(self, filename=None, grid=None, displacement=None, shape=None): if filename is not None: t = nib.load(filename) self.ndim = t.shape[-1] self.shape = t.shape[:-1] data = np.copy(t.get_data(), order="C").astype(np.float) transpose_axis = (self.ndim,) for i in xrange(self.ndim): transpose_axis = transpose_axis + (i,) data = np.transpose(data, transpose_axis) self.grid = data + identity_mapping(self.shape) elif grid is not None: self.shape = grid.shape[1:] self.ndim = grid.shape[0] self.grid = np.copy(grid).astype(np.float) elif displacement is not None: self.shape = displacement.shape[1:] self.ndim = displacement.shape[0] self.grid = displacement + identity_mapping(self.shape) elif shape is not None: self.ndim = len(shape) self.shape = shape self.grid = identity_mapping(self.shape)