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 :

Inverser les niveau de gris d'une image : problème de format d'entier


Sujet :

Images

  1. #1
    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 Inverser les niveau de gris d'une image : problème de format d'entier
    J'aurais une petite question :

    J'ai une image en niveau de gris, et je veux inverser les niveaux de gris de cette image.

    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i=1:L
       for j=1:l      
          J(i,j)=255-I(i,j);            
       end
    end
    imshow(J);
    Mais mes niveaux de gris sont codés en uint8, et il me met en message d'erreur que je ne peux pas utiliser la soustraction avec des entiers non signés. Quel format dois-je alors utiliser ?
    J'ai essayé de chercher des fonctions qui changent le format, je n'ai pas trouvé

    Merci,

  2. #2
    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
    C'est bizarre parce que j'ai essayé ton code et il fonctionne correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Image=imread('d:\TestImage\photoNB.jpg');
    [L,l]=size(Image);
    for i=1:L
       for j=1:l      
          J1(i,j)=255-Image(i,j);            
       end
    end
    imshow(J1);
    imwrite(J1,'d:\TestImage\photoNBApres.jpg','jpg');
    Avec ce code j'obtiens les résultats suivants:

    Image avant:

    Image Après:


    Je pense que c'est le résultat que tu souhaite obtenir.
    Donc to code marche. Ca vient peut etre de ton image.
    Peut etre que dans ton image tu as un gris qui vaut 255, soit mettre dans ta nouvelle matrice 0, et c'est peut etre ca qu'il n'aime pas.
    Esssaye de faire un test sur le 0, tu verras bien si c'est la que ca plante.
    ex; Si tu as 0 sauter la valeur, si ca marche c'est que ca vient de la.
    Et dans ce cas la, tu peux par exemple mettre cette valeur a 1 au lieu de 0.

    Je ne peux pas t'aider plus.
    Désolé

    Thomas

  3. #3
    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
    Merci pour ta réponse.

    Ca n'est pas un problème de 0.
    J'ai aussi repris exactement ton code, en reprenant la même image que tu as utilisée, et j'ai toujours le même message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> -
    Function '-' is not defined for values of class 'uint8'.
     
    Error in ==> C:\MATLAB6p5\work\lecture.m
    On line 27  ==>       J1(i,j)=255-Image(i,j);
    grrrr ça m'énèrve !

    De plus, quand je vais dans l'aide sur le format uint8, j'ai comme "aide" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Function '+' not defined for variables of class 'uint8
    qu'est ce que c'est que cette histoire ?
    je peux pas additionner en uint8 apparemment.

    Je comprends plus rien ..

  4. #4
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Mmh, je soupçonne une version de Matlab différente (tu as la 6.5, ce n'est pas vraiment la dernière)...
    Maintenant, je ne peux pas conclure, je n'ai pas testé.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  5. #5
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Par rapport au message d'erreur avec uint8 ,tu pourrais regarder cette sol:
    http://www.mathworks.com/support/sol...lution=1-19PIU
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  6. #6
    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
    Merci, je testerai ça.

    Quelle version avez-vous de Matlab ? ( j'arrive toujours pas à comprendre pourquoi ce type d'opérations marche sous une version et pas une autre)

  7. #7
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    moi j'ai MATLAB 7.3 (R2006b)
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

Discussions similaires

  1. objet en niveau de gris ds une image labelisée
    Par ImagingAllthe dans le forum Images
    Réponses: 4
    Dernier message: 23/10/2009, 15h29
  2. Réponses: 15
    Dernier message: 07/06/2009, 05h22
  3. java extraire les niveaux de gris d'une image
    Par wildthing dans le forum Général Java
    Réponses: 11
    Dernier message: 20/05/2009, 13h41
  4. niveau de gris d'une image
    Par bestof_net dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/05/2009, 21h44
  5. Niveau de gris d'une image
    Par chahinez dans le forum C++Builder
    Réponses: 13
    Dernier message: 12/06/2006, 21h17

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