File Exchange

image thumbnail

CT reconstruction package

version 1.3 (4.98 KB) by

Set of functions performing ct reconstruction tasks

115 Downloads

Updated

View License

Set of functions performing ct reconstruction tasks like a radon transformation, a simple backprojection, a filtered backprojection using a convolution in the spatial domain, a filtered backprojection using a 2D Fourier transformation, and a filtered back projection using the central slice theorem.
It includes the function
myCtRecontruction
that should run out of the box and uses Matlab's Shepp Logan Phantom for demonstration. It is also possible to run the myCtReconstruction with an argument
myCtRecontruction(anyCtDataSet)

to perform image reconstruction on a custom data set.

References:

[1] Set of CT reconstruction functions by Prof. Justin Romberg @ http://www.clear.rice.edu/elec431/projects96/DSP/
[2] W. Schlegel, J. Bille: Medizinische Physik 2: Medizinische Strahlenphysik http://www.amazon.com/Medizinische-Physik-Strahlenphysik-German/dp/354065254X/ref=sr_1_1?ie=UTF8&qid=1326709541&sr=8-1

Comments and Ratings (20)

Juicy John

m x

m x (view profile)

how to change the size of output image?thanks!

Zhe Hu

Zhe Hu (view profile)

Zhouping wei

Great job! Thanks!
But I have one question: how to adjust the center of rotation?

Alaa Maher

maomao

maomao (view profile)

Really helpful!

how can I use this tool to reconstruct a set of projections from neutron imaging please?

Carla Romano

If I choose as input a phantomdata characterized by a sequence of image, is it possible that the process is done only on the first image? Because at the and I have backprojection in the same direction of the scan and not a slice

Gianni Schena

please remove mention to the CENTRAL SLICE THEOREM because you create great confusion ( to students for example). with the CST you recover your image via ifft2 after allocating radially the fft1 of the sinogram. in simple: ifft2(polar fft1 sinogram).

kevin

kevin (view profile)

Leila Farid

I'm working on a project which aim to recreate the principle of a CT Scan. I have to treat the projection data. But when there is several detectors, the code does'nt seems to work.
Each column of my matrix is an angle and each line the intensity of light acquired by each detector.
Can you help me to understand better how the code is working ? I didn't find why i can't reconstrute the image my self
When i work with only 1 detector and translation+rotation moves around the object it works. It's when i want to pass to the next stage where there is only rotation and several detectors that it doesn't

The function "myFilteredBackprojectionCentralSlice.m" is a simple spatial domain backprojection that does not use the slice theorem. It does the following:
- fft projections
- filter projections in Fourier domain
- ifft back to spatial
- aggregate results (spread projections and sum)

It should be done in the follwing order:
- fft projection
- filter projections in Fourier domain
- aggregate results in the Fourier domain
- ffti aggregated result back to spatial

The central slice algorithm[1] used in the CT package is wrong.

The central slice theorem dictated that if 1D-FT of projections is added at the center rotated at the corresponding theta then the 2D-IFT of the resultant data (in fourier domain) is equivalent to the back projections (in spacial domain).

As such visualization on the fly is only possible of the fourier domain data and not the spacial domain as you get the entire image once 2D-IFT is performed

[1] BPI = myFilteredBackprojectionCentralSlice(sinogram,thetas)

Ref :

Slide 6/7
https://www.cs.tut.fi/sgn/m2obsi/m2obsiWWW/tomoRGI.pdf

Chapter 3 Page 56
<http://www.slaney.org/pct/pct-toc.html>

Liz

Liz (view profile)

Can someone out here explain the reconstruction code to me?

Nicholas

Excellent set of code. Thanks a lot.

Soren

Soren (view profile)

Fantastic tool for didactic purposes and as a platform for further development. Thanks for sharing!!

Tai Chieh

Great!

It's really help

Shrinivas

Excellent work

Updates

1.3

This updated version should remove a severe error in the implementation of the central slice theorem.

Thanks to G. Sken, Jean-Nicola Blanchet, and Sake Dandawate for pointing this out. Thanks to Niklas Wahl for pointing this out.

1.3

The new Version should correct the implementation of the central slice Theorem. Thank you Jean-Nicola Blanchet, Saket Dandawate, and G. Sken for pointing this out. Thanks to Niklas Wahl for providing example code.

1.2

Excluded head phantom.

MATLAB Release
MATLAB 7.11 (R2010b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today