Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)