Radon Transform and Tomography

The Radon transform is widely being used in a whole lot of image processing applications. Its use at detecting lines in noisy images is extremely powerful. So what exactly is this Radon Transform?

Take an image, and take its horizontal projection (sum along each row at 0 degrees). Now, rotate the image and take another projection, and so on, take projections for various angles. What one obtains is a matrix – projection columns vs varying angles.

In Matlab, this can be done using [RadonImage, k]=radon(input_image,theta) where theta are the angles over which the projection is taken and k the line number (perpendicular distance from center of image of each line) It can be visualised nicely by imagesc(theta,k,RadonImage).

Now, Tomography is an imaging method by sectioning. CTScans (computed tomography scan), MRIs, and many other medical, oceanographic, geophysical, etc. imaging carried out in this way. For now, we shall restrict ourselves to a 2d image, and its single dimensional projections. Once these projections are obtained, a backprojection can be carried out to regenerate the 2d image. The algorithm used here, is of main concern, as we want our algorithm to be efficient both in time and complexity and require lesser number of projections for reconstruction.

One of these is the Filtered Back-Projection which makes use of the concept of Fourier Slice Transform. This tells us that, the 1d Fourier Transform of the projection, is equal to the 2d Fourier Transform of the image evaluated on the line whose projection was used earlier.

Further, in the mathematics its seen that, there comes a transformation from rectangular to polar coordinates which introduces a determinant of Jacobian. This can be multiplied with the 1d transforms of projections directly to obtain something called filtered back-projection. These back-projections are the slow development of the original image. More and more back-projections help in the reconstruction of the original image. Basically, “given the projection at a specific angle, we could reconstruct the image something like this” is what the method says.

To the user’s concern, Matlab offers a function called iradon. It can be called as Reconstructed_image = iradon(RadonImage, theta). Note that the theta used here should be the same ones used while computing the Radon Transform.

For a better mathematical treatment, I would refer this post to this Rice Univ. page.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s