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

Images Discussion :

Créer une matrice d'image binaire à partir de coordonées de points


Sujet :

Images

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Créer une matrice d'image binaire à partir de coordonées de points
    Bonjour,
    j'espère poster dans le bon forum, mais comme depuis le début de mon projet, j'utilise des méthodes présentées ici, ...
    Pour ma prochaine étape, et valider mon programme dans des cas quelconques, je souhaite générer aléatoirement des objets. La représentation de mes objets est sous forme de matrice 30*30 constituée de 1 et de 0. (1 si l'objet va occupé le mètre carré correspondant et 0 si ce mètre carré est entièrement vide). C'est à cause de ces modélisations, que nous avons décidé d'utiliser les méthodes du traitement d'image.
    Mon problème actuel est que je veux à partir de sommets (nombres de sommets et coordonnées de ces sommets générées aléatoirement), obtenir la matrice image correspondante.
    Je dois avouer que je débute complètement en matlab et traitement d'image.
    A priori vu ce que j'ai déjà fait, je suis capable de faire les générations aléatoires.
    Mon problème se situe à la reconnaissance des pixels occupés et ceux vides.
    Je vous remercie de l'aide que vous pourriez m'apporter.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Tu aurais un petit exemple avec quelques données numériques ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Pour prendre un exemple :

    disons que je souhaite obtenir une matrice 30*30.
    Je crée une matrice nulle de cette taille. A=zeros(30,30)
    Puis avec round(rand(1)*30) etc, j'obtiens n=6 points de coordonnées respectives :
    (17,7), (25,8), (23,20), (6,18), (18,20), (19,5)
    Je considère alors la forme convexe formée par ces 6 points (en les reliant les uns aux autres)
    Je souhaite obtenir une matrice indiquant 1 pour chaque case que l'objet occupe et 0 pour les cases vides

    (celà correspond au procédé inverse de celui de rechercher les sommets d'une image à partir de sa matrice avec la transformée de Hought)
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Essaie ceci :
    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
     
    A = rand(30,30);
     
    XY = [17 7 ; 25 8 ; 23 20 ; 10 18 ; 8 10 ; 17 7 ];
     
    figure
    subplot(2,1,1)
    imagesc(A);
    axis image
    hold on
    plot(XY(:,1),XY(:,2),'ko-')
     
    [x,y] = meshgrid(1:30);
    in = inpolygon(x,y,XY(:,1),XY(:,2));
     
    subplot(2,1,2)
    imagesc(in)
    axis image

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ce code correspond exactement à ce que je cherche à faire. Je vais donc essayer de l'utiliser pour générer aléatoirement ce type de formes.
    Merci beaucoup.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    rebonjour
    alors j'ai écris le programme mais je tombe sur un nouveau problème :
    le programme relie les points les uns aux autres dans leur ordre d'enregistrements. Alors que moi, je souhaiterais qu'il considère la forme pleine et convexe formée par ces points

    J'ai essayé de classer les points suivant une de leurs coordonnée (y) mais celà ne suffit pas

    voici le programme que j'ai écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    N=3+round(rand(1)*7);
    XY=ones(N,2);
    for i=1:N
    XY(i,1)=round(rand(1)*30)
    XY(i,2)=round(rand(1)*30)
    end
    [pasbesoin,idx] = sort(XY(:,2))
    XY=XY(idx,:)
    [x,y] = meshgrid(1:30);
    in = inpolygon(x,y,XY(:,1),XY(:,2));
     
    subplot(2,1,2)
    imagesc(in)
    axis image
    voici un cas où j'obtiens ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    XY =[
        10     6
        15     6
        13     7
        13     9
        19    11
        13    21
        14    24
        17    29
        15    30]
    Je n'arrive pas à mettre l'image obtenue en fichier joint ni la représentation donnée par la fonction plot(XY(:,1),XY(:,2),'ko-')

    J'avais pensé utiliser convhulln() mais je ne comprend pas trop comment cette fonction marche et si c'est ce qu'il faut utiliser.
    Quelqu'un a-t-il une idée?

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 882
    Points
    52 882
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    N = 3+round(rand(1)*7);
    XY = round(rand(N,2)*30);
     
    K = convhull(XY(:,1),XY(:,2));
    XY = XY(K,:);
     
    [x,y] = meshgrid(1:30);
    in = inpolygon(x,y,XY(:,1),XY(:,2));
     
    subplot(2,1,2)
    imagesc(in)
    axis image

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    ouah ça marche super bien
    merci beaucoup Dut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer une matrice à partir de coordonnées 3D
    Par Décembre dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/07/2010, 15h00
  2. [Débutant] créer une matrice à partir de 2 autres de tailles différentes
    Par chevalvapeur dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/12/2009, 14h57
  3. créer une matrice à partir d'un fichier
    Par dododawn dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/11/2008, 23h02
  4. [Débutant] Créer une matrice à partir d'un fichier .txt
    Par niepoc dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/05/2008, 22h40
  5. Créer une matrice symétrique à partir de 3 colonnes
    Par vincent550 dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/04/2007, 13h35

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