def test_input_image_not_modified(): input_image = noisy_img.copy() parameter_ranges = {'sigma': np.random.random(5) / 2} calibrate_denoiser(input_image, _denoise_wavelet, denoise_parameters=parameter_ranges) assert_(np.all(noisy_img == input_image))
def test_calibrate_denoiser(): parameter_ranges = {'sigma': np.linspace(0.1, 1, 5) / 2} denoiser = calibrate_denoiser(noisy_img, _denoise_wavelet, denoise_parameters=parameter_ranges) denoised_mse = mse(denoiser(noisy_img), test_img) original_mse = mse(noisy_img, test_img) assert_(denoised_mse < original_mse)
def test_calibrate_denoiser_extra_output(): parameter_ranges = {'sigma': np.linspace(0.1, 1, 5) / 2} _, (parameters_tested, losses) = calibrate_denoiser(noisy_img, _denoise_wavelet, denoise_parameters=parameter_ranges, extra_output=True) all_denoised = [ _invariant_denoise(noisy_img, _denoise_wavelet, denoiser_kwargs=denoiser_kwargs) for denoiser_kwargs in parameters_tested ] ground_truth_losses = [mse(img, test_img) for img in all_denoised] assert_(np.argmin(losses) == np.argmin(ground_truth_losses))
# Parameters to test when calibrating the denoising algorithm sigma_range = np.arange(0.05, 0.5, 0.05) parameter_ranges = { 'sigma': np.arange(0.1, 0.3, 0.02), 'wavelet': ['db1', 'db2'], 'convert2ycbcr': [True, False], 'multichannel': [True] } # Denoised image using default parameters of `denoise_wavelet` default_output = denoise_wavelet(noisy, multichannel=True, rescale_sigma=True) # Calibrate denoiser calibrated_denoiser = calibrate_denoiser(noisy, _denoise_wavelet, denoise_parameters=parameter_ranges) # Denoised image using calibrated denoiser calibrated_output = calibrated_denoiser(noisy) fig, axes = plt.subplots(1, 3, sharey=True, figsize=(15, 5)) for ax, img, title in zip( axes, [noisy, default_output, calibrated_output], ['Noisy Image', 'Denoised (Default)', 'Denoised (Calibrated)']): ax.imshow(img) ax.set_title(title) ax.set_yticks([]) ax.set_xticks([])
# Parameters to test when calibrating the denoising algorithm sigma_range = np.arange(0.05, 0.5, 0.05) parameter_ranges = { 'sigma': np.arange(0.1, 0.3, 0.02), 'wavelet': ['db1', 'db2'], 'convert2ycbcr': [True, False], 'multichannel': [True] } # Denoised image using default parameters of `denoise_wavelet` default_output = denoise_wavelet(noisy, multichannel=True, rescale_sigma=True) # Calibrate denoiser calibrated_denoiser = calibrate_denoiser(noisy, _denoise_wavelet, denoise_parameters=parameter_ranges) # Denoised image using calibrated denoiser calibrated_output = calibrated_denoiser(noisy) fig, axes = plt.subplots(1, 3, sharex=True, sharey=True, figsize=(15, 5)) for ax, img, title in zip( axes, [noisy, default_output, calibrated_output], ['Noisy Image', 'Denoised (Default)', 'Denoised (Calibrated)']): ax.imshow(img) ax.set_title(title) ax.set_yticks([]) ax.set_xticks([])