Simulations

MartaCT.Simulations.generate_photonsMethod

generate_photons(n::Integer, nx::Integer, nϕ::Integer)

Generate $⟨n⟩$ Poisson distributed photons per projection angle over an array of nx detectors.

Return a nd × nϕ matrix with the generated photons. ```

source
MartaCT.Simulations.sample_sinogram_externalMethod
sample_sinogram_external(sinog::AbstractMatrix; <keyword arguments>)

Simulate a low dose CT scan. This Resample sinog with n photons.

Arguments

  • sinog: sinogram data.
  • sinog_path='_tmp_sinog.dat': path to a file where to write the sinogram to.
  • resampled_path='_tmp_resampled.dat': path to a file where to read the resampled sinogram from.
  • n=10000: mean number of photons.
  • ϵ=1: detectors quantum efficiency.
  • take_log=true: whether to take the logarithm of the resampled intensities to obtain the corresponding sinogram.
  • verbosity=0: set verbosity level.
  • progress=false: show progress bar.
  • options=[]: Additional options to be passed to the program.
source
MartaCT.Simulations.simulateMethod
simulate(sim::CTSimulation, sinog::AbstractMatrix; <keyword arguments>)

Simulate a CT scan by generating sim.nphotons Poisson-distributed photons for each angle, which are then detected with a probability given by $p_{ϕ_j}(x_i) = exp(-s_{i,j})$, where $s_{i,j}$ is sinog[i,j].

The keyword arguments are the same as those for simulate_ct.

See also: simulate_ct

source
MartaCT.Simulations.simulate_ctMethod

simulate_ct(sinog::AbstractMatrix; <keyword arguments>) where {T}

Simulate a low dose CT scan. This samples sinog with $⟨n⟩$ random photons per projection angle.

Arguments

  • sinog: sinogram data.
  • nphotons::Integer=10000: mean number of photons.
  • ϵ::Real=1: detectors quantum efficiency.
  • take_log::Bool=false: whether to take the logarithm of the resampled intensities to obtain the corresponding sinogram.
source
StatsBase.sampleMethod
StatsBase.sample(data::AbstractMatrix, xs::AbstractVector[; nsamples=1000, nblks=1, nbins=nothing])

Compute nsamples from xs according to the distribution given by each column of data. Optionally, if nblks > 1, nblks × nsamples samples are computed. The sampled data are collected into a histogram of length nbins for each column in data. The resulting data have size (nbins, size(data, 2), nblks).

source