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.

Voici le code :

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 ();
		}
		}
 
}