Aide code matlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Aide code matlab



  1. #1
    invitec398a221

    Aide code matlab


    ------

    Salut à tous,

    j'ai un très gros problème et je compte énormément sur votre aide.
    J'ai besoin d'un code en matlab qui me permet de détecter les objets dans une image couleur avec la segmentation par croissance de région. J'ai trouvé que la croissance de région peut être appliquée sur des images en niveau de gris donc j'ai fait ce programme principale:
    Code:
    [file,path] =uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files' });
    image1 = imread(fullfile(path,file));
    figure(1);imshow(image1);
     if(ndims(image1)==3)
        image2=rgb2gray(image1);
     end
     figure(2);imshow(image2);
    %ici il faut faire le choix des germes avec les coordonnées x et y
    S = croissance(image2,x,y,255);
    figure(3);imshow(S);
    Je n'ai pas arrivé à comprendre comment je peux faire le choix des germes? Et comment je peux faire la comparaison entre le germe et ses 8 voisins?
    n'importe quelle indication me serait utile pour programmer la fonction croissance,car je suis bloquée et j'ai besoin d'un petit poussé pour avancer un peu.Je vous remercie tout de même.

    -----

  2. #2
    invitea29b3af3

    Re : Aide code matlab

    Salut

    Le choix des germes se fait en fonction de ce que tu veux détecter dans ton image. Par exemple si as une image d'un scanner d'un cerveau, et que tu veux segmenter une certaine zone du cerveau, tu choisis ton germe n'importe où là-dedans et tu lances l'algorithme.

    Dans l'algo de croissance de région (region growing en anglais) en fait tu compares pas un pixel avec ses 4 ou 8 voisins, mais tu compares ses voisins avec le niveau de gris moyen de la région déjà existante. Au départ t'as que le germe, donc 1 pixel, donc forcément tu compares ses voisins avec seulement lui. Et si par exemple ses 8 voisins ont un niveau de gris semblable (et sont donc dans la région), pour leurs voisins à eux tu compareras leurs nvieaux de gris avec la moyenne des 9 pixels qui sont maintenant dans ta région, et pas seulement avec celle du pixel dont tu testes les voisins.

    La comparaison entre un pixel (ton germe par exemple) à la position (x,y) dans l'image "im" avec son voisin de gauche se fait comme ça:
    Code:
    if abs(im(x,y) - im(x-1,y)) <= T
        % alors le pixel à gauche de ton germe est dans la région
    end
    où T est un seuil que tu choisis. Par exemple si ton pixel en (x,y) a un niveau de gris de 125 et son voisin de gauche un niveau de gris entre 122 et 128, et que T = 3, alors il est dans la région, sinon non.

    Pour info il y a déjà des gens qui ont codé l'algo de region growing, qui n'est pas si trivial à coder que ça:
    http://www.mathworks.com/matlabcentr...region-growing
    http://www.mathworks.com/matlabcentr...exchange/32532
    Le code est libre d'accès, le 1er est sans doute plus simple à comprendre que le 2e.

  3. #3
    invitec398a221

    Re : Aide code matlab

    Salut,
    Merci infiniment pour votre réponse, ça m'a aidé énormément

    Citation Envoyé par fiatlux Voir le message
    Salut

    Le choix des germes se fait en fonction de ce que tu veux détecter dans ton image. Par exemple si as une image d'un scanner d'un cerveau, et que tu veux segmenter une certaine zone du cerveau, tu choisis ton germe n'importe où là-dedans et tu lances l'algorithme.
    Les images sur lesquelles je travaille sont des images couleurs de la peau (exp : visage) contenant une tache. Je veux donc détecter ces taches. D'abord, Est ce qu’il n’est pas nécessaire de convertir l’image entrée en niveau de gris car dans le premier code le rgb2gray n'est pas utilisé ?? J’ai essayé de choisir comme germes les pixels les plus foncés (la plus part du temps la tache est plus foncée que la peau) mais ce n’est pas toujours le cas car dans certaines cas l’image peut contenir des cheveux qui sont les plus foncés.
    J’ai utilisé le premier code que vous m’avez donné. La croissance de région dans ce code commence à partir d’un seul germe dont ses coordonnées sont choisit dés le début dans le programme principale. D'après mes recherches j'ai trouvé que les nouvelles approches de la croissance de région commencent par N germes simultanément. Alors je veux que les coordonnées des germes soient listées dés le début et les germes soient sélectionnés automatiquement par le code pour que ce programme soit exécutable sur toutes les images et l'utilisateur ne sera pas à chaque fois obligé d'entrer les coordonnées des germes. Mais comment je peux faire tout ça ???

    La comparaison entre un pixel (ton germe par exemple) à la position (x,y) dans l'image "im" avec son voisin de gauche se fait comme ça:
    Code:
    if abs(im(x,y) - im(x-1,y)) <= T
        % alors le pixel à gauche de ton germe est dans la région
    end
    où T est un seuil que tu choisis. Par exemple si ton pixel en (x,y) a un niveau de gris de 125 et son voisin de gauche un niveau de gris entre 122 et 128, et que T = 3, alors il est dans la région, sinon non.
    Selon quoi je peux choisir la valeur de T?? Dans le premier code que vous m'avez donné T=???

  4. #4
    invitec398a221

    Re : Aide code matlab

    Il parait que j'ai compliqué les choses mais n'importe quelle indication me serait utile

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  2. Code Matlab
    Par invite127e18c5 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 06/03/2012, 16h52
  3. optimisation de code Matlab
    Par invitec35bc9ea dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 06/03/2011, 17h50
  4. code matlab
    Par invite407a0da2 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/11/2010, 10h34
  5. code matlab
    Par invite407a0da2 dans le forum Électronique
    Réponses: 0
    Dernier message: 29/11/2010, 09h20