I'm working on a tomographic algorithm, using SART method. I'm using 2D projections in order to get 3D volume.
My main problem is that computation time is really high..
For example, with projections of size 88*75 pixels my program need 5 days to complete.
By using the matlab profiler, we can see that the lines with the multiplication of the radon matrix (which is heavy) are taking so much time.
That's why I want to parallelised my algorithm but I'm not really familiar with it.
This is the part of my algorithme that I want to parallelize :
line which need a lot of time: Correction = mtimesx(facteur, Matrice_Radon_Transposee, 'SPEED');
for k = 1: ite % Boucle définie par le nombre d 'itérations choisi par l'
utilisateur
Soustraction = Projection2 - Projection_old;
Erreur(ligne, k) = mean(Soustraction);
Err = Erreur(ligne, k);
for z = 1: L * Nproj
for a = 1: L * L
Somme = Somme + Matrice_Radon(z, a) * Matrice_Radon(z, a);
end
facteur = landa / Somme;
Correction = mtimesx(facteur, Matrice_Radon_Transposee, 'SPEED'); % Formule de correction additive de l
'image
Correction = Correction*Soustraction;
Ik1 = Ik + Correction;
Ik=Ik1; % Stockage de l'
image corrigée dans l
'image_itération_précédente
Projection_old=Matrice_Radon*Ik; % Calcul de la projection à partir de l'
image_itération_précédente
end
pos3 = 1;
for incr2 = 1: L
for incr3 = 1: L
Ik2(incr2, incr3) = Ik1(pos3, 1); % Transformation vecteur en matrice
pos3 = pos3 + 1;
end
end
Coupe_SIRT(ligne, : , : ) = Ik2; % Stockage des coupes générées
end
fprintf('Progression : %2d/%d\n', ligne, H); % Affichage de l
'avancement du traitement
end