IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Probleme avec set/getappdata


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut Probleme avec set/getappdata
    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)

    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));
    Merci d'avance de votre aide !
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je n'ai pas très bien saisi ton problème
    Citation Envoyé par cedji Voir le message
    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.
    Que souhaiterais-tu à la place ?

    Quelques remarques sur ton code actuel :
    • Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      setappdata(0,...
      getappdata(0,...
      On utilise plutôt la figure elle-même que l'objet root => gcbf.
    • Dans le Callback check_callback, la boucle est-elle vraiment nécessaire ? Ne pourrais-tu pas seulement opérer le changement sur celui en cours ?
    • La ligne matMaskFinal(:,:,k) = matMaskFinal(:,:,k); est inutile, et ta condition peut se simplifier en :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      if ~any(any(matMaskFinal(:,:,k)))
          matMaskFinal(:,:,k) = matDil(:,:,k);
      end

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Merci de ta réponse !
    Je sais que mon explication n'était pas très claire, je vais donc utiliser un exemple .
    Cas n°1 : je choisis les valeurs numériques suivantes :
    seuil = 5000 ; supp = 400 ; erosion = 1 ; dilatation = 2
    Je sélectionne les coupes n°10 à 20 sur les checkbox
    Sur le dernier affichage, on aperçoit donc le masque sur les coupes 10 à 20, et sur les autres l'affichage est noir.

    Cas n°2 : je choisis ensuite les valeurs numériques suivantes, différentes du premier cas :
    seuil = 2000; supp = 400: erosion = 1; dilatation = 1;
    Je sélectionne les coupes n°1 à 9 sur les checkbox (mais les checkbox sélectionnées précédemment sont tjrs activées)
    Sur le dernier affichage je devrais voir s'afficher sur les coupes 1 à 9 le masque correspond aux paramétres choisis dans le cas n°2 et sur les coupes 10 à 20 le masque correspond aux paramètres choisis dans le cas n°1. Mais au contraire, sur toutes les coupes sélectionnées, le masque correspond au dernier paramètres choisis, donc ici dans le cas n°2...
    Mais je ne comprends pas pourquoi j'observe ce résultat là compte tenu de la boucle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ~any(any(matMaskFinal(:,:,k)))
        matMaskFinal(:,:,k) = matDil(:,:,k);
    end
    J'espère que maintenant j'ai exposé mon problème de façon plus claire !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Que représente ta variable matDil ? Tes coupes de départ ? Tes coupes après traitement avec les paramètres choisis ?
    À quel moment est-ce que tu effectues ces traitements ?

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    la variable matDil contient les images après la dilatation

Discussions similaires

  1. [XL-2010] Probleme avec "set workbooks()"
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 07/02/2012, 15h11
  2. Probleme avec set(handles)
    Par abdousoft dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 10/06/2011, 16h25
  3. probleme avec Set.Make
    Par gorgonite dans le forum F#
    Réponses: 3
    Dernier message: 24/11/2008, 18h59
  4. probleme avec set nom_fichier=%%~nxk
    Par reivilo59 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 04/08/2008, 21h36
  5. probleme Avec Set ?
    Par mehdi_swatch dans le forum Langage
    Réponses: 6
    Dernier message: 29/05/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo