Filter sinogram before half-tomo stitching
Background
ID16B reported a reconstruction problem where this artefact appear in the center:
Cause
When doing half-tomography, two "half-sinograms" are stitched together. (PyHST2 used a different approach where stitching was not needed).
After this stitching (done by SinoBuilder
), the plain FBP is done, meaning the filtering happens after stitching. In certain cases, discontinuities after stitching are amplified by the filtering.
If filtering is done before stitching, the artefact seems to disappear:
Solution
Do the filtering before stitching. This can be done two ways:
- Have
SinoBuilder
do the filtering in addition to the stitching - In the pipeline, spawn a
SinoFilter
beforeSinoBuilder
and use plain Backprojection (instead of FBP) in all cases
Approach (1) is more convenient for a API usage, but it's not good in terms of "separation of concerns".
Alternative solution
We can also avoid stitching altogether by using approach suggested in [Vo21] (see Figure 3 therein).
This can be implemented using a dedicated backprojector, to avoid duplicating data and loading zeros half of the time. But it won't work for Fourier-based methods (eg. Gridrec).
[Vo21] Nghia T. Vo, Robert C. Atwood, Michael Drakopoulos, and Thomas Connolley, "Data processing methods and data acquisition for samples larger than the field of view in parallel-beam tomography," Opt. Express 29, 17849-17874 (2021) - https://opg.optica.org/oe/fulltext.cfm?uri=oe-29-12-17849&id=451366
Update
This alternative solution still does not avoid the above artefact.
The problem is likely the huge DC offset of the base sinogram. The proposed approach uses zero-padding, resulting in a jump between the (negative)-offseted data and the extended area.