--- a +++ b/ants/math/hausdorff_distance.py @@ -0,0 +1,40 @@ +__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