Traitement d'image [Résolu]

Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 18 nov. 2013 à 22:15 - Dernière réponse :
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 21 nov. 2013 à 07:49
Bonjour ;
Je programme une application sous java qui fait le traitement d'image.
Mais j'ai un problème avec l'intensité de l'image même si je ne fais pas de traitement juste récupération des pixels puis affichage l'image devient un peu sombre.
voici url de l'image original et après faire récupération puis l'affichage:
https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-ash3/995534_234385293397562_1279017317_n.jpg
Voici code pour récupérée les pixels :
public void First(){
    try {
        BuImg2 = ImageIO.read(new File(UrlPhoto));       } 
    catch (IOException e) {
        e.printStackTrace();
        System.out.println("Excception BuImg     ");
    }
    java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
    Image image = toolkit.getImage(UrlPhoto);
    Height=image.getHeight(null);
    Width=image.getWidth(null);
    System.out.println("valeur Height : "+Height+"  valeur Width : "+Width);
    pixelsMP = new double[Width][Height];
    pixelInt = new int[Width][Height];
    for (int i=0;i<(Width);i++){
        for (int j=0;j<(Height);j++){
            pixelInt[i][j]=0;
            pixelsMP [i][j]=0;
        }
    }
}

Pour l'affichage des pixels :
BufferedImage inm4;
inm4 = new BufferedImage(Width,Height,BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = inm4.getRaster();
  
for (int i=0;i<Width;i++){
    for (int j=0;j<Height;j++){
        int rt=(int)(pixelInt[i][j]); 
        inm4.setRGB(i, j, rt);
    }
}
Afficher la suite 

Votre réponse

13 réponses

Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- Modifié par cs_Julien39 le 19/11/2013 à 08:43
0
Merci
Salut,

Je te donne une fonction qui me permet de modifier la luminosité d'une image (sans la parcourir pixel par pixel) :
public BufferedImage transformer(BufferedImage image) {
        RescaleOp brighterOp = new RescaleOp(ponderation, 0, null);
        return brighterOp.filter(image, null);
}


Si tu veux tester ca, tu peux utiliser ce projet : http://codes-sources.commentcamarche.net/source/55156-traitement-d-images
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 19 nov. 2013 à 10:24
0
Merci
Bonjour;
Merci pour votre réponse, Mon but et de faire autre traitement sur l'image mais je perds la luminosité même si je ne fait que la récupération des pixels puis les affichés
Commenter la réponse de Bel.kamal
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 19 nov. 2013 à 10:47
0
Merci
Dans ce cas, essayes ceci :
inm4 = new BufferedImage(Width,Height,,BufferedImage.TYPE_INT_RGB)
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 19 nov. 2013 à 17:15
0
Merci
Merci pour votre aide, sa ne marche pas tjr voici l'image afficher avec inm4 = new BufferedImage(Width,Height,,BufferedImage.TYPE_INT_RGB) :
https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-prn2/s403x403/1466156_234614820041276_2138812277_n.jpg
Comme s'il y'a juste le composant Bleu
Commenter la réponse de Bel.kamal
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 20 nov. 2013 à 07:58
0
Merci
Peux tu me donner le code qui te permet de remplir pixelInt ?

Tu devrais utiliser directement une BufferedImage et la lire avec ImageIO.read
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 20 nov. 2013 à 10:27
0
Merci
Merci encore pour vos réponse, Mon but est de récupéré les pixels de l'image faire des algorithmes sur les pixels puis affichés l'image par la suite. Mais quand je ne fais que la récupération puis l'affichage des pixels je perde la luminosité.
Voici le code pour récupérer les pixels:


int pixel;

for (int i=0;i<Width;i++){
for (int j=0;j<Height;j++){

pixel=GetLastBytes(BuImg.getRGB(i,j));
pixelInt[i][j]=pixel
}}
Commenter la réponse de Bel.kamal
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 20 nov. 2013 à 11:22
0
Merci
Et le contenu de la méthode GetLastBytes ?
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 20 nov. 2013 à 11:37
0
Merci
dsl je l'est pas mis, voici le code :
public int GetLastBytes(long original) {

String hexBytes = Long.toHexString(original);

return Integer.parseInt(hexBytes.substring(hexBytes.length()-2),16);
}
Commenter la réponse de Bel.kamal
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 20 nov. 2013 à 11:45
0
Merci
Si j'enlève la fonction GetLastBytes sa marche bien mai les pixels ne sont pas entre 0 et 255
Commenter la réponse de Bel.kamal
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 20 nov. 2013 à 14:21
0
Merci
On a donc identifié le problème.

Le RGB n'est pas entre 0 et 255. Pourquoi veux tu qu'il le soit ?
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 20 nov. 2013 à 14:23
0
Merci
Pour les couleurs de base (rouge vert et bleu), tu as des nuances sur 255 tons.

Mais le RGB est une facon de représenter toutes ces couleurs en un seul nombre http://fr.wikipedia.org/wiki/Red_Green_Blue
Commenter la réponse de cs_Julien39
Messages postés
7
Date d'inscription
lundi 18 novembre 2013
Dernière intervention
20 novembre 2013
- 20 nov. 2013 à 16:52
0
Merci
Boujour;
oui c résolut, Merci pour votre aide.
puisque Je travaille sur des images au niveau de gris je voudrais avoir un nbr caractérisant le pixel entra 0 et 255.
Commenter la réponse de Bel.kamal
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 21 nov. 2013 à 07:49
0
Merci
Le rgb correspondant au niveau de gris est :
Color c = new Color(rgbInitial);
poidsGris = (c.getRed() + c.getGreen() + c.getBlue()) / 3;
rgbGris = new Color(poidsGris, poidsGris, poidsGris).getRgb();
Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.