From 9be8654e854753235143d328d7ed3d0d4eb0190d Mon Sep 17 00:00:00 2001 From: Matthew McCormick Date: Thu, 26 Jun 2025 13:26:37 -0400 Subject: [PATCH] WIP: fix(downsample): set output offset for center pixel shift Fixes #1409 --- packages/downsample/downsample-label-image.cxx | 2 +- packages/downsample/downsample.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/downsample/downsample-label-image.cxx b/packages/downsample/downsample-label-image.cxx index 75c359ccf..d236ecbf9 100644 --- a/packages/downsample/downsample-label-image.cxx +++ b/packages/downsample/downsample-label-image.cxx @@ -67,7 +67,7 @@ class PipelineFunctor { const double cropRadiusValue = cropRadius.size() ? cropRadius[i] : 0.0; - outputOrigin[i] = inputOrigin[i] + cropRadiusValue * inputSpacing[i]; + outputOrigin[i] = inputOrigin[i] + cropRadiusValue * inputSpacing[i] + 0.5 * (shrinkFactors[i] - 1) * inputSpacing[i]; outputSpacing[i] = inputSpacing[i] * shrinkFactors[i]; outputSize[i] = std::max(0, (inputSize[i] - 2 * cropRadiusValue) / shrinkFactors[i]); } diff --git a/packages/downsample/downsample.cxx b/packages/downsample/downsample.cxx index 8980a73e3..506d9536d 100644 --- a/packages/downsample/downsample.cxx +++ b/packages/downsample/downsample.cxx @@ -80,7 +80,7 @@ class PipelineFunctor { const double cropRadiusValue = cropRadius.size() ? cropRadius[i] : 0.0; - outputOrigin[i] = inputOrigin[i] + cropRadiusValue * inputSpacing[i]; + outputOrigin[i] = inputOrigin[i] + cropRadiusValue * inputSpacing[i] + 0.5 * (shrinkFactors[i] - 1) * inputSpacing[i]; outputSpacing[i] = inputSpacing[i] * shrinkFactors[i]; outputSize[i] = std::max(0, (inputSize[i] - 2 * cropRadiusValue) / shrinkFactors[i]); }