You are on page 1of 3

TP

2
Histogrammes et traitements élémen-
taires
Nicholas Journet / Anne Vialard - Traitement d’images - LPRO - 2014/2015
2.1 Transformations d’histogrammes : image en niveaux de gris
Dans cette partie les images traitées sont des images en niveau de gris, chaque niveau de gris étant codé sur 8 bits.
Question 1
Ecrivez un plugin ImageJ qui calcule et affiche une mesure de contraste de l’image traitée. Vous utiliserez la
mesure vue en cours :
1
N

x,y
(I(x, y) −Moy)
2
où N est le nombre de pixels de l’image, I(x, y) la valeur du pixel de coordonnées (x, y) et Moy la moyenne
des niveaux de gris de l’image.
Appliquez ce plugin aux images mystere, boat et baboon. Notez les mesures de contraste obtenues.
Question 2
Ecrivez un plugin ImageJ permettant d’étirer linéairement la dynamique de l’image entre 0 et 255. Comme cela
a été vu en cours, vous utiliserez une LUT.
Testez sur l’image mystere. Quels sont les niveaux de gris de l’image avant transformation ? Quels sont-ils après
transformation ? Expliquez. Testez également sur les images boat et baboon. Notez la mesure de contraste
après transformation.
Consultez la documentation de l’API ImageJ pour la méthode applyTable de la classe ImageProcessor. Modi-
fiez votre code en utilisant cette méthode.
Question 3
Ecrivez un plugin ImageJ pour égaliser l’histogramme de l’image traitée. Testez sur les mêmes images en ob-
servant l’histogramme et la mesure de contraste avant et après transformation.
2.2 Transformations d’histogrammes : image couleur
Question 4
Ecrivez un plugin ImageJ pour égaliser l’histogramme de l’image traitée qui est maintenent une image couleur
RGB.
Pour égaliser une image couleur il faut appliquer une égalisation identique pour chacune des composantes R,
G et B. Pour cela, il faut calculer l’intensité de l’image en niveaux de gris I = 0.3 ∗ R + 0.59 ∗ G + 0.11 ∗ B et
calculer l’égalisation de l’histogramme de I. Il suffit alors d’appliquer cette égalisation aux trois composantes R,
G et B.
Testez sur les images paysage, lena et yellowstone.
1
Question 5
Ecrivez le code java permettant l’égalisation d’un histogramme d’une image couleur mais cette fois-ci chaque
canal sera égalisé selon sa propre distribution de valeurs.
En réalisant des tests sur les images fournies, expliquez pourquoi il ne faut pas appliquer une égalisation diffé-
rente à chacune des composantes R, G et B.
2.3 Jeux des 7 différences
Question 6
On souhaite réaliser un programme aidant à trouver les 7 différences entre deux images.
En vous inspirant des exemples vus en cours et de l’image ci-dessous, complétez le code suivant afin que les
différences entre les deux images ressortent.
1 import ij.*;
2 import ij.process .*;
3 import ij.gui.*;
4 import java.awt.*;
5 import ij.plugin.frame .*;
6
7 public class Les_Sept_Erreurs extends PlugInFrame {
8 public Les_Sept_Erreurs (){
9 super( "Jeu des 7 differences");
10 }
11
12 public void run(String arg) {
13 ImagePlus imgDiffA = new ImagePlus("chemin 1");
14 ImageProcessor ipDiffA=imgDiffA.getProcessor ();
15 byte[] pixelsDiffA = (byte []) ipDiffA.getPixels ();
16
17 ImagePlus imgDiffB = new ImagePlus("chemin 2");
18 ImageProcessor ipDiffB=imgDiffB.getProcessor ();
19 byte[] pixelsDiffB = (byte []) ipDiffB.getPixels ();
20
21 int w = ipDiffB.getWidth ();
22 int h = ipDiffB.getHeight ();
23
24 ImageProcessor ipRes=new ByteProcessor(w,h);
25 ImagePlus imgRes = new ImagePlus("difference",ipRes);
2 / 3
26 byte[] pixelsRes = (byte []) ipRes.getPixels ();
27 ...
28 imgRes.show();
29 imgRes.updateAndDraw ();
30
31
32 }
33 }
2.4 Mélange d’images
Question 7
Ecrire un plugin ImageJ qui permet de mélanger deux images de même taille choisies par l’utilisateur. Le mélange
dépend d’un coefficient compris entre 0 et 1 : I

(x, y) = αI
1
(x, y)+(1−α)I
2
(x, y). Vous créerez plusieurs images
résultat en faisant varier le coefficient de mélange. Dans un premier temps, votre plugin pourra traiter des images
en niveaux de gris. Testez avec les images face1.pgm et face2.pgm. Modifiez votre code de façon à pouvoir
mélanger des images RGB.
Ce document est publié sous Licence Creative Commons « By-
NonCommercial-ShareAlike ». Cette licence vous autorise une utilisation
libre de ce document pour un usage non commercial et à condition d’en
conserver la paternité. Toute version modifiée de ce document doit être pla-
cée sous la même licence pour pouvoir être diffusée.
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
3 / 3