Académique Documents
Professionnel Documents
Culture Documents
MEMOIRE
INTITULE
2010/2011
Acknowledgments
Because you were always there for me and you always were and will be the most beloved one.
Thank you ALLAH.
From the formative stages of this thesis, to the final draft, I owe an immense debt of gratitude
to my supervisor, Dr. Ibrahim nini. His sound advice and careful guidance were invaluable.
I would also like to thank those who agreed to be interviewed, for, without your time and
cooperation, this project would not have been possible.
Finally, I would be remiss without mentioning Dr. mokhati farid, who would not be forgotten.
1
Introduction générale :
Durant ces dernières années, l’informatique s’est affirmée comme une nouvelle
technologie majeure. Cette dernière touche à plusieurs domaines dans son
développement. Parmi ces domaines, nous avons choisi la steganographie dans le but
de la signature numérique invisible.
La création d’une signature numérique doit être certifiée conforme aux exigences
d’authentique, d’infalsifiable, de non réutilisable, d’inaltérable et d’irrévocable et c’est le
but de notre application.
Dans ce contexte, nous avons proposé une nouvelle idée de substitution de pixels
de l’image dont le but d’y cacher une signature. Elle est basée sur un principe de
projection; l’idée de cette méthode est de considérer la position où se projette chaque
pixel dans une nouvelle image. Cette position est définie par l’intersection du rayon de
lumière du pixel et l’image { considérer en fonction d’une position d’un observateur
virtuel.
2
Notre travail a touché principalement la compression JPEG, mais les résultats
obtenus nécessitent des améliorations ce qui constituera l’extension de notre travail
futur.
Le premier chapitre présente dans un premier temps une brève description sur
le traitement d’image ainsi que la définition des formats d’image, en plus des
opérations appliquées aux images.
Le cinquième chapitre présente notre travail relatif aux signatures cachées dans
des images qui seront compressées selon la norme JPEG. Il donne les résultats obtenus
sur la base de la méthode utilisée et les extensions futures.
3
1 – Chapitre1 : Traitement d’image
1- Introduction
On désigne par "techniques de traitement d'images" toutes les techniques ayant pour
but la modification des caractéristiques chromatiques des pixels des images
2- Image
D’une façon la plus générale, on peut considérer qu’une image représente une
distribution spatiale d’une « information visuelle ». Une image est un ensemble de
pixels en largeur et en hauteur.
Une image numérique est représentée par une matrice bidimensionnelle de valeurs
numériques f(x,y) où :
4
mathématiques (un rectangle est défini par deux points, un cercle par un centre et un
rayon, etc ...).
2.4. Les types de fichiers : Sur un support de masses (disques ...) les images sont
stockées sous la forme de fichiers qui contiennent un entête (Hauteur, Largeur).
Exemples de format : Deux grandes catégories de format :
Sans perte : Pour ce type, la compression permet de réduire la taille d’un fichier avec
un taux de compression limité. L’opération s’effectue sans perte d’information.
PBM Noir et Blanc
PGM Niveaux de gris
PPM Couleurs
5
BMP format Windows
Avec perte : Ce type de compression consiste { compresser l’image avec un meilleur
taux de compression, mais lors de la décompression, la conséquence immédiate de la
perte d’information est de provoquer une déformation de l’image.Pour cette
compression, il existe différentes approches
Avec perte (JPEG ...).
6
Une image est faiblement contrastée si les régions sombres sont proches des
régions claires.
Niveau de gris Inverse (Niveau de gris) Image couleur Inverse (Image couleur)
Figure 1.2 : Inverse d’une image.
3-5 le Zoom dans une image :
Soit une image I de taille H*W et on désir agrandir l’image pour qu’elle soit
contenue dans une image I’ de taille H’*W’
Soit x’ et y’ les coordonnés d’un point P’ dans l’image I’
Et soit x et y les coordonnées correspondant a P’ dans l’image initial
x’ = (w’/w)*x.
y’ = ( h / h’)*y.
4. Traitement d’image :
- Traitement de Bas niveaux :
Amélioration de l’image (lissage).
Rehaussement des contours
7
Détection de contours.
- Traitement de hauts niveaux :
Segmentation.
Reconstruction.
Reconnaissance / Identification.
Interprétation.
8
Image Originale Image lissé (bloc = 3) Image lissé (bloc = 9)
Figure 1.3 : Lissage naïf d’une image.
4-1-1-2 Lissage adaptatif :
Consiste à ne considéré lors du calcul de la moyenne que les pixels dont la valeur est
proches de la valeur de pixel en question (pixel de centre du masque).
% Algorithm: "Lissage_Adaptatif"
I,j,M,N,somme,nbr_pixel :enties ;
V : enties ; % la taille du bloc %
I(M,N),I’(M,N) : Image ;
Pour i := 0 à N faire
Pour j := 0 à M faire
nbr_pixel := somme := 0 ;
Pour x = -V à +V faire
Pour y = -V à +V faire
Si |I(x+i,y+j) – I(x,y)< seuil| alors
Somme = somme + I(x+i,y+j) ;
Nbr-pixel = Nbr-pixel +1 ;
Finsi
Finpour
Finpour
I(i,j)= Somme/ Nbr-pixel ;
Fin pour
Fin pour
Fin.
4-1-2 Rehaussement des contours [ 3 ] :
Technique analytique utilisée afin d'accentuer le contour des objets sur une image.
Voir les images suivantes :
9
Image originale (avant rehaussement) Image à contours rehaussés
Figure 1.4 : Rehaussement des contours
4-2 Traitement de haut niveau :
4-2-1 Segmentation d’image : il existe deux approches
4-2-1-1 Segmentation par région :
Consiste { extraire les différentes régions homogènes d’une image. Souvent
on utilise un algorithme de décroissement de région { partir d’un point de départ
donné appelé GRAINE de région (centre).
respectivement selon x et y : .
10
4-2-1-2-2 le laplacien :
C’est la 2éme dérivée de l’image
La détection de contour est réalisée par recherche du maximum/minimum de
la dérivée première ou le passage par zéro de la dérivée seconde.
11
2- Steganographie :
4- Introduction
12
6- Les principes de la stéganographie [ 2 ]
Selon les objectifs poursuivis, les schémas de dissimulation d'information portent
des noms différents. On en distingue trois principaux :
3-1La stéganographie (Data Hiding) : cherche à cacher un message dans un
medium de telle sorte que personne ne puisse distinguer un medium vierge
d’un stego-medium.
3-2 Le tatouage : cherche à répondre au problème de la protection des
droits d'auteur. Un client essaye d'abord de détecter la possible présence d'une
marque dans un médium, puis dans l'affirmative, de vérifier si l'utilisateur a
bien acheté une licence. Il s'agit bien de dissimulation d'information puisque,
pour y parvenir, on insère un tatouage (ou marque, ou filigrane) dans le
médium spécifique au propriétaire. Comme celui-ci souhaite protéger son
médium et non une version trop déformée, l'insertion doit minimiser les
modifications subies par le médium afin d'être imperceptible. Ensuite, chaque
copie du stégo-médium contient la même marque, celle du propriétaire légal.
Ici, la dissimulation ne signifie pas la même chose qu'en stéganographie : un
attaquant sait qu'un tatouage est présent dans le stégo-médium, mais cette
connaissance ne doit cependant pas lui permettre de le retirer [1]. Voir
l’exemple dans l’image suivante :
13
La stéganographie et le tatouage sont deux techniques reposant sur le data
hiding mais leurs objectifs sont différents.
Pour la stéganographie, le but est de dissimuler un message secret dans le
médium n’ayant rien { voir avec lui de façon { ce qu’un attaquant ne puisse
pas savoir si des informations sont dissimulées dans le médium.
Pour le watermarking (ou tatouage), le but est différent. Il s’agit de
dissimuler une faible quantité d’information ayant un rapport direct ou
indirect avec le médium.
Une autre différence entre stéganographie et tatouage réside dans
l’opération de sortie : Dans le cas de la stéganographie, il s’agit d’extraire les
données dissimulées dans le médium alors que dans le tatouage, il peut
aussi s’agir simplement de détecter la présence du tatouage.
3-2-2 Les domaines d’application du tatouage : Le tatouage peut agir dans deux
domaines:
Domaine spatial : il agit directement sur les pixels. Méthode très rapide.
(LSB, Manipulation de la palette de couleurs d’une image).
Domaine fréquentiel : transformation en Cosinus Discrète ou
Transformation espace de Fourier (Message caché dans les choix de compression
d’une image).
3-3 Fingerprinting : cherche à permettre la détection des copies illégales d'un stégo-
médium.
14
La robustesse : correspond à l'aptitude de préservation des données cachées
face aux modifications du stégo-médium.
Dans du texte: Il s’agit du premier médium sur lequel ce type de cryptographie et été
appliqué. Voici différentes techniques :
Trous sous les lettres importantes.
Changement de type d’écriture (Francis Bacon).
Utilisation de synonymes.
Changement de règles de grammaires.
Jeu sur les espaces.
15
Ces méthodes ont plusieurs inconvénients :
Faible capacité. Il est possible de l’augmenté mais l’imperceptibilité
diminue alors.
Elles sont fastidieuses.
Dans les images : Nous allons maintenant détailler les six grandes approches de
stéganographie
Un système par substitutions remplace les parties redondantes du support
par le message.
16
Les techniques par transformations dissimulent l'information dans une
transformée du support, comme par exemple, la transformée à cosinus
discrète ou le domaine des ondelettes.
Les techniques par étalement de spectre : les informations sont
dissimulées dans toute l’image, et la perte de certains informations doit pouvoir
être compensée par les autres.
Les méthodes statistiques modifient plusieurs statistiques du support
(distribution des pixels, luminosité...) pour cacher le message et le récupèrent en
testant ces hypothèses.
Les techniques par distorsions altèrent le support, la différence avec
le support initial constituant alors le message.
Les méthodes par génération de support construisent un support autour du
message pour le dissimuler.
Chaque entrée de ce tableau représente un pixel, nous avons donc une toute petite
image 2*2. Chaque triplet de bits (0 ou 1) code la quantité de l’une des trois
couleurs primaires du pixel. Le bit le plus à droite de chaque composant est le
fameux bit de poids faible — LSB. Si on souhaite cacher le message 111 111 101 101,
17
l’image est modifiée de la façon suivante : le bit de poids faible de l’octet est mis à
la valeur du bit du message correspondant; ici on obtient :
0010 1001 0100 1011 0011 0001 | 0001 0111 0111 0011 1001 1111
0011 0101 1001 1110 0111 1011 | 0000 1011 1111 0010 1101 0011
Dans la figure1, l’image (b) est cachée dans le bit de point faible de deux
composants le rouge et le vert, on obtient l’image (a).
Autre exemple :
Par DCT : la clé détermine deux coefficients dans le tableau 8*8 obtenu après
DCT et modifie leur valeur de façon à ce que leur différence soit supérieure ou
inférieure à un certain seuil pour coder le 1 et le 0 binaire puis on fait une DCT
inverse pour retrouver l’image. Pour décoder on exécute le même processus mais la
modification des coefficients est remplacée par un test sur le seuil de différence.
Par exemple :
Message caché dans les choix de compression d’une image : Tout semble indiquer que l’on
ne peut cacher un message dans un format d’image utilisant une compression avec perte.
18
En réalité la plupart des programmes de stéganographie sérieux s’attaquent justement au
format JPEG qui utilise ce type de compression.
L’idée n’est pas de cacher une information dans les couleurs ou dans la palette (puisqu’il
n’y en a pas) mais dans les choix de compression. En effet, tout algorithme de
compression nécessite une succession de choix.
Avec des algorithmes de compression tel que Zip ou Gzip, on peut choisir la puissance de
compression. En consommant plus de temps de calcul et/ou plus de mémoire pour les
opérations intermédiaires, on peut obtenir de meilleurs résultats de compression. Ainsi
deux fichiers compressés, de tailles différentes peuvent être décompressés en deux fichiers
identiques.
La compression dans le format JPEG est double. La première compression consiste à
découper l’image en blocs de 8 fois 8 pixels et de transformer ces carrés sous une forme
mathématique simplifiée. Cette compression introduit des pertes et la version
mathématique peut être légèrement différente du carré original tout en étant visuellement
très semblable. Une fois tous les blocs compressés, il faut coder les formes mathématiques
en consommant le moins possible d’espace. Cette deuxième compression n’introduit pas
de perte et elle est similaire dans les principes { ce que l’on peut retrouver dans Zip ou
Gzip. C’est en introduisant dans cette phase des bits d’informations que l’on arrive {
transporter un message caché.
19
3- Implémentation :
1 - Introduction :
La steganographie est une méthode basée sur la substitution des pixels dans le but
de les cacher, et dans ce domaine plusieurs travaux ont proposé des algorithmes pour
assurer une certaine robustesse et sécurité. Dans ce contexte, nous avons proposé une
nouvelle idée basée sur la projection ; l’idée de cette méthode est de considérer la position
où se projette chaque pixel dans une nouvelle image. Cette position est définie par
l’intersection du rayon de lumière du pixel et l’image { considérer en fonction de la
position virtuelle de l’observateur.
2 – La projection :
Dans notre algorithme, nous avons proposé une nouvelle idée de substitution de
pixels de l’image dont le but de les cacher. Il est basé sur la projection de chaque pixel de
l'image originale sur une autre image virtuelle qui apparait comme une image tournée.
Cette rotation est expliquée par un observateur virtuel qui est supposé tourner autour du
centre de l'image originale. Ainsi, la relation entre ces deux images est assurée par le fait
que le plan de l'image virtuelle est perpendiculaire { la direction d’observateur. Ainsi, et
parce que chaque pixel possède un rayon lumineux, la position d’intersection de sa
direction avec celle de l'image virtuelle est utilisée comme position de projection. Cette
projection possède cependant, un inconvénient de sorte que certaines parties de l'image
d'origine disparaissent, tandis que d'autres sont projetés sur les mêmes positions. La
raison est que les positions des pixels projetés doivent être arrondies aux entiers les plus
proches.
2-1- Positions de projection directes :
Il est supposé que l'image d'origine est considérée à partir d'une position sur une
direction perpendiculaire à son centre, tandis que sa projection est vue d'une position
inclinée. Tout d'abord, les différentes positions de l’observateur sont supposées être
situées sur un cercle autour du centre de l'image. Le rayon de ce cercle est ce qui définit
la distance du centre de l'image. La position de référence est alors celle où la direction de
20
l'observateur est perpendiculaire au plan de l'image originale. En conséquence, toute autre
position est définie par son angle d'inclinaison relativement à la position de référence.
Le processus de projection est basé sur l'intersection de la direction du rayon
lumineux en direction de l’observateur de chaque pixel de l'image originale et l'image
virtuelle dont le plan est perpendiculaire { la direction actuelle de l’observateur. Le point
d'intersection est la position à utiliser pour y coller le pixel d'origine. En outre, il est
évident que la nouvelle position est légèrement différente de celle d'origine. Ainsi, lorsque
tous les pixels sont projetés, et selon l'inclinaison, l’image obtenue est soit étendue ou
condensée par rapport à l'originale (Figure1).
cible devient Pt. En d’autre termes, Pt est la position où le pixel Po est supposé être vu
dans l'image cible lors de l'inclinaison de la position de l’observateur. Donc l'objectif est
de déterminer la valeur de OPt.
21
Figure 3.2 : Estimation de la position de la projection d'un pixel.
Soit l'angle entre les directions de la position de référence et de la nouvelle
position. Cet angle est le même entre le plan de l’image d’origine et celle inclinée. Soit A
la projection perpendiculaire de Po sur la nouvelle direction , tel que PoAO est à un
triangle droit et OPoA = . Il est facile de voir que APo = OPo*cos . Si l’on prend en
compte OPtVt, en utilisant cette expression et on se basant sur la vérité de l’expression
suivante :
(1)
Parce que : .
Selon la figure (2), la formule (2) n'est vraie que pour une partie qui est la moitié
de l'image située sur le même côté de la position de l’observateur par rapport { l'original.
En fait, l’autre partie de l'image est projetée sur l’image cible en utilisant des formules
différentes.
22
toute une colonne comme unité de transformation. Donc la formule (2) est utilisée pour
évaluer la nouvelle position d'un pixel, mais utilise toute une ligne ou une colonne d'un
plan de couleur pour la copier dans cette position.
Voici un exemple d’une image projetée où les pixels en blanc sont l’intersection des
positions du vecteur horizontal et celui vertical.
23
une partie réduite de celle projetée. Donc, pour une position donnée, on ne garde qu’un
seul point de ligne ou point de colonne et les autres sont ignorés.
L'algorithme de projection répète la même opération sur les deux côtés de l'image.
Cela signifie que la projection est appliquée dans l’autre coté comme si l‘observateur
virtuel est déplacé sur le côté gauche puis sur le côté droit.
Les couleurs d’une image sont une combinaison de trois couleurs de base rouge,
vert, et bleu qui constituent les trois plans de l’image. La substitution des bits est faite
dans le bit de poids faible du premier plan. Une fois ce plan a toutes ses entrées utilisées,
on passe au 2ème plan, et ensuite au 3ème plan. Par la suite, on passe au 2ème bit de
poids faible et ainsi de suite jusqu'{ ce qu’on cache toute l’image.
L’idée de base est de faire l’intersection entre les lignes et les colonnes de l’image
projetée et d’en utiliser le bit de poids faible et de le substituer par un bit de l’image {
cacher. Par conséquent, l’algorithme de substitution est le suivant :
% Algorithm: "Image_Hide"
Fin = faux ;
24
Tlin = PosProjV(Image) ;
Tcol = PosProjH(Image) ;
Lin = col = K = I = J = Bs = P = 0 ;
Tantque non fin faire
Substituer le bit de rang bs du pixel(Tlin(lin),Tcol(col)) du
plan P de l’image originale par le bit de rang k du
pixel(i,j) ;
j = j+1;
si j = nombre de colonnes de l’image { cacher alors
i := i+1 ;
si i = nombre de lignes de l’image à cacher alors
fin = vrai
finsi
j := 0 ;
finsi
si lin+1 = taille (Tlin) alors
p++ ;
si P =3 alors
bs ++
si bs = 8 alors
fin = vraie ;
finsi
finsi
sinon
lin ++ :
finsi
si col+1 = taille (Tcol) alors
col = 0 ;
sinon
col = col+1 ;
finsi
Fin tantque
Fin
25
2-1 Extraction de l’image cachée :
Pour extraire une image cachée, il faut aussi respecter le concept de projection.
Pendant cette étape aussi, on fait la projection d’une image originale. Les étapes { suivre
sont inverses de l’algorithme de ‘Image_Hide’. On fait l’extraction des bits de poids faibles
de l’image originale pour les combiner comme bits des pixels de l’image { reconstituer.
L’algorithme est alors le suivant :
% Algorithm: "Image_Extract"
Fin = faux ;
Tlin = PosProjV(Image) ;
Tcol = PosProjH(Image) ;
Nbr := 0;
Pix(24);
Lin = col = K = I = J = Bs = P = 0 ;
Tantque non fin faire
Si nbr < 24 faire
Extraire b le bit de rang bs du pixel(Tlin(lin),Tcol(col)) du
plan P de l’image originale ;
pix := concat(pix,b) ;// insérer le bit dans sa position dans le pixel pix
nbr = nbr +1 ;
Sinon
Affecter pix à Pixel(i,j) de l’image { extraire
j = j+1;
si j = nombre de colonnes de l’image { extraire alors
i := i+1 ;
si i = nombre de lignes de l’image { extraire alors
fin = vrai
finsi
j := 0 ;
finsi
Finsi
si lin+1 = taille (Tlin) alors
p++ ;
26
si P =3 alors
bs ++
si bs = 8 alors
fin = vraie ;
finsi
finsi
sinon
lin ++ :
finsi
si col+1 = taille (Tcol) alors
col = 0 ;
sinon
col = col+1 ;
finsi
Fin tantque
Fin
27
4 – Application :
1- Introduction :
3- Langage d’implémentation[ 5 ] :
28
programmation orientée objet et la programmation générique. C++ est
actuellement le 3e langage le plus utilisé au monde. Le langage C++ n'appartient
à personne et par conséquent n'importe qui peut l'utiliser sans besoin d'une
autorisation ou obligation de payer pour avoir le droit d'utilisation.
3-1 Historique : [ 5 ]
Bjarne Stroustrup a développé C++ au cours des années 1980, alors qu'il
travaillait dans le laboratoire de recherche Bell d'AT&T. Il s'agissait en
l'occurrence d'améliorer le langage C. Il l'avait d'ailleurs nommé C with classes
(« C avec des classes »). Les premières améliorations se concrétisèrent donc par
la prise en charge des classes, ainsi que par de nombreuses autres
fonctionnalités comme les fonctions virtuelles, la surcharge des opérateurs,
l'héritage (simple ou multiple), les « templates », la gestion des exceptions, etc.
Le langage C++ est normalisé par l'ISO. Sa première normalisation date de
1998 (ISO/CEI 14882:1998), sa dernière de 2003 (ISO/CEI 14882:2003). La
normalisation de 1998 standardise la base du langage (Core Language) ainsi que
la bibliothèque standard de C++ (C++ Standard Library).
En langage C, ++ est l'opérateur d'incrémentation, c'est-à-dire l'augmentation de
la valeur d'une variable de 1. C'est pourquoi C++ porte ce nom : cela signifie que
C++ est un niveau au-dessus du C. Il existe de nombreuses bibliothèques C++ en
plus de celle qui est incluse dans la norme. Par ailleurs, C++ permet l'utilisation
de l'ensemble des bibliothèques C existantes.
29
À l'origine, la STL était une bibliothèque développée par Alexander
Stepanov qui travaillait pour Hewlett-Packard. Dans la norme, celle-ci n'est pas
appelée STL, car elle est considérée comme faisant partie de la bibliothèque
standard du C++. Toutefois, beaucoup de personnes l'appellent encore de cette
manière pour distinguer d'une part, les fonctions d'entrées/sorties comprises
dans cette bibliothèque et, d'autre part, celles fournies par la bibliothèque C.
Comme en C, l'utilisation d'une bibliothèque se fait par l'intermédiaire de
la directive #include (suivie du nom du fichier d'en-tête).
4- Présentation de l’application :
Afin de rendre notre application facile à comprendre et à manipuler, nous
avons proposé ce design qui est compréhensible dès la première utilisation.
Notre application n’est pas seulement pour la stéganographie mais aussi
pour les différents outils d’image comme, l’histogramme niveau de gris ou les
trois couleurs de base, le lissage, le zoom, la détection de contour…
1- File
2- Image tool :
30
Figure 4.2 : fenêtre d’application 2.
5- Echantillon :
Nous avons choisi ces images pour les tests de notre application
présentés dans les tableaux suivants et nous avons pris les facteurs suivants :
L’angle = 0,2616 radians et la distance Ovo = 2,4 pour la projection de
colonnes.
L’angle = 0,1222 radians et la distance Ovo = 2,8 pour la projection de lignes.
31
Largueur * hauteur Le nombre de positions projetées Le nombre de positions
perdues
Image1 1026*770 = 790020 757500 32520
Image2 60*60 = 3600 14756 994
Image3 227*227 = 51529 47523 4006
32
Image4 (277*277) Image5 (66*66) Image6 (602*451)
Figure 4.5 : Echantillon pour le test.
A = Le nombre de bits utilisés dans les trois plans.
B = Le temps nécessaire pour que l’image soit cachée.
C = Le temps d’extraction.
Image4 Image5 Image6
A B C A B C A B C
Image1 2 5100 ms 900 ms 1 900 ms 130 ms 9 60483 ms 5010 ms
Image2 24 638 ms 118 ms 24 855 ms 139 ms 24 737 ms 140 ms
Image3 24 4915 ms 657ms 3 911 ms 130 ms 24 10040 ms 943 ms
33
La Figure1 montre que lorsque la taille de la signature est grande et que la
taille de l’image originale est plus petite, la dégradation de cette dernière
augmente. L’inverse est également vraie, c’est ce que montre le test suivant :
Dans La Figure3, l’image (d) montre que la signature est presque totalement cachée
mais l’image (c) est totalement dégradée.
34
5 _ Signature et compression JPEG
1- Introduction
35
Transformée DCT La transformée DCT est une transformation numérique qui
est appliquée à chaque bloc et pour chaque « couleur ». La transformée DCT
s’exprime mathématiquement par :
36
Équation 5.4 : Calcul de la quantification.
Et pour la quantification inverse :
37
Ce que nous avons constaté, c’est que les images tatouées ne permettent pas une
extraction complète de la signature si elles ont subis une compression. Nous avons
alors suivi certaines idées et chacune a donné des résultats différents. Par exemple,
dans la figure 5.4 suivante, nous avons caché l’image (b) dans l’image(a), ensuite nous
avons compressé l’image (a). Nous avons alors obtenu l’image (c). Après extraction,
nous avons obtenu l’image (d). Les points suivants en donnent les détails.
38
Image Image (c)= La différence La L’image La
Originale(a) Compressé (b) entre (a) et (b) signature tatouée (e) signature
(d) extraite (f)
Figure 5.5 : les résultats de la première idée
Résultats le nombre de pixels conservés est 0,16%.
Idée 2 :
Nous avons remarqué qu’après avoir signé l’image (a), les bits cachés et malgré
qu’ils aient été insérés dans des pixels où la compression réserve leurs valeurs, ils ont
été perdus pour une simple raison que la DCT travaille au niveau bloc.
Pour cela nous essayons d’éviter les pixels qui changent une fois on leur a ajouté
1 ou diminuer 1. Nous avons remplacé le bit de poids faible de chaque pixel par 0, nous
obtenons l’image (g), et nous répétons la même opération mais avec 1, nous obtenons
l’image (h) (Figure 5.6).
Ensuite nous avons fait la différence entre l’image (e) (Figure 5.5), l’image (g) et
l’image (h) pour obtenir l’image (i) (Figure 5.6). Nous gardons les positions des pixels
conservés (qui sont en noir).
Enfin nous avons caché les bits de la signature dans l’image originale mais en
n’utilisant que ces positions, et nous avons compressé l’image tatouée.
Les résultats obtenus sont les suivants :
39
Figure 5.6 : les résultats de la deuxième idée
Idée 4 ;
Image(m) Image(n)
Figure 5.7 : les résultats de la quatrième idée
40
Conclusion générale :
Ce travail consiste en l’étude et le développement d’une méthode dans le
informations cachées.
Pour satisfaire ces objectifs, nous avons proposé une méthode de projection
Le travail que nous avons présenté dans ce mémoire est une étape
préliminaire d’une grande phase qu’est le tatouage numérique. Une des difficultés
rencontrée et qui a été difficile { résoudre, cependant, est celle de garantir l’intégrité
du tatouage face aux modifications ou dégradation. Nous considérons que les résultats
obtenus par notre travail sont assez importants du fait qu’ils gardent au moins des
positions inchangées.
Pour synthétiser nos résultats, nous avons fait des tests sur une image
compressée avec une signature. L’objectif est de faire sortir le pourcentage de bits
41
Sommaire
Introduction ……………………………………………………………………………………………………………………………………………………………… 1
Chapitre 1 : Traitement d’image
1- Introduction ………………………………………………………………………………………………………………………………………………… 3
2- Image ……………………………………………………………………………………………………………………………………………………………. 3
2-1 Définition de l’image numérique …………………………………………………………………………………………………………… 3
2-2 Format des images numériques …………………………………………………………………………………………………………… 3
2-3 Caractéristiques d’une image numérique ………………………………………………………………………………………… 4
2-4 Les types de fichiers ………………………………………………………………………………………………………………………………… 4
3- Les opérations ponctuelles …………………………………………………………………………………………………………………… 5
4- Traitement d’image ……………………………………………………………………………………………………………………………………… 6
4-1 Traitement de bas niveau ……………………………………………………………………………………………………………………… 7
4-1-1 Lissage d’image ………………………………………………………………………………………………………………………………… 7
4-1-2 Rehaussement des contours ……………………………………………………………………………………………………… 8
4-2 Traitement de haut niveau …………………………………………………………………………………………………………………… 9
4-2-1 Segmentation d’image ……………………………………………………………………………………………………………………… 9
4-2-1-1 Segmentation par région …………………………………………………………………………………………………………………… 9
Segmentation par contour ………………………………………………………………………………………………………………………………… 10
5- Espace de couleur …………………………………………………………………………………………………………………………………… 10
Chapitre2 : La stéganographie
1- Introduction ……………………………………………………………………………………………………………………………………………… 11
1- Définitions et fondements théoriques ………………………………………………………………………………………… 11
2- Les principes de la stéganographie ………………………………………………………………………………………………… 12
3- Conditions requises ………………………………………………………………………………………………………………………… 13
4- Domaine d’utilisation ………………………………………………………………………………………………………………………… 14
5- les techniques utilisées ……………………………………………………………………………………………………………………… 14
Chapitre 3 : Implémentation
1- Introduction ………………………………………………………………………………………………………………………………………….. 19
2- La projection ……………………………………………………………………………………………………………………………………… 19
2-1 Positions de projection directes ……………………………………………………………………………………………… 19
3- La substitution …………………………………………………………………………………………………………………………………… 23
3-1 Cacher une image dans une autre …………………………………………………………………………………….. 23
3-1 Extraction de l’image cachée ………………………………………………………………………………………………… 25
Chapitre 4 : l’application
1- Introduction ……………………………………………………………………………………………………………………………………… 27
2- Matérielles utilisé pour le développement ………………………………………………………………………………… 27
3- Langage d’implémentation ……………………………………………………………………………………………………………… 27
4- Historique ………………………………………………………………………………………………………………………………………….. 28
5- La bibliothèque standard (C++ standard Library) …………………………………………………………………… 28
6- Présentation de l’application ………………………………………………………………………………………………………… 29
7- Echantillon ………………………………………………………………………………………………………………………………………… 30
8- Test de la méthode de projection ……………………………………………………………………………………………… 30
9- Test de la méthode de substitution …………………………………………………………………………………………… 31
Chapitre5 : Traitement d’image
1- Introduction ……………………………………………………………………………………………………………………………………… 34
2- Les étapes de La compression JPEG …………………………………………………………………………………………… 34
3- Idées suivies pour signer des images qui seront compressées …………………………………………… 37
Idée I ……………………………………………………………………………………………………………………………………………………… 37
Idée 2 …………………………………………………………………………………………………………………………………………………… 38
Idée 3 …………………………………………………………………………………………………………………………………………………… 39
Idée 4 …………………………………………………………………………………………………………………………………………………… 40
Conclusion …………………….…………………………………………………………………………………………………………………… 41
Générales
42
Listes des figures et tableaux
Figure 1.1 Histogramme d’une image. 5
Figure 1.2 Inverse d’une image. 6
Figure 1.3 Lissage naïf d’une image. 8
Figure 1.4 Rehaussement des contours. 9
Figure 1.5 Détection de contour d’une image (Gradient). 9
Figure 1.6 Détection de contour d’une image (Laplacien). 10
Figure 1.7 Espace de couleur RGB. 10
Figure 2.1 Tatouage d’une image. 11
Figure 2.2 Image avec tatouage numérique visible. 12
Figure 3.1 Système de projection d'une image. 20
Figure 3.2 Estimation de la position de la projection d'un pixel. 21
Figure 3.3 Image originale, (b) et (c) les positions projeté à partir de (a). 22
Figure 4.1 : Fenêtre d’application 1. 29
Figure 4.2 : Fenêtre d’application2. 30
Figure 4.3 : Echantillon pour test. 30
Tableau 4.1 Nombre des pixels utilisés relatif { la taille de l’image. 31
Figure 4.4 LE nombre de position relatif { l’angle . 31
Figure 4.5 Echantillon pour le test. 32
Tableau2 Les temps d’exécution de l’algorithme en fonction des tailles des images { cacher. 32
Figure 4.6 : Signature de grande taille et image originale de petite taille. 32
Figure 4.8 Signature et image originale ont des tailles similaires. 33
Figure 4.7 Signature de petite taille et image originale de grande taille. 33
Figure 5.1 : Organigramme de compression. 34
Figure 5.3 Schéma de codage simplifié. 37
Figure 5.5 : Les résultats de la première idée. 38
Figure 5.6 Les résultats de la deuxième idée. 39
Figure 5.7 Les résultats de la quatrième idée. 40
Équation 5.5 Calcul de la quantification inverse. 36
Équation 5.4 : Calcul de la quantification. 36
Équation 5.3 Définition de la constante C. 35
Équation 5.2 : Transformée DCT inverse. 35
Équation 5.1 : Transformée DCT directe. 35
Figure 5.2 Ordre de codage défini par la norme JPEG. 37
Figure 5.4 : Extraction de tatouage. 39
43
Référence :
[1] http://www.profil-couleur.com/ec/112-modele-cie-rgb.php
[2] http://fr.wikipedia.org/wiki/St%C3%A9ganographie
[3] http://www.ccrs.nrcan.gc.ca/glossary/index_f.php?id=3020
[6] http://fr.wikipedia.org/w/index.php?title=Compression_JPEG&redirect=no
44