Source code for ants.ops.add_noise_to_image

__all__ = ["add_noise_to_image"]


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

[docs] @image_method def add_noise_to_image(image, noise_model, noise_parameters ): """ Add noise to an image using additive Gaussian, salt-and-pepper, shot, or speckle noise. Arguments --------- image : ANTsImage scalar image. noise_model : string 'additivegaussian', 'saltandpepper', 'shot', or 'speckle'. noise_parameters : tuple or array or float 'additivegaussian': (mean, standardDeviation) 'saltandpepper': (probability, saltValue, pepperValue) 'shot': scale 'speckle': standardDeviation Returns ------- ANTsImage Example ------- >>> import ants >>> image = ants.image_read(ants.get_ants_data('r16')) >>> noise_image = ants.add_noise_to_image(image, 'additivegaussian', (0.0, 1.0)) >>> noise_image = ants.add_noise_to_image(image, 'saltandpepper', (0.1, 0.0, 100.0)) >>> noise_image = ants.add_noise_to_image(image, 'shot', 1.0) >>> noise_image = ants.add_noise_to_image(image, 'speckle', 1.0) """ image_dimension = image.dimension if noise_model == 'additivegaussian': if len(noise_parameters) != 2: raise ValueError("Incorrect number of parameters.") libfn = get_lib_fn("additiveGaussianNoiseF%i" % image_dimension) noise = libfn(image.pointer, noise_parameters[0], noise_parameters[1]) output_image = ants.from_pointer(noise).clone('float') return output_image elif noise_model == 'saltandpepper': if len(noise_parameters) != 3: raise ValueError("Incorrect number of parameters.") libfn = get_lib_fn("saltAndPepperNoiseF%i" % image_dimension) noise = libfn(image.pointer, noise_parameters[0], noise_parameters[1], noise_parameters[2]) output_image = ants.from_pointer(noise).clone('float') return output_image elif noise_model == 'shot': if not isinstance(noise_parameters, (int, float)): raise ValueError("Incorrect parameter specification.") libfn = get_lib_fn("shotNoiseF%i" % image_dimension) noise = libfn(image.pointer, noise_parameters) output_image = ants.from_pointer(noise).clone('float') return output_image elif noise_model == 'speckle': if not isinstance(noise_parameters, (int, float)): raise ValueError("Incorrect parameter specification.") libfn = get_lib_fn("speckleNoiseF%i" % image_dimension) noise = libfn(image.pointer, noise_parameters) output_image = ants.from_pointer(noise).clone('float') return output_image else: raise ValueError("Unknown noise model.")