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 :

Définir une grille sur une image


Sujet :

Images

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Définir une grille sur une image
    Bonjour,

    J'ai une image à niveaux de gris de type uint8, de dimensions (1344x1024 pixels). Je veux définir cette image sur une grille de taille (23x29). Pour commencer, j'ai définit la grille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nbdivx=30;
    nbdivy=23;
    xedges=linspace(0,1344,nbdivx);
    yedges=linspace(0,1024,nbdivy);
     
    [Ybox,Xbox]=meshgrid(yedges,xedges);
    Quelqu'un a une piste pour continuer?

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Je ne comprends pas très bien ce que tu cherches à faire ?

    Tu veux juste afficher l'image et la grille superposées ou bien faire la fusion entre les deux (incruster la grille dans l'image) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Dut Voir le message
    Je ne comprends pas très bien ce que tu cherches à faire ?

    Tu veux juste afficher l'image et la grille superposées ou bien faire la fusion entre les deux (incruster la grille dans l'image) ?
    Le but de mon programme est de décomposer mon image en plusieurs cases pour calculer le niveau de gris moyen à l'intérieur de chaque case. Il s'agit de définir mon image dans la grille.

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Le plus simple est de calculer les dimensions de chaque case en pixels puis de boucler à partir de ces dimensions.

    Voici l'idée :

    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
    I = rand(1344,1024);
     
    nbdivx=30;
    nbdivy=23;
     
    nbpixx = floor(size(I,2)/nbdivx);
    nbpixy = floor(size(I,1)/nbdivy);
     
    for r = 1:nbdivy
        for c = 1:nbdivx
     
            I((r-1)*npixy+1:r*npixy,(c-1)*npixx+1:c*npixx);
     
        end
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Calcul niveau de gris
    Citation Envoyé par Dut Voir le message
    Le plus simple est de calculer les dimensions de chaque case en pixels puis de boucler à partir de ces dimensions.

    Voici l'idée :

    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
    I = rand(1344,1024);
     
    nbdivx=30;
    nbdivy=23;
     
    nbpixx = floor(size(I,2)/nbdivx);
    nbpixy = floor(size(I,1)/nbdivy);
     
    for r = 1:nbdivy
        for c = 1:nbdivx
     
            I((r-1)*npixy+1:r*npixy,(c-1)*npixx+1:c*npixx);
     
        end
    end

    Est ce que la fonction 'histc' est utilisable pour calculer le niveau de gris moyen sur chaque fenêtre? Si c'est le cas, comment l'employer avec la fonction blkproc?

    Merci d'avance

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Il faut utiliser la fonction MEAN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = blkproc(I,[nbpixy nbpixx],@(x) mean(mean(x)));
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = blkproc(I,[nbpixy nbpixx],@(x) mean(x(:)));
    Voir les fonction anonymes dans la documentation de MATLAB pour comprendre la déclaration de @(x)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 143
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Le plus simple est de calculer les dimensions de chaque case en pixels puis de boucler à partir de ces dimensions.

    Voici l'idée :

    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
    I = rand(1344,1024);
     
    nbdivx=30;
    nbdivy=23;
     
    nbpixx = floor(size(I,2)/nbdivx);
    nbpixy = floor(size(I,1)/nbdivy);
     
    for r = 1:nbdivy
        for c = 1:nbdivx
     
            I((r-1)*npixy+1:r*npixy,(c-1)*npixx+1:c*npixx);
     
        end
    end
    Bonjour,

    je suis intéressé par cet algo; cependant ce dernier ne semble pas fonctionner.
    Pouvez-vous m'apporter une aide sur ce sujet ?

    Merci.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 143
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par macErmite Voir le message
    Bonjour,

    je suis intéressé par cet algo; cependant ce dernier ne semble pas fonctionner.
    Pouvez-vous m'apporter une aide sur ce sujet ?


    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
    image = im2double(imread('ngc6543a.jpg')); 
     
    taillePixelX=2;
    taillePixelY=2;
     
    nbPixelX = floor(size(image,2)/taillePixelX);
    nbPixelY = floor(size(image,1)/taillePixelY);
     
    for r = 1:taillePixelY % ligne capteur
        for c = 1:taillePixelX % colonne capteur
           imageCapteur = image((r-1)*nbPixelY+1:r*nbPixelY ,(c-1)*nbPixelX+1:c*nbPixelX);
        end
    end
     
    figure
    subplot(221)
    imshow(image);
    colorbar
    subplot(222)
    imagesc(image);
    colorbar
    subplot(223)
    imshow(imageCapteur);
    colorbar
    subplot(224)
    imagesc(imageCapteur);
    colorbar
    Merci.
    Nom : imageCapteur.png
Affichages : 355
Taille : 82,3 Ko

    En fait, j'ai l'impression que cela a pour effet d'agrandir une zone de l'image. Il n'y a pas d'effet de pixellisation attendu.

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Recuperer une valeur dans une grille sur une image
    Par gwal21 dans le forum Images
    Réponses: 3
    Dernier message: 26/02/2011, 23h41
  3. Calculer une intersection sur une grille
    Par Greg L. dans le forum Mathématiques
    Réponses: 8
    Dernier message: 26/06/2008, 15h51
  4. [GDI+] superpositionn d'une grille sur l'image
    Par jobigoud dans le forum C#
    Réponses: 3
    Dernier message: 27/10/2007, 20h45
  5. appliquer une texture sur une grille
    Par franc82 dans le forum OpenGL
    Réponses: 6
    Dernier message: 02/03/2007, 16h17

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