IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Soustraire 2 images


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut Soustraire 2 images
    Je cherche à soustraire 2 images afin d'obtenir leur différence.
    J'ai essayé de faire ça mais cela ne marche pas. Mes images de départ sont en niveau de gris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    	BufferedImage diff(BufferedImage img1, BufferedImage img2)
    	{
    		int w = img1.getWidth();
    		int h = img1.getHeight();
    		int[] rgbs1 = new int[w*h];
    		img1.getRGB(0,0,w,h,rgbs1,0,w);
    		int[] rgbs2 = new int[w*h];
    		img2.getRGB(0,0,w,h,rgbs2,0,w);
     
    		for (int y = 0; y < h; y++) {
    			for (int x = 0; x < w; x++) {
    				int pos = y * h + x;
    				System.out.print(rgbs1[pos]);
    				System.out.print("\n");
    				System.out.print(rgbs2[pos]);
    				System.out.print("\n");
    				rgbs1[pos] -= rgbs2[pos];
    				if (rgbs1[pos] < 0) rgbs1[pos] = 0;
    			}
    		}
     
    		BufferedImage imgDiff = new BufferedImage(w, h, img1.getType());
    		imgDiff.setRGB(0,0,w,h,rgbs1,0,w);
    		return imgDiff;
    	}

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Par défaut
    Je pense que même si les images sont en noir et blanc, chaque pixel a les trois composantes RGB qui dans ce cas devraient être égales. Essaye donc de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int Bleu = (rgbs1[pos] & 0xFF) - (rgbs2[pos] & 0xFF);
     if(Bleu < 0) Bleu = 0;
    rgbs1[pos] = (Bleu<<16)+(Bleu<<8)+Bleu;
    On utilise le bleu car il se calcule plus facilement (dans deux for imbriqués ça peut changer le temps d'éxecution).

    Pour plus de détails, va voir la faq.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut
    Exact, et c'est même du argb. Il faut faire ça pour récupérer la couleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	val = (rgb1[pos] & 0xFF) - (rgb2[pos] & 0xFF);
    	if (val < 0) val = 0;
    	rgbResult[pos] = (-1 << 24) + (val << 16) + (val << 8) + val;
    Merci pour l'aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo