Conjugate gradient 2D image reconstruction Matlab

Go To


I'm working on a project where I should use the conjugate gradient method to reconstruct an SPECT image given the sinogram of the image with the help of matlab. I have realized that the linear equation Ax=b needs to be solved, where b is an N-dimensional vector containing the known sinogram values wrapped into a vector and x is a M-dimensional vector containing the unknown image to be reconstructed and that A is a system vector. I can easily construct b with the sinogram I have, but I don't really know how I should get A. The image I want is 128X128 and the sinogram is 128X32 (i.e. 32 projections).

Does anybody have any Ideas of how i can use the help of matlabs PCG function to reconstruct my image?

2012-04-03 20:05
by shizzle


The n_th column of the projection matrix A is the radon transformation of the n_th pixel, that is its n_th element is 1 and all other elements are zero. This is doable with the matlab radon function, but I doubt that it is very efficient because A will be sparse and I guess the loop will take quite some time, although 128x128x128x32 should still be manageable and the (sparse) matrix can be cached in a .mat file as long as your geometry doesn't change.

You can try other matlab scripts, for example where you get A by calling

N=128;               % 128x128 pixels
p=128;               % Number of rays per projection
alpha=(0:32)*180/32; % List of projection angles in degrees
A=paralleltomo(N, alpha, p);

I hope that helps.

2012-04-10 12:57
by mars