利用J-不变性校正去噪器

在这个例子中,我们展示了如何找到任何去噪算法的最佳校准版本。

该校准方法是基于 noise2self 一种快速算法 1.

1

作者J.Batson&L.Royer。Noise2Self:自我监督的盲降噪,国际机器学习会议,第524-533页(2019)。

参见

有关该方法的更多详细信息,请参阅完整教程 使用J-不变性校准消噪器的完整教程

校准小波去噪器

import numpy as np
from matplotlib import pyplot as plt

from skimage.data import chelsea
from skimage.restoration import calibrate_denoiser, denoise_wavelet

from skimage.util import img_as_float, random_noise
from functools import partial

# rescale_sigma=True required to silence deprecation warnings
_denoise_wavelet = partial(denoise_wavelet, rescale_sigma=True)

image = img_as_float(chelsea())
sigma = 0.3
noisy = random_noise(image, var=sigma ** 2)

# Parameters to test when calibrating the denoising algorithm
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([])

plt.show()
Noisy Image, Denoised (Default), Denoised (Calibrated)

输出:

/scikit-image/doc/examples/filters/plot_j_invariant.py:45: FutureWarning:

`multichannel` is a deprecated argument name for `denoise_wavelet`. It will be removed in version 1.0. Please use `channel_axis` instead.

/vpy/lib/python3.9/site-packages/scikit_image-0.20.0.dev0-py3.9-linux-x86_64.egg/skimage/restoration/j_invariant.py:144: FutureWarning:

`multichannel` is a deprecated argument name for `denoise_wavelet`. It will be removed in version 1.0. Please use `channel_axis` instead.

Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

脚本的总运行时间: (0分1.752秒)

Gallery generated by Sphinx-Gallery