14
$\begingroup$

The Radon transform maps a function $f$ on points in $\mathbb R^2$ to a function $Rf$ on lines in $\mathbb R^2$, given by $$Rf(\xi) = \int_{\mathbf x\in\xi} f(\mathbf x)\,\|\mathrm d\mathbf x\|.$$ Mathematica can compute the Radon transform via the function Radon, and its inverse via InverseRadon.

The dual Radon transform maps a function $g$ on lines in $\mathbb R^2$ to a function $R^*g$ on points in $\mathbb R^2$, given by $$R^*g(\mathbf x) = \int_{\xi\ni\mathbf x} g(\xi)\,\mathrm d\mu(\xi),$$ where $\mathrm d\mu$ is the unique rotationally invariant probability measure on the set of lines through $\mathbf x$.

How can the dual Radon transform and its inverse be computed in Mathematica?

$\endgroup$
15
$\begingroup$

The dual Radon transform can be computed using InverseRadon[#, Method -> None].

The inverse of the dual Radon transform is just the Radon transform filtered by the pseudodifferential operator $(-L)^{1/2}$, where $L$ is the "radial" second derivative. In the discrete Fourier domain, this amounts to multiplying by Min[#, 1 - #] & where # is the vertical coordinate.

However, since this is usually too dark to see, I will choose a different scaling and compensate for it in dualRadon.

dualRadon[g_, dim_] := Module[{w, h},
  {w, h} = ImageDimensions[g];
  InverseRadon[ImageMultiply[g, 1/h], dim, Method -> None]]

inverseDualRadon[f_] := 
 Module[{r, w, h, lhalf}, 
  r = Radon[f]; 
  {w, h} = ImageDimensions[r]; 
  lhalf = Table[Min[i, h - i], {i, 0, h - 1}, {j, 0, w - 1}]; 
  Image@Chop@InverseFourier[lhalf Fourier@ImageData@r]]

For example:

image = Import["http://i.stack.imgur.com/68Zv0.jpg"]

enter image description here

idr = inverseDualRadon[image]

enter image description here

(There are also some negative values in that image which you can't see.)

recovery = dualRadon[idr, ImageDimensions[image]]

enter image description here

It's off by some scalar multiplier, but then so is InverseRadon @* Radon, so I'm not going to worry about it.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.