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 :

[imwrite] Problèmes


Sujet :

Images

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut [imwrite] Problèmes
    Bonsoir à tous,

    J'ai un problème avec la fonction imwrite de Matlab.
    J'ai une image en 256 niveaux de gris, je l'affiche sans soucis, mais lorsque j'essaye d'imprimer cette image a l'aide de la fonction imwrite, elle est en noir et blanc.
    Y a t-il un paramètre à ajouter ?

    Peut être est-il utile d'ajouter que pour afficher l'image j'utilise imagesc et non imshow, parce que sinon j'ai aussi une image en noir et blanc.

    Merci beaucoup
    THomas

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Qu'est ce que tu appelles en noir et blanc ? Tu as que 2 niveaux de gris donc, c'est ça ?

    Tu peux poster ton code aussi, ça nous aidera.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    désolé je n'ai pas pu venir avant, mon image contient 256niveaux de gris pardon.
    Je vais essayer d'explique plus précisément mon problème;
    J'ai une image, sur laquelle j'effectue une rotation d'un certain angle par rapport a un point dans cette image.
    Et mon soucis c'est que lorsque j'utilise la commande imagesc('Mon image') avec le colormap (gray), ca fonctionne correctement (figure1)
    Si je n'utilse pas le colormap (gray) j'ai un résultat en couleur (figure 2)
    et si j'utilise imshow ('Mon image') mon image sort en noir et blanc (figure 3), c'est aussi le résultat que j'obtiens lorsque j'enregistre cette image.
    Y a t'il une fonction pour imprimer l'image qui me permette de d'avoir un résultat pour mon image en 'jpeg' .

    Mon code est le suivant:

    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
     
    function CleanRotateSaveImage
        StructInit;    
        %First Of All rotate each image
        for Index=1:8
            CurrentImage=imread(Image(Index).Path); 
            DesiredAngle=Image(Index).Angle;
            %Clean the Image
            CleanedImage=CleanImage(CurrentImage);    
    %on fait tourner l'image nettoyée d'un angle  
            ImageSaved(Index).Saved=RotateImage(CleanedImage,DesiredAngle); 
     
    %on enregistre l'image       
            imwrite(ImageSaved(Index).Saved,Image(Index).Saved,'jpg');      
            figure(1)
            colormap(gray); 
            imagesc(ImageSaved(Index).Saved); 
            figure(2)
            imagesc(ImageSaved(Index).Saved);
            figure(3)
            colormap(gray);
            imshow(ImageSaved(Index).Saved);
        end
    end
    Et maintenant voici les résultats obtenus:
    Mon image de départ avant rotation est la suivante:


    puis nous avons la figure1 (une fois la rotation effectuée avec les paramètres présentés ci-dessus)


    si on enlève la colormap gray, nous obtenons la figure 2


    et enfin, mon problème, voici le résultat obtenu avec un imshow ou imwrite:

    toutes les informations de relief ont été perdues.
    Quelqu'un saurait-il pourquoi?

    MErci beaucoup d'avance, c'est très important

  4. #4
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Problèmes avec Imwrite
    Salut,

    j'ai l'impression que tu confond entre les fonctions d'affichage imshow, imagesc et celle d'écriture imwrite.
    Pour imagesc c'est normale d'avoir une image couleur si on indique pas la palette de couleur avec colormap, contrairement à imshow.
    On peut aussi afficher avec imview ce qui permet d'afficher les valeurs réelles, donc si les valeurs de l'image traitée sont en dehors de [0 255] pour Uint8 ou [0 1] pour Double, on doit les normaliser.
    Par contre imwrite permet d'ecrire la matrice obtenue sous forme d'image et on peut choisir le format : bmp,tif,... ou autre.

    J'espère que ça peut t'aider.

    A+

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Je te remercie pour ta réponse,

    Ce que j'aimerai savoir c'est s'il y a un moyen d'enregistrer cette image en niveau de gris pour obtenir le même résultat a l'affichage qu'avec un imshow et colormap (gray).
    car dans ma matrice, il n'y a que des valeur comprises entre 0 et 255.

    Ou est ce qu'il existe une autre fonction qui pourrait remplacer imwrite pour obtenir le bon résultat.

    Merci
    Thomas

  6. #6
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Problèmes avec Imwrite
    Salut,

    si ton image est en niveau de gris , elle sera enregistrée en niveau de gris, et d'aprés ce que tu as obtenu avec imshow c'est le cas.
    Pour une image couleur, tu peux toujours la transformer en niveau de gris en utilisant la commande rgb2gray avant de l'enregistrer avec imwrite.


    A+

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Cette manip ne fonctionne pas avec mon image, je ne sias pas pour quoi, voici le message d'erreur qui s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ?? Error using ==> rgb2gray>parse_inputs
    MAP must be a m x 3 array.
     
    Error in ==> rgb2gray at 35
    X = parse_inputs(varargin{:});
     
    Error in ==> TestGray at 2
        J = rgb2gray(I);
    J'ai simplement recopié le message de l'help, cette fonction marche avec leur image et dès que j'utilise mon image j'ai l'erreur ci-dessus...
    Quelqu'un pourrait-il me dire pourquoi?

    Je viens d'essayer avec une autre image en déja en niveaux de gris, et ca ne marche pas non +, c'est certainement la cause.

    y aurait-il une autre fonction?

    Merci beaucoup
    THomas

  8. #8
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Problèmes avec Imwrite
    Salut,

    rgb2gray permet de transformée une image couleur et donc de dimension 3 (hauteur X largeur X 3), en image en niveau de gris de dimension 2 (hauteur X largeur).
    Ton image est déja en niveau de gris , c'est pour cela que tu as un message d'erreur .

    Utilses imwrite directement sans utiliser rgb2gray.

    Exécute ce petit scripte pour mieux comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    image1=imread('flowers.tif');
              size(image1)
              imshow(image1);
              image2=rgb2gray(image1);
              size(image2)
              imshow(image2);
    j'espère que c'est plus claire.

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Salut,

    Désolé, je comprend bien ce que tu me dis, mais je ne vois pas pourquoi mon résultat après imwrite est encore et toujours une image en 2 tons de gris (voir résultat précédent)...
    J'aurais vraiment besoin de comprendre ce phénomène

    Merci beaucoup
    Thomas

  10. #10
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Problèmes avec Imwrite
    Salut,

    imwrite enregistre l'image telle quelle, elle ne modifie pas les valeurs, si le résultat est différent de ce que tu attends c'est que l'erreur vient des calculs ( transformations ) effectués avant.
    je te conseillerai de revoir ton script, et de n'utiliser imwrite que lorsque tu obtiendras le résultat désiré en affichant l'image avec imshow ou imview.
    Tu peux aussi regarder l'histogramme de l'image obtenue pour voir si tu as plusieurs tons de gris ou 2 seulement , la commande c'est imhist.

    A+

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Je te remercie, je vais essayer de trouver l'erreur dans mon script.
    Connaitrais-tu la différence entre imshow et imagesc?

  12. #12
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut Problèmes avec Imwrite
    Je sais qu'avec la fonction imagesc on doit spécifier la palette de couleur avec colormap, et que pour imshow non.
    Tu trouveras en suivant le lien ci dessous des exrcices avec corrections sur le traitement d'image avec Matlab, et plus d'explication:

    http://ltswww.epfl.ch/~coursti/labos0607/

    Bon Courage

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Merci beaucoup
    bye
    Thomas

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

Discussions similaires

  1. [Débutant] problème avec la fonction imwrite
    Par slaima15 dans le forum MATLAB
    Réponses: 3
    Dernier message: 14/03/2011, 13h24
  2. [Débutant] Problème avec imwrite après manipulations sur la matrice à enregistrer
    Par Patchanka dans le forum Images
    Réponses: 2
    Dernier message: 05/06/2009, 17h45
  3. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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