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 (); } } }
Partager