Two Point (Dasch)


The “Dasch two-point” deconvolution algorithm is one of several described in the Dasch paper [1]. See also the “three-point” and “onion peeling” descriptions.

How it works

The Abel integral is broken into intervals between the \(r_j\) points, and \(P^\prime(r)\) is assumed constant between \(r_j\) and \(r_{j+1}\).

When to use it

This method is simple and computationally very efficient. The method incorporates no smoothing.

How to use it

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

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

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


# -*- coding: utf-8 -*-
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals


import numpy as np
import abel
import matplotlib.pyplot as plt

# Dribinski sample image size 501x501
n = 501
IM =

# split into quadrants
origQ =

# speed distribution of original image
orig_speed =[0], origin=(-1, 0))
scale_factor = orig_speed[1].max()

plt.plot(orig_speed[0], orig_speed[1]/scale_factor, linestyle='dashed',
         label="Dribinski sample")

# forward Abel projection
fIM = abel.Transform(IM, direction="forward", method="hansenlaw").transform

# split projected image into quadrants
Q =

dasch_transform = {
    "two_point": abel.dasch.two_point_transform,
    "three_point": abel.dasch.three_point_transform,
    "onion_peeling": abel.dasch.onion_peeling_transform

for method in dasch_transform.keys():
    Q0 = Q[0].copy()
# method inverse Abel transform
    AQ0 = dasch_transform[method](Q0)
# speed distribution
    speed =, origin=(-1, 0))

    plt.plot(speed[0], speed[1]*orig_speed[1][14]/speed[1][14]/scale_factor,

plt.title("Dasch methods for Dribinski sample image $n={:d}$".format(n))
plt.xlim((0, 250))
plt.legend(loc='upper center', bbox_to_anchor=(0.35, 1), frameon=False)
# plt.savefig("plot_example_dasch_methods.png",dpi=100)

For more information on the PyAbel implementation of the two_point algorithm, please see PR #155.