Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu des 7 différences - Java Help

    3 novembre 2019 à 13:45:09

    import  ij.*;
    import  ij.process .*;
    import  ij.gui.*;
    import  java.awt.*;
    import  ij.plugin.frame .*;
    
    public  class  Les_Sept_Erreurs  extends  PlugInFrame 
    {
    	
    	public  Les_Sept_Erreurs (){
    		super( "Jeu  des 7 differences");
    			}
    			
    		public  void  run(String  arg) 
    		{
    			ImagePlus  imgDiff1 = new  ImagePlus("C:/Users/romain/Desktop/ISIFC/ISIFC3/Aupet/Projet7/diff1.jpg");
    			ImageProcessor  ipDiff1=imgDiff1.getProcessor ();
    			byte[]  pixelsDiff1 = (byte []) ipDiff1.getPixels (); /* on prends les pixels de l'image Diff1 dans un tableau */
    			
    			ImagePlus  imgDiff2 = new  ImagePlus("C:/Users/romain/Desktop/ISIFC/ISIFC3/Aupet/Projet7/diff2.jpg");
    			ImageProcessor  ipDiff2=imgDiff2.getProcessor ();
    			byte[]  pixelsDiff2 = (byte []) ipDiff2.getPixels (); /* on prends les pixels de l'image Diff2 dans un tableau */
    			
    			int w = ipDiff2.getWidth ();
    			int h = ipDiff2.getHeight ();
    			
    			ImageProcessor  ipRes=new  ByteProcessor(w,h); /* On crée une image de taille et hauteur = à Diff2*/
    			ImagePlus  imgRes = new  ImagePlus("difference",ipRes);
    			byte[]  pixelsRes = (byte []) ipRes.getPixels ();
    			
    			for(int i=0; i<pixelsDiff1.length; i++)
    		{
    				for (int j=0; j<pixelsDiff2.length; j++)
    				{
    					if (pixelsDiff1[i] != pixelsDiff2[j])
    					{
    						if (pixelsDiff1[i]=0) 
    						{ pixelsRes[i]=pixelsDiff1[i];
    						}
    						else
    						{ pixelsRes[j]=pixelsDiff2[j];
    						}
    					}
    					else 
    					{
    						
    						pixelsRes[i]=1;
    			
    					}
    				}
    			
    			imgRes.show();
    			imgRes.updateAndDraw ();
    		}
    		}
    			
    }
    		
    Bonjour tout le monde,

    Je suis un étudiant en dernière année d'école d'ingénieur (non spécialisé en informatique). J'ai un petit projet sur ImageJ consistant à trouver les différences entre deux images afin de créer et d'ouvrir une nouvelle image avec seulement les différences des deux autres.

    Sur l'écriture (en écriture algorithmique et non Java) et la compréhension du programme je n'ai aucun soucis. J'ai crée deux tableaux afin de récupérer les pixels des deux premières images. Je crée ensuite un tableau de taille similaire aux deux autres afin d'y insérer les pixels de différence (qui constituera la nouvelle image avec les différences).

    Je parcours avec deux boucles for les deux premiers tableaux puis à l'aide de boucles If, je vérifie si des erreurs existent pour une place [i] et [j] égal. Si une erreur existe alors je vérifie si le pixel est blanc ou noir. S'il est noir alors cela signifie qu'une différence existe. A ce moment-là, je vérifie si le pixel noir ou blanc est présent dans l'image 1 ou 2 afin de remplir le nouveau tableau de ce pixel. Si aucune différence existe alors je remplis d'un pixel blanc le nouveau tableau.

    Cependant, j'ai défini pour le pixel noir une valeur à 0 et pour le pixel blanc une valeur à 1. Mais c'est la que le programme ne marche pas... Je ne sais pas s'il faut que j'utilise une fonction de seuillage en plus afin de déterminer en amont une valeur de pixel pour un niveau de gris donné.

    Si quelqu'un peut m'aider afin de construire ce petit programme ou m'indiquer quel chemin suivre je vous en remercierai par avance.

    Je vous laisse en image mon programme !

    Merci par avance 

    Ps : les deux images sont de base en N&B.
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2019 à 4:49:28

      Bonjour,

      Mauvaise nouvelle, ton algorithme est faux. En tout cas, la façon dont tu l'as programmé.

      Déjà, tu ne devrais pas avoir de boucles imbriquées. Ici, tu compares le premier pixel de l'image 1 avec tous ceux de l'image 2.

      Idem pour le deuxième pixel, le troisième, etc.

      Ce que tu veux faire, c'est comparer les pixels avec le même indice. Tu n'as donc pas besoin de deux indices différents.

      • Partager sur Facebook
      • Partager sur Twitter
        6 novembre 2019 à 18:02:13

        Salut,

        En plus tu as une affectation de valeur dans un if :

        if (pixelsDiff1[i]=0)

        • Partager sur Facebook
        • Partager sur Twitter

        Jeu des 7 différences - Java Help

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown