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]); }