Add mlem
About
Add an MLEM reconstructor as part of the fullfield pipeline.
To do
-
nabu.reconstruction.MLEMReconstructor
-
Unit tests -
Unit test with random shifts -
Integrate in pipeline -
Update changelog/documentation -
End-to-end reconstruction test
Notes
The "u-shifts" (horizontal) are correctly handled by the Astra projectors.
The "v-shifts" (vertical) correction shows some inaccuracy that was extensively investigated by Jérôme. It turns out that this is an internal limitation of astra:
Hi! This is most likely because of the low precision (8-bit) of texture interpolation in CUDA, which gets amplified during iterations of MLEM. If you really need to fix this, you can shift the projection data instead of shifting Astra geometry, which should be equivalent for parallel geometries.
So in the end, the most accurate way to deal with this is to perform the vertical correction beforehand, on the radios - this is exactly what nabu does in the full-field pipeline.