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 :

Enregistrement de sequences d'images


Sujet :

Images

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut Enregistrement de sequences d'images
    Bonjour,

    J'espere etre sur le bon forum.
    Je travaille sur des sequences d'images .tif, j'ai trouve comment les diviser en plusieurs images pour pouvoir travailler dessus sous Matlab, mais je n'arrive pas a les enregistrer une fois traitee dans un autre fichier .tif. J'ai cherche dans l'aide mais tout ce aue j'essaye me donne un fichier ou seule la derniere image de la sequence est enregistree. J'ai utilise imwrite et a mon avis c'est moi qui fait une betise.
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Peux-tu nous montrer ton code ?
    En particulier lorsque tu divises ton image en plusieurs images : dans quelle(s) variable(s) sont enregistrées ces nouvelles images.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    Salut
    Bien sur, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    info = imfinfo('C:\Documents and Settings\GaudinC\Desktop\caro\image\0110074bewerkt-1_20nm.tif');
    hauteur = info(1).Height;
    largeur = info(1).Width;
     
     
    init = uint8(zeros(hauteur,largeur,1,200));
    % the movie will cut in 200 parts
     
    for frame=1:200
    [init(:,:,:,frame),map] = imread('C:\Documents and Settings\GaudinC\Desktop\caro\image\0110074bewerkt-1_20nm.tif',frame);
    J'ai juste mis la partie interressante, ce que je ne sais pas c'est si je dois faire l'enregistrement dans la boucle ou apres et surtout quelle fonction utiliser.
    Merci beaucoup.

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Pour répondre à ta question finale je dirais de faire l'enregistrement dans la boucle (à moins que tu n'enregistres toutes tes images dans la boucle mais ça ne doit pas être le cas vu ton premier post)
    Et pour la fonction IMWRITE est effectivement adaptée.

    Par contre ton code ne m'avance guère => quelle est la variable que tu veux enregistrer ? init(:,:,:,frame) ?

    D'autre part quel nom donnes-tu à ton fichier ?
    Une FAQ qui peut t'aider : Comment nommer une suite de fichiers : nom_1.ext, nom_2.ext... nom_N.ext ?


    Sinon le tutoriel Gestion des images peut peut-être t'aider.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    Je dois enregistrer la variable init dans un autre fichier 'essai.tif'' par exemple. Le probleme lorsque je fais l'enregistrement dans la boucle, c'est que je pense que la nouvelle image ecrase la derniere enregistree, car le fichier cree ne contient qu'une seule image. Y a t'il une etape que j'oublie de faire ? Peut etre une option qui m'aurait echappe.
    init contient 200 images que je dois sauvegarder dans le fichier 'essai'.

    Merci.

  6. #6
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Je ne dois pas bien comprendre : tu essayes d'enregistrer 200 images dans un seul fichier image ?
    Il me semble bien que c'est impossible
    Un fichier image = 1 image.
    Donc oui à chaque imwrite sur ton fichier essai.tif l'ancienne image est écrasée.
    Ceci dit je ne suis pas une spécialiste des images

    Et que se passe-t-il si tu essayes d'enregistrer la variable init "entière" dans ton fichier ?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    J'ai essayer de l'enregister entierement a la fin de la boucle mais j'obtiens un fichier completement vide.
    Je suis desolee, je n'est pas ete assez precise, en fait a la base ce sont des sequences video je dois filtrer le bruit image par image et reconstituer un fichier .tif avec toute la sequence.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Je ne dois pas bien comprendre : tu essayes d'enregistrer 200 images dans un seul fichier image ?
    Il me semble bien que c'est impossible
    Un fichier image = 1 image.
    Le format tif permet d'enregistrer une image en ayant plus de 2 dimensions. La troisième dimension représentant ici le temps apparemment.

    J'ai pas la solution au problème mais as-tu essayé la fonction imwrite avec l'option WriteMode à append?

  9. #9
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par vinc-mai Voir le message
    Le format tif permet d'enregistrer une image en ayant plus de 2 dimensions. La troisième dimension représentant ici le temps apparemment.

    J'ai pas la solution au problème mais as-tu essayé la fonction imwrite avec l'option WriteMode à append?
    Merci pour les infos
    Mais là apparemment sa variable init a 4 dimensions...
    Bien que la 3ème dimension est à 1 c'est bizarre ?

    Pourquoi initialises-tu init de la façon suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    init = uint8(zeros(hauteur,largeur,1,200));

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    Pourquoi initialises-tu init de la façon suivante ?
    euh... j'qi recopier l'aide de matlab en l'adaptant a mon programme c'est vrai que je ne me suis pas pose la question. Peut etre que c'est inutile, je pensai que c'etait le debut de la numerotation de mes images.
    Je n'ai pas essayer l'option append, comment elle marche, svp ?

    Merci.

  11. #11
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Donc un truc à essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    init = uint8(zeros(hauteur,largeur,200));
    %blabla
    for frame=1:200
    [init(:,:,frame),map]=...
    Comme ça init ressemblera plus à une variable image à 3 dimensions.
    Et tu fais un IMWRITE "global" à la fin de la boucle en enregistrant init en entier.

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    J'ai enleve la dimension inutile mais imwrite ne marche toujours pas, il me cree un fichier vide, je l'ai peut etre mal utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imwrite ([init,map],'C:\Documents and Settings\GaudinC\Desktop\Caro\Image\essai.tif','tiff');
    Je ne suis pas sure de moi.

  13. #13
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Il ne faut pas concaténer tes 2 variables init et map : donc enlèves-moi ces crochets et réessayes.

    Pour expliquer : là du coup la matrice (représentant une image, même pas sure) que tu essayes d'enregistrer est [init,map] (je ne sais même pas d'ailleurs comment il ne te sort pas une erreur sur ce coup-là)

  14. #14
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    Citation Envoyé par caro95470 Voir le message
    Merci pour les infos
    Mais là apparemment sa variable init a 4 dimensions...
    Bien que la 3ème dimension est à 1 c'est bizarre ?
    Peut-être que la troisième est réservée à la troisième dimension de l'espace est la 4ème au temps !??

  15. #15
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    Desolee.
    J'ai essaye sans les crochets et il me fait une erreur :
    ??? Error using ==> imwrite
    Invalid colormap
    Je dois utilise imwrite juste avec ma variable init ? Parce que si je fais ca, il n'y a aucun enregistrement.

  16. #16
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    J'ai relu la doc de IMWRITE et quand même il y a quelque chose qui m'échappe :
    A can be an M-by-N (grayscale image) or M-by-N-by-3 (truecolor image) array. A cannot be an empty array. If the format specified is TIFF, imwrite can also accept an M-by-N-by-4 array containing color data that uses the CMYK color space. For information about the class of the input array and the output image, see Class Support.
    Là ta matrice init est soit N*M*200 (ce que tu avais au début), soit M*N*200 donc a priori ça ne peut pas fonctionner (bizarre que tu n'aies pas de message d'erreur à l'appel de imwrite).

    Tu peux peut-être tenté la solution de vinc-mai, mais je suis quand même sceptique.
    A placer dans la boucle (avec ou sans la variable map) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imwrite(init(:,:,frame),map,'C:\Documents and Settings\GaudinC\Desktop\Caro\Image\essai.tif','tiff','WriteMode','append');

  17. #17
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    imwrite(init(:,:,:,1),'matlab.tif','compression','none')
    imwrite(init(:,:,:,2),'matlab.tif','compression','none','WriteMode','append')
    J'ai essayé ce code avec une image tif 3d. Lorque j'ouvre matlab.tif avec un logiciel d'image, je vois bien une image 3d ayant 2 voxels d'épaisseur.

    Cela marche-t-il avec ton image?

    Ensuite pour la "map" l'aide indique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imwrite(init(...),map,...)
    J'ai pas de map sur mes images 3d du coup je peux pas essayé.

  18. #18
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    Il me met une erreur pour vos 2 suggestions, je ne comprends pas pourquoi.

    ??? Error using ==> imwrite
    Invalid colormap

  19. #19
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2008
    Messages : 107
    Par défaut
    c'est bon j'ai reussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imwrite([init(:,:,frame),map],'C:\Documents and Settings\GaudinC\Desktop\Caro\Image\essai.tif','compression','none','WriteMode','append');
    Je sais, j'ai remis les crochets mais ca a l'air de marcher comme ca.
    J'ai juste une derniere question si vous savez comment je peux recuperer le nombre d'images contenues dans un fichier ? J'en ai certain avec 200 images et d'autres avec 600 et je veux automatiser mes traitement pour toutes les images.

    Encore merci.

  20. #20
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    La taille de imfinfo('image.tif') doit être égale à ton nombre d'images.

    Sinon le champ ImageDescription de imfinfo donne le nombre d'images. Cependant, je redoute que ce champ soit différent suivant le logiciel utilisé pour enregistrer l'image.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. sequences d'images avec flash
    Par irnatene dans le forum Flash
    Réponses: 2
    Dernier message: 23/04/2008, 11h59
  2. Enregistrement et chargement d'images
    Par Merel dans le forum MATLAB
    Réponses: 8
    Dernier message: 11/04/2008, 13h59
  3. [Upload] Enregistrer chemin d'une image dans ma BDD
    Par Erwan M. dans le forum Langage
    Réponses: 6
    Dernier message: 02/04/2008, 15h45
  4. Détection de mouvement dans une sequence d'image
    Par soforan dans le forum Images
    Réponses: 3
    Dernier message: 25/01/2008, 17h58
  5. sequences d'image en C
    Par milad dans le forum C
    Réponses: 3
    Dernier message: 22/03/2007, 12h53

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