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

MATLAB Discussion :

Renumérotion et recherche dans boucle avec structures


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 109
    Points : 63
    Points
    63
    Par défaut Renumérotion et recherche dans boucle avec structures
    Bonjour,

    Je suis arrivée à faire un bout de programme qui me permet, après un traitement d'images, de récupérer des tableaux de cellules de structures me donnant pour chaque objet détecté d'une image :
    - les coordonnées du centre x et y, l'aire, l'orientation, le diamètre (via la fonction regionprops)
    - le temps, l'image ET le numéro de l'objet dans l'image en question (via bwlabel)
    - le bord (pour savoir s'il est assez loin) et le type (pour savoir si la cellule est seule)
    - l'interaction avec d'autres cellules (calcul de distance en cours)

    Voici le code
    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
    for k=1:N
    % chargement en série des images, traitement des images
        [L{k},NbObjets{k}] = bwlabel(fill{k},8); 
        rego{k} = regionprops(L{k},'All'); 
    end
     
    for k=1:N    
    % Création d'un tableau de cellules de structures: cellule{n°image}(n°objets)
        for i=1:NbObjets{k} % pour exemple
            cellule{k}(i).x = rego{k}(i).Centroid(1);     cellule{k}(i).temps=ti*(k-1); 
            ...    ...     ...      ...
            % test donnant : cellule{k}(i).bord = 'assez loin' ou 'trop près'; 
        end
    end
     
    % calcul des distances entre tous les objets d'une même image
     
    num_Matlab{k}=[]; display('Recherche cellules à mesurer') 
    % création d'un tableau de structures avec les champs: cellule,
    % indice_image et indice_objet (numérotation de Matlab)
    structSauve=struct('cellule',{},'indice_image',{},'indice_objet',{}); 
    for k=1:N
        for i=1:NbObjets{k}
            if strcmp(cellule{k}(i).type,'isolé') && strcmp(cellule{k}(i).bord,'assez loin') % et pb d'interaction
    % test sur tous les objets pour récupérer le numéro de l'objet étiqueté et
    % de l'image correspondante des objets sur lesquels je veux travailler
                num_Matlab{k}=[num_Matlab{k} i]; le{k}=length(num_Matlab{k}); % nombre d'objet isolés dans l'image k
            end
            for j=1:le{k}
               if i==num_Matlab{k}(j)
                    structSauve(end+1) = struct('cellule',cellule{k}(i),'indice_image',k,'indice_objet',i);
               end
           end
        end
    end
    save('save.mat','structSauve');
    Mais je souhaiterais maintenant faire une itération sur les images pour chaque objet sur lequel je veux travailler. Je m'explique: tout objet isolé, assez loin des bords et dont la distance entre objets est supérieure au seuil fixé est un objet à conserver! Je récupère donc

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Je ne vois pas trop où est le problème ?

    Il te suffit d'utiliser la fonction "if", non ?
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

Discussions similaires

  1. Problème de recherche dans msflexgrid avec deux ou plusieurs textbox
    Par Smilossss dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 01/02/2013, 18h06
  2. Sélection colonne dans boucle avec condition
    Par fabiencal dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/09/2009, 09h31
  3. Problème dans boucle avec matrice et vecteur
    Par lilyla dans le forum MATLAB
    Réponses: 9
    Dernier message: 26/11/2007, 19h45
  4. Recherche dans un tableau structuré
    Par zemeilleurofgreg dans le forum Langage
    Réponses: 10
    Dernier message: 12/07/2007, 12h02
  5. [VB6]Recherche dans Access avec un recordset (DAO)
    Par xdiethank dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/05/2006, 11h28

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