NIPY logo

Site Navigation

NIPY Community

Table Of Contents

Next topic

io.imageformats.header_ufuncs

This Page

io.imageformats.funcs

Module: io.imageformats.funcs

Processor functions for images

Functions

nipy.io.imageformats.funcs.as_closest_canonical(img, enforce_diag=False)

Return img with data reordered to be closest to canonical

Canonical order is the ordering of the output axes.

Parameters :

img : spatialimage

enforce_diag : {False, True}, optional

If True, before transforming image, check if the resulting image affine will be close to diagonal, and if not, raise an error

Returns :

canonical_img : spatialimage

Version of img where the underlying array may have been reordered and / or flipped so that axes 0,1,2 are those axes in the input data that are, respectively, closest to the output axis orientation. We modify the affine accordingly. If img is already has the correct data ordering, we just return img unmodified.

nipy.io.imageformats.funcs.concat_images(images, check_affines=True)

Concatenate images in list to single image, along last dimension

nipy.io.imageformats.funcs.four_to_three(img)

Create 3D images from 4D image by slicing over last axis

Parameters :

img : image

4D image instance of some class with methods get_data, get_header and get_affine, and a class constructor allowing Klass(data, affine, header)

Returns :

imgs : list

list of 3D images

nipy.io.imageformats.funcs.squeeze_image(img)

Return image, remove axes length 1 at end of image shape

For example, an image may have shape (10,20,30,1,1). In this case squeeze will result in an image with shape (10,20,30). See doctests for further description of behavior.

Parameters :

img : SpatialImage

Returns :

squeezed_img : SpatialImage

Copy of img, such that data, and data shape have been squeezed, for dimensions > 3rd, and at the end of the shape list

Examples

>>> import nipy.io.imageformats as nf
>>> shape = (10,20,30,1,1)
>>> data = np.arange(np.prod(shape)).reshape(shape)
>>> affine = np.eye(4)
>>> img = nf.Nifti1Image(data, affine)
>>> img.get_shape()
(10, 20, 30, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.get_shape()
(10, 20, 30)

If the data are 3D then last dimensions of 1 are ignored

>>> shape = (10,1,1)
>>> data = np.arange(np.prod(shape)).reshape(shape)
>>> img = nf.ni1.Nifti1Image(data, affine)
>>> img.get_shape()
(10, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.get_shape()
(10, 1, 1)

Only final dimensions of 1 are squeezed

>>> shape = (1, 1, 5, 1, 2, 1, 1)
>>> data = data.reshape(shape)
>>> img = nf.ni1.Nifti1Image(data, affine)
>>> img.get_shape()
(1, 1, 5, 1, 2, 1, 1)
>>> img2 = squeeze_image(img)
>>> img2.get_shape()
(1, 1, 5, 1, 2)