Ejemplo n.º 1
0
def get_images(sample, add_noise_img = False, sigma_noise = None, add_padding_noise=False, fixed_snr = False, SNR_target=None, seg_map=None):
    """1. To pad with noise, use 'add_padding_noise=True' + 'sigma_noise'
       2. To simply add noise, use 'add_noise_img=True' + 'sigma_noise'
       3. Otherwise, the function retrieves non noisy simulations by default"""

    if add_noise_img:
        #Add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(sample[i]['galsim_image'][0].array, sigma = sigma_noise)

        return np.array([sample[obj]['galsim_image_noisy'] for obj in
                         range(sample.size)])
    #Padding of 7 by 7 + noise
    if add_padding_noise:
        #Pad image
        for i in range(len(sample)):
            sample[i]['galsim_image_pad'] = pad2d(sample[i]['galsim_image'][0].array, (7, 7))

        #Then add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(sample[i]['galsim_image_pad'], sigma = sigma_noise)

        return np.array([sample[obj]['galsim_image_noisy'] for obj in
                         range(sample.size)])

    #Get non noisy images
    else:
        return np.array([sample[obj]['galsim_image'][0].array for obj in
                     range(sample.size)])
Ejemplo n.º 2
0
    def test_add_noise_gaussian(self):
        """Test add_noise with Gaussian noise."""
        np.random.seed(1)
        npt.assert_almost_equal(
            noise.add_noise(self.data1),
            self.data3,
            err_msg='Incorrect noise: Gaussian',
        )

        np.random.seed(1)
        npt.assert_almost_equal(
            noise.add_noise(self.data1, sigma=(1, 1, 1)),
            self.data3,
            err_msg='Incorrect noise: Gaussian',
        )
Ejemplo n.º 3
0
def get_images(sample,
               add_noise_img=False,
               sigma_noise=None,
               add_padding_noise=False,
               fixed_snr=False,
               SNR_target=None,
               seg_map=None):

    if add_noise_img:
        #Add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(
                sample[i]['galsim_image'][0].array, sigma=sigma_noise)

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])

    if add_padding_noise:
        #Pad image 7 by 7
        for i in range(len(sample)):
            sample[i]['galsim_image_pad'] = pad2d(
                sample[i]['galsim_image'][0].array, (7, 7))

        #Then add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(
                sample[i]['galsim_image_pad'], sigma=sigma_noise)

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])
    # Add noise according to a fixed SNR level to reach
    if fixed_snr:
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = noise_to_add(
                img=sample[i]['galsim_image'][0].array,
                SNR_=SNR_target,
                map=seg_map[i])
            #Normalise images
            sample[i]['galsim_image_noisy'] /= sample[i][
                'galsim_image_noisy'].max()

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])
    #Return only non noisy image
    else:
        return np.array([
            sample[obj]['galsim_image'][0].array for obj in range(sample.size)
        ])
Ejemplo n.º 4
0
def noise_to_add(img=None, SNR_=None, map=None):
    #Calculate std of central object signal
    signal = np.sum(img[map == 1]**2)
    # Calculate noise to add on image
    std_noise = np.sqrt(signal) / SNR_
    #add noise
    return add_noise(img, sigma=std_noise)
Ejemplo n.º 5
0
def get_images(sample, add_noise_img = False, sigma_noise = None, add_padding_noise=False, fixed_snr = False, SNR_target=None, seg_map=None):
    """1. To pad with noise, use 'add_padding_noise=True' + 'sigma_noise'
       2. To simply add noise, use 'add_noise_img=True' + 'sigma_noise'
       3. To create datasets with fixed SNR according to signal use 'fixed_snr=True' + 'SNR_target'
       4. Otherwise, the function retrieves non noisy simulations by default"""

    if add_noise_img:
        #Add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(sample[i]['galsim_image'][0].array, sigma = sigma_noise)

        return np.array([sample[obj]['galsim_image_noisy'] for obj in
                         range(sample.size)])
    #Padding of 7 by 7 + noise
    if add_padding_noise:
        #Pad image
        for i in range(len(sample)):
            sample[i]['galsim_image_pad'] = pad2d(sample[i]['galsim_image'][0].array, (7, 7))

        #Then add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(sample[i]['galsim_image_pad'], sigma = sigma_noise)

        return np.array([sample[obj]['galsim_image_noisy'] for obj in
                         range(sample.size)])
    #Create images with fixed SNR
    if fixed_snr:
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = noise_to_add(img=sample[i]['galsim_image'][0].array, SNR_=SNR_target, map=seg_map[i])
            #Normalise images
            sample[i]['galsim_image_noisy'] /= sample[i]['galsim_image_noisy'].max()

        return np.array([sample[obj]['galsim_image_noisy'] for obj in
                         range(sample.size)])
    #Get non noisy images
    else:
        return np.array([sample[obj]['galsim_image'][0].array for obj in
                     range(sample.size)])
Ejemplo n.º 6
0
    def test_add_noise_poisson(self):
        """Test add_noise with Poisson noise."""
        np.random.seed(1)
        npt.assert_array_equal(
            noise.add_noise(self.data1, noise_type='poisson'),
            self.data2,
            err_msg='Incorrect noise: Poisson',
        )

        npt.assert_raises(
            ValueError,
            noise.add_noise,
            self.data1,
            noise_type='bla',
        )

        npt.assert_raises(ValueError, noise.add_noise, self.data1, (1, 1))
Ejemplo n.º 7
0
"""

import numpy as np
from pysap import Image
from pysap.data import get_sample_data
from pysap.plugins.astro.deconvolve.deconvolve import sparse_deconv_condatvu
from modopt.signal.noise import add_noise
from modopt.math.convolve import convolve

# Load the example images
galaxy = get_sample_data('astro-galaxy')
psf = get_sample_data('astro-psf')

# Show the clean galaxy image
galaxy.show()

# Generate a noisy observed image
obs_data = add_noise(convolve(galaxy.data, psf.data), sigma=0.0005)
image_obs = Image(data=np.abs(obs_data))
image_obs.show()

# Deconvolve the observed image
deconv_data = sparse_deconv_condatvu(obs_data, psf.data, n_iter=3000)
image_rec = Image(data=np.abs(deconv_data))
image_rec.show()

# Show the residual
residual = Image(data=np.abs(galaxy.data - deconv_data))
residual.show()
Ejemplo n.º 8
0
def get_images(sample,
               add_noise_img=False,
               sigma_noise=None,
               extra_padding=False,
               add_pad_noise=False,
               fixed_snr=False,
               SNR_target=None,
               seg_map=None,
               get_noisy=False):

    if add_noise_img:
        #Add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(
                sample[i]['galsim_image'][0].array, sigma=sigma_noise)

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])

    if extra_padding:
        #Add extra padding to image and store in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_pad'] = pad2d(
                sample[i]['galsim_image'][0].array, (7, 7))

        return np.array(
            [sample[obj]['galsim_image_pad'] for obj in range(sample.size)])

    if add_pad_noise:
        #Pad image
        for i in range(len(sample)):
            sample[i]['galsim_image_pad'] = pad2d(
                sample[i]['galsim_image'][0].array, (7, 7))

        #Then add noise to image and store array in dict
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = add_noise(
                sample[i]['galsim_image_pad'], sigma=sigma_noise)

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])

    if fixed_snr:
        for i in range(len(sample)):
            sample[i]['galsim_image_noisy'] = noise_to_add(
                img=sample[i]['galsim_image'][0].array,
                SNR_=SNR_target,
                map=seg_map[i])
            #Normalise images
            sample[i]['galsim_image_noisy'] /= sample[i][
                'galsim_image_noisy'].max()

        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])

    if get_noisy:
        return np.array(
            [sample[obj]['galsim_image_noisy'] for obj in range(sample.size)])

    else:
        return np.array([
            sample[obj]['galsim_image'][0].array for obj in range(sample.size)
        ])
Ejemplo n.º 9
0
galaxy = get_sample_data('astro-ngc2997')

#############################################################################
# Show the clean galaxy image

# galaxy.show()

#############################################################################
# Generate noisy observation
# --------------------------
#
# Convolve the image with a point spread function (PSF) using the `convolve`
# function. Then add random Gaussian noise with standard deviation 0.0005
# using the `add_noise` function.

obs_data = add_noise(galaxy.data, sigma=100)

#############################################################################
# Create a PySAP image object

image_obs = Image(data=np.abs(obs_data))

#############################################################################
# Show the noisy galaxy image

# image_obs.show()

#############################################################################
# Deconvolve
# ----------
#