anyone can tell me about radon transform?

I = imread('peppers.bmp');
A = im2double (I);
R = radon (A,0:180);
P = iradon (R,0:180);
this is the coding i use for radon transform and its inverse. the resulting image for theta 180 degree much clear rather than 90 degree. i don't understand the situation. why it is happen? thank you for your help.

2 Comments

Could you post peppers.bmp? See Markup help (http://www.mathworks.com/matlabcentral/answers/help/markup) for how to do this.
i have post peppers.bmp images to uploadhouse.com.
here is URL http://www.uploadhouse.com/viewfile.php?id=8735849

Sign in to comment.

 Accepted Answer

The more angles you have, the more data is sampled, the higher quality an image you recover.
What are you trying to accomplish?

3 Comments

thanks for your answer.i need to calculate the error value for each pixels between the original image and reconstructed image to know whether radon transform is better or not in reconstructed image.
for your answer, does it mean that i should use 360 degree to obtain the best image.
after i reconstructed the image, why the size is bigger than original size.original size is <64x64 double>. reconstructed size is <66x66 double>. thank you for your help.
No you don't get better reconstruction with radon/iradon by using angles between 0-360 than between 0-180. If you look at the equation for the radon transform you'll see that I(theta,l) == I(theta+pi,-l) since both are integrals of the intensities along the same line. You will/should get better reconstructions by using larger number of angles between 0-180 degrees - that will give you more unique information about the intensities (even if the line individual integrals becomes more and more equal as the angular separation decreases). (Check if I got the sign right in the equality...)
HTH,
Bjoern
thanks for your answer.i don't understand about the intensities?where to see the intensities and what is their effect?
then, why need to convert image into double because if i did not do that, i can't perform the error measurement.thanks for your help.

Sign in to comment.

More Answers (1)

You will never be able to recover the same image as the original and some data will be lost as you are resampling twice (radon, iradon).
Instead of using your peppers image, use the phantom head provided by MATLAB or this phantom: http://www.mathworks.com/matlabcentral/fileexchange/29364-compressed-sensing-mri-phantom-v1-1
Which have features that can easily be detected. I've made this demo script for you to try; it'll take a minute or so to run but will provide you with an idea of what to expect.
P = phantom(256);
subplot(221);
imshow(P);
title('Original');
theta = 0:5:179.99;
Precon = iradon(radon(P,theta),theta);
subplot(222)
imshow(Precon);
title('0:5:179.99');
theta = 0:1:179.99;
Precon = iradon(radon(P,theta),theta);
subplot(223);
imshow(Precon);
title('0:1:179.99');
theta = 0:.1:179.99;
Precon = iradon(radon(P,theta),theta);
subplot(224);
imshow(Precon);
title('0:0.1:179.99');
Now zoom in on some the features to compare.
Ps. Bjorn answered your question correctly when he said don't use 0:360 but rather 0:<180

5 Comments

thanks for your answer.but i can't run your coding in matlab. it is stated error in P = phantom(256);
does it mean that i need to upload phantom image first and then read the image?
what is the meaning of 5 in theta = 0:5:179.99;
thanks for your help.
That defines a vector 0,5,10,15...175. It is the thetas to use. I have no idea why phantom doesn't work for you, unless you don't have the Image Processing Toolbox. But you have radon/iradon which ware also in the IPT.
Type at the command line:
which phantom
sean de;
if i use this command:
A = imread('peppers.bmp');
B = im2double (A);
R = radon (B, 0:180);
P = iradon(R,0:180);
the size value of the reconstructed image will be bigger than original image.
but if i use this command:
A = imread('peppers.bmp');
B = im2double (A);
R = radon (B, 0:180,64);
P = iradon(R,0:180,64);
the value of the reconstructed image is the same with original image.
why this happen?can you explain it?
i need to know because the resultant image if i don't use 64 in command look better than when i use 64 in command.
thank you.
Having the 'n' argument is a grandfather syntax that only calculates the radon transform at n points
open radon
to view what it says. Moral of the story: don't use the 3rd argument!
@Aissa, please ask this as a new question with a small example. These comments will be deleted.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!