MCPcopy Create free account
hub / github.com/Project-MONAI/MONAI / inverse_transform

Method inverse_transform

monai/transforms/spatial/array.py:1016–1041  ·  view source on GitHub ↗
(self, data: torch.Tensor, transform)

Source from the content-addressed store, hash-verified

1014 return self.inverse_transform(data, transform)
1015
1016 def inverse_transform(self, data: torch.Tensor, transform) -> torch.Tensor:
1017 fwd_rot_mat = transform[TraceKeys.EXTRA_INFO]["rot_mat"]
1018 mode = transform[TraceKeys.EXTRA_INFO]["mode"]
1019 padding_mode = transform[TraceKeys.EXTRA_INFO]["padding_mode"]
1020 align_corners = transform[TraceKeys.EXTRA_INFO]["align_corners"]
1021 dtype = transform[TraceKeys.EXTRA_INFO]["dtype"]
1022 inv_rot_mat = linalg_inv(convert_to_numpy(fwd_rot_mat))
1023
1024 _, _m, _p, _ = resolves_modes(mode, padding_mode)
1025 xform = AffineTransform(
1026 normalized=False,
1027 mode=_m,
1028 padding_mode=_p,
1029 align_corners=False if align_corners == TraceKeys.NONE else align_corners,
1030 reverse_indexing=True,
1031 )
1032 img_t: torch.Tensor = convert_data_type(data, MetaTensor, dtype=dtype)[0]
1033 transform_t, *_ = convert_to_dst_type(inv_rot_mat, img_t)
1034 sp_size = transform[TraceKeys.ORIG_SIZE]
1035 out: torch.Tensor = xform(img_t.unsqueeze(0), transform_t, spatial_size=sp_size).float().squeeze(0)
1036 out = convert_to_dst_type(out, dst=data, dtype=out.dtype)[0]
1037 if isinstance(out, MetaTensor):
1038 affine = convert_to_tensor(out.peek_pending_affine(), track_meta=False)
1039 mat = to_affine_nd(len(affine) - 1, transform_t)
1040 out.affine @= convert_to_dst_type(mat, affine)[0]
1041 return out
1042
1043
1044class Zoom(InvertibleTransform, LazyTransform):

Callers 1

inverseMethod · 0.95

Calls 9

linalg_invFunction · 0.90
convert_to_numpyFunction · 0.90
resolves_modesFunction · 0.90
AffineTransformClass · 0.90
convert_data_typeFunction · 0.90
convert_to_dst_typeFunction · 0.90
convert_to_tensorFunction · 0.90
to_affine_ndFunction · 0.90
peek_pending_affineMethod · 0.80

Tested by

no test coverage detected