RadonKA.jl

A simple yet sufficiently fast Radon and adjoint Radon (backproject) transform implementation using KernelAbstractions.jl.

Build Status Coverage Documentation for stable version Documentation for development version

Quick Overview

  • [x] For 2D and 3D arrays
  • [x] parallel radon and backproject (?RadonParallelCircle)
  • [x] attenuated radon and backproject (see the parameter μ)
  • [x] arbitrary 2D geometries where starting and endpoint of each ray can be specified (fan beam could be a special case if this) (?RadonFlexibleCircle)
  • [x] It is restricted to the incircle of radius N ÷ 2 - 1 if the array has size (N, N, N_z)
  • [x] based on KernelAbstractions.jl
  • [x] tested on CPU() and CUDABackend
  • [x] registered adjoint rules for both radon and backproject
  • [x] high performance however not ultra high performance
  • [x] simple API

Installation

Requires Julia 1.9

julia> ]add RadonKA

Simple use

using RadonKA, ImageShow, ImageIO, TestImages

img = Float32.(testimage("resolution_test_512"))

angles = range(0f0, 2f0π, 500)[begin:end-1]

# 0.196049 seconds (145 allocations: 1009.938 KiB)
@time sinogram = radon(img, angles);

# 0.268649 seconds (147 allocations: 1.015 MiB)
@time backproject = RadonKA.backproject(sinogram, angles);

simshow(sinogram)
simshow(backproject)

Examples

See either the documentation. Otherwise, this example shows the main features, including CUDA support. There is one tutorial about Gradient Descent optimization. Another one covers how the Radon transform is used in Volumetric Additive Manufacturing.

Development

File an issue on GitHub if you encounter any problems.

Citation

This package was created as part of scientific work. Please consider citing it :)

@misc{wechsler2024wave,
      title={Wave optical model for tomographic volumetric additive manufacturing}, 
      author={Felix Wechsler and Carlo Gigli and Jorge Madrid-Wolff and Christophe Moser},
      year={2024},
      eprint={2402.06283},
      archivePrefix={arXiv},
      primaryClass={physics.optics}
}