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 :

Traitement image par groupe de 180 [Débutant]


Sujet :

Images

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Traitement image par groupe de 180
    Bonjour,

    Après plusieurs recherches je n'ai pas trouvé ce que je voulais, seulement des pistes mais je n'arrive pas à faire le code que je veux. Voilà le problème :

    J'ai un dossier contenant 8100 images, je veux toutes les traiter mais par groupe de 180.
    Ce que je pensais faire c'est :

    Une boucle qui sélectionne les 180 premières images, les lise, fasse des calculs dans cette boucle (moyenne etc).
    Jusque là je n'ai pas de problèmes mais là où je bute c'est pour passer aux 180 images suivantes..
    Il faudrait une boucle englobant le tout, qui partage d'abord les 8100 images en groupes de 180 images? Et chaque groupe serait indexé? Et donc je traiterai groupe par groupe?

    Je suis perdu mais j'espère que vous avez compris là où je veux en venir, merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    il faudrait nous montrer la structure de ton code pour que l'on puisse t'aider efficacement. Tu devrais pouvoir faire une boucle du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for k=1:180:8100
    … traitement par groupe de 180
    end
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Je ne comprends pas ce que fait le 8100 ici? Je suis pas très doué en boucle, pourtant c'est la base

    Pour en venir à mon code, prenons seulement 180 images pour commencer.
    A l'heure actuelle la boucle est sensée lire une image appelée nuit02a03-i.fits avec i variant de 1 à 180. Avant de recommencer un tour de boucle, elle stock l'image (matrice) indexée i dans une grande matrice appelée matricefinale. Et a chaque tour la nouvelle matrice img contenant l'image nuit02a03-i.fits est stockée dans la matricefinale à la suite de la précédente. Je ne sais pas si cela fonctionne car je ne peux pas l'essayer.. Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    repertoire = 'C:\Users\blablabla..';
     
    for i=1:180;
     
        filenam = sprintf('nuit02a03-%01d.fits',i);
        chemin = fullfile(repertoire, filenam);
     
        img = fitsread(chemin);
        matricefinale = [ matricefinale img ]
    end;
    Ainsi, j’obtiens une grande matrice (ou plutôt un tenseur de rang 3) contenant mes 180 images empilées suivant Z. Je peux donc faire la moyenne de toutes les valeurs de ce tenseur et enregistrer cette moyenne dans un vecteur. Mais ici c'est seulement pour 180 images.. Et j'ai vraiment du mal à comprendre comment réitérer cette opération mais en partant d'un i = 181;360 et ce jusqu'à 8100..

    Merci d'avance

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour

    Un truc dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    repertoire = 'C:\Users\blablabla..';
     
    infos = dir(repertoire);
     
    for q=1:180:length(infos.name)-2-180
         for i=q:q+180;
             chemin = fullfile(repertoire, infos.name(i+2);
              img = fitsread(chemin);
              matricefinale{q,1} = cat(3,matricefinale,img);
         end
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Merci, ton code semble être exactement ce qu'il me faut! Cependant je ne comprends le infos.name(i+2). (Pour le code suivant j'ai mis i au lieu de i+2 du coup, est-ce une erreur de ma part?)

    Admettons que je n'ai plus besoin de ces sous-séquences, que je traite les 8100 images d'un coup.
    Dans une boucle for je fais la lecture de l'image, ensuite je modifie l'image et je calcule sa moyenne (moyenne de la valeur des pixels). Je veux ensuite entrer cette valeur dans une matrice à la position 1x1, et au second tour de boucle mettre la seconde moyenne à la position 1x2 etc etc (toujours une ligne). Est-ce que la dernière ligne me permet de faire ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    repertoire = 'C:\Users\blablabla..';
    infos = dir(repertoire);
     
    for i=1:num;
        chemin = fullfile(repertoire, infos.name(i));
        img = fitsread(chemin);
        pupill = fonction_obtenir_pupille(img,1500);
        moy = fonction_intensite_moyenne(pupill);
        allmoy = [ allmoy , moy ];
    end
    Merci pour votre aide en tout cas!

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    J'ai finalement compris pourquoi le i+2 était important, car autrement avec i et i+1 on traite la première image 2 ou 3 fois. Par contre dans la syntaxe tu t'es trompé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = fullfile(repertoire, infos(i+2).name);
    Mais sinon ça a l'air de vouloir fonctionner sauf pour la partie que j'ai modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    allmoy = [ allmoy , moy ];
    Merci beaucoup

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Le i+2 c'est parce que la fonction dir te renvoie . et .. en deux premières sorties.

    Est-ce que la dernière ligne me permet de faire ça?
    Oui, mais n'oublie pas d'initialiser ta variable allmoy
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Comme ceci?

    avec ce code en dehors de la boucle, tout fonctionne c'est super, thanks!

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

Discussions similaires

  1. Traitement d'images par SOM
    Par salhi_m dans le forum Intelligence artificielle
    Réponses: 5
    Dernier message: 26/01/2009, 13h24
  2. [blkproc] Traitement d'image par blocs
    Par StitchP dans le forum Images
    Réponses: 3
    Dernier message: 01/07/2008, 10h12
  3. [MySQL] Envoi d'images par formulaire et post-traitement
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/04/2006, 13h58

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