Flat-field normalization of the radios is usually the fist step of the processing chain.
The normalized intensity at index $k$, $I_n (k)$ is given by
$$ I_n (k) = \displaystyle\dfrac { I (k) - D } { F (k) - D } $$where $I (k)$ is the raw projection number $k$, $F (k)$ is the flat corresponding to radio $k$, and $D$ is the detector dark-current.
Usually there is not as many flats as radios, so $F (k)$ is obtained by (linear) interpolation:
F(k1) I(k) F(k2)
------|--------|-------|------ ...
$$
F(k) = \dfrac{k_2 - k}{k_2 - k_1} F_{k_1} + \dfrac{k - k_1}{k_2 - k_1} F_{k_2}
$$
When doing a scan, several series of flats/darks are acquired.
Example sequence:
In the NXTomo convention:
Each series of flats/darks is reduced to obtain one image (per sequence).
In the previous example:
darkend.edf
)refHST0000.edf
)refHST10000.edf
)In the previous acquisition/processing system (octave-fasttomo), the resulting files were called dark0000.edf
, refHST<num>.edf
In nabu/tomwer, the reduced flats/darks are called <dataset_prefix>_darks.h5
and <dataset_prefix>_flats.h5
These final frames are used for flat-field normalization.
Before computing the mean/median of darks/flats, nabu/tomwer will first attempt to load them (to avoid re-computations).
Nabu will
darks_flats_dir
(in [preproc]
of the configuration file), if specified<dataset>_darks.h5
and <dataset>_flats.h5
files if they are alongside the datasetIn the configuration file (section [preproc]
), the paramter flatfield
can have these possible values:
When information on synchrotron current (SRCurrent) is available, it's possible to normalize each with this current:
$$ P' = \dfrac{P - D}{s/s_{Max}} + D $$where $s$ is the synchrotron current for the current frame, $s_{Max}$ is the max current, and $D$ is the dark frame.
In nabu, the current normalization is done during flat-field:
$$ \dfrac{P' - D}{F' - D} = \dfrac{(P - D)/s_P}{(F - D)/s_F} $$The relevant configuration key is normalize_srcurrent = 0
in [preproc]