voisinage d'objets sur Matlab
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

voisinage d'objets sur Matlab



  1. #1
    matlabUse

    Post voisinage d'objets sur Matlab


    ------

    Bonjour à tous

    j'ai un problème depuis une semaine et j'ai pas arrivé à trouver une solution et je compte énormément sur votre aide.

    J'ai besoin d'un code en matlab qui me permet de détecter le voisinage de chaque objets étiqueté dans une image binaire. En effet je voulais enregistrer chaque voisin trouvé de l'objet d’intérêt dans une structure car je voudrais après calculer le barycentre des voisins de chaque objet.
    Par exemple pour l'objet d'étiquette 3 ses voisins seront les objets d'étiquettes 5 et 7.

    j'ai commencé avec ce code:
    Code:
    %%%%%%%%%%%%%%%%##################Extraction des zones d'interet dans l'image binaire
     
    [nb,C]=i4mat_components (w, h,I);%%Décomposition en composantes annexes: la fonction retourne C: la matrice des labels et nb : le nombre des objets dans l'image
    
    %%%La boucle suivante permet de determiner la matrice des vecteurs
    %%%caractéristiques de chaque objets.
     for i=1:nb
         
         %[r,c]=find(C==i);
    %A=zeros(r,c);
         % A=[r,c];
         A=zeros(size(C));
         A(C==i)=1;
        % figure,imagesc(A)
         [M]=feature_vec(A); 
        % Ap=double (A);
    
    
    %ici commence le code qui m'interesse
    
     labelled(:,i )=i;
      % assume labelled array is called "labelled"
    label = i;  % label of object to find neighbours of
    object = labelled == label;
    se = ones(3);   % 8-connectivity for neighbours - could be changed
    neighbours = imdilate(object, se) & ~object;
    neighbourLabels = unique(labelled(neighbours));
    disp(neighbourLabels);
    
     
    B(:,i )= abs(M);
    
    
     end;
    mais ce code ne m'affiche pas le bon résultat
    j'espère que vous pouvez m'aidez et merci d'avance

    -----
    Dernière modification par matlabUse ; 20/07/2016 à 11h27.

  2. #2
    whoami

    Re : demande d'aide

    Bonjour,

    demande d'aide : en voilà un titre explicite ...

  3. #3
    matlabUse

    Re : demande d'aide

    salut whoami,

    en principe on est là pour ça, aider et demander l'aide non ?

  4. #4
    whoami

    Re : demande d'aide

    Bonjour,
    Citation Envoyé par matlabUse Voir le message
    salut whoami,

    en principe on est là pour ça, aider et demander l'aide non ?
    Oui, mais on peut exiger des titres en rapport avec la demande.

    En conséquence à ta réaction, je vais m'abstenir de t'aider.

  5. A voir en vidéo sur Futura
  6. #5
    matlabUse

    Re : demande d'aide

    Bonjour,

    c'est la première fois que je partage un truc sur un forum et je sais pas qu'un tel titre peux vous déranger. En fait j'ai juste traduit mon besoin.
    je te remercie en tout cas

  7. #6
    Kissagogo27

    Re : demande d'aide

    Bonjour, préciser par exemple sur quoi vous avez besoin d'aide par exemple

    Besoin d'aide sur Logiciel Matlab un modérateur peut modifier le titre en conséquence

  8. #7
    matlabUse

    Thumbs up Re : demande d'aide

    Bonjour,

    merci pour ton conseil je vais le prendre en considération prochainement

  9. #8
    JPL
    Responsable des forums

    Re : demande d'aide

    Citation Envoyé par matlabUse Voir le message
    c'est la première fois que je partage un truc sur un forum et je sais pas qu'un tel titre peux vous déranger.
    Quand tu t'es inscrit le formulaire t'a demandé de lire la charte du forum et de cocher une case pour certifier que tu l'avais lue. Si tu l'avais lue tu aurais vu :

    Les titres des messages doivent être explicites.
    Tu aurais vu aussi pourquoi j'ai écrit ce message en vert.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    Antoane
    Responsable technique

    Re : voisinage d'objets sur Matlab

    Bonjour,

    Pour moi, ce n'est pas clair...
    Qu'est ce qu'une image binaire ? Un exemple ?
    qui sont w, h et I ?
    Il serait bon de donner des infos sur les fonction que tu utilises lorsqu'elles ne sont pas natives de matlab (i4mat_components, feature_vec, etc).

    Présenter un code bien indenté (sélectionne ton code dans l'éditeur Matlab et presse CTRL+I ), sans lignes inutiles (commentées) mais avec des commentaires aiderait.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  11. #10
    matlabUse

    Re : voisinage d'objets sur Matlab

    Bonjour,

    je vous remercie pour votre réponse

    une image binaire est une image pour laquelle chaque pixel ne peut avoir pour valeur que 0 ou 1.
    J'ai pas expliqué ces fonctions : i4mat_components et feature_vec car j'en ai pas besoin de les utiliser pour la partie de détection de voisinage de chaque objet. Mais comme tu me l'avais demandé voici tout le code :
    Code:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%% Algorithme de la fonction de détection des objets rares
    %%%%image est l'input de la fonction DetectionAlgo
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    clc
    clear all
    
    I=imread('D:\PFE\matlab_rech\images\imgSynthetic.tif');
    sz=size(I);
    %% nombre de lignes
    w=sz(1,1);
    % nombre de colonnes
    h=sz(1,2);
    % taille de la fenêtre
    tailleF= 30
    %%fixer la taille de la fenètre
    nr = floor(w/tailleF);
    nc = floor(h/tailleF);
    
    %%%Calcul des inavaiants de Hu pour chaque fenètre de calcul suceptible de
    %%%contenir un objet.
    for r = 1:nr
        for c = 1:nc
            subimg = I((r-1)*tailleF+1:tailleF*r,(c-1)*tailleF+1:tailleF*c,:);
            
        end
    end
    %%%%%%%%%%%%%%%%##################Extraction des zones d'interet dans l'image binaire
    
    [nb,C]=i4mat_components (w, h,I);%%Décomposition en composantes annexes: la fonction retourne C: la matrice des labels et nb : le nombre des objets dans l'image
    
    
    %%%La boucle suivante permet de determiner la matrice des vecteurs
    %%%caractéristiques de chaque objets.
    
    for i=1:nb
        
        A=zeros(size(C));
        A(C==i)=1;
        
        [M]=feature_vec(A); %calculer les invariants de Hu pour chaque objet A de l'image
        
        labelled(:,i )=i;
    
        % assume labelled array is called "labelled"
        label = 1;  % label of object to find neighbours of
        object = labelled == label;
        se = ones(3);   % 8-connectivity for neighbours - could be changed
        neighbours = imdilate(object, se) & ~object;
        neighbourLabels = unique(labelled(neighbours));
        disp(neighbourLabels);
        
        
        B(:,i )= abs(M);
        
        
    end;
    figure,imagesc(C),colorbar
    
    
    %%%%%%%%%%%%%%%%##################Calcul du Vecteur Caractéristique de chaque objet de
    %%%%%%%%%%%%%%%%l'image
    Dernière modification par matlabUse ; 21/07/2016 à 09h38.

  12. #11
    minushabens

    Re : voisinage d'objets sur Matlab

    Je crois qu'il faudrait surtout que tu expliques ce que sont un "objet" et un "voisinage". Je pense deviner qu'un objet est une composante connexe (mais même ça demande à être précisé) de l'ensemble des pixels de valeur 1 de l'image, mais qu'est-ce qu'un voisinage?

  13. #12
    matlabUse

    Re : voisinage d'objets sur Matlab

    Comme vous l'avez dis, un objet est une composante connexe où tout les pixels ont la valeur 1.

    Pour le voisinage c'est tout autre objet qui peut être assez proche de l'objet d’intérêt car après cette étape je dois calculer la distance euclidienne de chaque objet de l'image avec que ses voisins pour dégager enfin la dispersion géométrique de chaque objet dans l'image.

  14. #13
    minushabens

    Re : voisinage d'objets sur Matlab

    Donc tu te donnes une distance, disons D0, telle que deux objets distants de moins de D0 soient considérés comme voisins (?) la distance entre deux objets étant le minimum des distances entre pixels des deux objets (?) ou la moyenne (?)

  15. #14
    matlabUse

    Re : voisinage d'objets sur Matlab

    plutôt je crois qu'il faute travailler avec une fenêtre glissante de taille (3*3) ou (5*5) peut être comme j'ai déjà commencer à faire dans cette partie :
    Code:
         labelled(:,i )=i;
        % assume labelled array is called "labelled"
        label = 1;  % label of object to find neighbours of
        object = labelled == label;
        se = ones(3);   % 8-connectivity for neighbours - could be changed
        neighbours = imdilate(object, se) & ~object;
        neighbourLabels = unique(labelled(neighbours));
        disp(neighbourLabels);
    mais le problème que ce code ne fonctionne que sur le dernier objet ( de numéro nb)
    Dernière modification par matlabUse ; 21/07/2016 à 10h03.

  16. #15
    minushabens

    Re : voisinage d'objets sur Matlab

    A mon humble avis, avant de commencer à programmer, il faudrait définir clairement ce qui est recherché.

Discussions similaires

  1. Fumée et voisinage
    Par cyresne dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 36
    Dernier message: 21/05/2015, 09h09
  2. A voisinage de a ...
    Par inviteaa7fccc7 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 01/11/2011, 18h53
  3. Voisinage
    Par invite4facbc79 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 12/10/2010, 14h59
  4. Voisinage
    Par invite769a1844 dans le forum Mathématiques du supérieur
    Réponses: 19
    Dernier message: 07/08/2008, 10h45
  5. Numerotation d'objets dans une image avec Matlab
    Par invite9ca407bd dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/11/2005, 18h43