MATLAB Answers


medium points of Radon transform on image

Asked by Aissa
on 19 May 2013

How to calculate I looked at how the rotation does not change the results of the calculation for the medium point, but I have not found the same results! I do not know if my program is wrong or not? The program is simple:

image = imread('lena.bmp'); 
theta= 0:1:179; 
[R,xp]= radon(I,theta); 
% calculate the medium point 
% take the medium points of original image  
II=imrotate(I,2);  % rotation de 2° 
R_rotation= radon(II,theta); 
% take the medium points after rotation 
Points_après_rotation = R_rotation(n1,1:1:180);

thank you


1 Answer

Answer by Image Analyst
on 19 May 2013
 Accepted answer

I'm finding a difference. Run my demo. It's based on yours but I cleaned it up a bit to be far more illustrative, and I used a standard demo image.

close all;
fontSize = 16;
% Read in a standard MATLAB gray scale demo image.
folder = fullfile(matlabroot, '\toolbox\images\imdemos');
if ~exist(folder, 'dir')
	% If that folder does not exist, don't use a folder
	% and hope it can find the image on the search path.
	folder = [];
baseFileName = 'cameraman.tif';
fullFileName = fullfile(folder, baseFileName);
grayImage = imread(fullFileName);
% Get the dimensions of the image.  numberOfColorBands should be = 1.
[rows, columns, numberOfColorBands] = size(grayImage)
% Display the original gray scale image.
subplot(3, 3, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
% Compute Radon Transform.
theta= 0:1:179;
[R,xp]= radon(grayImage,theta);
subplot(3, 3, 2);
imshow(R, []);
title('R Image', 'FontSize', fontSize);
% Determine the middle row.
middleRow = floor(n/2);
% Extract and plot the middle row after rotation.
points=R(middleRow, 1 : 180);
subplot(3, 3, 3);
plot(points, 'b+-');
title('points', 'FontSize', fontSize);
% Rotate the image by 2 degrees.
rotatedImage = imrotate(grayImage,2);  % rotation de 2°
% Display the original gray scale image.
subplot(3, 3, 4);
imshow(rotatedImage, []);
title('Rotated Grayscale Image', 'FontSize', fontSize);
% Compute Radon Transform.
R_rotation = radon(rotatedImage,theta);
subplot(3, 3, 5);
imshow(R_rotation, []);
title('R rotation Image', 'FontSize', fontSize);
% Extract and plot the middle row after rotation.
Points_apres_rotation = R_rotation(middleRow,1 : 180);
subplot(3, 3, 6);
plot(R_rotation, 'b+-');
title('Points apres rotation', 'FontSize', fontSize);
% Construct difference between middle rows.
diffPoints = points - Points_apres_rotation;
subplot(3, 3, 8);
plot(diffPoints, 'b+-');
title('Difference between rows', 'FontSize', fontSize);


on 19 May 2013

Well which points of Radon transform of an image are invariant to rotation or scale??? I am looking about this. thanks

Image Analyst
on 19 May 2013

The center of rotation should be. But you didn't look at that, and you have to be careful about scaling. It's not invariant to scale, unless it somehow normalizes it internally but I didn't see that mentioned. So if an image is twice as big, the Radon transform values should be twice as great, because you're summing twice as many pixels.

on 19 May 2013

then how to calclate he radon at center of rotation for all angle from O° to 179°?

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today