--- a +++ b/ants/ops/threshold_image.py @@ -0,0 +1,61 @@ + + + +__all__ = ['threshold_image'] + +from ants.decorators import image_method +from ants.internal import get_lib_fn, process_arguments + +@image_method +def threshold_image(image, low_thresh=None, high_thresh=None, inval=1, outval=0, binary=True): + """ + Converts a scalar image into a binary image by thresholding operations + + ANTsR function: `thresholdImage` + + Arguments + --------- + image : ANTsImage + Input image to operate on + + low_thresh : scalar (optional) + Lower edge of threshold window + + hight_thresh : scalar (optional) + Higher edge of threshold window + + inval : scalar + Output value for image voxels in between lothresh and hithresh + + outval : scalar + Output value for image voxels lower than lothresh or higher than hithresh + + binary : boolean + if true, returns binary thresholded image + if false, return binary thresholded image multiplied by original image + + Returns + ------- + ANTsImage + + Example + ------- + >>> import ants + >>> image = ants.image_read( ants.get_ants_data('r16') ) + >>> timage = ants.threshold_image(image, 0.5, 1e15) + """ + if high_thresh is None: + high_thresh = image.max() + 0.01 + if low_thresh is None: + low_thresh = image.min() - 0.01 + dim = image.dimension + outimage = image.clone() + args = [dim, image, outimage, low_thresh, high_thresh, inval, outval] + processed_args = process_arguments(args) + libfn = get_lib_fn('ThresholdImage') + libfn(processed_args) + if binary: + return outimage + else: + return outimage*image +