def warp_backward_nn(self, image):
     r'''
     Applies this transformation in the backward direction to the given
     image using nearest-neighbor interpolation
     '''
     if len(image.shape) == 3:
         if image.dtype is np.dtype('int32'):
             warped = np.array(
                 tf.warp_discrete_volumeNN(
                     image, self.backward, self.affine_post_inv,
                     self.affine_pre_inv))
         elif image.dtype is np.dtype('float64'):
             warped = np.array(
                 tf.warp_volumeNN(
                     image, self.backward, self.affine_post_inv,
                     self.affine_pre_inv))
     else:
         if image.dtype is np.dtype('int32'):
             warped = np.array(
                 tf.warp_discrete_imageNN(
                     image, self.backward, self.affine_post_inv,
                     self.affine_pre_inv))
         elif image.dtype is np.dtype('float64'):
             warped = np.array(
                 tf.warp_imageNN(
                     image, self.backward, self.affine_post_inv,
                         self.affine_pre_inv))
     return warped
 def warp_forward(self, image):
     r'''
     Applies this transformation in the forward direction to the given image
     using tri-linear interpolation
     '''
     if len(image.shape) == 3:
         if image.dtype is np.dtype('int32'):
             warped = np.array(
                 tf.warp_discrete_volumeNN(
                     image, self.forward, self.affine_pre, self.affine_post))
         elif image.dtype is np.dtype('float64'):
             warped = np.array(
                 tf.warp_volume(
                     image, self.forward, self.affine_pre, self.affine_post))
     else:
         if image.dtype is np.dtype('int32'):
             warped = np.array(
                 tf.warp_discrete_imageNN(
                     image, self.forward, self.affine_pre, self.affine_post))
         elif image.dtype is np.dtype('float64'):
             warped = np.array(
                 tf.warp_image(
                     image, self.forward, self.affine_pre, self.affine_post))
     return warped