@@ -201,6 +201,7 @@ def __call__(
201201 meta_data = d [meta_data_key ]
202202 # resample array of each corresponding key
203203 # using affine fetched from d[affine_key]
204+ original_spatial_shape = d [key ].shape [1 :]
204205 d [key ], old_affine , new_affine = self .spacing_transform (
205206 data_array = np .asarray (d [key ]),
206207 affine = meta_data ["affine" ],
@@ -219,6 +220,7 @@ def __call__(
219220 "padding_mode" : padding_mode .value if isinstance (padding_mode , Enum ) else padding_mode ,
220221 "align_corners" : align_corners if align_corners is not None else "none" ,
221222 },
223+ orig_size = original_spatial_shape ,
222224 )
223225 # set the 'affine' key
224226 meta_data ["affine" ] = new_affine
@@ -239,6 +241,7 @@ def inverse(self, data: Mapping[Hashable, np.ndarray]) -> Dict[Hashable, np.ndar
239241 mode = transform [InverseKeys .EXTRA_INFO ]["mode" ]
240242 padding_mode = transform [InverseKeys .EXTRA_INFO ]["padding_mode" ]
241243 align_corners = transform [InverseKeys .EXTRA_INFO ]["align_corners" ]
244+ orig_size = transform [InverseKeys .ORIG_SIZE ]
242245 orig_pixdim = np .sqrt (np .sum (np .square (old_affine ), 0 ))[:- 1 ]
243246 inverse_transform = Spacing (orig_pixdim , diagonal = self .spacing_transform .diagonal )
244247 # Apply inverse
@@ -249,6 +252,7 @@ def inverse(self, data: Mapping[Hashable, np.ndarray]) -> Dict[Hashable, np.ndar
249252 padding_mode = padding_mode ,
250253 align_corners = False if align_corners == "none" else align_corners ,
251254 dtype = dtype ,
255+ output_spatial_shape = orig_size ,
252256 )
253257 meta_data ["affine" ] = new_affine
254258 # Remove the applied transform
@@ -1482,7 +1486,7 @@ def inverse(self, data: Mapping[Hashable, np.ndarray]) -> Dict[Hashable, np.ndar
14821486 align_corners = None if align_corners == "none" else align_corners ,
14831487 )
14841488 # Size might be out by 1 voxel so pad
1485- d [key ] = SpatialPad (transform [InverseKeys .ORIG_SIZE ])(d [key ])
1489+ d [key ] = SpatialPad (transform [InverseKeys .ORIG_SIZE ], mode = "edge" )(d [key ])
14861490 # Remove the applied transform
14871491 self .pop_transform (d , key )
14881492
@@ -1607,7 +1611,7 @@ def inverse(self, data: Mapping[Hashable, np.ndarray]) -> Dict[Hashable, np.ndar
16071611 align_corners = None if align_corners == "none" else align_corners ,
16081612 )
16091613 # Size might be out by 1 voxel so pad
1610- d [key ] = SpatialPad (transform [InverseKeys .ORIG_SIZE ])(d [key ])
1614+ d [key ] = SpatialPad (transform [InverseKeys .ORIG_SIZE ], mode = "edge" )(d [key ])
16111615 # Remove the applied transform
16121616 self .pop_transform (d , key )
16131617
0 commit comments