3D geometry

This page explains the 3D X-ray transform geometry for the Julia package ImagePhantoms.

This page comes from a single Julia file: 30-3d.jl.

You can access the source code for such Julia documentation using the 'Edit on GitHub' link in the top right. You can view the corresponding notebook in nbviewer here: 30-3d.ipynb, or open it in binder here: 30-3d.ipynb.

Setup

Packages needed here.

Overview

Most practical tomographic imaging problems are 3D, so this package also supports calculating 3D line integrals through 3D phantom objects.

3D projection geometry

Given a 3D phantom object, the function radon returns a 4-argument function having arguments $(u,v,ϕ,θ)$, where $u,v$ denote the coordinates on a 2D projection plane, $ϕ$ denotes the azimuthal angle angle and $θ$ denotes the polar angle.

The mathematical definition of the Radon transform of a 3D function is a collection of (2D) plane integrals, whereas the X-ray transform is a collection of (1D) line integrals. See Section II.1, Natterer 2001. So strictly speaking the radon function is a misnomer in 3D, whereas for 2D functions the Radon transform and the X-ray transform coincide.

The coordinate system used here is defined as follows. Start by defining a point on the "detector plane" as follows:

\[\vec{p} = \vec{p}(u, v, ϕ, θ) = u \vec{e}_1 + v \vec{e}_3 = (u \cos ϕ + v \sin ϕ \sin θ, u \sin ϕ - v \cos ϕ \sin θ, v \cos θ) ∈ ℝ^3,\]

where

\[\vec{e}_1 = (\cos ϕ, \sin ϕ, 0) ,\qquad \vec{e}_3 = (\sin ϕ \sin θ, -\cos ϕ \sin θ, \cos θ).\]

Now define the (X-ray) projection of a 3D object $f(\vec{x})$ as

\[p(u, v, ϕ, θ) = ∫ f(\vec{p} + ℓ \, \vec{e}) \, \mathrm{d} ℓ = ∫_{-∞}^{∞} f( \vec{p}(u,v,ϕ,θ) + ℓ \, \vec{e}(ϕ,θ) ) \, \mathrm{d} ℓ,\]

where

\[\vec{e}(ϕ,θ) = (-\sin ϕ \cos θ, \cos ϕ \cos θ, \sin θ).\]

When $θ=0$, then the X-ray transform $p(u, v, ϕ, θ)$ is a collection of 2D sinograms, one for each slice of $f(x,y,z)$:

\[p(u, v, ϕ, 0) = ∫_{-∞}^{∞} f(u \cos ϕ - ℓ \sin ϕ, u \sin ϕ + ℓ \cos ϕ, v) \, \mathrm{d} ℓ.\]

For example projection views, see the Ellipsoid examples.


This page was generated using Literate.jl.