Académique Documents
Professionnel Documents
Culture Documents
MEMOIRE
Pour l’obtention du diplôme de Master en informatique
OPTION : IMAGERIE
INTITULE
Insertion d'une signature dans une image sur
Soutenu le : 29/06/2011
2010/2011
1
Remerciement :
instant notre dieu, qui nous donner l‟effort pour la continuité et l‟arriver à ce
pour avoir encadré et pour les conseils qu‟il nous a prodigué durant toute la période
Un grand merci à tous ceux qui ont participé de près ou de loin à ce mémoire, tant
Nous remercions tous les enseignants qui participé pour notre information.
2
Je dédie ce modeste travail à :
La personne qui m‟a soutenu pour son amour et sa tendresse …à toi maman ! Merci.
La personne qui a sacrifie toute sa vie pour faire de moi ce que je suis, qui n‟a lésine sur
aucun moyen afin de me pousser toujours vers l‟avant …à toi papa ! Merci.
A mes amies : Samiha, Kanza, Meriem zdira, Meriem chibani, Jalila , Mira, Mina, Titoma,
Mona, Ahlem…
A tous les responsables du département et à tous mes enseignants qui ont contribué à ma
formation.
3
Sommaire
Introduction ........................................................................................................01
Chapitre1 ............................................................................................................03
1. Définition1 ..........................................................................04
2. Définition2 ..........................................................................04
4
1.2. Compression avec perte ..................................................09
1. Segmentation ................................................................................11
1.1. Segmentation par région .......................................................11
1.2. Segmentation par conteurs ....................................................12
1.2.1. Les opérations de détection..........................................12
1.2.1.1. Le gradient de l‟image ...........................................12
1.2.1.2. Laplacien ................................................................12
2. Filtrage de lissage .........................................................................13
2.1. Lissage par moyenne ...........................................................13
2.2. Lissage adaptatif ..................................................................13
Les domaines d‟application de l‟image ............................................14
Chapitre2 ...............................................................................................................15
La stéganographie ...................................................................................15
5
2.1. Tatouage fragile ..........................................................................21
2.2. Tatouage robuste .........................................................................22
Chapiter3 ..................................................................................................................23
Chapitre 4 .................................................................................................................34
Résultat ...................................................................................................39
Conclusion ................................................................................................................44
6
Introduction :
De notre jour, l‟informatique est devenue très importante et son intérêt est de plus en plus
croissant. La maîtrise de l‟outil informatique a beaucoup d‟avantage dans la résolution, le
développement et l‟exécution rapide des projets de tous les domaines. Parmi ces
domaines, nous citons le traitement d‟image. Cependant, ce dernier est assez vaste. Nous
avons choisis la stéganographie et plus particulièrement, la signature numérique invisible.
L‟objectif de notre étude est de développer un logiciel qui fait cacher une signature
numérique dans une image et de l‟extraire. Mais pour la cacher, on propose une nouvelle
idée qui permet de faire une projection sur la base d‟une vue cylindrique. L‟idée de cette
méthode est de considérer la position où se projette chaque pixel dans une nouvelle image.
Les positions sont définies par l‟intersection du rayon lumineux de chaque pixel dans
l'image vers l‟observateur et la surface du cylindre qui sont les mêmes quelque la position
de l‟observateur.
Dans un premier chapitre, nous définissons les notions nécessaires aux traitements
d‟image, où l‟on utilise une brève description pour chaque notion. En particulier, nous
considérons la définition de ce qu‟est une image et ses caractéristiques, les types existants,
les formats les plus répondus et enfin les opérations appliquées à l‟image.
Dans le troisième chapitre, c‟est le noyau de notre travail où l‟on définit en détail
comment faire la projection, les formules mathématiques utilisées. Ensuite nous passons à
la description de l‟idée utilisée et comment une signature est cachée étape par étape. Enfin,
7
nous donnons des exemples pour bien expliquer comment marche la méthode, sans oublier
pas la partie de l‟extraction.
Le quatrième chapitre est une description générale de notre logiciel. Il explique ce que
fait chaque bouton et à quoi correspond-t-il. Avant la description du logiciel, nous
présentons le langage utilisé pour développer le logiciel. Enfin nous présentons un
ensemble de tests dans l‟utilisation de la projection pour cacher une image.
8
I. Représentation de l’image :
1. Définition de l’image réelle :
L‟image est la projection sur un plan 2D d‟une scène 3D où D représente les dimensions de
la scène.
L‟image est un ensemble structuré d‟information. On peut la considère comme une onction
multidimensionnelle, en général 2D ou 3D et à valeurs discrètes pouvant être scalaire telle
que l‟image en niveaux de gris, ou bien vectorielle.
L‟image numérique est un ensemble de pixels qui constituent les plus petits éléments dans
celle-ci et sont désignés par leurs coordonnées entiers (i, j) qui représentent ses lignes et
ses colonnes.
2.1 Pixel : c‟est le plus petit point qui forme l‟image. Un pixel possède une
valeur qui peut être un scalaire et représente un niveau de gris ou un
vecteur représentant une couleur.
2.2 Dimension de l’image : ce concept signifie la taille de l‟image qui
représente sa forme matricielle dont les éléments de cette matrice sont des
valeurs numérique, le nombre de pixels en ligne (L) et le nombre de pixels
en colonne (C) qui définissent l‟image. On doit faire la multiplication entre
ces deux (L*C) pour obtenir le nombre total de pixels qui existe dans
l‟image.
2.3 Taille de fichier de l’image : c‟est le nombre d‟octets nécessaires pour le
codage d‟un pixel multiplié par le nombre de pixels. Par exemple, dans
certaines images, un pixel peut être codé sur un octet, dans d‟autres, telles
que les images naturelles, un pixel peut être codé sur trois ou quatre octets.
2.4 Dynamique de l’image : ce concept permet de compter le nombre de
niveaux de gris d‟une image.
9
2.5 Histogramme
1. Définition : L‟histogramme d‟une image représente le nombre de pixels
pour chaque niveau de gris. Il est aussi possible de le considérer comme
une fonction qui décrive la répartition des niveaux de gris d‟une image.
Elle donne la distribution statistique et les bornes de répartition des
niveaux de gris. Avant sa normalisation, un histogramme peut être
considéré comme un graphe de densité de probabilité des niveaux de
gris.
10
Histogramme normalisé
Egalisation de l‟histogramme.
BMP : c‟est purement une photocopie de l‟image de l‟écran sans compression, c‟est
le format par défaut de Windows.
JPEG : ce format est utilisé pour les photos sur internet, c‟est des images avec
compression efficace mais avec perte dans la qualité.
GIF : c‟est un format de compression sans perte d‟information.
11
III. Les types d’images :
Deux normes sont utilisées pour les types de l‟image numérique :
Ensemble de pixels organisés dans un tableau. Chaque pixel contient une ou plusieurs
valeurs qui définissent sa couleur ou sa radiométrie.
12
1.2 Les inconvénients de l’image bitmap :
2. Dépendance du périphérique où la qualité d‟affichage et
d‟impression est d‟une résolution fixe.
3. Les modifications spatiales sont difficiles à faire, telles que des
opérations d‟agrandissement ou de réduction et en plus, les
opérations de redimensionnement.
4. Encombrement important : les images bitmap sont lourdes.
2. Les images vectorielles :
Une image vectorielle est un ensemble de représentions d‟entité géométrique. Ces
entités peuvent être des cercles, rectangles, segments… représentées par des
formules mathématiques. Par exemple, un rectangle est représenté par deux points.
On utilise des logiciels pour traduire ces formules en images. Ceci est commode
pour les transformations de l‟image tout en conservant sa qualité.
La qualité de l‟image vectorielle dépend du matériel utilisé.
Le stockage de l‟image vectorielle est effectué par la mémorisation
des coordonnées des points caractéristiques des formes qui
constituent l‟image.
13
2.1 Les avantages de l’image vectorielle :
1. A l‟inverse des images bitmap, les images vectorielles peuvent subir
des modifications spatiales comme l‟agrandissement et la réduction
sans être affectées par une perte d‟information.
2. La taille de ce type est variable en fonction de la complexité de
l‟image.
3. Les images vectorielles sont adaptées aux représentations
schématiques constituées de formes géométriques.
2.2 Les inconvénients de l’image vectorielle :
1. La comptabilité entre les formats est difficile, puisque chaque format
vectoriel contient ses propres attributs.
2. Une image vectorielle ne peut coder une image analogique telle
qu'une image photographique.
3. Les traitements sur un objet sont difficiles comme les modifications
de couleurs.
14
1.2 Compression 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. On peut citer les
approches suivantes :
Compression fractale.
Compression JPEG.
2. Couleur de l’image :
2.1. Définition :
Le couleur est codée par un vecteur de trois dimensions chacune représentant une
intensité de couleur qui sont le rouge, le vert et le bleu où chacune est codée sur un
octet, donc à partir de ces trois couleurs, on peut obtenir (28)3 = 16777216 couleurs
différents.
15
C‟est un espace vectoriel composé de trois composants
monochromatiques rouge, vert et bleu. Le mélange de trois couleurs
produit le cube suivant :
Ce type d‟espace est définit à partir d‟une transformation linéaire sur l‟espace
RGB, c‟est-à-dire la transformation des coordonnée RGB en coordonnée XYZ,
les couleurs de cet espace sont visibles lorsqu‟elles sont contenues dans le
triangle xyz de l‟image suivante.
16
2.2.3. D’autre espace de couleurs :
V. Traitement d’image :
Généralement les traitements sur une image se répartissent en deux catégories :
1. Segmentation.
2. Reconstruction.
3. Reconnaissance / Identification.
4. Interprétation.
Pour donner plus de détails pour chaque catégorie, on prend un exemple pour
chaque niveau.
17
d‟accroissement de région à partir d‟un point de départ donné appelé
Grain de région ou bien le centre.
18
Pour le traitement de bas niveaux on prend :
2. Filtrage de Lissage :
Pourquoi fait-on le lissage ? L‟image par nature contient du bruit. On applique des
opérations sur l‟image qui éliminent les perturbateurs pour améliorer la visualisation. La
compression, l‟acquisition, et d‟autres opérations peuvent produire du bruit.
19
Image bruité Apres lissage
20
I. La stéganographie :
1. Définition de la stéganographie :
Le mot stéganographie est composé de deux mot „steganos‟ (caché ou secret) et „graphy‟
(écriture ou dessin) ; elle signifie, littéralement, „écriture cachée‟.
Elle peut ainsi être définie comme la science et l‟art de dissimilation d‟information à
cacher dans un support de manière à passer inaperçue lors de la communication. Le
support peut être un medium. Parmi ceci, il y a: audio, vidéo et image.
La stéganographie est une méthode peut utiliser pour garantir l‟intégrité d‟un document
électronique et d‟en authentifier l‟auteur de façon que ce mécanisme doive permettre au
lecteur d'un document d'identifier la personne ou l'organisme qui a apposé sa signature.
2. Historique :
Dès l'Antiquité, où les batailles n'étaient pas rares, il était parfois utile de pouvoir
communiquer avec des troupes alliées (ne fut-ce que pour des appels à l'aide !). Les
messagers furent donc multipliés en gardant l'espoir qu'il y en ait bien un qui passerait les
lignes ennemies. C'était généralement le cas mais quel gâchis : des soldats qui auraient pu
mourir sur le champ de bataille le glaive à la main mourraient à la place torturés. Face à ce
problème, des idées vinrent à l'esprit et notamment celle-ci, qui peut déjà être considérée
comme de la stéganographie: il suffisait de raser le messager, d'écrire le message sur son
crâne, d'attendre un peu que les cheveux repoussent, de le déguiser en n'importe quoi et
voilà, il pouvait passer tranquillement les lignes ennemies. L'originalité y était mais pas
encore la technique !
Une merveille est apparue après les premiers papyrus : l'encre invisible. Quelqu'un
écrivait un message anodin avec une encre tout à fait normale puis passait à l'encre
invisible et écrivait le vrai message entre les lignes. Cette technique ne s'est jamais
démodée. Moins amusant est le contenu de cette carte envoyée
d'un camp de concentration nazi qui a révélé, en dessous d'un message anodin, une
description de l'horreur de ces camps, cela en octobre 1997. [1]
21
3. Utilisation de la stéganographie :
On utilise la stéganographie dans plusieurs domaines, on peut citer quelques usages :
a. Substitution :
b. Ajout :
22
Cette technique permet de cacher le message avec une certaine robustesse, et est
très utilisée en tatouage. [2]
On peut présenter les approches de stéganographie selon les différentes classifications qui
caractérisent chaque technique à partir de ses catégories, donc on distingue quelques
catégories :
Les techniques par distorsion altèrent le support, la différence entre le support initial
constituant le message.
Les techniques par étalement de spectre : les informations sont dissimulées dans toute
l‟image, et la perte de certaines informations doit pouvoir être compensées par les
autres.
6. Schéma de stéganographie :
Il existe de nombreux systèmes de stéganographie. On peut citer quelques
systèmes :
23
Il existe plusieurs aspects pour cacher l‟information, mais on prend l‟exemple d‟une image
pour l‟expliquer en détail :
On connait que l‟image est composée d‟un ensemble de pixels, que chaque pixel est
constitué de trois couleurs : rouge, vert et bleu.
Certains de ces points peuvent être remplacés par une autre information sans que les
changements tenus dans l'image soient perceptibles pour l‟œil humain.
Pour pouvoir connaitre ou lire le message caché dans l‟image, il faut que le destinataire
connaisse la clef privée sinon il devient impossible lire le contenu caché.
Il existe plusieurs méthodes pour cacher une information dans une image :
a. Usage des bits de poids faibles :
On peut cacher l‟information dans les poids faible. L‟idée consiste à prendre
l‟information et modifier les bits de poids faible des pixels de cette image de
manière qu‟aucun autre ne peut détecter l‟existence d‟un message secret.
Pour exprimer ce concept on prend un exemple qui explique cette situation :
On prend les deux images suivant :
24
Si l‟on veut cacher le message 111 111 101 111, l‟image est modifiée de la façon
suivante : le bit de poids faible de l‟octet est mis à la valeur du bit de message
correspondant ; ici on obtient :
Il existe plusieurs formats graphiques tels que GIF ou PNG permettant le stockage des
couleurs de l‟image par référence à une palette de couleurs.
Ainsi, au lieu de stocker les couleurs vert, blanc, rouge dans une image du drapeau de
l‟Algérie, on trouve dans un format de fichier la description de l'objet qui est une suite
couleur1, couleur2, couleur3 ainsi qu'une palette qui définit que couleur1 est le vert,
couleur2 le blanc et couleur3 le rouge.
La même image peut-être stockée de la façon suivante : couleur2, couleur3, couleur1 avec
une palette qui définit que couleur2 est le vert, couleur3 est le blanc et couleur1 est le
rouge. Même s‟il existe une différence de stockage de l‟image, les deux images sont
visuellement identiques.
Pour une image contenant 256 couleurs uniquement dans sa palette, on a 256 (256 !)
factorielle pour stocker cette image. En utilisant un code connu entre l'émetteur et le
récepteur de l'image, on peut donc communiquer un message de petite taille (log2 (256!)
un peu moins de 1 684 bits) caché dans la permutation des couleurs de la palette de
l'image.
25
La première étape de compression consiste à découper l‟image en blocs de 8 fois 8 pixels
et de transformer ces blocks sous une forme mathématique simplifiée.
Cette compression introduit des pertes et la version mathématique de chaque bloc peut être
légèrement différente du bloc original tout en étant visuellement très semblable.
Une fois tous les blocs compressés, il faut transformer les formes mathématiques en
consommant le moins possible d‟espaces.
Cette deuxième compression n‟introduit pas de perte et elle est similaire dans ses 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é.
26
On peut appeler généralement le message qui l‟on cache dans le signal hôte une marque ou
bien tout simplement un message. La marque est composée d‟un ensemble de bits où le
contenu dépend à l‟application. La marque peut être un nom ou un identifiant du créateur,
du propriétaire, de l'acheteur. Le tatouage pose la question de la protection des droits
d'auteur.
27
I. Présentation de la méthode
Dans ce chapitre nous présentons un nouvel algorithme. Il est basé sur un cylindre
virtuel autour d‟une image et un observateur virtuel la regardant déplacé d‟une
position originale.
L‟idée de base de cet algorithme repose sur un cylindre virtuel ayant son diamètre
égal à la dimension de l'image et centré sur son axe de symétrie.
Comme résultat, tout pixel dans l‟image créée est déplacé de sa position originale.
Un cylindre virtuel qui entoure une image est le pilier de l'idée de notre algorithme. Quand
une image est vue d‟une position sur le cylindre, le rayon de chaque pixel croise la surface
du cylindre à un point spécifique. On suppose que la position de ces points ne changent pas
quand la position de l‟observateur change. Ainsi, au travers de l'image originale, il devient
possible à déduire n'importe quel autre vue de la même image d‟une autre position.
Nous définissons premièrement la position de référence relativement à l‟image originale
ayant sa direction perpendiculaire au plan et entrecroisant son axe de symétrie.
Deuxièmes, il est supposé que l'image vue d'une autre position est sur un plan tourné qui
est perpendiculaire à la direction de l‟observateur comme si l'image originale est tournée
autour de l‟axe de cylindre. En conséquence, une nouvelle image peut être générée par la
projection de chaque pixel original sur la position correspondante sur la nouvelle image.
28
La figue 1: La transformation de l'image originale quand elle est vue de différentes
positions situées sur le cylindre virtuel.
29
La figue 2: Le système de la projection qui estime la position d'un pixel dans l'image
générée.
Cet angle est soit connu directement ou calculé directement en utilisant le déplacement
VoVt. Posons λ =α-θ pour le cas de la figure (2). En utilisant le triangle ΔOPoVo et sur
la base sur le fait que A c‟est la projection orthogonale du point P sur OVo, il devient
facile à voir que AP = r.sin λ, et AVo =Ovo - r.cos λ. De plus, la fraction
(1).
Transformé sous forme d‟une équation, l'expression (1), où λ est la variable, devient:
(2).
(3).
Où
30
Selon le même principe de réflexion pour l'établissement de l'expression (1), l'utilisation de
l‟expression de OPt :
= (4).
Depuis que
Puisque α est lié à λ ¸ l‟estimation d‟OPt dans l'expression (4) dépend des solutions de
l'équation (3). Ainsi, la valeur de λ est utilisée pour déduire celle de α.
Pour cela, notons que les valeurs des trois angles θ, λ et α sont pris positif, et
particulièrement, celui de θ doit être 0<θ<п/2 ; autrement, l'image devient une ligne ou
celle originale.
Parmi les solutions de l'équation (3), la plus exacte est celle qui s‟adapte au système défini.
En ce sens, la valeur de α serait choisie de sorte que sa relation avec λ reste toujours
respectée. Il est clair que cette relation dépend sur la position du point P sur le cylindre.
De ce fait, il y a trois cas où α est exprimé différemment (voir Figurez 3). Ainsi, il est
important de déterminer dans l'image originale les positions qui spécifient que l'expression
de α serait utilisée, et à choisir la partie de l'image cible sur qui le pixel va être projeté
conformément à chaque expression.
31
Dans la figure (3), il apparait que les jonctions d‟OVo et OVt avec le cylindre définissent
les limites des différents cas sur les deux images. Quand le point l'intérêt est la jonction
d‟OVo avec le cylindre, cela signifie que λ = 0 et α = θ. Celui-ci définit la position zéro de
l'image originale qui va être projetée dans la cible. Nomons le Pto (voir Figure 4).
Et pour trouver OPt de n‟importe quel autre pixel situé sur la moitié gauche de l'image
originale, l'expression α=θ+ λ v est utilisée.
Ainsi, toute valeur calculée pour OPt est plus grande qu‟OPto.
En outre, le point qui est la jonction de OVt et le cylindre et qui s'est projeté au milieu de
l'image cible a une position zéro dans l'originale qui est r + OPot, où
De ce fait, pour un tel point, il est clair que λ=α. En conséquence, pour tout pixel qui est
sur la moitié de l'image originale à gauche du côté de OPot , l'expression α=θ-λ est
utilisée. Donc, n'importe quel autre pixel à droite de OPot a sa position déterminée par
l'expression α=λ- θ.
32
La figue 4: Où le milieu de chaque image est positionné dans l‟autre.
Les expressions établies sont toutes basées sur le fait que l‟observateur est situé à droite de
la position de référence. On peut facilement vérifier que chaque expression reste vraie pour
une vue miroir.
1. Algorithme d’insertion :
Comme c‟est connu, un octet est constitué de 8 bits, codant chacun comme une “puissance
de 2″. On appelle “bits de poids fort” les bits codant les plus grandes puissances de 2, et
“bits de poids faible” les bits codant les plus petites puissances de 2. En effet, lorsqu‟on
modifie un bit de poids fort dans un octet, la valeur de l‟octet est beaucoup plus modifiée
que lorsqu‟on modifie un bit de poids faible.
À partir de cette constatation, nous allons modifier les bits de poids faible des composantes
des pixels d‟une image pour y stocker des informations. Une image est un “tableau” de
pixels, chaque pixel ayant une couleur propre, caractérisée par trois composantes : Rouge,
Vert et Bleu. La valeur de chaque composante est codée sur un octet ; elle est donc
comprise entre 0 et 255.
En modifiant le bit de poids le plus faible (le bit le plus à droite), nous pourrons stocker
une information, et la couleur obtenue après modification sera proche de la couleur
originale. On appelle profondeur le nombre de bits modifiés dans l‟octet. Plus la
profondeur est grande, plus la quantité d‟information que l‟on peut cacher est grande.
Mais en augmentant la profondeur, on augmente aussi la différence entre les deux couleurs
du pixel avant et après modification, puisque les bits modifiés sont de poids de plus en plus
fort. Or, pour que l‟existence de l‟image soit bien dissimulée, il ne faut pas que l‟image
cible soit trop modifiée.
33
2. La partie insertion de l’algorithme:
Dans notre programme on utilise les bits de poids faible les plus à droit du plan rouge car
ils ont peu (moins) d'influence sur la couleur. Illustrons cela par un exemple:
Considérons que l'octet rouge d'un pixel contient la valeur 215. Cela correspond à la valeur
binaire:
1 1 0 1 0 1 1 1
Le fait d'utiliser le bit de poids faible aura comme effet la modification de cette valeur de
rouge en fonction de la valeur de un bit remplacé. Cette valeur, donc cette teinte pourra
varier de la valeur 214:
1 1 0 1 0 1 1 0
Le fait d'utiliser le deuxième bit de poids faible aura comme effet la modification de cette
valeur de rouge en fonction de la valeur de un bit remplacé. Cette valeur, donc cette teinte
pourra varier de la valeur 212:
1 1 0 1 0 1 0 0
On peut comparer les trois teintes ; la couleur originale et les deux autres couleurs, et
remarquer qu‟il n‟existe pas une grande différence.
34
Exemple :
Nous allons considérer un pixel ayant comme valeur R=130, G=190 et B=150. Ou encore
en binaire R=10000010, G=10111110 et B=10010110. Cela correspond à la couleur
suivante:
Et considérer une partie d‟une image dans laquelle on veut cacher 11010110, donc on a
besoins de huit (8) pixels pour cacher 8 bits. On modifie le bit de poids faible du plan
rouge. Ainsi, on obtient le pixel suivant : Les nouvelles valeurs RGB après insertion de
un bit de l‟image sont : R= 10000011, G=10111110 et B=10010110
Si les bits de poids faible du plan rouge sont insuffisants, on passe au deuxième plan (le
vert) et on applique le même principe. Ensuite on utilise le bleu, et lorsqu‟on a consommé
tous les bits de poids faible de tous les plans, on passe au deuxième poids faible pour les
trois plans selon la même méthode. La modification finale qui est appliquée sur le pixel
donne le résultat suivant : R= 10000001, G=10111101 et B=10010101
Pour insérer les bits de l‟image cachée dans l‟image container, on a besoin d‟utiliser les
opérations Or et And (&) logiques. Pour forcer le 0 on utilise le & avec un masque spécial
pour chaque plan R, G, B. De même, on fait pareil pour les bits du deuxième poids faible.
Pour forcer le 1, on utilise le (or) avec un masque. Par exemple, si on veut cacher notre
image dans les bits de poids faible du rouge, on utilise le masque 65536 pour forcer le 1
avec l‟opération logique Or. Ce masque permet de conserver les 7 bits de l‟image container
et ne modifie que le dernier bit. Le masque 16711679 est utilisé pour forcer le 0 avec
l‟opération &.
35
Exemple :
On obtient des positions horizontal et vertical .Par exemple : Pour les positions
horizontales :
36
289 293 297 302 306 310 314 318 322 325 329 333 336 …
181 185 189 193 197 201 205 209 212 216 219 223 226 …
A partir de ces résultats, on obtient des positions de pixels dans l‟image qui sont utilisées
pour cacher les bits de l‟image à cacher
Puis on procède à l‟insertion des bits de l‟image à cacher dans l‟image originale dans les
positions de la projection en utilisant la méthode des bits de poids faibles.
On obtient le résultat final :
37
3. La partie extraction de l’algorithme :
Le même principe mais avec la méthode appliquée dans un sens inverse est utilisé. On
extrait tous les bits qui ont été insérés en commençant par extraire tous les bits de poids
faible les plus à droit du plan rouge. Si la taille totale de l‟image est plus grande, on passe
au deuxième plan et on extrait les bits faible et on continu selon ce principe jusqu‟à ce que
l‟on construise toute l‟image.
38
I. Définition du langage C++ (builder) :
Le C++ a été conçu par Bjarne Stroustrup en 1982 aux ATT Bell Laboratories. L‟idée était
d‟ajouter au C des possibilités sur l‟orienté objet et de palier aux inconvénients du C.
Le but de cette partie du chapitre est de donner un premier aperçu sur C++ en ne présentant
que ce qu‟il est nécessaire de connaître. Mais pour ce qui nous concerne, nous utilisons le
C++ builder qui a la même syntaxe et utilise une interface facile pour accéder à tous les
composants.
Les composants de C++
39
1. Comment déclarer les opérations logiques dans le C++ Builder :
Le traitement d'image est l'un des domaines où la manipulation de tableaux est la plus
importante. En effet, tout tourne autour du chargement, des traitements itératifs lourds et
enfin de la sauvegarde de ces images.
Il faut par conséquent trouver un moyen à la fois simple et efficace de manipuler les
données, afin de travailler dans des conditions optimales.
Nous utilisons le C++ builder puisqu‟il est facile pour le traitement d‟image. Il permet à
accéder facilement aux pixels de l‟image où l‟on peut jouer sur les valeurs des bits. De
plus, il contient des fonctions prédéfinies utilisées pour ces traitements.
40
Description du logiciel :
L‟image ci-dessus montre l‟interface de notre logiciel. Dans la suite, nous donnons une
brève explication de chaque bouton et ce qu‟il fait :
On commence par le menu Fichier qui permet d‟ouvrir une image de forme bitmap.
41
Ensuite, on passe à l‟etape1. Dans cette partie, on trouve le bouton de parametres de la
projections. Lorsque on clique sur ce bouton, une zone de saisie est affichée pour faire
entrer les valeurs de la distance et de l‟angle. L‟utilisateur a besoin de ces valeurs pour
faire la projection. On trouve aussi un autre bouton Faire la projection. Lorsqu‟on clique
sur ce bouton, on applique la projection sur l‟image et comme résultat, on affiche dans
deux listes les valeurs obtenues des vecteurs horizontal et vertical.
Lorsqu‟on termine avec cette phase, on passe à la deuxiéme étape où l‟on applique le
principe de la stéganographie. On trouve quatre boutons. Le premier bouton pour charger
la dexiéme image que l‟on veut cacher et le dexiéme pour faire la cacher.
42
La dernière opération, c‟est l‟extraction de l‟image. On clique sur le bouton « extraire »
pour obtenir l‟image cachée. Le quatrième bouton est utilisé pour sauvegarder l‟image
tatouée de manière invisible que l‟on peut appeler signature numérique.
43
II. Résultats :
Nous présentons dans ce qui suit l‟étude de quelques situations. Nous commençons par la
projection :
La projection dépend de la taille de l‟image. Ceci est logique parce que plus l‟image est
grande, plus les positions obtenues sont nombreuses. Pour montrer cela, nous avons choisi
une image fixe pour y appliquer tous les tests. L‟image est de taille 720*450
Pour tous les résultats obtenus, la distance de 1.5 et l‟angle de п/12 ont été utilisés.
Cas 1 : lorsqu‟on veut cacher l‟image suivante : de taille 200*154 dans l‟image d‟oiseux
qui est de taille 720*450
On utilise tous les plans ; le rouge, vert et le bleu, même dans le deuxième bit de poids
faible. On obtient de bons résultats. L‟image complète est cachée et on ne remarque pas
que l‟image contient une signature, même si elle est comparée à l‟image originale. Il n‟y
pas une déférence visible. Le résultat est l‟image suivante :
44
Image signée.
Cas2 : On prend deux images presque de même taille et on cache une image dans l‟autre.
Par exemple : on cache image1 dans image2 de taille 256*256.
Image1 Image2
L‟image suivante montre le résultat obtenu. 60% de l‟image est caché où l‟on a utilisé
quatre (4) bits de point faible.
Image obtenu.
Dans cette image signée, on peut remarquer qu‟il y a une grande différence par rapport à
l‟image originale
Cas3 : dans ce cas on prend une image conteneur de taille plus petit que la taille de l‟image
que l‟on veut cacher. Par exemple, une image de taille 720*450 d‟un oiseau à cacher dans
l‟image de taille 200*154. Le résultat qui obtenu est catastrophique. Et en plus, l‟image
n‟est pas complètement cachée.
45
On obtient l‟image suivante :
Si l‟on cache une image de taille 200*154 dans autre image de taille 720*450 juste dans
le plans rouge et dans un seul bit de poids faible, après son extraction on obtient le
résultat suivant :
En remarque que l‟image n‟est pas totalement cachée. C‟est pour ça que l‟on passe au
deuxième plan le vert. Selon le même principe on obtient :
De même, l‟image n‟est pas complète et on passe au troisième plan le bleu pour obtenir :
46
Dans le plan rouge, vert et le bleu.
Pour s‟assurer que l‟image est totalement cachée, on utilise aussi le deuxiéme bit de poids
faible pour les trois plans et le résultat final est comme suit :
Dans le plan rouge, vert, bleu et dans les deuxiéme bit de poids faible.
Les opérations qui suivent ont des effets négatifs sur l‟image signée. En effet, l‟image
extraite ne correspond pas à l‟image cachée à cause des transformations faites sur l‟image
originale.
2.1 Lissage :
Lissage naif :
Quand on signe une image et après on lui applique un filtrage ou un lissage nâif et ensuite
on l‟extrait, on obtient la figure ci-dessous :
47
La cause de ce bruit c‟est que le lissage consiste à affecter à chaque pixel de l‟image la
moyenne des pixels qui l‟entourent ce qui peut modifier les bits insérés.
2.2 Compression :
Si l‟on utilise la compression avec perte, on risque de perdre l‟image totalement puisque la
compression peut toucher tous les bits de chaque pixel, donc elle touche les bits qui ont été
insérés, ce qui implique la perte totale ou partielle de l‟image. Quand on signe une image et
après on lui faire la compression et ensuite on l‟extrait, on obtient la figure ci-dessous
48
Conclusion :
Le travail que nous présentons dans ce mémoire est une étape d‟une grande
importance dans tout système de stéganographie. La création d‟une signature numérique
doit être certifié conforme aux exigences d‟authentique, l‟infalsifiable, de non réutilisable,
d‟inaltérable et d‟irrévocable et c‟est le but de notre application.
49
Référence :
[1] http://securinet.free.fr/crypto-rsa.html.
[2] http://www.picsi.org/parcours_21_104.html#CITEcox_i3eip_97. //I. Cox,
J. Killian, T. Leighton, and T. Shamoon. Secure spread spectrum
watermarking for multimedia. IEEE.
[3] http://fr.wikipedia.org/wiki/St%C3%A9ganographie.
[4] http://www.picsi.org/annuaire_29.html.
[5] http://users.skynet.be/glu/ci.htm.
[6] http://www.picsi.org/parcours_17_93.html#fontaine_misc_02.
[7] Codes correcteurs et sécurité en stéganographie (pour les images et les vidéos)
De : Marc Chaumont 70%William Puech 30%Équipe ICAR.
[8]http://interstices.info/jcms/mf_46683/approfondir.
ère
[9]Introduction à la stéganographie(1 partie) (J-C Armici jca.developpez.com et
www.unvrai.com)
50