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
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    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 317
    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 317
    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) ?

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    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 317
    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 317
    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

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    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 317
    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 317
    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)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    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 confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    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 : 404
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