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

Graphisme Java Discussion :

Fixer la valeur du blanc pour une image en niveaux de gris


Sujet :

Graphisme Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Fixer la valeur du blanc pour une image en niveaux de gris
    Bonjour à tous,

    je créé un BufferedImage de type BufferedImage.TYPE_USHORT_GRAY, c'est à dire une image en niveau de gris codée sous la forme de U16 et je l'affiche dans une JFrame.

    Le problème est que l'image que je créée n'utilise que les 12 premiers bits pour déterminer la valeur d'un pixel et non pas les 16 prévus (les 4 premiers bits seront donc toujours égaux à 0). Donc les valeurs de mes pixels varient entre 0 et 2^12 au lieu de 0 et 2^16. Le mode d'affichage est fait tel que blanc = 2^16. Les variations de couleurs possibles sur mon image sont donc très faibles (on reste toujours dans le gris).

    Je voudrais savoir si il est possible de fixer la valeur max d'une image (ie la valeur du blanc) pour l'affichage de façon à ce que les pixels de mon image varient du noir au blanc.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BufferedImage bi;
    bi = new BufferedImage(largeur,hauteur,BufferedImage.TYPE_USHORT_GRAY);
    short imageUShort[]; // mon image utilisant que les 12 premiers bits
    WritableRaster wr = bi.getRaster();
    wr.setDataElements (0, 0, largeur,hauteur,imageUShort);
    Merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    C'est bon j'ai trouvé. Il faut modifier le ColorModel associé à la BufferedImage et lui donner le nombre de bits significatifs pour le codage d'un pixel.

    Voila mon code :

    ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[] {12}, false, false, Transparency.OPAQUE, DataBuffer.TYPE_USHORT);
    WritableRaster wr = cm.createCompatibleWritableRaster(largeur,hauteur);
    DataBufferUShort data = (DataBufferUShort) wr.getDataBuffer();
    short[] imageUShort = data.getData();
    // on modifie imageUShort avec la valeur de l'image à affichée
    bi = new BufferedImage(cm, wr, false, null);
    Si ça peut aider quelqu'un...

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/03/2015, 14h57
  2. Réponses: 3
    Dernier message: 18/11/2011, 10h19
  3. Réponses: 0
    Dernier message: 29/10/2008, 13h14
  4. Détection de visages dans une image en niveaux de gris
    Par bert_ dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/04/2007, 18h04
  5. Réponses: 1
    Dernier message: 08/03/2007, 15h39

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