calculer l'histogramme d'une image par java - Java - Programmation
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 ?
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 :
|
Mais peut-être ai-je mal compris le but de la question...
Edit: Balises de code
Marsh Posté le 03-12-2002 à 09:17:41
comment je peux calculer l'histogramme d'une image coloré(RGB),
s'il est possible...
Marsh Posté le 03-12-2002 à 09:21:59
faudra surement que t'utilises JAI.
Vas voir sur le site de sun
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]++
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...
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 :
|
Ensuite il faut remplir 3 tableaux disctincts comme l'a dit vink.
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,...,
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 ...
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(),..
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...
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.
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) ;
}
}
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
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 |
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...
Marsh Posté le 27-01-2003 à 23:42:48
El_gringo a écrit : |
c koi ce vieux up là
Marsh Posté le 28-01-2003 à 09:33:28
--greg-- a écrit : c koi ce vieux up là |
C pas un "up", je pose une question. J'utilise le forum entant que base de connaissances...
Marsh Posté le 02-12-2002 à 15:02:21
comment on calcule l'histogramme d'une image par java ..