Reconstruction library, reconstructor
wFBP Reconstruction Module, FreeCT
Module Description
This module houses a library of functions that assist in executing 3D image
reconstruction for Spiral Cone Beam CT scanners. The library of functions is
essentially a Python wrapper for the FreeCT_wFBP CUDA library for 3D CT
reconstruction [1].
FreeCT_wFBP is an open-source CUDA-based implementation of the weight filtered
back-projection (wFBP) algorithm by Stierstofer et al. [2], which performs 3D
reconstruction of X-ray images from CT projection data obtained from Spiral
Cone Beam CT scanners with curved rectangular detector panels and a helical
motion path for data acquisition. The CUDA implementation allows strong
parallelization of the reconstruction operation allowinf fast reconstruction of
large image volumes.
This module provide support for using the FreeCT library in Python with
functions allow feeding input projection data in the form of numpy ndarrays,
tuning FreeCT scanner configurations and reconstruction parameters and reading
FreeCT output data as Python numpy ndarrays.
[1]. J . Hoffman, S. Young, F. Noo, M. McNitt-Gray, “Technical Note: FreeCT_wFBP:
A robust, efficient, open-source implementation of weighted filtered backprojection
for helical, fan-beam CT,” Med. Phys., vol. 43, no. 3, pp. 1411-1420, Feb. 2016.
[2]. K. Stierstorfer, A. Rauscher, J. Boese, H. Bruder, S. Schaller, and T. Flohr,
“Weighted FBP—a simple approximate 3D FBP algorithm for multislice spiral CT with
good dose usage for arbitrary pitch,” Phys. Med. Biol., vol. 49, no. 11, pp.
2209–2218, Jun.2004.
Functions
|
|
fct_read_img_file() |
read binary image input file from FreeCT library |
fct_read_prj_file() |
read binary projection input file from FreeCT library |
fct_write_prm_file() |
write scanner parameters to .prm file in FreeCT |
fct_write_prj_file() |
save numpy array projection data as a .bin file |
fct_run() |
run FreeCT script on a projection data file to get reconstructed image output |
Function Description
- fct_read_img_file(fname, w, h)
|
|
Desc. |
Read binary image input file from FreeCT library. |
Args. |
fname: file, str binary image file name |
|
w: int image width |
|
h: int image height |
Return |
binary byte data as numpy 2D ndarrary |
- fct_read_prj_file(fname, nchnls, nrows, nviews)
|
|
Desc. |
Read binary projection input file from FreeCT library. |
Args. |
fname: file, str binary projection input file |
|
nchnls: int number of channels |
|
nrows: int number of rows |
|
nviews: int number of views |
Return |
binary byte data as numpy 3D ndarrary |
- fct_write_prm_file(fname, param_dict)
|
|
Desc. |
Write scanner parameters to .prm file in FreeCT. For information regarding the fields in the .prm file, check out FreeCT documentation at cvib.ucla.edu/freect/documentation.html |
Args. |
fname: file, str .prm file path |
|
param_dict: dict dictionary of fields in the .prm file |
Return |
- |
- fct_write_prj_file(fname, proj)
|
|
Desc. |
Write out ndarray of projection data to the format fct understands. This does not take negative log nor separates the alternating channels, nor reverse the order of views. |
Args. |
fname: file, str projection file path |
|
proj: 3D ndarray of numpy.float32 (nchnls, nrows, nviews) |
Return |
- |
- fct_run(prm_fname, flags=’-v --device=0’)
|
|
Desc. |
Run FreeCT script on a projection data file to get reconstructed image output. |
Args. |
prm_fname: str .prm file path for FreeCT |
|
flags: str argument flags for executing FreeCT script, for details, see FreeCT documentation, cvib.ucla.edu/freect/documentation.html |
Return |
- |