Traitement d'image

Résolu
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013 - Modifié par BunoCS le 18/11/2013 à 22:29
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 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);
    }
}

13 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
Modifié par cs_Julien39 le 19/11/2013 à 08:43
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
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
19 nov. 2013 à 10:24
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
19 nov. 2013 à 10:47
Dans ce cas, essayes ceci :
inm4 = new BufferedImage(Width,Height,,BufferedImage.TYPE_INT_RGB)
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
19 nov. 2013 à 17:15
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
20 nov. 2013 à 07:58
Peux tu me donner le code qui te permet de remplir pixelInt ?

Tu devrais utiliser directement une BufferedImage et la lire avec ImageIO.read
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
20 nov. 2013 à 10:27
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
}}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
20 nov. 2013 à 11:22
Et le contenu de la méthode GetLastBytes ?
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
20 nov. 2013 à 11:37
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);
}
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
20 nov. 2013 à 11:45
Si j'enlève la fonction GetLastBytes sa marche bien mai les pixels ne sont pas entre 0 et 255
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
20 nov. 2013 à 14:21
On a donc identifié le problème.

Le RGB n'est pas entre 0 et 255. Pourquoi veux tu qu'il le soit ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
20 nov. 2013 à 14:23
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
0
Bel.kamal Messages postés 7 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 20 novembre 2013
20 nov. 2013 à 16:52
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
21 nov. 2013 à 07:49
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();
0
Rejoignez-nous