Ejemplo n.º 1
0
 def consolidate(self):
     r'''
     Eliminates the affine transformations from the representation of this
     transformation by appending/prepending them to the deformation fields.
     '''
     if self.dim == 2:
         tf.prepend_affine_to_displacement_field_2d(self.forward, self.affine_pre)
         tf.append_affine_to_displacement_field_2d(self.forward, self.affine_post)
         tf.prepend_affine_to_displacement_field_2d(self.backward, self.affine_post_inv)
         tf.append_affine_to_displacement_field_2d(self.backward, self.affine_pre_inv)
     else:
         tf.prepend_affine_to_displacement_field_3d(self.forward, self.affine_pre)
         tf.append_affine_to_displacement_field_3d(self.forward, self.affine_post)
         tf.prepend_affine_to_displacement_field_3d(self.backward, self.affine_post_inv)
         tf.append_affine_to_displacement_field_3d(self.backward, self.affine_pre_inv)
     self.affine_post = None
     self.affine_pre = None
     self.affine_post_inv = None
     self.affine_pre_inv = None
Ejemplo n.º 2
0
 def compose(self, applyFirst):
     r'''
     Computes the composition G(F(.)) where G is this transformation and
     F is the transformation given as parameter
     '''
     B=applyFirst.affine_post
     C=self.affine_pre
     if B==None:
         affine_prod=C
     elif C==None:
         affine_prod=B
     else:
         affine_prod=C.dot(B)
     if affine_prod!=None:
         affine_prod_inv=linalg.inv(affine_prod).copy(order='C')
     else:
         affine_prod_inv=None
     if self.dim == 2:
         forward=applyFirst.forward.copy()
         tf.append_affine_to_displacement_field_2d(forward, affine_prod)
         forward, stats = tf.compose_vector_fields(forward,
                                                   self.forward)
         backward=self.backward.copy()
         tf.append_affine_to_displacement_field_2d(backward, affine_prod_inv)
         backward, stats = tf.compose_vector_fields(backward, 
                                                    applyFirst.backward)
     else:
         forward=applyFirst.forward.copy()
         tf.append_affine_to_displacement_field_3d(forward, affine_prod)
         forward, stats = tf.compose_vector_fields3D(forward,
                                                   self.forward)
         backward=self.backward.copy()
         tf.append_affine_to_displacement_field_3d(backward, affine_prod_inv)
         backward, stats = tf.compose_vector_fields3D(backward, 
                                                    applyFirst.backward)
     composition=TransformationModel(forward, backward, 
                                     applyFirst.affine_pre, self.affine_post)
     return composition