Radon transform in matlab

조회 수: 14 (최근 30일)
Alan AF
Alan AF 2014년 5월 29일
편집: Matt J 2014년 6월 3일
Hi Everyone, Is there any numerically efficient package to compute the Radon transform and the back projection, probably using the non-uniform forier transform!
actually what I am looking for is a forward and inverse projector for tomography problem. I tried the Matlab Radon function but I noticed that if you apply it iteratively(as in the code below) the Image will be bleared! are there any solution for this problem?
x = phantom('Modified Shepp-Logan',256);
[Sinogram,xp] = radon(x,1:0.1:180);
for i=1:10
I = iradon(Sinogram, 1:0.1:180);
[Sinogram,xp] = radon(I,1:0.1:180);
end
imtool(I);

답변 (2개)

Matt J
Matt J 2014년 5월 29일
편집: Matt J 2014년 5월 29일
but I noticed that if you apply it iteratively(as in the code below) the Image will be bleared!
Reconstruction is always lossy because all the projection and DSP operations involved are discretized, rather than occuring in ideal, continuous space. If you iteratively project and reconstruct, the loss accumulates.
  댓글 수: 8
Alan AF
Alan AF 2014년 5월 29일
Yes, I have tried the Matlab radon function as below, and the result was a blurred image, however the NUFFT code results was a blank image with vertical lines?! would you plz have a look on NUFFT code that I wrote ( download )
x = phantom('Modified Shepp-Logan',256);
[Sinogram,xp] = radon(x,1:0.1:180);
for i=1:30
I = iradon(Sinogram, 1:0.1:180,'linear','Ram-Lak');
[Sinogram,xp] = radon(I,1:0.1:180);
end
imtool(I);
Matt J
Matt J 2014년 5월 29일
It won't mean anything to me. I've never worked with NUFFT projectors.

댓글을 달려면 로그인하십시오.


Bjorn Gustavsson
Bjorn Gustavsson 2014년 5월 29일
Why would you want to repeat the process in the first place? If you have data for every 0.1 degree (according to your calculation of the sinogram) then the iradon function calculates the proper inverse (you might select different filters for the transform and such), therefore you'll only enhance the problems with the inverse (blurring, pixeling, aliasing and possibly noise amplification if you have noise in your real data and whatnot), put an image display inside the loop together with a drawnow and see how things evolve...
If you want to look at some iterative algorithm you have to explain what you want to study.
HTH,
  댓글 수: 6
Alan AF
Alan AF 2014년 6월 3일
Hi Matt would you elaborate more about the scaling for the physical sizes, do you mean resolution?
Matt J
Matt J 2014년 6월 3일
편집: Matt J 2014년 6월 3일
The radon transform is a line integral through the image. Roughly, it works by finding the intersection lengths of projection rays with pixels and multiplies by the length of intersection. But to compute the length of intersection, you have to know the pixel dimensions, e.g., in millimeters. Matlab's RADON command just assumes the pixels dimensions are 1x1 unitless. You would have to scale the result by the pixel lengths to get things in real units. I don't know whether you are doing that currently
But the Fessler NUFFT code might be drawing pixel dimension information from somewhere already, e.g., input you gave it.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Biomedical Imaging에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by