deepmr.prox.wavelet_dict_denoise

deepmr.prox.wavelet_dict_denoise#

deepmr.prox.wavelet_dict_denoise(input, ndim, ths, wv=None, device=None, non_linearity='soft', level=None, max_iter=10)[source]#

Apply overcomplete Wavelet denoising with the \(\ell_1\) norm.

This denoiser is defined as the solution to the optimization problem:

\[\underset{x}{\arg\min} \; \|x-y\|^2 + \lambda \|\Psi x\|_n\]

where \(\Psi\) is an overcomplete wavelet transform, composed of 2 or more wavelets, i.e., \(\Psi=[\Psi_1,\Psi_2,\dots,\Psi_L]\), \(\lambda>0\) is a hyperparameter, and where \(\|\cdot\|_n\) is either the \(\ell_1\) norm (non_linearity="soft"), the \(\ell_0\) norm (non_linearity="hard") or a variant of the \(\ell_0\) norm (non_linearity="topk") where only the top-k coefficients are kept; see deepinv.models.WaveletDenoiser() for more details.

The solution is not available in closed-form, thus the denoiser runs an optimization algorithm for each test image.

deepmr.prox.input#

Input image of shape (…, n_ndim, …, n_0).

Type:

np.ndarray | torch.Tensor

deepmr.prox.ndim#

Number of spatial dimensions, can be either 2 or 3.

Type:

int

deepmr.prox.ths#

Denoise threshold.

Type:

float

deepmr.prox.wv#

List of mother wavelets. The names of the wavelets can be found in here. The default is ["db8", "db4"].

Type:

Iterable[str], optional

deepmr.prox.device#

Device on which the wavelet transform is computed. The default is None (infer from input).

Type:

str, optional

deepmr.prox.non_linearity#

"soft", "hard" or "topk" thresholding. The default is "soft".

Type:

str, optional

deepmr.prox.level#

Level of the wavelet transform. The default is None.

Type:

int, optional

deepmr.prox.max_iter#

Number of iterations of the optimization algorithm. The default is 10.

Type:

int, optional

Returns:

output – Denoised image of shape (…, n_ndim, …, n_0).

Return type:

np.ndarray | torch.Tensor