def d_H(im1, im2, lab, return_mm3):
"""
Asymmetric component of the Hausdorff distance.
:param im1: first image
:param im2: second image
:param lab: label in the image
:param return_mm3: final unit of measures of the result.
:return: max(d(x, contourY)), x: point belonging to the first contour,
contourY: contour of the second segmentation.
"""
arr1 = im1.get_data() == lab
arr2 = im2.get_data() == lab
if np.count_nonzero(arr1) == 0 or np.count_nonzero(arr2) == 0:
return np.nan
if return_mm3:
dt2 = nd.distance_transform_edt(1 - arr2, sampling=list(np.diag(im1.affine[:3, :3])))
else:
dt2 = nd.distance_transform_edt(1 - arr2, sampling=None)
return np.max(dt2 * arr1)
评论列表
文章目录