sinofilter: Sinogram filtering.

Module for sinogram filtering on CPU/GPU.

class SinoFilter(sino_shape, filter_name=None, ctx=None, devicetype='all', platformid=None, deviceid=None, profile=False, extra_options=None)[source]

Bases: silx.opencl.processing.OpenclProcessing

A class for performing sinogram filtering on GPU using OpenCL. This is a convolution in the Fourier space, along one dimension:

  • In 2D: (n_a, d_x): n_a filterings (1D FFT of size d_x)

  • In 3D: (n_z, n_a, d_x): n_z*n_a filterings (1D FFT of size d_x)

set_filter(h_filt, normalize=True)[source]

Set a filter for sinogram filtering.

Parameters
  • h_filt – Filter. Each line of the sinogram will be filtered with this filter. It has to be the Real-to-Complex Fourier Transform of some real filter, padded to 2*sinogram_width.

  • normalize – Whether to normalize the filter with pi/num_angles.

copy2d(dst, src, transfer_shape, dst_offset=(0, 0), src_offset=(0, 0))[source]
Parameters
  • dst

  • src

  • transfer_shape

  • dst_offset

  • src_offset

copy2d_host(dst, src, transfer_shape, dst_offset=(0, 0), src_offset=(0, 0))[source]
Parameters
  • dst

  • src

  • transfer_shape

  • dst_offset

  • src_offset

filter_sino(sino, output=None)[source]
Parameters
  • sino – sinogram

  • output

Returns

filtered sinogram

fourier_filter(sino, filter_=None, fft_size=None)[source]

Simple np based implementation of fourier space filter. This function is deprecated, please use silx.opencl.sinofilter.SinoFilter.

Parameters
  • sino – of shape shape = (num_projs, num_bins)

  • filter – filter function to apply in fourier space

Fft_size

size on which perform the fft. May be larger than the sino array

Returns

filtered sinogram