From 55308427ac87f3a56152605a8c9eff95ec7677fa Mon Sep 17 00:00:00 2001 From: TMartinot Date: Mon, 15 Dec 2025 15:59:10 +0100 Subject: [PATCH] Fix #22 use resample to size instead of by scale factor --- deeperhistreg/dhr_preprocessing/general_preprocessing.py | 5 +++-- deeperhistreg/dhr_utils/utils.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/deeperhistreg/dhr_preprocessing/general_preprocessing.py b/deeperhistreg/dhr_preprocessing/general_preprocessing.py index ee1c72b..c260e31 100644 --- a/deeperhistreg/dhr_preprocessing/general_preprocessing.py +++ b/deeperhistreg/dhr_preprocessing/general_preprocessing.py @@ -35,9 +35,10 @@ def basic_preprocessing( initial_resolution = params['initial_resolution'] source_y_size, source_x_size, target_y_size, target_x_size = u.get_combined_size(source, target) initial_resample_ratio = u.calculate_resampling_ratio((source_x_size, target_x_size), (source_y_size, target_y_size), initial_resolution) + resample_dim = (round(target_y_size * (1 / initial_resample_ratio)), round(target_x_size * (1 / initial_resample_ratio))) initial_smoothing = max(initial_resample_ratio - 1, 0.1) - source = u.resample(u.gaussian_smoothing(source, initial_smoothing), initial_resample_ratio) - target = u.resample(u.gaussian_smoothing(target, initial_smoothing), initial_resample_ratio) + source = u.resample_tensor_to_size(u.gaussian_smoothing(source, initial_smoothing), resample_dim) + target = u.resample_tensor_to_size(u.gaussian_smoothing(target, initial_smoothing), resample_dim) postprocessing_params['initial_resample_ratio'] = initial_resample_ratio if source_landmarks is not None: source_landmarks = source_landmarks / initial_resample_ratio diff --git a/deeperhistreg/dhr_utils/utils.py b/deeperhistreg/dhr_utils/utils.py index 2e63ec1..86dd961 100644 --- a/deeperhistreg/dhr_utils/utils.py +++ b/deeperhistreg/dhr_utils/utils.py @@ -63,7 +63,7 @@ def resample(tensor : tc.Tensor, resample_ratio : float, mode: str="bilinear") - """ return F.interpolate(tensor, scale_factor = 1 / resample_ratio, mode=mode, recompute_scale_factor=False, align_corners=False) -def resample_tensor_to_size(tensor: tc.Tensor, new_size: tc.Tensor, mode: str='bilinear') -> tc.Tensor: +def resample_tensor_to_size(tensor: tc.Tensor, new_size: Union[int, Tuple[int, ...], tc.Tensor], mode: str='bilinear') -> tc.Tensor: """ TODO """ @@ -75,7 +75,7 @@ def resample_displacement_field(displacement_field : tc.Tensor, resample_ratio : """ return F.interpolate(displacement_field.permute(0, 3, 1, 2), scale_factor = 1 / resample_ratio, mode=mode, recompute_scale_factor=False, align_corners=False).permute(0, 2, 3, 1) -def resample_displacement_field_to_size(displacement_field: tc.Tensor, new_size: tc.Tensor, mode: str='bilinear') -> tc.Tensor: +def resample_displacement_field_to_size(displacement_field: tc.Tensor, new_size: Union[int, Tuple[int, ...], tc.Tensor], mode: str='bilinear') -> tc.Tensor: """ TODO """