Nestor–Olsen

Introduction

The algorithm for integration of the inverted Abel integral equations described by Nestor and Olsen [1].

How it works

The inverse Abel transform integral

\[f(r) = -\frac{1}{\pi} \int_r^R \frac{Q'(x)\,dx}{(x^2 - r^2)^{1/2}},\]

where \(Q(x)\) is the measured “line probe” (projection) data, and \(f(r)\) is the point function (original distribution), is transformed into

\[f(r[v]) = -\frac{1}{\pi} \int_v^{R^2} \frac{Q'(u)\,du}{(u - v)^{1/2}}\]

by substituting the variables \(v = r^2\), \(u = x^2\). Then, assuming that \(Q(u)\) is linear in \(u\) (that is, in \(x^2\)) within each sampling interval, the corresponding samples of \(f(r)\) can be expressed analytically as

\[f_k \equiv f(r = k\Delta r) = -\frac{2}{\pi\Delta r} \sum_{n=k}^{N-1} A_{k,n}[Q_{n+1} - Q_n],\]

where \(Q_n \equiv Q(x = n \Delta r)\) are the measured data samples, and

\[A_{k,n} = \frac{[(n + 1)^2 - k^2]^{1/2} - [n^2 - k^2]^{1/2}}{2n + 1}.\]

Instead of taking the finite difference of the experimental data, the method actually precomputes the difference coefficients

\[\begin{split}B_{k,n} = \begin{cases} -A_{k,k} & \text{for}\ n = k, \\ A_{k,n-1} - A_{k,n} & \text{for}\ n \geqslant k + 1 \end{cases}\end{split}\]

and uses them to perform the inverse Abel transform as

\[f_k = -\frac{2}{\pi\Delta r} \sum_{n=k}^N B_{k,n} Q_n.\]

PyAbel also allows performing the forward Abel transform by solving the above matrix equation for \(Q_n\), given \(f_k\) as the input data.

When to use it

This method is simple and computationally efficient; it can be thought of as the Dasch “two-point” method in different coordinates. The method incorporates no smoothing.

How to use it

To complete the inverse transform of a full image with the nestorolsen method, simply use the abel.Transform class:

abel.Transform(myImage, method='nestorolsen').transform

If you would like to access the nestorolsen algorithm directly (to transform a right-side half-image), you can use abel.nestorolsen.nestorolsen_transform().

Citation