UFO is a small run-time core written in C with bindings to Python as well as a comprehensive plugin suite for general image processing as well as for tomographic reconstruction. It utilizes one or more GPUs to improve the reconstruction throughput.

Installation

Installation procedures for Linux and MacOS are documented in the online manual.

Usage

Without writing any code, pipelines can be constructed and executed from the command line using the ufo-launch(1) tool. For example, to store all TIFF files from a directory in an HDF5 file, you can run

ufo-launch read path="directory/*.tif" ! write filename=output.hdf5:/path/in/file

A basic reconstruction pipeline using the filtered backprojection algorithm using pre-generated sinograms could look like this

ufo-launch read path=sinograms/ ! fft ! filter ! ifft ! backproject ! write filename=slices/slice-%05i.tif

Benchmarks

All results were obtained by reconstructing 2048 slices from 2048 sinograms each with a width of 2048 pixels and 2048 projection angles. No actual data was read or written, just the sinograms filtered and then backprojected.

Configuration Mean time (s) Rate (slices/s)
4× NVIDIA GTX 1080 TI 28.72 71.3
7× NVIDIA GTX TITAN 54.66 37.5
2× NVIDIA Quadro M6000 61.59 33.3
1× NVIDIA P100 67.38 30.4
4× NVIDIA GTX TITAN 101.02 20.3
2× NVIDIA Tesla K20Xm 132.52 15.5
1× AMD FirePro W9100 159.51 12.8
1× NVIDIA GTX TITAN Black 197.54 10.4