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

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut Conserver à la fois la région avec la plus grande taille et les régions ayant une surface et une élongation
    je débute en matlab et j'ai un problème que je veut le résoudre:
    En plus de la région avec la plus grande taille, les régions ayant une surface et une élongation importantes sont conservées.
    J’ai essayé avec ce code pour conserver la région avec la plus grande taille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    labels=bwlabel(Image);
    struct = regionprops(labels, 'area');
    area = [struct.Area];
    labelMax = find(area == max(area));
    labels(:) = ismembc(labels(:),labelMax);
     
    BW2 = Image.*labels
    figure,imshow(BW2)
    Mon problème c’est comment je peux conserver à la fois la région avec la plus grande taille et les régions ayant une surface et une élongation importantes.
    Ya-il quelqu’un qui peut m’aider ??

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut,

    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    labels=bwlabel(Image);
    struct = regionprops(labels, {'area', eccentricity'});
    area = [struct.Area];
    labelMax = find(area == max(area));
    ecc = [struct.Eccentricity];
    labelEcc = find(ecc > .5);
    labelsAGarder = [labels, labelEcc];
    labels = ismembc(labels, labelsAGarder);
     
    BW2 = Image.*labels
    figure,imshow(BW2)
    bon, j'ai pas testé directement, mais c'est l'idée...

    A+

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    merci Kangourou,

    j'ai testé ce code la mais il me lance cet erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ??? Error using ==> horzcat
    CAT arguments dimensions are not consistent.
     
    Error in ==> ProcessusDetection at 119
    labelsAGarder = [labels, labelEcc];

  4. #4
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    c'est surement parce que les labels sont stockés dans un vecteur colonne et non ligne.

    Remplace la virgule à l'intérieur des crochets par un point-virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    labelsAGarder = [labels; labelEcc];
    a+

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut
    même en utilisant un point-virgule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    labelsAGarder = [labels; labelEcc];
    j'obtient le même erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ??? Error using ==> vertcat
    CAT arguments dimensions are not consistent.
     
    Error in ==> ProcessusDetection at 119
    labelsAGarder = [labels; labelEcc];

  6. #6
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    oups, l'erreur est mienne... Il faut utiliser labelMax (la variable labels est une image...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    labelsAGarder = [labelMax(:) ; labelEcc(:)];
    devrait marcher mieux...

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. [2008R2] Recuperer la valeur avec la plus grande date
    Par guigui69 dans le forum Développement
    Réponses: 1
    Dernier message: 01/08/2013, 12h47
  3. Réponses: 1
    Dernier message: 13/04/2013, 12h19
  4. Sélectionner une ligne par un ID avec la plus grande date
    Par lhonolulu dans le forum SAS Base
    Réponses: 5
    Dernier message: 03/06/2009, 17h47
  5. Réponses: 2
    Dernier message: 16/04/2007, 11h53

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