def __init__(self, source, target): if not isinstance(source, TriMesh): source = TriMesh(source.points) PureAlignment.__init__(self, source, target) if self.n_dims != 2: raise ValueError("source and target must be 2 " "dimensional")
def __init__(self, source, target, kernel=None): PureAlignment.__init__(self, source, target) if self.n_dims != 2: raise ValueError('TPS can only be used on 2D data.') if kernel is None: kernel = R2LogR2(source.points) self.kernel = kernel self.k = self.kernel.apply(self.source.points) self.p = np.concatenate( [np.ones([self.n_points, 1]), self.source.points], axis=1) o = np.zeros([3, 3]) top_l = np.concatenate([self.k, self.p], axis=1) bot_l = np.concatenate([self.p.T, o], axis=1) self.l = np.concatenate([top_l, bot_l], axis=0) self.v, self.y, self.coefficients = None, None, None self._build_coefficients()