Bonjour,
Je vais essayer de bien expliquer mon probleme mais ce n'est pas évident. Pour aider j'ai mis en pièce jointe l'allure de l'interface graphique que j'ai réalisé jusqu'à présent.
Je dispose d'images contenant un certain nombre de coupes. Le but de mon travail est de réaliser un masque des images pour n'extraire que la partie correspondant au cerveau. Pour cela, j'ai choisi d'utiliser la méthode seuillage -> érosion -> labellisation -> dilatation.
Cependant, pour une séries de coupes, je ne suis pas capable de trouver un type unique de paramètres permettant d'extraire le cerveau directement. C'est pourquoi je dois réaliser la création de masque en plusieurs étapes.
Mon GUI est donc construit ainsi. Apres la dilatation, je superpose le "pseudo masque" sur l'image originale et je regarde les coupes une par une. Quand le masque correspondant à une coupe est satisfaisant, je coche la "checkbox" correspondant au numéro de la coupe. Dans la derniere image apparait alors le masque pour le numéro de coupe choisie. (matrice matMaskFinal).Ensuite je souhaite utiliser d'autres paramètres, et je refais la mm méthode de sélection de coupe.
Le problème que j'ai est que lorsque je change les paramètres et que je coche de nouvelles checkbox, les coupes sélectionnées précédemment (avec d'autres paramètres) sont enregistrées dans la matrice finale avec les nouveaux paramètres.
Voici une partie de mon code (je n'ai choisi que les parties concernant le problème mais si vous avez besoin d'autres parties du code, dites le moi)
Merci d'avance de votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function Create_Mask_GUI_imb % (...) infoIm=spm_vol(image1); matIm=int16(spm_read_vols(infoIm)); matMask = int16(imrotate(matIm,-90)); % 128 x 128 x 51 int16 [height width NbSlices] = size(matIm); % (...) matMaskFinal = zeros(height,width,NbSlices); setappdata(0,'matMaskFinal',matMaskFinal); function check_callback(obj,event) matMaskFinal=getappdata(0,'matMaskFinal'); for k=1:1:NbSlices opt(k)=get(check(k),'value'); if opt(k)==1 if (matMaskFinal(:,:,k) ~= zeros(height,width)) matMaskFinal(:,:,k) = matMaskFinal(:,:,k); else matMaskFinal(:,:,k) = matDil(:,:,k); end else matMaskFinal(:,:,k)=zeros(height,width); end set(check(k),'Value',opt(k)); end setappdata(0,'matMaskFinal',matMaskFinal); end function hMask_callback (obj,event) (...) % affichage matMaskFinal=getappdata(0,'matMaskFinal'); subplot(1,1,1,'Parent',ph4b); handleImMask = imshow(matMaskFinal(:,:,1));
Partager