odl icon indicating copy to clipboard operation
odl copied to clipboard

Equal-angle fan-beam CT

Open gggah opened this issue 10 months ago • 5 comments

Can ODL perform equal-angle fan-beam CT reconstruction, and if so, how should I set up the geometry?/

gggah avatar Feb 13 '25 15:02 gggah

Hello,

If by "equal-angle" you mean that the detector pixels should be equally spaced, it is straightforward: please check this demo

Emvlt avatar Feb 14 '25 09:02 Emvlt

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.

leftaroundabout avatar Feb 14 '25 11:02 leftaroundabout

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.

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

Image

orward to your explanation.

gggah avatar Feb 14 '25 19:02 gggah

@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.

leftaroundabout avatar Feb 20 '25 15:02 leftaroundabout

@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.

leftaroundabout avatar Feb 24 '25 11:02 leftaroundabout