Split channels of a multi-channel ANTsImage into a collection
    of scalar ANTsImage types
    
    Arguments
    ---------
    image : ANTsImage
        multi-channel image to split

    Returns
    -------
    list of ANTsImage types

    Example
    -------
    >>> import ants
    >>> image = ants.image_read(ants.get_ants_data('r16'), 'float')
    >>> image2 = ants.image_read(ants.get_ants_data('r16'), 'float')
    >>> imagemerge = ants.merge_channels([image,image2])
    >>> imagemerge.components == 2
    >>> images_unmerged = ants.split_channels(imagemerge)
    >>> len(images_unmerged) == 2
    >>> images_unmerged[0].components == 1

def split_channels(image):
    """
    Split channels of a multi-channel ANTsImage into a collection
    of scalar ANTsImage types
    
    Arguments
    ---------
    image : ANTsImage
        multi-channel image to split

    Returns
    -------
    list of ANTsImage types

    Example
    -------
    >>> import ants
    >>> image = ants.image_read(ants.get_ants_data('r16'), 'float')
    >>> image2 = ants.image_read(ants.get_ants_data('r16'), 'float')
    >>> imagemerge = ants.merge_channels([image,image2])
    >>> imagemerge.components == 2
    >>> images_unmerged = ants.split_channels(imagemerge)
    >>> len(images_unmerged) == 2
    >>> images_unmerged[0].components == 1
    """
    inpixeltype = image.pixeltype
    dimension = image.dimension
    components = 1

    libfn = utils.get_lib_fn('splitChannels%s' % image._libsuffix)
    itkimages = libfn(image.pointer)
    antsimages = [iio.ANTsImage(pixeltype=inpixeltype, dimension=dimension, 
                              components=components, pointer=itkimage) for itkimage in itkimages]
    return antsimages