Source code for ants.utils.scalar_rgb_vector
__all__ = ['rgb_to_vector', 'vector_to_rgb', 'scalar_to_rgb']
import os
from tempfile import mktemp
import numpy as np
from .. import utils
from ..core import ants_image as iio
from ..core import ants_image_io as iio2
[docs]def scalar_to_rgb(image, mask=None, filename=None, cmap='red', custom_colormap_file=None,
min_input=None, max_input=None, min_rgb_output=None, max_rgb_output=None,
vtk_lookup_table=None):
"""
Usage: ConvertScalarImageToRGB imageDimension inputImage outputImage mask colormap
[customColormapFile] [minimumInput] [maximumInput] [minimumRGBOutput=0]
[maximumRGBOutput=255] <vtkLookupTable>
Possible colormaps: grey, red, green, blue, copper, jet, hsv, spring, summer, autumn, winter, hot, cool, overunder, custom
Example
-------
>>> import ants
>>> img = ants.image_read(ants.get_data('r16'))
>>> img_color = img.scalar_to_rgb(cmap='jet')
"""
if filename is None:
file_is_temp = True
filename = mktemp(suffix='.png')
else:
file_is_temp = False
args = 'imageDimension inputImage outputImage mask colormap'.split(' ')
args[0] = image.dimension
if isinstance(image, iio.ANTsImage):
tmpimgfile = mktemp(suffix='.nii.gz')
image.to_file(tmpimgfile)
elif isinstance(image, str):
tmpimgfile = image
args[1] = tmpimgfile
args[2] = filename
args[3] = mask if mask is not None else image.new_image_like(np.ones(image.shape))
args[4] = cmap
if custom_colormap_file is not None:
args.append('customColormapFile=%s' % custom_colormap_file)
if min_input is not None:
args.append('minimumInput=%f' % min_input)
if max_input is not None:
args.append('maximumInput=%f' % max_input)
if min_rgb_output is not None:
args.append('minRGBOutput=%f' % min_rgb_output)
if max_rgb_output is not None:
args.append('maxRGBOutput=%f' % min_rgb_output)
if vtk_lookup_table is not None:
vtk_lookup_table = mktemp(suffix='.csv')
args.append('vtkLookupTable=%s' % vtk_lookup_table)
processed_args = utils._int_antsProcessArguments(args)
libfn = utils.get_lib_fn('ConvertScalarImageToRGB')
libfn(processed_args)
if file_is_temp:
outimg = iio2.image_read(filename, pixeltype=None)
# clean up temp files
os.remove(filename)
os.remove(tmpimgfile)
return outimg
else:
os.remove(tmpimgfile)
[docs]def rgb_to_vector(image):
"""
Convert an RGB ANTsImage to a Vector ANTsImage
Arguments
---------
image : ANTsImage
RGB image to be converted
Returns
-------
ANTsImage
Example
-------
>>> import ants
>>> mni = ants.image_read(ants.get_data('mni'))
>>> mni_rgb = mni.scalar_to_rgb()
>>> mni_vector = mni.rgb_to_vector()
>>> mni_rgb2 = mni.vector_to_rgb()
"""
if image.pixeltype != 'unsigned char':
image = image.clone('unsigned char')
idim = image.dimension
libfn = utils.get_lib_fn('RgbToVector%i' % idim)
new_ptr = libfn(image.pointer)
new_img = iio.ANTsImage(pixeltype=image.pixeltype, dimension=image.dimension,
components=3, pointer=new_ptr, is_rgb=False)
return new_img
[docs]def vector_to_rgb(image):
"""
Convert an Vector ANTsImage to a RGB ANTsImage
Arguments
---------
image : ANTsImage
RGB image to be converted
Returns
-------
ANTsImage
Example
-------
>>> import ants
>>> img = ants.image_read(ants.get_data('r16'), pixeltype='unsigned char')
>>> img_rgb = img.clone().scalar_to_rgb()
>>> img_vec = img_rgb.rgb_to_vector()
>>> img_rgb2 = img_vec.vector_to_rgb()
"""
if image.pixeltype != 'unsigned char':
image = image.clone('unsigned char')
idim = image.dimension
libfn = utils.get_lib_fn('VectorToRgb%i' % idim)
new_ptr = libfn(image.pointer)
new_img = iio.ANTsImage(pixeltype=image.pixeltype, dimension=image.dimension,
components=3, pointer=new_ptr, is_rgb=True)
return new_img