コード例 #1
0
def test_invariant_denoise_color():
    denoised_img_color = _invariant_denoise(
        noisy_img_color,
        _denoise_wavelet,
        denoiser_kwargs=dict(multichannel=True))

    denoised_mse = mse(denoised_img_color, test_img_color)
    original_mse = mse(noisy_img_color, test_img_color)
    assert_(denoised_mse < original_mse)
コード例 #2
0
def test_invariant_denoise_color(dtype):
    denoised_img_color = _invariant_denoise(
        noisy_img_color.astype(dtype),
        _denoise_wavelet,
        denoiser_kwargs=dict(channel_axis=-1))
    denoised_mse = mse(denoised_img_color, test_img_color)
    original_mse = mse(noisy_img_color, test_img_color)
    assert denoised_mse < original_mse
    assert denoised_img_color.dtype == _supported_float_type(dtype)
コード例 #3
0
def test_invariant_denoise_color_deprecated():

    with expected_warnings(["`multichannel` is a deprecated argument"]):
        denoised_img_color = _invariant_denoise(
            noisy_img_color,
            _denoise_wavelet,
            denoiser_kwargs=dict(multichannel=True))

    denoised_mse = mse(denoised_img_color, test_img_color)
    original_mse = mse(noisy_img_color, test_img_color)
    assert_(denoised_mse < original_mse)
コード例 #4
0
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))
コード例 #5
0
def test_invariant_denoise_3d():
    denoised_img_3d = _invariant_denoise(noisy_img_3d, _denoise_wavelet)

    denoised_mse = mse(denoised_img_3d, test_img_3d)
    original_mse = mse(noisy_img_3d, test_img_3d)
    assert_(denoised_mse < original_mse)
コード例 #6
0
def test_invariant_denoise():
    denoised_img = _invariant_denoise(noisy_img, _denoise_wavelet)

    denoised_mse = mse(denoised_img, test_img)
    original_mse = mse(noisy_img, test_img)
    assert_(denoised_mse < original_mse)
コード例 #7
0
# blue line) have the same shape and the same minimizer.
#

from skimage.restoration.j_invariant import _invariant_denoise

sigma_range = np.arange(sigma / 2, 1.5 * sigma, 0.025)

parameters_tested = [{
    'sigma': sigma,
    'convert2ycbcr': True,
    'wavelet': 'db2',
    'multichannel': True
} for sigma in sigma_range]

denoised_invariant = [
    _invariant_denoise(noisy, _denoise_wavelet, denoiser_kwargs=params)
    for params in parameters_tested
]

self_supervised_loss = [mse(img, noisy) for img in denoised_invariant]
ground_truth_loss = [mse(img, image) for img in denoised_invariant]

opt_idx = np.argmin(self_supervised_loss)
plot_idx = [0, opt_idx, len(sigma_range) - 1]

get_inset = lambda x: x[25:225, 100:300]

plt.figure(figsize=(10, 12))

gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])