calculer l'histogramme d'une image par java

calculer l'histogramme d'une image par java - Java - Programmation

Marsh Posté le 02-12-2002 à 15:02:21    

comment on calcule l'histogramme d'une image par java ..

Reply

Marsh Posté le 02-12-2002 à 15:02:21   

Reply

Marsh Posté le 02-12-2002 à 16:19:51    

info2002 a écrit a écrit :

comment on calcule l'histogramme d'une image par java ..




 
C'est quoi que t'appels l'histogramme d'une image ?

Reply

Marsh Posté le 02-12-2002 à 19:04:00    

Ben, je ne suis pas un pro du java, mais si tu peux accéder aux valeurs de chaque pixel de l'image, tu n'a plus qu'à faire un tableau et compter les occurences de chaque valeurs, non?
 
Genre, pour une image en 256 niveaux de gris:

Code :
  1. - initialiser à 0 un tableau T de 256 cases
  2. - pour chaque pixel p faire
  3.    - v <- valeur du pixel p
  4.    - T[v] <- T[v] + 1
  5.    - fait
  6. - enregistrer ou représenter le contenu du tableau T


 
Mais peut-être ai-je mal compris le but de la question...
 
 
Edit: Balises de code


Message édité par Toucouch le 02-12-2002 à 19:04:35
Reply

Marsh Posté le 03-12-2002 à 09:17:41    

comment je peux calculer l'histogramme d'une image coloré(RGB),
s'il est possible...

Reply

Marsh Posté le 03-12-2002 à 09:21:59    

faudra surement que t'utilises JAI.  
Vas voir sur le site de sun

Reply

Marsh Posté le 04-12-2002 à 11:27:23    

faut que tu définisses des procédures pour récuppérer que la composante bleue, que la rouge et que la verte.
 
Ensuite, à chaque fois que tu prends un ppixel, tu étudies sa valeur rouge(puis verte, puis bleue) et tu incrémente la valeur équivalente dans un tableau.
 
ex: si tu trouves la valeur Rouge=130, tu incrémentes la case correspondante: TableauRouge[130]++
 
:D
 
C'est pour quoi que tu as besoin de ça ? parce que j'ai réalisé en cours un projet qui y ressemble. 9a traite des images, leur applique des filtres, calcule des histogrammes, crées des fichiers (.csv pour les histogrammes et .raw pour les images),  etc...


---------------
Nos seules limites sont celles que nous nous imposons
Reply

Marsh Posté le 04-12-2002 à 12:04:33    

Pas besoin de JAI. Il faut utiliser les méthodes getRGB() de BufferedImage :
 
n = monImage.getRGB(x, y);
 
n est entier qui représente la valeur du pixel de coordonées x et y.
 
Ensuite pour récupérer les composantes rouges, vertes et bleues on peut faire comme ça :
 

Code :
  1. int bleu = n & 0xff;
  2. int vert = (n >> 8) & 0xff;
  3. int rouge = (n >> 16) & 0xff;


 
Ensuite il faut remplir 3 tableaux disctincts comme l'a dit vink.


Message édité par gm_superstar le 04-12-2002 à 12:05:10

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 04-12-2002 à 12:44:53    

je te remercie , j'ai essayé avec votre proposition , j'ai essayé d'afficher les valeurs bleu , rouge , vert , il me donne 0 , 0 ,0 c'est , je ne sais pas , avant de les recupérer ds les tableaux rouge , vert,...,


Message édité par info2002 le 04-12-2002 à 12:45:23
Reply

Marsh Posté le 04-12-2002 à 12:51:00    

j'ai besoin de ca pour comparer deux images colorés (histogrammes) , pouvez vous m'expliquer ce que tu as fait , si vous avez de documentation sur le calcul d'histogramme coloré et la comparison , aider moi svp ...

Reply

Marsh Posté le 04-12-2002 à 12:56:30    

pour l'initialisation de BufferedImage , on fait seulement ca ,  
buff = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB );
img : nom image recupérer , u il faut ajouter d'autre chose avant de faire buff.gerRGB(),..

Reply

Marsh Posté le 04-12-2002 à 12:56:30   

Reply

Marsh Posté le 04-12-2002 à 13:06:39    

Pour constituer tes tableaux tu dois boucler sur TOUS les pixels de ton image (2 for imbriqués). Mais si tu ne montres pas le code complet de ce que tu fais ça va être dur...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 04-12-2002 à 13:10:59    

Si t'as 0,0,0, c'est que le seul pixel sur lequel tu as fait ton traitement est noir.


---------------
Nos seules limites sont celles que nous nous imposons
Reply

Marsh Posté le 04-12-2002 à 13:15:28    

voici le code , comment je peux calculer l'histgramme de l'image , s'il est possible            
 
 
 
 
 
 
 
 img =getToolkit().getImage("gauche.gif" );
         
                    m.addImage(img,1);
         
         try {
         m.waitForID(1);
         }
         catch (InterruptedException e)
         {
  System.err.println("Erreur: "+e)  ;  
           
         }  
 
BufferedImage buff = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB );
 
 
         
                   int w = buff.getWidth();
                          int h = buff.getHeight();        
 
System.err.println("la taille : "+buff.getMinTileX())  ;  
 
int n;
int bleu ,int vert;
int rouge;
         
           
for(int i=0;i<w;i++)
 n=0;      
 
for(int j=0;j<h;j++)
{  n =buff.getRGB(i, j);
bleu = n & 0xff;
  vert = (n >> 8) & 0xff;
 rouge = (n >> 16) & 0xff;  
 
        System.err.println("la taille : "+bleu)  ;  
      System.err.println("la taille : "+vert)  ;  
      System.err.println("la taille : "+rouge)  ;              
             
             
           }            
          }
         

Reply

Marsh Posté le 06-12-2002 à 11:30:21    

Tu crées des tableaux de 256 valeurs pour chaque couleur, et à la fin, tu ajoutes:
 
TableauB[bleu]++
TableauV[vert]++
TableauR[rouge]++
 
Quand tu as fini, tu as trois histogrammes: 1 pour chaque couleur.
 
a la lecture d'un tableau, tu auras, par exemple:
TableauB[25]=586, ce qui signifie que 586 pixels ont un valeur Bleu=25
 
:D


---------------
Nos seules limites sont celles que nous nous imposons
Reply

Marsh Posté le 27-01-2003 à 09:36:46    

info2002 a écrit :

voici le code , comment je peux calculer l'histgramme de l'image , s'il est possible            
 
 
 
 
 
 
 
 img =getToolkit().getImage("gauche.gif" );
         
                    m.addImage(img,1);
         
         try {
         m.waitForID(1);
         }
         catch (InterruptedException e)
         {
  System.err.println("Erreur: "+e)  ;  
           
         }  
 
BufferedImage buff = new BufferedImage( img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB );
 
 
         
                   int w = buff.getWidth();
                          int h = buff.getHeight();        
 
System.err.println("la taille : "+buff.getMinTileX())  ;  
 
int n;
int bleu ,int vert;
int rouge;
         
           
for(int i=0;i<w;i++)
 n=0;      
 
for(int j=0;j<h;j++)
{  n =buff.getRGB(i, j);
bleu = n & 0xff;
  vert = (n >> 8) & 0xff;
 rouge = (n >> 16) & 0xff;  
 
        System.err.println("la taille : "+bleu)  ;  
      System.err.println("la taille : "+vert)  ;  
      System.err.println("la taille : "+rouge)  ;              
             
             
           }            
          }
         


 
heu... il est juste ce code ? j'vois pas l'endroit où est fait le lien entre l'image récupérée par ToolKit.getImage, et la BufferedImage sur laquelle les données sont récupérées...

Reply

Marsh Posté le 27-01-2003 à 23:42:48    

El_gringo a écrit :


 
heu... il est juste ce code ? j'vois pas l'endroit où est fait le lien entre l'image récupérée par ToolKit.getImage, et la BufferedImage sur laquelle les données sont récupérées...

c koi ce vieux up là  :heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 28-01-2003 à 09:33:28    

--greg-- a écrit :

c koi ce vieux up là  :heink:  


 
C pas un "up", je pose une question. J'utilise le forum entant que base de connaissances...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed