Skip to content
Snippets Groups Projects
Commit a69bd9e4 authored by Paul McCarthy's avatar Paul McCarthy :mountain_bicyclist:
Browse files

RF: Image.resample supports data with more than 3 dimensions.

parent 16496d1d
No related branches found
No related tags found
No related merge requests found
......@@ -1173,7 +1173,7 @@ class Image(Nifti):
order=1,
smooth=True):
"""Returns a copy of the data in this ``Image``, resampled to the
specified ``shape``.
specified ``newShape``.
:arg newShape: Desired shape. May containg floating point values,
in which case the resampled image will have shape
......@@ -1182,7 +1182,7 @@ class Image(Nifti):
:arg sliceobj: Slice into this ``Image``. If ``None``, the whole
image is resampled, and it is assumed that it has the
same number of dimensions as ``shape``. A
same number of dimensions as ``newShape``. A
:exc:`ValueError` is raised if this is not the case.
:arg dtype: ``numpy`` data type of the resampled data. If ``None``,
......@@ -1201,12 +1201,12 @@ class Image(Nifti):
:returns: A tuple containing:
- A ``numpy`` array of shape ``shape``, containing an
interpolated copy of the data in this ``Image``.
- A ``numpy`` array of shape ``newShape``, containing
an interpolated copy of the data in this ``Image``.
- A ``numpy`` array of shape ``(4, 4)``, containing the
adjusted voxel-to-world transformation for the resampled
data.
adjusted voxel-to-world transformation for the spatial
dimensions of the resampled data.
"""
if sliceobj is None: sliceobj = slice(None)
......@@ -1225,7 +1225,7 @@ class Image(Nifti):
ratio = oldShape / newShape
newShape = np.array(np.round(newShape), dtype=np.int)
scale = transform.scaleOffsetXform(ratio, 0)
scale = np.diag(ratio)
# If interpolating and smoothing, we apply a
# gaussian filter along axes with a resampling
......@@ -1242,7 +1242,7 @@ class Image(Nifti):
data = ndimage.gaussian_filter(data, sigma)
data = ndimage.affine_transform(data,
scale[:3, :3],
scale,
output_shape=newShape,
order=order)
......@@ -1250,6 +1250,7 @@ class Image(Nifti):
# puts the resampled image into the
# same world coordinate system as this
# image.
scale = transform.scaleOffsetXform(ratio[:3], 0)
xform = transform.concat(self.voxToWorldMat, scale)
else:
xform = self.voxToWorldMat
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment