diff --git a/tests/test_scripts/test_resample_image.py b/tests/test_scripts/test_resample_image.py new file mode 100644 index 0000000000000000000000000000000000000000..3477c1a23434294a565ec5c522ca4db07e9c46e0 --- /dev/null +++ b/tests/test_scripts/test_resample_image.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + + +import numpy as np + +import fsl.scripts.resample_image as resample_image + + +import fsl.utils.transform as transform +from fsl.utils.tempdir import tempdir +from fsl.data.image import Image + +from .. import make_random_image + + +def test_resample_image_shape(): + with tempdir(): + img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10))) + resample_image.main('image resampled -s 20 20 20'.split()) + res = Image('resampled') + + expv2w = transform.concat( + img.voxToWorldMat, + transform.scaleOffsetXform([0.5, 0.5, 0.5], 0)) + + assert np.all(np.isclose(res.shape, (20, 20, 20))) + assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5))) + assert np.all(np.isclose(res.voxToWorldMat, expv2w)) + assert np.all(np.isclose( + np.array(transform.axisBounds(res.shape, res.voxToWorldMat)) - 0.25, + transform.axisBounds(img.shape, img.voxToWorldMat))) + + resample_image.main('image resampled -s 20 20 20 -o corner'.split()) + res = Image('resampled') + assert np.all(np.isclose( + transform.axisBounds(res.shape, res.voxToWorldMat), + transform.axisBounds(img.shape, img.voxToWorldMat))) + + +def test_resample_image_dim(): + with tempdir(): + img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10))) + + resample_image.main('image resampled -d 0.5 0.5 0.5'.split()) + + res = Image('resampled') + expv2w = transform.concat( + img.voxToWorldMat, + transform.scaleOffsetXform([0.5, 0.5, 0.5], 0)) + + assert np.all(np.isclose(res.shape, (20, 20, 20))) + assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5))) + assert np.all(np.isclose(res.voxToWorldMat, expv2w)) + + +def test_resample_image_ref(): + with tempdir(): + img = Image(make_random_image('image.nii.gz', dims=(10, 10, 10))) + ref = Image(make_random_image('ref.nii.gz', dims=(20, 20, 20), + pixdims=(0.5, 0.5, 0.5))) + + resample_image.main('image resampled -r ref'.split()) + + res = Image('resampled') + expv2w = ref.voxToWorldMat + + assert np.all(np.isclose(res.shape, (20, 20, 20))) + assert np.all(np.isclose(res.pixdim, (0.5, 0.5, 0.5))) + assert np.all(np.isclose(res.voxToWorldMat, expv2w))