3.1.6. Combinations of methods

In the previous sections and examples, only a few sinograms with certain types of stripes were used for demonstration. In practice, one needs to process all sinograms of a 3D sample where different types of stripes can appear at different locations or all together in one place. It is impossible for a single method to remove all of them. Each method has its own advantages and disadvantages and only works well with the certain types of stripes. As a result, we have to combine them to remove all types of stripes and reduce extra artifacts the methods may cause. An efficient combination is that unresponsive and fluctuating stripes are removed first, then large stripes are removed, and smaller stripes of the full and partial type are removed last. Removal of large stripes needs to be performed after removing unresponsive and fluctuating stripes as explained in section 3.1.5. Methods of removing smaller stripes need to be employed last because they may enlarge large stripes.
The following implementation of combining the methods is the simplest and most efficient because it uses the least number of parameters. More importantly the same set of parameters can be used for whole dataset.

Code

sarepy.prep.stripe_removal_original.remove_all_stripe(sinogram, snr, la_size, sm_size, drop_ratio=0.1, norm=True, dim=1)[source]

Remove all types of stripe artifacts by combining algorithm 6, 5, 4, and 3 in Ref. [1]. Angular direction is along the axis 0.

Parameters
  • sinogram (array_like) – 2D array. Sinogram image.

  • snr (float) – Ratio used to segment stripes from background noise.

  • la_size (int) – Window size of the median filter to remove large stripes.

  • sm_size (int) – Window size of the median filter to remove small-to-medium stripes.

  • drop_ratio (float, optional) – Ratio of pixels to be dropped, which is used to to reduce the possibility of the false detection of stripes.

  • norm (bool, optional) – Apply normalization if True.

  • dim ({1, 2}, optional) – Dimension of the window.

Returns

ndarray – 2D array. Stripe-removed sinogram.

References

1

https://doi.org/10.1364/OE.26.028396

How to use

– The snr parameter controls the sensitivity of the stripe detection method. Smaller is more sensitive. Recommended values: 1.1 -> 3.0.
– The la_size parameter controls the strength of the median filter used for removing large stripes, unresponsive stripes, and fluctuating stripes. la_size can be determined in a straightforward way by the size and the brightness of detector defects. Larger is stronger but more computationally expensive.
– The sm_size parameter controls the strength of the median filter used for removing small-to-medium partial and full stripes.

Another combination of algorithms which removes stripe artifacts based on interpolation instead of using a smoothing filter is shown in section 4.2.