Traitement d'image

dh11 Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 16 mai 2011 - 4 mai 2011 à 00:37
dh11 Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 16 mai 2011 - 4 mai 2011 à 22:44
bonsoir,

Je veux faire une segmentation de la partie peau et non peau d'une image par seuillage ,je travaille dans l'espace RGB .
le probléme est que ce code suivant donne une image toute noire:

BufferedImage imgBin = new BufferedImage(monImage.getWidth(), monImage.getHeight(), monImage.getType());
int x =0;

for (int i=0; i<monImage.getWidth(); i++) {

for (int j=0; j>24 ) & 0xFF);

int r = (rgb & 0xff0000)>>16;
int g = (rgb & 0xff00)>>8;
Merci d'avance
int b = (rgb & 0xff);
if (r<0)r 0; if (r > 255) r 255;
if (g<0) g 0; if (g > 255) g 255;
if (b<0) b 0; if (b > 255) b 255;

if((r>95)&&(g>40)&&(b>20)
&&((max1(r,g,b)-min1(r,g,b))>15)
&& (abs(r-g)>15) &&
(r>g) && (r>b))

x=1;
else
x=0;

monImage.setRGB(i, j, x);

MERCI

6 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 09:30
Salut,

je vois deux possibilités pour expliquer ton pb :
- tes conditions de seuillage ne sont jamais remplies,
- tu utilises mal la fonction setRGB().

Pour la première il va suffire de passer en mode debug et de voir si tu passes les conditions. Si ce n'est pas le cas il va falloir les changer.

Pour la deuxième, j'émets un doute sur la valeur de x. En effet "1" (0x000001) doit donner une couleur trop proche du noir pour noter la différence. Essai de mettre "0xFFFFFF" plutôt que "1" pour voir si ça change ton résultat.
0
dh11 Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 16 mai 2011
4 mai 2011 à 14:52
salut,

Merci pour la reponse,
j'ai remplacé la valeur de "1" main rien n'est changé.
En fait je suis debutante en java et je sais pas comment passer en mode
debug .

Merci...
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 14:56
Quel EDI utilises-tu pour programmer ? NetBeans ? Eclipse ?
Ou alors tu compiles à la mano avec javac ?
0
dh11 Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 16 mai 2011
4 mai 2011 à 14:59
j'utilise eclipse .
0

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

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
4 mai 2011 à 15:11
Alors il faut mettre une point d'arrêt au début du code incriminé.
Soit en double-cliquant dans la marge au niveau de la ligne, soit en se plaçant dessus et en faisant Ctrl+Shit+B, soit dans le menu Run > Toggle Break point

Ensuite il faut lancer en mode debug en cliquant sur le bouton qui ressemble à un insecte, ou en appuyant sur F11, ou dans le menu Run > Debug.

Quand le programme arrivera sur le point d'arrêt tu rebasculeras sur Eclipse, qui te proposera de passer en perspective debug (réponds oui).
Pour avancer de ligne en ligne (pas à pas principale), faire F6
Pour avancer en profondeur (pas à pas entrant), faire F5
Pour dépiler les fonctions (pas à pas sortant), faire F7

Il faudra alors que tu vois si ta condition de seuillage est validée pour quelques pixels.
0
dh11 Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 16 mai 2011
4 mai 2011 à 22:44
Merciiii je vais l'essayer.
0
Rejoignez-nous