def fit(cls, toPts, fromPts): params0 = cls.getInitParams(toPts, fromPts) params = optimize( toPts.flatten(), lambda params: forwardPts(cls.fromParams(params), fromPts).flatten( ), params0) return cls.fromParams(params)
def fit(cls, toPts, fromPts): '''Solve for the best transform parameters given input/output point pairs.''' params0 = cls.getInitParams(toPts, fromPts) # lambda is a function that takes "params" as argument # and returns the toPts calculated from fromPts and params. params = optimize( toPts.flatten(), lambda params: forwardPts(cls.fromParams(params), fromPts).flatten( ), params0) return cls.fromParams(params)
def reverse(self, vlist): v = numpy.array(vlist) # to get a rough initial value, apply the inverse of the simpler # projective transform. this will give the exact answer if the # quadratic terms happen to be 0. u0 = self.proj.reverse(vlist) # optimize to get an exact inverse. umin = optimize(v, lambda u: numpy.array(self.forward(u)), numpy.array(u0)) return umin.tolist()
def fit(cls, toPts, fromPts, imageId): # extract width and height of image. params0 = cls.getInitParams(toPts, fromPts, imageId) height = params0[len(params0) - 1] width = params0[len(params0) - 2] Fy = params0[len(params0) - 3] Fx = params0[len(params0) - 4] numPts = len(toPts.flatten()) params0 = params0[:len(params0) - 4] # optimize params params = optimize( toPts.flatten(), lambda params: forwardPts( cls.fromParams(params, width, height, Fx, Fy), fromPts). flatten(), params0) return cls.fromParams(params, width, height, Fx, Fy)
def fit(cls, toPts, fromPts): params0 = cls.getInitParams(toPts, fromPts) params = optimize(toPts.flatten(), lambda params: forwardPts(cls.fromParams(params), fromPts).flatten(), params0) return cls.fromParams(params)