--- a
+++ b/ants/ops/get_mask.py
@@ -0,0 +1,75 @@
+
+
+
+__all__ = ['get_mask']
+
+import ants
+from ants.decorators import image_method
+
+@image_method
+def get_mask(image, low_thresh=None, high_thresh=None, cleanup=2):
+    """
+    Get a binary mask image from the given image after thresholding
+
+    ANTsR function: `getMask`
+
+    Arguments
+    ---------
+    image : ANTsImage
+        image from which mask will be computed. Can be an antsImage of 2, 3 or 4 dimensions.
+
+    low_thresh : scalar (optional)
+        An inclusive lower threshold for voxels to be included in the mask.
+        If not given, defaults to image mean.
+
+    high_thresh : scalar (optional)
+        An inclusive upper threshold for voxels to be included in the mask.
+        If not given, defaults to image max
+
+    cleanup : integer
+        If > 0, morphological operations will be applied to clean up the mask by eroding away small or weakly-connected areas, and closing holes.
+        If cleanup is >0, the following steps are applied
+            1. Erosion with radius 2 voxels
+            2. Retain largest component
+            3. Dilation with radius 1 voxel
+            4. Morphological closing
+
+    Returns
+    -------
+    ANTsImage
+
+    Example
+    -------
+    >>> import ants
+    >>> image = ants.image_read( ants.get_ants_data('r16') )
+    >>> mask = ants.get_mask(image)
+    """
+    cleanup = int(cleanup)
+    if ants.is_image(image):
+        if image.pixeltype != 'float':
+            image = image.clone('float')
+
+    if low_thresh is None:
+        low_thresh = image.mean()
+    if high_thresh is None:
+        high_thresh = image.max()
+
+    mask_image = ants.threshold_image(image, low_thresh, high_thresh)
+    if cleanup > 0:
+        mask_image = ants.iMath(mask_image, 'ME', cleanup)
+        mask_image = ants.iMath(mask_image, 'GetLargestComponent')
+        mask_image = ants.iMath(mask_image, 'MD', cleanup)
+        mask_image = ants.iMath(mask_image, 'FillHoles').threshold_image( 1, 2 )
+        while ((mask_image.min() == mask_image.max()) and (cleanup > 0)):
+            cleanup = cleanup - 1
+            mask_image = ants.threshold_image(image, low_thresh, high_thresh)
+            if cleanup > 0:
+                mask_image = ants.iMath(mask_image, 'ME', cleanup)
+                mask_image = ants.iMath(mask_image, 'MD', cleanup)
+                mask_image = ants.iMath(mask_image, 'FillHoles').threshold_image( 1, 2 )
+
+            #if cleanup == 0:
+            #    clustlab = ants.label_clusters(mask_image, 1)
+            #    mask_image = ants.threshold_image(clustlab, 1, 1)
+
+    return mask_image