3.1.5. Method for removing unresponsive and fluctuating stripes¶
Unresponsive and fluctuating stripes give rise to both ring artifacts and streak artifacts in the reconstructed image (Fig. 1). Unfortunately, they cannot be removed using the smoothing-based approaches as in the previous methods because intensity profiles are significantly different between pixels inside stripes and outside stripes. A simple way of removing them is to use an interpolation technique after locating them. The intensity profiles of those stripes show opposite characteristics. The unresponsive stripe shows very little variation while the fluctuating stripe shows excessive variation. Exploiting these features can help us detect them all together.
Code
- sarepy.prep.stripe_removal_original.remove_unresponsive_and_fluctuating_stripe(sinogram, snr, size, residual=False)[source]¶
Remove unresponsive or fluctuating stripes, algorithm 6 in Ref. [1], by: locating stripes, correcting using interpolation. 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.
size (int) – Window size of the median filter.
residual (bool, optional) – Removing residual stripes if True.
- Returns
ndarray – 2D array. Stripe-removed sinogram.
References
How it works
1. Locating stripe artifacts
– Apply the strong mean filter along each column of the sinogram (Fig. 2(a)). Take absolute values of the difference between the result and the original sinogram (Fig. 1(a)) resulting in Fig. 2(b).
—Average along each column of Fig. 2(b) resulting a 1D array (Fig. 3(a)). Apply the strong median filter to this array resulting in Fig. 3(b).
—Divide the result shown in Fig. 3(a) to the result shown in Fig. 3(b) resulting in the normalized 1D array (Fig. 4(a)). Use the SFTS algorithm to get stripe locations (Fig. 4(b)).
2. Correcting by interpolation
– Interpolate values inside the stripes from neighboring pixels.
3. Removing residual stripes (Optional)
– Apply the algorithm of removing large stripes to remove residual stripes. This step may be needed because intensities around dead pixels are modulated by the scattered light resulting large stripes.
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 size parameter controls the strength of the median filter and can be determined in a straightforward way by the size of dead pixels.