Feldkamp back-projection phase. CPU and GPU implementation.
Reconstructing large volumes

CPU and GPU Implementation


In the case of performing back-projecting calculations on CPU Cobra can automatically utilize up to 16 cores.


GPU (graphics process unit) implementation supports graphics cards nVIDIA Geforce of 8000, 9000, 200, and 400 series.  In most cases running a reconstruction with GPU support takes 2-4 times less than running the same task on CPU. A particular speed-up factor depends on corrections applied.  If there are no iterative corrections involved (like metal artifact reduction) a typical GPU speed-up is factor 3-4. Utilized technologies are nVIDIA CUDA and Microsoft DirectX

Reconstructing jumbo volumes


During back-projecting Cobra is using 4-byte accumulation buffer so there are limits on the buffer size that might be allocated in RAM. These limits correspond approximately 700x700x700 cube for CPU and 600x600x600 (Geforce 400 series) or smaller for GPU. However in many cases a desired volume may be larger and much larger. In Cobra this problem is resolved by arranging (as called) multi-pass process when a jumbo cube are automatically divided into horizontal slabs.


A size of back-projecting buffer is defined automatically or can be set up explicitly by a user.

Draft and fine reconstruction


CPU reconstruction implements “voxel driven” approach and can be performed in two modes: draft and fine.  Technically draft mode implements nearest neighbor mapping technique; fine mode uses a bilinear interpolation. As a consequence a draft mode is faster (approximately by factor 1.5) but images may look a little bit noisier. When a detector resolution is substantially higher than a cube resolution, a difference of draft vs. fine may not be distinguished or minor (or non-relevant).


Draft/fine modes are not relevant to GPU reconstruction, where a fine mode is always being applied.

Arranging saving slices as a background process


If requested Cobra supports saving slices to the disk as a background process. It is relevant for jumbo cubes being reconstructed in multiple passes (slabs) and cluster solutions when transferring slices through network may take long. When background slice saving is active then the reconstruction of the slab N+1 is being performed simultaneously with saving slices of the slab N. Obviously it requires an additional memory allocated and back-projecting buffer set manually.

 
top_bord

Description of the reconstruction task

Within the COBRA reconstruction package, all input, output and intermediate data are kept on the hard disk. The user defines and controls the reconstruction task through a parameter file, a text file with extension .xxm. This file contains tags and assigned values, and describes the scanner hardware setup, input and output data characteristics and representation, and the chosen reconstruction method. Some of the reconstruction options are only accessible through SDK API’s. These are related to synchronization and control of in-line reconstruction (recon concurrent with acquisition), and the setup of COBRA’s working folders.
block_bord_bot
bord_bot top_bord

Tags defining Feldkamp back-projection phase

BPMODETAG_LINITRP

BPMODETAG_LINITRP

Presence of this keyword in parameter file defines a fine reconstruction mode. Applicable for CPU-reconstruction only.
Value type: not applicable
Default value: both BPMODETAG_LINITRP and BPMODETAG_NRSTNBR are missing a draft reconstruction mode is being applied
BPMODETAG_NRSTNBR

BPMODETAG_NRSTNBR

Presence of this keyword in parameter file defines a draft reconstruction mode. Applicable for CPU-reconstruction only.
Value type: not applicable
Default value: when both BPMODETAG_LINITRP and BPMODETAG_NRSTNBR are missing a draft reconstruction mode is being applied
PARTAG_DUMPVOLBG

PARTAG_DUMPVOLBG

Applicable if reconstruction engine is working in multi-pass (multi-slab) mode (the reconstructed volume is too big to fit RAM). When set to 1 then the slices from a slab N-1 are being saved in parallel with reconstructing a slab N. Basically useful for cluster solutions.
Value type: integer (0 or 1)
Default value: 0
BPMODETAG_USE_GPU

BPMODETAG_USE_GPU

Defines : using graphics accelerating unit (GPU) for performing the back-projecting phase of Felkamp algorithm
Value type: integer (0-1)
Default value: 0
OPTTAG_3DBUFFERSIZE

OPTTAG_3DBUFFERSIZE

Defines : 3D buffer size (in MB) for performing the back-projecting phase of Felkamp algorithm
Value type: integer
Default value: auto (depends on available RAM)
OPTTAG_ENGINEQTY

OPTTAG_ENGINEQTY

Reserved. Currently used as COBRA internal non-documented tag
Value type: integer (1 or 2)
Default value: 1
block_bord_bot
bord_bot
cobra_link