Equal-angle fan-beam CT
Can ODL perform equal-angle fan-beam CT reconstruction, and if so, how should I set up the geometry?/
Hello,
If by "equal-angle" you mean that the detector pixels should be equally spaced, it is straightforward: please check this demo
Your particular scenario seems like it should directly be tackled with CircularDetector (for 2D), or CylindricalDetector (for 3D) instead. Use a suitable partition for the (angular-)uniform sampling as desired, and the translation parameter to place the detector where you want it.
If you need more detailed help, please provide more concrete information about your geometry.
Your particular scenario seems like it should directly be tackled with CircularDetector (for 2D), or CylindricalDetector (for 3D) instead. Use a suitable
partitionfor the (angular-)uniform sampling as desired, and thetranslationparameter to place the detector where you want it.If you need more detailed help, please provide more concrete information about your geometry.
Hi, thank you very much for your reply, I would like to realize the following configuration, where the rays are equally spaced at an angle of roughly 0.077°. And for the reconstruction I want to utilize SART for the reconstruction, do I still need to call astra? Very much looking f
orward to your explanation.
@gggah Now I look into this more closely I find my advice was actually not much use, because Astra doesn't support ODL's curved detectors! So as it stands, you would need to go the general route of interpolating the detector sampling so that an ordinary flat-uniform-detector ray transform can be used, which Astra does support.
I admit that this is not satisfying; it would make a lot of sense for ODL to perform this interpolation automatically when a curved detector is specified but the backend does not support it natively. Perhaps we can implement this before the next release.
Cf. https://github.com/odlgroup/odl/issues/1560 for previous discussion of the matter and a solution outline.
@gggah actually, curved detectors in Astra have been implemented (https://github.com/astra-toolbox/astra-toolbox/pull/444), but they are not merged / in the main release yet.
So in the longer term, the proper solution will be to use the curved detectors in ODL which Astra then implements.
If you need a quicker solution, then it would be resampling and using a flat detector.