1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Algorithme d'extraction compartimentale par fitting %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;close all;clc;% Vide toute la mÈmoire pour plus de claretÈ
tic;% Initialise le timer
slice = 4; % Coupe anatomique analyser
%% Place les images en mÈmoire dans une matrice image
diffIm = zeros(128,128,48) ;
for i =1:48
n = i*8 - slice;
diffIm(:,:,i) = dicomread(sprintf('Diff%03d',n));
end
% PrÈpare les 6 images paramÈtriques
res_image=zeros(128,128,6);
% DÈclare les valeurs de b
XVAL = 0 : 100: 4700 ;
XVAL = XVAL(:);
% Compteur d'itÈrations
h = waitbar(0,'Calcul du fitting en cours...');
steps = 8910;
step = 1;
matlabpool close force local
matlabpool(4)
% Pour Chaque pixel
parfor x= 10:119
for y= 24:104
%CrÈe un tableau contenant les diffÈrentes valeur du signal en (x,y)
YVAL = double(diffIm(x,y,:));
% Fit les donnÈes contenues dans le tableau experimentalValue
paramValue = createFit(XVAL,YVAL);
% InsËre les valeurs des paramËtres retournÈs dans une matrice
for k=1:6
res_image(x,y,k) = paramValue(k);
end
% Affiche le % d'itÈrations de la double boucle dÈja effectuÈ
step = step+1;
waitbar(step / steps)
end
end
close(h)
toc |
Partager