-
Notifications
You must be signed in to change notification settings - Fork 59
Open
Description
Description
Implement a voxel-driven FDK (Feldkamp-Davis-Kress) back-projector within CIL to improve integration and reduce peak memory usage. Current implementations via ASTRA and TIGRE require both input and output to reside entirely in RAM, along with additional overhead from data copies.
FDK only requires a single pass over the input data, making it well-suited for chunked IO and streaming.
Goals
- Enable disk-based input/output to reduce memory footprint.
- Enable RAM-based input/output to match current pipelines and simplify testing
- Combined read/process/write speed should be comparable to current solutions
- Integrate with CIL’s recon.fdk module
Pipelines
Pipeline 1 – RAM to Disk
Avoids keeping the full volume in RAM. Most of the write overhead is hidden.
- Set up
DataReader - Read full dataset as
AcquisitionData- Convert data to absorption
- Estimate centre of rotation
- Create
recon.FDKinstance usingAcquisitionData - Run
FDK, specifying output path- Writes reconstructed volume as a stack of 32-bit binary slices
Pipeline 2 – Disk to Disk
Avoids keeping both full input and output in RAM. IO overhead is effectively hidden.
- Create
AcquisitionGeometrydescribing the dataset - Create
recon.FDKinstance usingAcquisitionGeometryand input file path- Reads a 32-bit binary file containing absorption data as a stack of projections
- Run FDK, specifying output path
- Writes reconstructed volume as a stack of 32-bit binary slices
Notes
- Initial implementation will be CUDA-based
- Initially single GPU
- Support for:
- RAM input/output as
AcquisitionDataandImageData - File input/output (initially as binary files containing floating point data)
- RAM input/output as
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
In Progress