Reading and Writing for Images and Transforms¶
Images¶
There are numerous file formats support by SimpleITK’s image readers and writers.
Support for a particular format is handled by a specific ITK
ImageIO class.
By default, the ImageIO is automatically determined for a particular file.
Advanced SimpleITK installations can configure or extend which file formats
are supported by SimpleITK. A list of registered ImageIO’s can be found using the
GetRegisteredImageIOs()
method, but is posted here:
- BMPImageIO ( *.bmp, *.BMP )
- BioRadImageIO ( *.PIC, *.pic )
- Bruker2dseqImageIO
- GDCMImageIO
- GE4ImageIO
- GE5ImageIO
- GiplImageIO ( *.gipl *.gipl.gz)
- HDF5ImageIO
- JPEGImageIO ( *.jpg, *.JPG, *.jpeg, *.JPEG )
- LSMImageIO ( *.tif, *.TIF, *.tiff, *.TIFF, *.lsm, *.LSM )
- MINCImageIO ( *.mnc, *.MNC )
- MRCImageIO ( *.mrc, *.rec )
- MetaImageIO ( *.mha, *.mhd )
- NiftiImageIO ( *.nia, *.nii, *.nii.gz, *.hdr, *.img, *.img.gz )
- NrrdImageIO ( *.nrrd, *.nhdr )
- PNGImageIO ( *.png, *.PNG )
- StimulateImageIO
- TIFFImageIO ( *.tif, *.TIF, *.tiff, *.TIFF )
- VTKImageIO ( *.vtk )
Example read and write:
import SimpleITK as sitk
reader = sitk.ImageFileReader()
reader.SetImageIO("BMPImageIO")
reader.SetFileName(inputImageFileName)
image = reader.Execute();
writer = sitk.ImageFileWriter()
writer.SetFileName(outputImageFileName)
writer.Execute(image)
Transformations¶
In SimpleITK, transformation files can be written in several different formats. Just like there are numerous IOs for images, there are several for transforms, including TxtTransformIO, MINCTransformIO, HDF5TransformIO, and MatlabTransformIO (although this list can be extended as well). These support a variety of file formats, including .txt, .tfm, .mat, and .xfm. A displacement field, such as one stored in a DisplacementFieldTransform object, can also be saved as an image (.nrrd, .nhdr, .mha, .mhd, .nii, .nii.gz).
Take an example of a transformation written to and read from a file in Python:
basic_transform = sitk.Euler2DTransform()
basic_transform.SetTranslation((2,3))
sitk.WriteTransform(basic_transform, 'euler2D.tfm')
read_result = sitk.ReadTransform('euler2D.tfm')
assert(str(type(read_result) != type(basic_transform)))
read_result
will be an object of the generic sitk.Transform()
class and basic_transform
will be of sitk.Euler2DTransform()
, but both represent the same transformation. Although this
example only uses a single SimpleITK transformation, a .tfm file can hold a composite (set of
transformations).