Open adriaangraas opened 5 years ago
For a 'wobbly rotation axis', your geometry is not perfectly circular. Luickly, you can use ParallelVec
or ConeVec
geometries to fix this. In these Vec
geometries, you explicitly give the source/detector parameters for each projection independently.
This puts the alignment responsibility at the adapter. For now, I think this is where it should be done instead of in SliceRecon. Concretely (for PB):
center
parameter in addition to the standard constructor arguments for a ParallelBeamGeometry
, and generates this list of vectors according to the specification in the ASTRA documentation under parallel3d_vec.ParallelVecGeometryPacket
with this list of vectors, instead of a ParallelBeamGeometryPacket
.For now that fixes the problem, as I have a dataset where I can provide such a vector-geometry ahead of the projections. In real-time scanning we don't have this information.
Now that I think of it, do you think it is necessary to send all angles, and geometry information, ahead of time? If we would send most information (such as angle, positions, center translation) per projection packet, we might also be able to prepare for eventual hiccups in irregular angles, skipped projections etc. that might occur in practical situations.
Hi,
The projection dataset I'm using has a center of rotation that alters slightly with every second projection image. I can preprocess the data by shifting the data a bit, but then I'll have to cut off the sides of the projection images.
TomoPy deals with the problem by allowing some
center
kwargs in the reconstruction algorithm.What do you think about this? I'll leave this issue open as its not an urgent one, but might implement it in some future.
Greets, Adriaan