Developpement Dune Application de Traitement Dimages
Developpement Dune Application de Traitement Dimages
Developpement Dune Application de Traitement Dimages
Thème
Développement d’une application de traitement
d’images
Réalisé par :
- Sabri akram
- Benali Moustafa
On dit souvent que le trajet est aussi important que la destination. Les trois
années de maîtrise nous ont permis de bien comprendre la signification de cette
phrase toute simple. Ce parcours, en effet, ne s'est pas réalisé sans défis et sans
soulever de nombreuses questions pour lesquelles les réponses nécessitent de longues
heures de travail.
Nous tenons à exprimer notre profonde gratitude à toutes celles et ceux qui
nous ont apporté leur soutien, leur amitié ou leur expérience tout au long de ce
travail de mémoire.
Dédicace
Je dédie ce travail
Dédicace
Je dédie ce travail
Traitement d’image en JAVA
Sommaire
Introduction générale
Chapitre I:Caractéristiques et formats d’image
I.1 Définition de l’image ………………………………………..………………….…………...… 01
I.2 Codage ………………………………………..………………………………..………………. 02
I.3 Types d’images ………………………………………..…………………….………………… 02
I.3.1 Image binaire ………………………………………..……………..………………… 02
I.3.2 Image en niveau de gris ………………………………………..…..………………… 03
I.3.3 Image couleur (RGB) ………………………………………..…….………………… 03
I.4 Résolution ………………………………………..……………………….…………………… 06
I.5 Caractéristiques de l’image …………………………..……..……………..…………………... 06
I.5.1 Pixel ………………………………………..……………..……..…………………… 06
I.5.2 Poids de l’image………………………………………..………..…………...………. 07
I.5.3 Transparence ………………………………………..………….……………………. 07
I.5.4 Luminance ………………………………………..……………..…………………… 07
I.5.5 Contraste …………………………………………..…………….…………………... 07
I.5.6 Histogramme ………………………………………..…………….…………………. 08
I.5.7 Homogénéité ………………………………………..……………………………….. 09
I.5.07 Connexité ………………………………………..…………………………………. 09
I.5.08 Région ………………………………………..…………………………………….. 09
I.6 Les différents formats d’images….………………………………..…………………………… 10
I.6.1 Format vectorielle ……………………………………………….…………………... 10
I.6.2 Format matricielle ………………………………………..………………………….. 10
I.7 Etapes fondamentales en traitement d’images…………………………….…………………… 11
I.7.1 Acquisition de l’image ………………………………………………………………. 12
I.7.2 Le rehaussement de l’image …………………………………………………………. 12
I.7.3 Les ondelettes ………………………………………………………………………... 13
I.7.4 La morphologie……………………………………………………………………… 13
I.7.5 La segmentation………………………………………………...…………………… 13
I.7.7 La représentation et description……………………………...……………………… 13
I.7.8 La reconnaissance ………………………………………….………………………... 13
I.7.9 La restauration d’image……………………………………………………………..... 14
Conclusion …………………………………..……..……………………………………………… 15
Traitement d’image en JAVA
Introduction générale
Chapitre I : nous présentons dans ce chapitre les caractéristiques d’une image, quelques
formats et les différentes techniques de traitement d’une image.
Dans ce chapitre, nous allons présenter les différentes phases de la formation d’image ainsi
que sa définition, de son interprétation par la machine, de ces différents types, de ces
caractéristiques et de ces formats.
Colonne j
L’image numérique, désignée aussi par le terme scène, possède un repère comme indiqué
en figure I.1, il est différent de celui d’une fonction mathématique. Elle a une hauteur (H)
et une largeur (W).
1
Chapitre I Caractéristiques et formats d’images
Ce type de codage peut convenir pour un plan ou un texte mais on voit ses limites lorsqu'il
s'agit d'une photographie.
2
Chapitre I Caractéristiques et formats d’images
En général on code chaque pixel sur 8 bits = 1 octet. On a alors 256 possibilités (on dit 256
niveaux de gris).
Exemple d'image en 72 pixels par pouce (environ 30 pixels par cm), codée en 256 niveaux
de gris.
Cette image de 303 x 303 pixels occupe 303 x 303 = 91809 octets puisque chaque pixel
occupe 1 octet en mémoire.
3
Chapitre I Caractéristiques et formats d’images
Ces 256 couleurs sont choisies parmi les 16 millions de couleurs de la palette RVB. Pour
chaque image le programme recherche les 256 couleurs les plus pertinentes.
L'image occupe 3 fois moins de place en mémoire qu'avec un codage 24 bits. L'image est
moins nuancée : sa qualité est bonne mais moindre.
Le principe repose sur la synthèse additive des couleurs : on peut obtenir une couleur
quelconque par addition de ces 3 couleurs primaires en proportions convenables.
On obtient ainsi 256 x 256 x 256 = 16777216 (plus de 16 millions de couleurs différentes).
4
Chapitre I Caractéristiques et formats d’images
Couleur Noir bleu pâle vert pâle Rose Bleu vert rouge Blanc
5
Chapitre I Caractéristiques et formats d’images
Dans le cas d'une image de 10 cm x 10 cm avec une résolution convenable de 100 pixels
par cm (un pixel mesure 0,1 mm), elle est codée sur 1000 x 1000 = 1 000 000 pixels
Elle occupe : en noir et blanc : 1 000 000 bits = 125 000 octets
C'est codage de la couleur qui est utilisé par la plupart des écrans d'ordinateurs
actuellement.
On constate qu'il est très gourmand en mémoire. Pour faciliter le stockage des images en
mémoire on utilise d'autres formes de codage.
I.4 Résolution :
Une image est divisée en points ou pixels. Considérons une image de 10 cm sur 10 cm
avec une résolution très faible de 10 pixels par cm.
Avec une résolution convenable de 100 pixels par cm (un pixel mesure 0,1 mm), elle serait
codée sur 1000 x 1000 = 1000000 pixels = 1 M pixels. Le symbole M signifiant million.
6
Chapitre I Caractéristiques et formats d’images
I.5.5 Contraste :
Est une propriété intrinsèque d'une image qui désigne et quantifie la différence entre les
parties claires et foncées d'une image (elle différencie les couleurs claires des couleurs
foncées).
7
Chapitre I Caractéristiques et formats d’images
H(x)
L’histogramme de la figure I.12 noté ici H(x), est le nombre de pixels dont le niveau de
gris est égal à x. l’histogramme cumulatif normalisé est calculé comme suit :
H ( x)
HC ( x) i 0
(I.1)
W *H
Nous présentons dans la suite quelques traitements d'analyse effectués uniquement à partir
de l'histogramme. Retenons que certains de ces traitements sont souvent calculés au niveau
des capteurs, et qu'en général leur pertinence est très intimement liée aux conditions
d'acquisition.
(3) Segmentation : simplifier l'image en regroupant les pixels selon leurs valeurs.
8
Chapitre I Caractéristiques et formats d’images
I.5.7 Homogénéité :
L’homogénéité est une information locale et correspond au caractère uniforme d’une
région. Une région dans une image est dite homogène si elle regroupe un ensemble de
pixels qui possèdent des caractéristiques similaires ou uniformes. Ces caractéristiques
peuvent être par exemple la variance du niveau de gris, la couleur,…
I.5.8 Connexité :
En traitant une image, on est souvent amener à se déplacer dans celle-ci. Un déplacement
doit souvent obéir à des règles de voisinage, on utilise généralement deux types de
voisinage : le voisinage à 4-connexité (4 pixels voisins, fig. II.13(a)) et le voisinage à 8-
connexité (8 pixels voisins, fig. II.135(b)). Deux pixels seront considérés comme connexes
(appartenant au même objet donc) s’ils satisfont deux critères:
I.5.11 Région :
Une région est un ensemble de pixels connexes et homogènes. Un pixel n’appartient à une
région donnée que s’il vérifie les caractéristiques de celle-ci (intensité moyenne, centre de
gravité,…). Une région est toujours limitée par un contour.
9
Chapitre I Caractéristiques et formats d’images
Par exemple, un cercle est décrit par une information du type (cercle, position du centre,
rayon). Ces images sont essentiellement utilisées pour réaliser des schémas ou des plans.
Les images vues sur un écran de télévision ou une photographie sont des images
matricielles.
On obtient également des images matricielles à l'aide d'un appareil photo numérique, d'une
caméra vidéo numérique ou d'un scanner.
BMP (BitMap) : Le format BMP est le format par défaut du logiciel Windows. C'est un
format matriciel. Les images ne sont pas compressées. Son logiciel d'origine.
Le format EPS : matriciel n'est pas très différent du EPS vectoriel. En fait seules les
données contenues dans le fichier sont différentes. Ainsi un logiciel de retouche de photos
tel que Photoshop permet l'importation, la modification et l'exportation de fichiers en
format EPS.
GIF (GraphicalInterchange Format) : Le format GIF est un format qui a ouvert la voie à
l'image sur le World Wide Web. C'est un format de compression qui n'accepte que les
10
Chapitre I Caractéristiques et formats d’images
images en couleurs indexés codé sur 8 bits, C'est un format qui perd beaucoup de son
marché suite à une bataille juridique concernant les droits d'utilisation sur Internet.
JPEG (Joint Photographique Experts Group) : Les images JPEG sont des images de 24
bits. C'est-à dire qu'elles peuvent afficher un spectre de 16 millions de couleurs. C'est la
meilleure qualité d'images disponible.
PCX : Le format PCX est utilisé par le logiciel Paintbrush sous Windows. C'est un format
matriciel.
TIFF (Tagged Image File Format): Le format TIFF, conçu à l'origine par la compagnie
Aldus est un format matriciel. Conçu au départ pour n'accepter que les images en RGB, ce
format permet de coder des images CYMK.
PBM (Potable BitMap) :Commençons par le plus simple : le format pbm. Ce format
permet de stocker des images en noir et blanc
PGM (Potable GrayMap) : Le format pgm permet de représenter des images en niveaux
de gris dont les pixels ont des valeurs entières comprises entre 0 (noir) et 255 (blanc). La
valeur de chacun des pixels est enregistrée dans le fichier au format ASCII.
PPM (Potable PixMap): Le format ppm concerne les images couleurs. Chaque pixel a
pour valeur un triple (R, G, B) composé d’une composante rouge, verte et bleue. Chaque
composante est représentée par un entier pouvant prendre ses valeurs entre 0
11
Chapitre I Caractéristiques et formats d’images
Restauration Ondelettes
Domaine
Du problème Rehaussement Compression
Reconnaissance Morphologie
d’objets
Elle a pour objet de passer de la scène physique à une forme numérique observée.
12
Chapitre I Caractéristiques et formats d’images
I.7.4 La morphologie :
C’est outil permettant d’extraire des composantes d’une image pour décrire et représenter
différentes formes.
I.7.5 La segmentation :
C’est une procédure permettant de partitionner l’image en ses constituants ou objets. La
segmentation automatique est la tâche la plus difficile en traitement d’images. Plus la
segmentation est meilleur plus l’étape de reconnaissance d’objets est réussite.
13
Chapitre I Caractéristiques et formats d’images
Les images subissent des dégradations, ces dégradations sont dues, d’une part au
Appareilles d’acquisition et d’autre part aux conditions de prise de vue...
Son but est d’améliorer la qualité d’une image, atténuer, supprimer les dégradations
La restauration se fait par des technique comme noir et blanc, négative, rotation, etc.
Noir et blanc : L’image noir et blanc, est une image dont les couleurs ont été remplacés
par le gris sauf le noir et le blanc de l’image.
Négative : estune image dont les couleurs ont été inversées par rapport à l'originale par
exemple le noir devient blancet inversement.
La compression d'image peut être effectuée avec perte de données ou sans perte
Appelée aussi compression non destructrice, la qualité de l’image après décompression est
la même que celle de l’image originale, le taux de compression de ce type est limité.
Ce type de compression on le trouve beaucoup dans le domaine où la précision est majeure
commel’image médicale (IRM par ex.) ou la télédétection (imagerie satellite par ex.).
C’est une compression destructrice, elle permet de sacrifier certains détails de l’image non
récupérable en décompression au profit de réduction de poids. Cette dégradation peut être
contrôlée selon la qualité qu’on veut obtenir en fonction du taux de compression choisie.
14
Chapitre I Caractéristiques et formats d’images
Ce type de compression on le trouve généralement dans le domaine normal pratique là oùla
réduction du poids de l’images est très important, comme le domaine multimédia par
exemple (web, photographie) où la fidélité envers l’image original n’est pas très
importante et le taux de compression sera plus grand que celui d’une compression sans
perte dufait qu’on est juste limité par la qualité qu’on souhaite obtenir.
Conclusion
Dans ce chapitre, nous avons cité les différents traitements que peut subir une image,, Dans
la suite nous présentons le langage java et l’utilisation des package et des classes
concernons l’implémentation de ces traitement.
15
Chapitre II :
Traitement d’image en java
Chapitre II Traitement d’image en java
Java est un langage orienté objet ou son constructeur on a prévu des package et des
classes permettant la manipulation d’objets image. C'est grâce à son API Java 2D, qu'on
peut écrire des logiciels de traitement et d'analyse d’images.
Dans cet article on va traiter la partie imagerie de l'API comme on va voir les
différentes fonctions fournies pour faire le traitement d'images.
Pour travailler avec les images sous Java 2D, il faut connaitre deux classes
importantes de l'API :
16
Chapitre II Traitement d’image en java
Image
BufferedImage
II.2.1 java.awt.Image :
C'est la super classe fournie dans la JDK depuis sa version 1.0. C'est une
classe abstraite qui permet de représenter les images sous forme d'un
rectangle de pixels.
La restriction de cette classe est qu'elle ne permet pas d'accéder aux pixels.
Elle est donc inadaptée pour le traitement d'images.
II.2.2 java.awt.image.BufferedImage :
17
Chapitre II Traitement d’image en java
BufferedImage
ColorModel Raster
SampleModel
ColorSpace
DataBuffer
II.2.2.1 java.awt.image.ColorModel:
II.2.2.2 java.awt.image.Raster :
18
Chapitre II Traitement d’image en java
java.awt.Image
Source de Donnée.
Java permet de charger des fichiers GIF, JPEG ou PNG depuis une unité de
stockage (disque ou réseau). Le fichier est chargé par la classe Applet ou Toolkit
dejava.awt,nous sommes ici dans une application nous utilisons. Par exemple :
19
Chapitre II Traitement d’image en java
Figure II.4- Code source pour lire une image
A noter qu'avec ImageIO, les images sont complètement chargées lors du retour de la
méthode read(), alors que les images renvoyées par le Toolkit sont chargées en arrière-
plan.
L’affichage d’une image est une chose relativement simple à comprendre lorsque l’on
saitcomment les images sont chargées.
Tout Component peut afficher une image au moyen d’un objet Graphiques, donné en
paramètre de la méthode paint du composant. La méthode à utiliser est ImageIO.write :
BufferedImage image;
...
File f = new File("...");
try {
if(!ImageIO.write(image, "png", f))
JOptionPane.showMessageDialog(null, "Ecriture impossible : "+format);
}catch (IOException e) {
...
}
Afin de réafficher le composant une fois que l’image a été chargée, il est nécessaire de
choisirl’ImageObserver à fournir en paramètre, le plus simple étant de donner le
Component lui-même (this).
Bien que tout composant puisse afficher une image, il est conseillé pour commencer de
choisir une Applet ou une Frame.
20
Chapitre II Traitement d’image en java
Pour sauver une Image, vous devez la convertir en BufferedImage, puis la sauver avec
ImageIO. Pour simplifier, vous pouvez utiliser la méthode suivante :
importjavax.imageio.*;
import java.io.*;
importjavax.swing.*;
import java.awt.image.*;
/**
Enregistre l'image sur le disque. Le format est défini par
l'extension du fichier. Un message d'erreur est affiché si
le format est inconnu.
@paramimage_name nom de fichier à écrire. Doit se terminer par .JPEG ou .PNG
@param img l’image à sauvegarder
*/
public void save(String image_name, Image img) {
BufferedImage bi = new BufferedImage (width, height, BufferedImage
.TYPE_INT_ARGB);
Graphics2D g = bi.createGraphics();
g.drawImage(img, 0, 0, width, height, null);
String file_format = image_name.substring(image_name.lastIndexOf('.')+1);
try { booleansuccess = ImageIO . write(bi, file_format , new File (image_name));
if (!success) { JOptionPane.showMessageDialog(new JFrame(), "Ecriture
impossible:"+file_format);
} catch (Exception e) { e.printStackTrace();
}//end try
}//end Save
Conclusion :
21
Chapitre II Traitement d’image en java
22
Chapitre III :
Implémentation
Chapitre III Implémentation
Dans ce chapitre nous allons présenter notre implémentation logicielle ainsi que les
résultats,Des quelques traitements qu’on a fait.
Cette application est un logiciel écrit en Java permettant d'appliquer certaines opérations
sur les images, Elle permet de :
22
Chapitre III Implémentation
o retour au l’image original,
o retailler l’image,
o sauvegarder l’image,
o compression d'image,
o afficher l’histogramme de l’image,
o réglage des niveaux,
o atténuation des extrêmes,
o accentuations.
23
Chapitre III Implémentation
III.4.1 Classe Cadre :
Cette classe représente les fenêtres principales de l'application, qui contient des Bouton,qui
permet de charger et traiter l’image, comme il est présenté dans(figure III .2).
Le Bouton <<Récupérer la photo >> qui permet d'ouvrir un fichier image stocké
sur le disque, <<Sauvegarder>> qui permet d'enregistrer une image sur le disque
après modification.
24
Chapitre III Implémentation
III.4.2 Classe PanDessin :
Cette classe dérive de JPanel. Elle présente le panneau où seront affichées les images
chargées par l'application.
Elle admet un attribut unique monImage de type BufferedImage qui présente à tout
moment l'image chargée affichée dans le panneau.
Cette classe présente le cœur de l'application. Ces méthodes permettent de modifier les
images.
Public Fenêtre () {
this.setTitle("Traitement d'images...");
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setExtendedState(this.MAXIMIZED_BOTH);
this.getContentPane().add(barreBoutons,
BorderLayout.NORTH);
boutonNouvellePhoto.setFocusPainted(false);
barreBoutons.add(boutonNouvellePhoto);
barreBoutons.add(boutonNégatif);
barreBoutons.add(boutonNoirBlanc);
barreBoutons.add(boutonRotationGauche);
barreBoutons.add(boutonRotationDroite);
barreBoutons.add(boutonReinitialiser);
barreBoutons.add(boutonRetailler);
barreBoutons.add(boutonSauvegarder);
barreBoutons.add(boutonComprission);
this.getContentPane().add(image, BorderLayout.CENTER);
this.getContentPane().add(palettes, BorderLayout.EAST);
palettes.add(atténuation);
palettes.add(accentuation);
Une image négative (figure III .5 .2), est une image dont les couleurs ont été inversées par
rapport à l'originale(figure III.5.1), par exemple le noir devient blancet inversement, et le
bleu devient marron.
Ainsi l’Histogramme de l’image négative montré dans la figure :(figure III.5.3).
26
Chapitre III Implémentation
La méthode qui donne l’image négative est :
L’image noir et blanc (figure III.5.4), est une image dont les couleurs ont
étéremplacéspar le gris sauf le noir et le blanc de l’image originel (figure III.5.1).
Il est bien défini dans l’histogramme la disparition des couleurs est la présence de gris et
du noire, voire la figure : (figure III.5.5).
27
Chapitre III Implémentation
Figure III.5.6- Histogramme qui présente les couleurs de l’image noire et blanc
(ColorSpace.CS_GRAY) ,null);
gris.filter(source, source);
calcul();
historique.ajout("noirEtBlanc");
}
FigureIII.5.7-code source qui mettre l’image en noire et blanc
III.5.3Les Rotations :
La rotationest le mouvement d'un corps autour d'un point ou d'un axe, avec un angle
donné.
La figure (figure III.5.8) montre la rotation dans le sens gauche avec angle de 90° :
28
Chapitre III Implémentation
Figure III.5.1- image originalFigure III.5.8- image après une rotation gauche
La figure (figure III.5.7) montre la rotation dans le sens droite avec angle de 90° :
Figure III.5.1- Image original Figure III.5.10- image après une rotation droite
29
Chapitre III Implémentation
L’algorithme qui donne la rotation d’image vers la droite est :
C’est une méthode qui permet de changer les pixels (dimensions) d’une image.
Les deux figures (figure III.5.8), (figure III.5.9) montres le rôle de ce bouton :
30
Chapitre III Implémentation
31
Chapitre III Implémentation
III.5.5 Saturation :
La saturation ou pureté est l'intensité d'une teinte spécifique, L'objectif était de définir des
couleurs dans l'espace RVB à l'aide d'un moyen plus intuitif que les valeurs RVB.
La figure (figure III.5.1) donne l’image saturée, et aussi Il est bien défini dans
l’histogramme la disparition des couleurs, voire : (figure III.5.10)
III.5.6 intensité
C’est un décalage entre deux technique assombrir et éclaircir, les figure suivante montre
ces technique
33
Conclusion générale
Conclusion générale
Dans ce mémoire nous avons atteint notre but, celui de traitement d’une image, le
traitement a été menée sous le java, et appliquée sur des images numérique et réelles.
On a vu aussi comment il est possible de mettre en œuvre des fonctions de traitements
d'images.
J'ai expliqué le code d'une application fenêtrée, qui permet de faire plusieurs opérations
sur les images, comme la lecture, l'enregistrement, et le dimensionnement.etc
en général, et la restauration en particulier.
Le traitement des images est un domaine très actif, Pour terminer, il faut dire que ce
traitement en Java n'est pas limité aux services de l'API Java 2D, mais les dépassent
pour utiliser l'API Java Advanced Image ou couramment JAI, qui étend les services
offerts par Java 2D tout en étant compatible avec celle-ci.
Résumé :
Cette thèse aborde les principaux traitements d’image A travers une approche progressive
dans le but d'obtention d'une plus grande lisibilité, avec l’utilisation des technique de
restauration Puis l’implémenter en java, et grâce cette étude nous avons bien compris le
traitement d'image car notre objet a centré d'apprendre l'utilisation d'orienté objet et java,
l'utilisation de NetBeans comme un environnement pour implémenter l’application.
Bibliographie :
Web graphie :
Chapitre I :
Chapitre II :
Chapitre III :
Chapitre I :