iBet uBet web content aggregator. Adding the entire web to your favor.
iBet uBet web content aggregator. Adding the entire web to your favor.



Link to original content: http://github.com/ornlneutronimaging/iMars3D/wiki
Home · ornlneutronimaging/iMars3D Wiki · GitHub
Skip to content
Jiao edited this page Oct 28, 2016 · 15 revisions

iMars3D 3D reconstruction software for neutron imaging

Tutorial

https://github.com/ornlneutronimaging/iMars3D/wiki/Use-SNS-jupyter-notebook-site-for-CT-reconstruction

Features

  • automatic discovery of OB/DF/CT data files if their filenames follow certain convention (details below)
  • perform automatic preprocessing such as normalization, cropping, tilt-correction, rotation-center-calculation
  • perform reconstruction using tomopy+mpi
  • most of the preprocessing steps and reconstruction steps are parallelized

Run

  • Connect to cg1d-analysis2 computer:
$ ssh cg1d-analysis2.ornl.gov
  • Setup software environment
$ . ~lj7/.use-imars3d
  • Create a directory for the reconstruction, and cd into it
$ mkdir -p ~/recon/turbine
$ cd ~/recon/turbine
  • Create a recon script:
#!/usr/bin/env python
from imars3d.CT import CT
ct = CT("PATH")
ct.recon()

Remember to replace PATH with the path to the CT data directory (which contains WB/DF/CT data). For example, turbine data is available at ~lj7/imaging/turbine/data. Save the script as "recon.py"

  • Create a "work" directory in the fast disk /SNSlocal2 (for intermediate outputs) and make a symbolic link to it in the reconstruction directory. IMPORTANT: This speeds up the recon considerably.
$ mkdir -p /SNSlocal2/USERNAME/turbine
$ ln -s /SNSlocal2/USERNAME/turbine work
  • Run the recon script
$ python recon.py
  • Inspect the reconstruction results
  • Clean up. If recon is satisfactory, please clean up the work directory to save disk space. !!! Please be very careful with this command and do not mistakenly delete all your files !!!
$ rm -rf work/*

Supported structure of data directory

Flat

* <root>
  - *CT*.fits
  - *DF*.fits
  - *OB*.fits

DF and OB in their own subdirs:

* <root>
  - *CT*.fits
  + DF/df
    - *DF*.fits
  + OB/ob
    - *OB*.fits

CT object

ct = CT(path,
    CT_subdir=None, CT_identifier=None,
    workdir='work', outdir='out', 
    parallel_preprocessing=True, parallel_nodes=None,
    clean_on_the_fly=False, vertical_range=None,
    ob_identifier=None, df_identifier=None
    )
ct.recon(tilt=None, crop_window=None)

Workflow

  • Preprocessing
    • gamma-filtering
    • normalization
    • intensity fluctuation correction
    • cropping
    • smoothing
    • tilt correction
  • Reconstruction
    • build sinograms
    • find rotation center
    • reconstruct