/CSET

CSET (Compressed Sensing Electron Tomography)-toolbox is a three-dimensional TV-based compressed sensing reconstruction toolbox that consists of algebraic iterative algorithms (SART and SIRT) with total variation (TV) based CS. In addition, it integrates a Fast Iterative Shrinkage-Thresholding Algorithm (FISTA) that is an acceleration method to speed up the algorithm convergence.

Primary LanguageMATLAB

SIRT-FISTA-TV Reconstruction Algorithm

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:

  1. SIRT update (SART and OS-SART could be used also)
  2. TV minimization (gradient descent is used)
  3. 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.

Installation

  1. 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.
  2. Install CUDA toolkit (version 8.0 works well) Link: https://developer.nvidia.com/cuda-80-ga2-download-archive
  3. 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

Directories

  1. "ASTRA-toolbox": includes ASTRA toolbox
  2. "Spot-toolbox": includes SPOT toolbox
  3. "Data": includes data that we have to reconstruct from
  4. "Reconstruction_results": Reconstruction results are saved here
  5. "TV minimization": includes mex cuda files for TV minimization

Example 1

The code named example1.m shows an example of reconstruction from simulated data. This code includes the following steps:

  1. Load a 3D numerical model "3D_model_with_pores_256_256_512_float.raw" from directory "Data"
  2. Generate 2D projections of this 3D model
  3. Perform 3D reconstruction
  4. Save reconstructed volume in directory "Reconstruction_results"

Example 2

The code named example2.m shows an example of reconstruction from experimental data. This code includes the following steps:

  1. Load 2D experimental projections "PdSiO2_aligned_tilt_series_1024_1024_69_16int" from directory "Data"
  2. Perform 3D reconstruction
  3. Save reconstructed volume in directory "Reconstruction_results"

Numerical Comparison With Noisy Data

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°]).

picture1 picture2 picture3

    Original Image                  SIRT                      SIRT-FISTA-TV 

picture4 picture5 picture6

SIRT + Median filtering    SIRT + Gaussian Filtering   SIRT + Anisotropic Diffusion Filtering 

Experimental Results

picture7

                               ART    

picture8

                          SIRT-FISTA-TV