【发布时间】:2014-07-07 11:16:28
【问题描述】:
我正在使用 SART 方法研究断层扫描算法。我正在使用 2D 投影来获得 3D 体积。
我的主要问题是计算时间真的很长..
例如,对于大小为 88*75 像素的投影,我的程序需要 5 天才能完成。
通过使用 matlab 分析器,我们可以看到与氡矩阵(很重)相乘的行花费了很多时间。
这就是为什么我想并行化我的算法,但我并不真正熟悉它。
这是我要并行化的算法部分:
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
【问题讨论】:
-
请将您的代码格式化为更易读的格式:英文中的缩进和 cmets。
-
这就是人们(ASTRA、TIGRE、RTK、....)构建 GPU 断层重建算法的原因!否则它们会非常慢,没有 CPU 可以足够快地完成这项工作。
标签: matlab parallel-processing tomography-reconstruction