The lectures and codes were designed for the RTG Summer School on X-Ray Tomography and Transport Theory, held at University of Washington, Seattle in June-July 2011.
Relevant Material:
  • Summary report of these sessions: here
  • Background lecture notes, by Stephen McDowall: here
  • Matlab source codes: here
Any comments, ideas or suggestions for improving any of these functions, or MatLab tricks that I am not aware of, please share your thoughts !

Session 1: Fast Fourier Transform and applications

Related codes: code1, code2

Session 2: The Radon Transform and the Filtered-Backprojection algorithm

  • Ex 1: code a Radon Transform function using image rotations.
  • Ex 2: code a Filtered-Backprojection algorithm and find out who has been Radon-Transformed in this picture.
  • Incomplete codes to fill out: UWRadon, UWIRadon, Session2.

Session 3: The attenuated Radon Transform and its inversion

  • Ex 1: code a forward AtRT function (hint: use the matlab function cumsum to compute the beam transform of the attenuation).
  • Ex 2: code an inverse AtRT function when the attenuation coefficient is known.
  • Incomplete codes to fill out: UWatRt, UWiAtRt, Session3.

Session 4: Local tomography and limited data problems: recovering singularities

  • Ex 1: code two functions, one that only backprojects the data and another that realizes the lambda tomography. Compare both results with the regular filtered-backprojection algorithm (set $d=1$ in this one and do not worry about filtering in the other two functions).
  • Ex 2: limited angle problem: work with the regular myIRadon function. Use only directions between $0$ and $\frac{\pi}{2}$ and see what singularities are lost on a disk or any other characteristic function.
  • Ex 3: interior data problem: compute the radon transform and take out the part where $|t|\le a$ for some positive number $a$. Apply the inverse RT and figure out what singularities are lost.
  • Transformation laws for singularities: \[ WF(Rf) \subset \{ ( (x\cdot\hat\theta, \theta) ; a(e_s - x\cdot\theta^\perp e_\theta) ), (x; a\hat\theta) \in WF(f) \}, \] \[ WF(R^t g)\subset \{ ( s\hat\theta - r\hat\theta^\perp, a\theta), ( (s,\theta) ; a(e_s + r e_\theta)) \in WF(g) \}. \]

Cartesian and hyperbolic geometries, fun with FIO's

In this session, we will see how the choice of integration curves is the only thing that matters in the transport of singularities (and not the integration weights as long as they are smooth and non-zero), and how to typically compute these singularities.
  • Ex 1: fill out the UWgeodesic and UWhyperS functions. The first one returns a few points describing a given hyperbolic geodesic curve. The second one is necessary for backprojection: for a given point x and a direction theta, it returns the unique s such that the geodesic of coordinates (s,theta) passes through x. Run Hyper1 as main program to test the exactness of your formulas.
  • Ex 2: Use these functions to run the first part of the Hyper2 script and notice the difference between regular and hyperbolic Radon Transform. You will also need the following scripts: hyperRadon, hyperbackproj, laplacian.
  • Ex 3: intertwinning regular and hyperbolic RT and their backprojections. Play with the codes (second part of the Hyper2 script), see how singularities are transformed and notice the artistic potential of microlocal analysis.
  • Ex 4: design another family of curves such that s(x,theta) is properly defined, code "geodesic" and "hyperS" functions accordingly and repeat Exercises 2 and 3 as many times you want.
Additional functions: Solutions to session 2: myRadon, myIRadon, Session2_sol.
Solutions to session 3: atRt, iAtRt, Session3_sol.
Solutions to session 4: myLambdaIRadon, Session4_sol.