nabu.reconstruction.rings_cuda module

class nabu.reconstruction.rings_cuda.CudaMunchDeringer(sigma, sinos_shape, levels=None, wname='db15', padding=None, padding_mode='edge', fft_backend='vkfft', cuda_options=None)[source]

Bases: MunchDeringer

Initialize a “Munch Et Al” sinogram deringer with the Cuda backend. See References for more information.

Parameters:
  • sigma (float) – Standard deviation of the damping parameter. The higher value of sigma, the more important the filtering effect on the rings.

  • levels (int, optional) – Number of wavelets decomposition levels. By default (None), the maximum number of decomposition levels is used.

  • wname (str, optional) – Default is “db15” (Daubechies, 15 vanishing moments)

  • sinos_shape (tuple, optional) – Shape of the sinogram (or sinograms stack).

References

B. Munch, P. Trtik, F. Marone, M. Stampanoni, Stripe and ring artifact removal with combined wavelet-Fourier filtering, Optics Express 17(10):8567-8591, 2009.

nabu.reconstruction.rings_cuda.can_use_cuda_deringer()[source]

Check wether cuda implementation of deringer can be used. Checking for installed modules is not enough, as for example pyvkfft can be installed without cuda devices

class nabu.reconstruction.rings_cuda.CudaVoDeringer(sinos_shape, **remove_all_stripe_options)[source]

Bases: VoDeringer

An interface to topocupy’s “remove_all_stripe”.

remove_rings_radios(radios)[source]
remove_rings_sinograms(sinos)[source]
remove_rings_sinogram(sino)[source]
remove_rings(sinos)
class nabu.reconstruction.rings_cuda.CudaSinoMeanDeringer(sinos_shape, mode='subtract', filter_cutoff=None, padding_mode='edge', fft_num_threads=None, **cuda_options)[source]

Bases: SinoMeanDeringer

Rings correction with mean subtraction/division. The principle of this method is to subtract (or divide) the sinogram by its mean along a certain axis. In short:

sinogram -= filt(sinogram.mean(axis=0))

where filt is some bandpass filter.

Parameters:
  • sinos_shape (tuple of int) – Sinograms shape, in the form (n_angles, n_x) or (n_sinos, n_angles, n_x)

  • mode (str, optional) – Operation to do on the sinogram, either “subtract” or “divide”

  • filter_cutoff (tuple, optional) –

    Cut-off of the bandpass filter applied on the sinogram profiles. Empty (default) means no filtering. Possible values forms are:

    • (sigma_low, sigma_high): two float values defining the standard deviation of gaussian(sigma_low) * (1 - gaussian(sigma_high)). High values of sigma mean stronger effect of associated filters.

    • ((cutoff_low, transition_low), (cutoff_high, transition_high)) where “cutoff” is in normalized Nyquist frequency (0.5 is the maximum frequency), and “transition” is the width of filter decay in fraction of the cutoff frequency

  • padding_mode (str, optional) – Padding mode when filtering the sinogram profile. Should be “constant” (i.e “zeros”) for mathematical correctness, but in practice this yields a Gibbs effect when replicating the sinogram, so “edges” is recommended.

  • fft_num_threads (int, optional) – How many threads to use for computing the fast Fourier transform when filtering the sinogram profile. Defaut is all the available threads.

remove_rings_sinogram(sino, output=None)[source]
remove_rings_sinograms(sinograms)[source]