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

2D Java Discussion :

Comparer deux images


Sujet :

2D Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 98
    Points : 55
    Points
    55
    Par défaut Comparer deux images
    salut
    je suis entrain de développer une application de detection de mouvement à partire d'une webcam .
    ce que je fais c'est prendre une image1 comme referance puis une autre image2 puis je compare c'est deux images(les pixels)mais voila ca marche pas bien car si je compare la image1 avec image2 même si il n'y a pas de mouvement ou bien une différence entre c'est deux images j'ai false comme valeur de retour parcontre image1 avec image1 y true

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class Untitled1 {
        public static void main(String[] args) {
            Vector original = testImg("tf.jpg");
            Vector clonde   = testImg("lala/koko.jpg");
            System.out.println(original.equals(clonde));
     
        }
     
        public static Vector testImg(String file) {
            Vector all = new Vector();
            try {
                BufferedImage im = ImageIO.read(new FileInputStream(file));
                int w = im.getWidth(null);
                int h = im.getHeight(null);
                int[] rgbs = new int[w * h];
                int x = 0;
                im.getRGB(0, 0, w, h, rgbs, 0, w);
     
                for (int i = 0; i < w; i+=100) {
                    Vector line = new Vector();
                    for (int j = 0; j < h; j+=100) {
                        line.add(new Integer(rgbs[x]));
                        //System.out.println("Pixel " + i + "," + j + "has " +
                        //                   "RGB values of " + rgbs[x]);
                        x++;
                    }
                    all.add(line);
                }
     
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return all;
        }
     
     
     
    }
    j'ai essayé de régler le problème avec l'augmentation du nombre de pixel comaprer sans sucée
    voila c'est tout
    merci d'avance de votre repense

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 076
    Points : 7 983
    Points
    7 983
    Par défaut
    Oula c'est une drôle de comparaison. (Pas si drole si tu compares des images parfaites evidement ce qui m'etonnerais)

    Si je capte bien tu vérifie simplement si tout les pixel de chacun de tes 2 tableau de pixel (l'image quoi) sont totalement égaux... ce qui ne marche pas dans la réalité a moins d'avoir des images sans bruits. Dans ce cas, il est forcé que d'une image a l'autre (ecartée de 1 / 25 de secondes je présume) meme sans mouvement, les 2 images ne soient pas identiques.

    En effet il faudra que ta comparaison soit un peu plus rafinées. Genre tu vas calculer pour chaque pixel le delta (ecart des valeurs) entre chaque puis faire une somme ou moyenne ou peu importe et avec ce resultat que tu compares a un autre chiffre (qui sera ton delta de ressemblence) cela te donnera un resultat.

    Exemple :

    A) pour une seul pixel avec ta methode tu semble faire

    [code]if (pixel1.rouge==pixel2.rouge) && (pixel1.vert==pixel2.vert) ....[/
    alors c'est le meme pixel, ne marchera pas avec des images réelle bruitée.
    CODE]

    B) pour un seul pixel avec une autre méthode tu devrais faire par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int deltaR = pixel1.rouge - pixel2.rouge;
    int deltaG = pixel1.vert - pixel2.vert;
    int deltaB = pixel1.bleu - pixel2.bleu;
    int MoyDelta = deltaR+ deltaB + deltaG; (a changer fort certainement).
    if (MoyDelta <= facteurComparateur)
     pixel se rapproche (facteurCompareut) a peu pres.
    Mais il y'a probablement du prétraitement a faire avant selon ce que tu cherche a obtenir réellement.

    Mais je suis de très loin expert en traitement d'image.

    Par contre j'ai il n'y a pas si longtemps eu le meme genre d'idée. A savoir creer un programme qui analyserait des images venant d'une camera afin de detecter une couleur (un papier rose fluo tenu en main) et de permettre ainsi de savoir dans l'espace la position de ce papiers (sur l'axe X et Y) (
    ). J'ai voulu procéder comme toi mais j'en suis arrivé a faire de la détection par couleur (ce qui était plus facile et qui fonctionnait nickel mais qui obligeait a avoir un truc d'une couleur "rare" dans la scene).
    Je me suis ensuite dirigé vers OpenCV plutot que mes propres bricolages.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Comparer deux images (100% identiques ou non)
    Par FluidBlow dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/04/2008, 13h40
  2. Comparer deux images
    Par GwenZephyr dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/03/2008, 16h09
  3. comparer deux images en vbnet
    Par offspring dans le forum VB.NET
    Réponses: 9
    Dernier message: 06/11/2007, 14h13
  4. comparer deux images
    Par alex01pernot dans le forum Delphi
    Réponses: 4
    Dernier message: 03/04/2007, 16h08
  5. Comparer deux images pas directement superposables
    Par Byhias dans le forum Images
    Réponses: 2
    Dernier message: 12/03/2007, 16h41

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