SIRT-FISTA-TV is a regularized iterative reconstruction algorithm that is very robust to noisy and blurred data and can highly reduce missing wedge artifacts. It consists of three steps:
- SIRT update (SART and OS-SART could be used also)
- TV minimization (gradient descent is used)
- FISTA technique to speed up convergence speed
The algorithm is accelerated on GPU using CUDA mex functions.
It depends on two toolboxes: ASTRA and Spot.
- The projection and backprojections functions of ASTRA are used.
- The Spot toolbox is used to provide a MATLAB framework that wraps linear operations into MATLAB objects that act like matrices.
We provide two examples to test the algorithm: example1.m and example2.m that should run easily after installation is performed correctly.
- Select "ASTRA-toolbox", "Spot-toolbox", "TV minimization" and "Data" in MATLAB file browser -----> right click -----> Add to Path -----> Selected Folders and Subfolders. Note that you can type command "filebrowser" to open MATLAB file browser if it's not the case.
- Install CUDA toolkit (version 8.0 works well) Link: https://developer.nvidia.com/cuda-80-ga2-download-archive
- Install a C++ compiler (it's recommended to install Visual studio 2013 Community) Link: https://my.visualstudio.com/Downloads?q=visual%20studio%202013&wt.mc_id=o~msft~vscom~older-downloads
- "ASTRA-toolbox": includes ASTRA toolbox
- "Spot-toolbox": includes SPOT toolbox
- "Data": includes data that we have to reconstruct from
- "Reconstruction_results": Reconstruction results are saved here
- "TV minimization": includes mex cuda files for TV minimization
The code named example1.m shows an example of reconstruction from simulated data. This code includes the following steps:
- Load a 3D numerical model "3D_model_with_pores_256_256_512_float.raw" from directory "Data"
- Generate 2D projections of this 3D model
- Perform 3D reconstruction
- Save reconstructed volume in directory "Reconstruction_results"
The code named example2.m shows an example of reconstruction from experimental data. This code includes the following steps:
- Load 2D experimental projections "PdSiO2_aligned_tilt_series_1024_1024_69_16int" from directory "Data"
- Perform 3D reconstruction
- Save reconstructed volume in directory "Reconstruction_results"
We addded a Gaussian noise of zero mean and sigma = 2% of maximum value in noiseless projections. We show below a horizontal slice of each reconstructed volume (tilting angle range is [-70°,70°]).