deteCT.py π§ΒΆ
Source: LION/data_loaders/deteCT.py
Warning
This file has not yet received a complete narrative and docstring audit. Its public source-level API is listed automatically below.
- class deteCT(mode, geometry_params: ct.Geometry = None, parameters: LIONParameter = None)
No docstring is available.
- deteCT.default_parameters()
No docstring is available.
- deteCT.get_default_geometry()
No docstring is available.
- deteCT.get_default_operator()
No docstring is available.
- deteCT.get_operator(self)
No docstring is available.
- deteCT.set_sinogram_transform(self, sinogram_transform)
No docstring is available.
- deteCT.compute_sample_dataframe(self)
No docstring is available.
- deteCT.add_sinogram_noise(self, sinogram, I0, cross_talk=0.05)
Add noise to a measured sinogram. The reason this data loader has a bestpoke function for this is that the noise is that the noise simulator in LION.ct_tools.ct_utils assumes noiseles sinograms in X-ray absobtion. However, adding noise to a real measured sinogram is not the same as adding noise to a noiseless sinogram.
The assumption here is that the input sinogram is measured, and contains enough photon counts as to ignore the poisson noise. However, effects due to the detector, electronics, etc. are still present. In particular, it assumes that there is electronic noise, modelled by a signal-independent Gaussian noise, and that it has detector cross-talk, modelled by a convolution.
Under those assumptions, we can say thus that the noisy sinogram is: $$ sino_{noisy} = sino_{measured} + corss_talk(P_{I0}), $$ where $P_{I0}$ is the noise conponent of adding Poisson noise at $I0$ counts to the input sinogram (input is assumed at $I0=inf$). This is not exactly correct, but approximately so. See Kiss et al. 2024 for more details
Input: sinogram: torch.Tensor, the sinogram to add noise to. It has to be flat field corrected, and in absobrtion units (i.e. log transformed) I0: float, the number of counts in the measurement (lower=more noise)