HIGH PERFORMANCE MODEL BASED IMAGE RECONSTRUCTION (MBIR)
FOR PARALLEL-BEAM COMPUTED TOMOGRAPHY WITH ADVANCED PRIOR MODELS
Optimized for Intel multi-core processors
Demo scripts and data files for running this program are available under this repository.
Further references on MBIR and the technology in the high-performance implementation of this
code can be found at the bottom of this page, in the documentation accompanying the OpenMBIR
project and on Charles Bouman's website:
https://github.com/cabouman/OpenMBIR
http://engineering.purdue.edu/~bouman/publications/pub_tomography.html
http://engineering.purdue.edu/~bouman/publications/pub_security.html
http://engineering.purdue.edu/~bouman/publications/pdf/MBIP-book.pdf
- Intel-based CPU(s)
- Intel "icc" compiler (included in "Parallel Studio XE", available from Intel for Linux, macOS)
For using advanced prior models (BM3D and Deep Resnet CNN) the following Python version and libararies are required:
- Python 3.5 (recommended) or greater
- numpy
- scipy
- matplotlib
- pillow
- pywavelets
- tensorflow-gpu or tensorflow
From a terminal prompt, enter the src folder and type make. If compiling is successful the binary mbir_ct will be created and moved into the bin folder.
cd src
make
Note: In case of compilation issues when using Parallel Studio XE, refer to https://github.com/HPImaging/sv-mbirct
For local computer: After compilation, from the terminal prompt enter the run folder and type ./runDemo.sh
cd ../run
./runDemo.sh
For submitting job on the Purdue cluster: After compilation, from the terminal prompt enter the run folder and submit the job via a submission script.
cd ../run
sbatch jobrun.sub
The next section explains the parameter and data files required for running the MBIR algorithm. The demo-script thoroughly explains how the various files must be specified via command line. To print the usage statement for the command line, from the bin directory type:
./mbir_ct -help
The following 4 parameter files are required, all in simple text:
<basename>.sinoparams
<basename>.imgparams
<basename>.reconparams
<basename>.priorparams
<view_angles_file.txt>
While it is recommended to use the same basename for all parameter files, note that these input filenames are independent as they're specified in different arguments in the command line.
However, the [.reconparams] and [.priorparams] files must share the same basename. The [.reconparams] specifies high level parameters pertaining to the iterative MBIR algorithim, including the choice of prior model. The [.priorparams] file specifies parameters for the prior-model selected in the [.reconparams] file.
For the files containing sinogram or image data, the associated 3D data is split across files, one file per slice. The naming convention for the different files is as follows:
<basename>_sliceNNN.2Dimgdata
<basename>_sliceNNN.2Dsinodata
<basename>_sliceNNN.2Dweightdata
<basename>_sliceNNN.2Dprojection
where "NNN" is a slice index. The slice indices must be a non-negative integer sequence, where the indices include leading zeros and no spaces (e.g. 0000 to 0513). The number of digits used for the slice indices is flexible (up to 4) but must be consistent across all the files used in a given reconstruction call.
Note that the accompanying demo scripts include a utility that detects whether the necessary sytem matrix file has already been computed and is available, given the input image/sino parameters, and the script automatically reads the file if available, or computes/stores it if not.
If the choice of prior-model for MBIR in the [.reconparams] is "CNN", then the CNN model parameters are required. For the accompanying demo, we pre-trained the CNN for different noise levels. The CNN parameters are stored as TensorFlow checkpoint files under the directory
./data/TF_checkpoint/sigma_<noiselevel>
where is a positive integer between 1-255 specified by the <sigma_n> parameter in the [.priorparams]. Within this folder there are 3 files that store the architecture and parameters of the CNN model:
<Checkpoint_basename>-<EpochNum>.index
<Checkpoint_basename>-<EpochNum>.meta
<Checkpoint_basename>-<EpochNum>.data
By default, the model pertaining to the latest training epoch is loaded. However, if neeeded, there is also a simple way to load the model pertaining to a specific epoch (see command line usage in accompanying demo script).
By default, GPU acceleration is enabled for the CNN TensorFlow routines. However, using only CPU processing is allowed, though it is much slower (see command line usage in accompanying demo script).