Transformacja Radona zdefiniowana jest następujaco
\(R(L)=\int_{L}^{ }f(l)dl\)
Zakładając parametryzacje prostej \(L\) następująco
\(L: \begin{Bmatrix}(x,y): x=t\cdot sin(\alpha)+s\cdot cos(\alpha),y=-t\cdot cos(\alpha)+s\cdot sin(\alpha)\end{Bmatrix}\)
Transformacja Radona sprowadza sie do wyznaczenia
\(R(\alpha ,s)=\int_{\infty }^{\infty }f(x(t),y(t))dt\)
\(R(\alpha ,s)=\int_{\infty }^{\infty }f(t\cdot sin(\alpha)+s\cdot cos(\alpha),-t\cdot cos(\alpha)+s\cdot sin(\alpha)))dt\)
I = zeros(100,100);
I(25:75, 25:75) = 1;
imshow(I)
[R,xp] = radon(I,[0 45]);
figure; plot(xp,R(:,1)); title('R_{0^o} (x\prime)')
Podobnie zaimplementowana jest już odwrtona transformata radona w postaci funkcji iradon
theta1 = 0:10:170; [R1,xp] = radon(P,theta1);
theta2 = 0:5:175; [R2,xp] = radon(P,theta2);
theta3 = 0:2:178; [R3,xp] = radon(P,theta3);
I1 = iradon(R1,10);
I2 = iradon(R2,5);
I3 = iradon(R3,2);
imshow(I1)
figure, imshow(I2)
figure, imshow(I3)
Aby obejżeć sinogram można wykorzystać funkcje imshow lub
theta = 0:180;
[R,xp] = radon(I,theta);
imagesc(theta,xp,R);
title('R_{\theta} (X\prime)');
xlabel('\theta (degrees)');
ylabel('X\prime');
set(gca,'XTick',0:20:180);
colormap(hot);
colorbar
D = 250;
dsensor1 = 2;
F1 = fanbeam(P,D,'FanSensorSpacing',dsensor1);
dsensor2 = 1;
F2 = fanbeam(P,D,'FanSensorSpacing',dsensor2);
dsensor3 = 0.25
[F3, sensor_pos3, fan_rot_angles3] = fanbeam(P,D,'FanSensorSpacing',dsensor3);
output_size = max(size(P));
Ifan1 = ifanbeam(F1,D,'FanSensorSpacing',dsensor1,'OutputSize',output_size);
figure, imshow(Ifan1)
Ifan2 = ifanbeam(F2,D,'FanSensorSpacing',dsensor2,'OutputSize',output_size);
figure, imshow(Ifan2)
Ifan3 = ifanbeam(F3,D,'FanSensorSpacing',dsensor3,'OutputSize',output_size);
figure, imshow(Ifan3)