0

I'm doing a piece of Matlab code for reconstruction of radial 3D NMR data. However, since the radon functions built into Matlab are only 2D, I will have to apply them twice. After the first iradon transform in my code I get out projections of the imaged object as they are supposed to look (from different angles). But after the second iradon transform I do not see a correct reconstruction of the object (just a lot of noise and some blurry stuff where the object should be).

My attempt at a solution is shown below.

The input data is a free induction decay or fid: fid(NP,nv,nv2) where NP is the number of projections, nv is the number of theta angle increments and nv2 is the number of phi angle increments.

Doing the ifft on the FID will give a sinogram of dimensions proj(NP,phi) for each theta angle.

Doing the first iradon gives filtered and unfiltered backprojections with dimensions I(r,x) for each theta angle. (so that I3 and I4 have dimensions (r,z,theta) )

Doing the last iradon transform should then render the reconstructed 3D image with dimensions I(x,y,z)

I3=[];
I4=[];
I5=[];
I6=[];

for k=1:1:nv2
    FID = squeeze(fid(:,:,k));
    proj=abs(fftshift(ifft(ifftshift(FID),[],1)));
    I1 = imrotate(iradon(proj,theta,'v5cubic','none',1,2*NP),-90);
    I2 = imrotate(iradon(proj,theta,'v5cubic','Ram-Lak',1,2*NP),-90);
    I3(:,:,k) = I1;
    I4(:,:,k) = I2;
end

for k=1:size(I3,2)
    I5(:,:,k) = iradon(squeeze(I3(:,k,:)),phi,'v5cubic','none',1,2*NP);
    I6(:,:,k) = iradon(squeeze(I4(:,k,:)),phi,'v5cubic','Ram-Lak',1,2*NP);
end
Deduplicator
  • 44,692
  • 7
  • 66
  • 118
Chris88
  • 1
  • 3
  • cc @Paolo: [Do not use signature, taglines, or greetings.](http://stackoverflow.com/help/behavior) Also, make sure the code does not scroll horizontally if reasonably possible. – Deduplicator Oct 20 '15 at 19:27
  • 1
    @Deduplicator, I'll do. Thanks for this advice. – Paolo Maresca Oct 20 '15 at 19:30
  • I dont know much about NMR, but radon/iradon are commonly used in Xray imaging. In Xray imaging, you need to filter the projections by a high pass ramp filter of you want to get a reconstructed image after iradon. – Ander Biguri Oct 21 '15 at 09:03
  • @AnderBiguri, thank you for your suggestion. The radon and iradon functions in Matlab have high-pass filtering built in. In my code I use a Ram-Lak filter (which is a ramp filter), but many other filters are possible such as Hann and Hamming. I have tried all the filters, without much effect. – Chris88 Oct 21 '15 at 19:19

0 Answers0