# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  un traitement d'image en java

## ins83

Bonjour tout le monde;
j'essaye dans le code java suivant d'afficher les niveaux de gris d'une image  niveaux de gris mais les valeurs affiches sont ngatives alors qu'elles devaient tre entre 0 et 255
quelqu'un peut m'aider?  



```

```

----------


## Gwindor

Bonjour,

Qu'entend-tu par afficher les niveaux de gris d'une image?

Tu veux afficher l'image? son histogramme?

Est-ce une image couleur que tu veux convertir en niveaux de gris?

----------


## pseudocode

Les mthodes BufferedImage.getRGB() retournent une couleur au format sRGB.

Si tu veux le niveau de gris, il va falloir utiliser des formules de conversion, par exemple:



```

```

----------


## millie

Tu peux convertir tes images en BufferedImage comme a :



```

```





```

```

----------


## ins83

Merci de rpondre mais l'image que je traite est en niveau de gris et non une image couleurs

----------


## millie

Bah c'est pareil sauf que chaque champ est gal. Il suffit alors de juste rcuprer une composante (par exemple juste le rouge)

----------


## ins83

Merci mon problme est rsolu j'ai appliqu le code de pseudocode mais je ne comprends pas pourquoi on ne peut pas afficher dirctement les niveaux de gris d'une image noir et blanc  sans passer par une conversion alors qu'en Matlab c'est faisable et c'est beaucoup plus simple!
Et  si on voulait manipuler les niveaux de gris d'une image et ensuite afficher le rsultat que fait on?

----------


## pseudocode

> Merci mon problme est rsolu j'ai appliqu le code de pseudocode mais je ne comprends pas pourquoi on ne peut pas afficher dirctement les niveaux de gris d'une image noir et blanc  sans passer par une conversion alors qu'en Matlab c'est faisable et c'est beaucoup plus simple!


Les methodes getRGB() renvoient TOUJOURS la valeur du pixel au format sRGB, meme si l'image est binaire ou en niveaux de gris. 

Si tu est sr que ton image est en niveaux de gris, tu peux aller directement lire la valeur du pixel dans le Raster.

int[] valeur = im.getData().getPixel(x, y, (int[])null);

cette methode te renvoie la valeur du pixel sous forme de tableau d'entier. Si les pixels de ton image sont cods sur 8 bits (=1 octet), alors ce tableau ne contient qu'une seule valeur (entre 0 et 255) qui reprsente le niveau de gris du pixel:

int graylevel = valeur[0];




> Et  si on voulait manipuler les niveaux de gris d'une image et ensuite afficher le rsultat que fait on?


voila la fonction inverse de celle que j'ai donne:


```

```

----------


## ins83

Merci PseudoCode c'est trs gentil j'ai essay le code et a marche
merci tout le monde ::D:

----------


## GHAZEL Taoufik

salut tout le monde.
je vous dmande comment peut t on passer directment  transformer l'image en noir et blanc sans passer par le niveau de gris.
merci d'avance.

----------


## pseudocode

> salut tout le monde.
> je vous dmande comment peut t on passer directment  transformer l'image en noir et blanc sans passer par le niveau de gris.
> merci d'avance.


Heu... je pense qu'on ne peut pas.

Avec le Dithering, on peut remplacer un niveau de gris (luminosit) par un motif "noir et blanc". Mais je ne vois pas comment associer une "couleur" (teinte)  un tel motif.

----------


## GHAZEL Taoufik

salut.
le Dithering ne resoudre pas mon problme, en effet le genre de mon problme est comme celui du filtre de photocopie qui va rendre la couleur gris un noir et la couleur blanc plus fonc.
Alors comment peut t on rendre la photo lu par la CAM une photo avec des chiffres blans clairs sur un arrire plan noir fonc au lieu de gris.
merci. ::king::

----------


## pseudocode

Tu peux faire soit un filtre de contraste, soit un seuillage binaire.

----------

