__all__ = ["hausdorff_distance"]

from ants.decorators import image_method
from ants.internal import get_lib_fn

@image_method
def hausdorff_distance(image1, image2):
    """
    Get Hausdorff distance between non-zero pixels in two images

    ANTsR function: `hausdorffDistance`

    Arguments
    ---------
    source image : ANTsImage
        Source image

    target_image : ANTsImage
        Target image

    Returns
    -------
    data frame with "Distance" and "AverageDistance"

    Example
    -------
    >>> import ants
    >>> r16 = ants.image_read( ants.get_ants_data('r16') )
    >>> r64 = ants.image_read( ants.get_ants_data('r64') )
    >>> s16 = ants.kmeans_segmentation( r16, 3 )['segmentation']
    >>> s64 = ants.kmeans_segmentation( r64, 3 )['segmentation']
    >>> stats = ants.hausdorff_distance(s16, s64)
    """
    image1_int = image1.clone("unsigned int")
    image2_int = image2.clone("unsigned int")

    libfn = get_lib_fn("hausdorffDistance%iD" % image1_int.dimension)
    d = libfn(image1_int.pointer, image2_int.pointer)

    return d
