Vous êtes sur la page 1sur 45

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE


SCIENTIFIQUE

Université Larbi Ben M’hidi Oum El Bouaghi


Faculté des sciences exactes et sciences de la nature et de la vie
Département de mathématiques et Informatique

MEMOIRE

Pour l’obtention du diplôme de Master en informatique

OPTION : IMAGERIE NUMERIQUE.

INTITULE

Insertion d'une signature dans une image


basée sur la projection d'une vue en rotation

Sous la direction de : Mr Nini brahim. Présenté par : Belkebir Djalila.


Jury :
Président :Mr Boukrouma Amar
Examinateurs : Mme Boutaouche Fouzia

Soutenu le : 28/29 Juin 2011.

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.

To each of the above, I extend my deepest appreciation.

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 steganographie est une méthode utilisée 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.

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.

L’objectif essentiel de notre application est de créer un programme qui fait


cacher une signature numérique dans une image afin de s’assurer que seul le
programme inverse peut en faire l’extraction.

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.

Un des problèmes rencontré dans ce domaine, est celui de la compression


d’image. En ce sens, lorsque l’image est compressée, l’extraction de la signature résulte
sur une image dégradée. Plusieurs travaux ont donné des solutions, mais il reste
beaucoup à faire. Ainsi, chaque méthode tente de minimiser cette dégradation suite à
n’importe quel type de transformation d’image, qu’elle soit une compression, un
filtrage, ou autre.

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.

Ce mémoire est découpé en cinq chapitres :

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.

Dans deuxième chapitre, nous avons détaillé le concept de la steganographie,


ensuite nous avons présenté les principes de la steganographie. Enfin nous présentons
les domaines d’utilisation et les techniques utilisées dans la steganographie.

Le troisième chapitre est une description générale de la méthode utilisée. Il


commence par la présentation de l’idée et les étapes { suivre. Ensuite la description de
la méthode de substitution qui cache et extrait la signature numérique.

Dans le quatrième chapitre, nous présentons un ensemble de tests faits dans le


cadre de l’utilisation de notre méthode.

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.

Nous terminerons ce mémoire par une conclusion générale.

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

 Traitement d’image numérique : c’est l’ensemble des opérations de restauration


qui sont appliquées { une image acquise (Image naturelle) dans un but d’améliorer la
lisibilité.
 Analyse des images numériques : c’est l’ensemble des transformations
appliquées { une image traitée dans le but d’extraire les informations significatives.

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.

2.1 Définition de l’image numérique :

Une image numérique est représentée par une matrice bidimensionnelle de valeurs
numériques f(x,y) où :

f(x,y) = x, y : coordonnées cartésiennes d’un point de l’image.


f(x, y) : niveau de gris en ce point
2.2 Format des images numériques : Les images numériques se décomposent en
deux grandes parties :

2.2.1 Images matricielles : Elles se composent d'un tableau de pixels,


généralement rectangulaire, qui peut se visualiser sur un moniteur d'ordinateur ou
tout autre dispositif d'affichage RVB.

2.2.2 Images vectorielles : Elles sont des représentations d'entités géométriques


(cercle, rectangle, segment ...).Celles-ci sont représentées par des formules

4
mathématiques (un rectangle est défini par deux points, un cercle par un centre et un
rayon, etc ...).

2.3 Caractéristiques d’une image numérique :


L’image est un ensemble structuré d’informations caractérisées par les paramètres
suivants:
2.3.1 Pixel : En anglais « Picture element »: élément d’image, le pixel est le plus
petit point de l’image.
 Dans le cas d’une image monochrome : chaque pixel est codé sur un octet, et la
taille mémoire nécessaire pour afficher une telle image est directement liée à la taille
de l’image.
 Dans une image couleur (R.V.B.), un pixel peut être représenté sur trois octets :
un octet pour chacune des couleurs : rouge (R), vert (V) et bleu (B).

2.3.2 Dimension de l’image : L’image est représentée par une matrice I


[nombre de lignes][nombre de colonne]
Dimension = la taille de l’image = nombre de lignes * nombre de colonne
2.3.3 Dynamique de l’image : La dynamique d'une image, c'est la capacité
d'une image numérique à redonner les vraies échelles d'intensité lumineuses du monde
réel.
2.3.4 Taille du fichier image : C’est le nombre de pixels multiplié par le
nombre d'octets nécessaires au codage d'un seul pixel.

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 ...).

3- Les opérations ponctuelles :


3-1 Histogramme : L’histogramme d’une image est la répartition statique de couleur ou
de niveau de gris.
H : [0,256]->N.
H(n) : nombre de pixels de l’image ayant n comme niveau de gris.

Niveau de gris Histogramme


Figure 1.1 : Histogramme d’une image.
3-2 La moyenne:
- C’est la moyenne authentique des niveaux de gris (couleur) composant l’image.
- La moyenne donne une indication sur la luminosité dans une image :
 Moyenne faible ->Image sombre.
 Moyenne élevé ->Image clair.
- On ajoute 1 si on veut augmenter la moyenne sauf 255.
- On joute -1 si on veut diminuer la moyenne sauf 0.
- Pour la figure1 la moyenne obtenue est 197

3-3 Le contraste: la disparité externe de niveau de gris dans une image


 Une image est fortement contrastée si les régions sombres sont éloignées des
régions claires.

6
 Une image est faiblement contrastée si les régions sombres sont proches des
régions claires.

3-4 L’inverse : on l’appelle aussi négative.


% Algorithm: "Image_Invese"
i,j,M,N : entiers ;
I(M,N) : image;
Pour i := 0 à N faire
Pour j := 0 à M faire
I(i,j) := 255 – I(i,j) ;
Fin pour
Fin pour
Fin

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.

4-1 Traitement de bas niveau :


4-1-1 Lissage d’image :
Mais pourquoi ?
- L’image par nature contient des bruits.
- Le lissage produit une image plus ou moins floue.
4-1-1-1 Lissage naïf : Consiste à affecter à chaque pixel la moyenne des pixels
qui l’entourent, souvent c’est le masque.
% Algorithm: "Lissage_naïf"
i,j,x,y,M,N,somme :enties ;
V : enties ; % la taille du bloc %
I(M,N),I’(M,N) : Image ;
Pour i := 0 à N faire
Pour j := 0 à M faire
Pour x = -V à +V faire
Pour y = -V à +V faire
somme = somme + Image(x+i,y+j) ;
Fin pour
Fin pour
I’(i,j) := somme /V²;
Fin pour
Fin pour
Voir l’image suivante :

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).

4-2-1-2 Segmentation par contour :


Consiste à chercher les discontinuités qui existent entre les régions homogènes
d’une image :
4-2-1-2-1 par gradient :
Soit I une image (fonction de 2 variables x ,y), le gradient Gr(I) est le
vecteur dont les composantes sont les valeurs des deux dérivées partielles de I ;

respectivement selon x et y : .

Voici un exemple sur l’image suivante :

Image originale Détection de contour (Gradient)


Figure 1.5 : Détection de contour d’une image (Gradient).

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.

 la dérivation se fait par la formule suivante :

Détection de contour (Laplacien)


Figure 1.6 : Détection de contour d’une image (Laplacien).
5- Espace de couleur [ 1 ]
Une couleur est généralement représentée par trois composantes. Ces composantes
définissent un espace des couleurs. On peut citer l'espace RVB, l'espace CIE XYZ ou
Yxy, ou encore l'espace Lab. l'espace de couleurs que l’on choisi pour représenter les
images de notre application est l'espace RVB.
11.1 L'espace RGB (Red Green Blue)
Il s’agit de la combinaison des trois couleurs de base : le Rouge, le Vert et le Bleu.
Une image RVB est composée de trois couches, codée chacune sur 8 bits. (256 niveaux
de couleur par plan, ce qui donne 16 millions de couleurs).
Le modèle de RVB est représenté par un cube à trois dimensions avec le vert le
rouge et le bleu aux coins sur chaque axe.

Figure 1.7 : Espace de couleur

11
2- Steganographie :

4- Introduction

La stéganographie a pour but de permettre la transmission sécurisée de


messages dans des circonstances où la cryptographie ne peut être mise en œuvre (par
exemple parce qu'elle est interdite). La stéganographie, un procédé de codage des
données et qui met à profit l'immensité d'Internet et les caractéristiques des images
numériques.

5- Définitions et fondements théoriques :


 C'est un mot issu du grec Stéganô, signifiant Je couvre et Graphô, signifiant J'écris.
 C’est l’art de dissimulation de données d’une manière secrètes dans un support
(qui peut être une image, un fichier texte, ou son) que personne ne puissent
récupérés ces données sauf la personne ayant le programme de dissimulation.
On peut citer les différents acteurs impliqués dans le domaine de la stéganographie :
 Medium vierge: dont laquelle les informations sont cachées ou medium de
couverture ou simplement un medium.
 Stego-medium: une fois les informations sont insérées, nous utilisons alors le terme
Stego-medium.
 Données: sont les informations à insérer dans un medium pour obtenir le stego-
medium.
 Un attaquant passif est celui qui tente uniquement de détecter si un message
transite dans un médium sur le canal de communication. Il est dit actif s’il tente de le
modifier ou de le retirer.

Stego- medium (a) Les données cachées (b)


Figure 2.1 : Tatouage d’une image.

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 :

Figure 2.2 : Image avec tatouage numérique visible. Le


texte "Brian Kell 2006" apparaît au centre de l'image.

3-2-1 Différences entre stéganographie et watermarking : Nous allons maintenant


distinguer stéganographie et watermarking (tatouage) :

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.

7- Conditions requises : Parmi les contraintes requises dans la dissimulation de


l’information :
 L'imperceptibilité : les données cachées dans un filigrane ne doivent pas être
perceptibles, soit on utilise le tatouage ou le fingerprinting, les baies statistiques
de l’appariation de données cachées doivent être nulles.
 La capacité : est la quantité de bits significatifs dissimulés dans le stégo-
médium par unité d'accès (par exemple, le nombre de bits par seconde en
musique).

14
 La robustesse : correspond à l'aptitude de préservation des données cachées
face aux modifications du stégo-médium.

8- Domaine d’utilisation : De nombreux usages peuvent exister dans des domaines


très variés [2] mais souvent sensibles comme :

• Communiquer en toute liberté même dans des conditions de censure et de


surveillance : Les Américains ont été surpris par la parfaite synchronisation de ces
attaques du 11 septembre, une seule attaque ne nécessite pas d’échanges
d’informations entre des personnes, mais quatre… Il fallait forcément échanger des
éléments, soit par courrier, téléphone, fax ou par e-mail, et ceci pendant plusieurs
semaines précédant l’attaque.
• Contrebalancer toutes les législations ou barrières possibles empêchant l’usage de
la cryptographie : Dans certain pays la cryptographie est interdite et quiconque est
surpris en train de l'utiliser risque des peines importantes. En effet, en utilisant une
stéganographie robuste, il est impossible de suspecter la moindre trace d'un message
crypté.
• Publier des informations ouvertement mais { l’insu de tous, des informations qui
pourront ensuite être révélées et dont l’antériorité sera incontestable et vérifiable par
tous: Les attestations officielles (de diplômes, par exemple), faites sur du papier
spécial, comportant éventuellement un filigrane, des dessins, une signature
manuscrite, des tampons, etc. Pensons aussi aux nouvelles cartes d'identité plastifiées,
aux procédés de nombreux employés pour sécuriser les billets de banque, de telle
sorte que les destinataires soient sûrs qu'ils proviennent bien de l'établissement
habilité à les émettre et non de quelque faux-monnayeur.
9- les techniques utilisées :

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.

Une variante moderne consiste à insérer les données dans le formatage


(espacement des interlignes, taille de police) des documents électroniques mais ces
techniques ne résistent pas { l’examen du code.
 Exemple :[ 2 ]
Modulation fine d’un texte écrit: Décaler une lettre de quelques pixels ne pose aucun
problème sur une imprimante { laser et c’est pratiquement invisible { l’œil nu. En
jouant sur les interlettrages d’un texte très long et { raison de deux valeurs
d’espacement correspondant { 1 et 0, il est possible de transmettre un message sous
forme papier, qui ne révélera son vrai sens qu’une fois analysé par un scanner ayant
une bonne précision.
Dans du son : Cette technique est très délicate { mettre en œuvre car l’oreille
humaine est beaucoup plus sensible que les yeux. C’est pourquoi la
stéganographie utilise beaucoup plus les médiums images et vidéos. On peut
cependant noter l’exemple du groupe de techno AphexTwin qui avait dissimulé
une image dans l’une des pistes de son album. Par exemple :
 Dans les formats sonores, il existe à peu prés les mêmes possibilités de cacher des
messages que dans les images. Dans un fichier sonore au format MIDI, il n’existe pas
de palette de couleurs mais bien différentes pistes qui peuvent être permutées. Dans
un fichier sonore avec compression sans perte, on peut cacher de l’information dans
des variations imperceptibles du son, les bits faiblement significatifs. Dans un fichier
de son avec compression avec perte, on peut cacher de l’information selon le type de
compression choisi.

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.

Deux exemples d’encodage et décodage:


Last Significant Bit (LSB): une image numérique est une suite de points que
l’on appelle pixel et dont on code la couleur { l’aide d’un triplet d’octet par exemple
pour une couleur RGB sur 24 bits chaque octets indique l’intensité de la couleur
correspondante rouge vert et bleu par un niveau parmi 256 , passer d’un niveau n
au niveau n+1 ou n-1 ne modifie que peu la teinte du pixel ou le bit le moins
significatif de pixel est remplacé par celui de la donnée à cacher (substitution).Pour
décoder on récupère les bits de poids faibles. Une clé détermine les pixels dont les
LSB seront modifiés. Pour garantir une bonne imperceptibilité totale, seuls les
pixels situés dans des zones de variation de couleurs seront modifiés.
 Par exemple considérons l’image :
0010 1001 0100 1010 0011 0000 | 0001 0111 0111 0010 1001 1111
0011 0101 1001 1111 0111 1011 | 0000 1010 1111 0010 1101 0011

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 :

Manipulation de la palette de couleurs d’une image : Certains formats graphiques tels


que GIF ou PNG permettent le stockage des couleurs de l’image par référence à une
palette de couleurs insérée dans le même fichier. Ainsi, au lieu de stocker bleu, blanc,
rouge dans une image du drapeau français, on trouve dans un format de fichier la
description de l’objet la suite couleur1, couleur2, couleur3 ainsi qu’une palette qui définit
que couleur1 est le bleu, 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 bleu, couleur3 est le blanc et couleur1 est le rouge. Ces deux images sont
visuellement identiques, mais le stockage de celles-ci est différent. Pour une image
contenant 256 couleurs uniques dans sa palette, on a factorielle 256 (256 !) façons de
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.

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).

Figure 3.1 : Système de projection d'une image.


 Considérons le pixel situé { Po du centre O de l’image et vu de la position de
référence Vo, Lorsque l’observateur se déplace autour du centre de l'image le long du
cercle ayant son rayon égal à , la position que va prendre le pixel Po dans l'image

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)

 La valeur de OPT peut être facilement calculée à partir de l'expression résultante :


(2)

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.

 Comme les résultats attendus dans l’algorithme de substitution ne dépendent ni de


la complexité des formules, ni de leur nombre, seule la formule (2) a été utilisée. Ainsi,
elle est utilisée simultanément sur les deux côtés de l'image. Aussi, au lieu d’utiliser
chaque pixel seul, la construction de la nouvelle image virtuelle utilise toute une ligne ou

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.

 Dans la formule (2), la reconstruction de l’image virtuelle a besoin de deux


paramètres principaux qui sont la distance OVo = OVt de l’observateur et le côté qu’elle/il
prend par rapport à la position de référence (angle ). De plus, et parce que l'algorithme
transforme l'image dans les directions horizontale et verticale, la distance OVt, et l’angle
sont à la fois composés de deux composantes représentant le déplacement horizontale
(OVtx et x) et le déplacement verticale (OVty et y). Cela signifie que l’observateur
peut être déplacé de sa position originale dans le sens horizontal et/ou vertical.

 Voici un exemple d’une image projetée où les pixels en blanc sont l’intersection des
positions du vecteur horizontal et celui vertical.

(a) (b) (c)


Figure 3.3 :(a) image originale, (b) et (c) les positions projeté à partir de (a).

 Lors de la construction des positions des pixels deux problèmes se posent. Le


premier est celui des pixels ayant leurs positions de projection hors limite de l’image
virtuelle. Par exemple, on remarque sur la Figure 3 dans l’image (c) des positions ou bien
des trous qui ne sont pas blancs. Cela signifie qu’ils ne sont pas touchés par la projection.

 Le deuxième problème apparait et est dû au fait que chaque position estimée de


OPt est arrondie { l'entier le plus proche de sa valeur, ce qui permet d’obtenir plusieurs
lignes ou colonnes de pixels ayant la même position de projection. Ceci a lieu dans le cas
où on utilise de grands angles qui condensent toute une partie de l’image originale dans

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.

 L’idée de notre algorithme ne nécessite pas la récupération des positions perdues.


Donc, ses deux problèmes n’ont pas besoin d’être corrigés. Mais malgré tout ça, il est très
facile de détecter la différence dans l’utilisation de petits ou grands angles.
% Algorithm: "Image_Project"
Pour chaque position OPo (colonne/ligne) de l’image originale
Estimer OPt;
Si OPt n’est pas hors des limites de l’image cible alors
si OPt n’est pas encore utilisé alors
Utiliser la colonne / ligne OPt de l'image cible
Marqué l’utilisation de OPt ;
Fin

2 – La substitution : cette partie de l’algorithme comporte deux étapes :


2-1- Cacher une image dans une autre :

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 :

Image numérique désigne toute image (dessin, icône, photographie…) acquise,


créée, traitée et stockée sous forme binaire:

 acquise par des convertisseurs analogique-numérique situés dans des dispositifs


comme les scanners, les appareils photo ou les caméscopes numériques, les
cartes d’acquisition vidéo.
 créée directement par des programmes informatiques, grâce à une souris, des
tablettes graphiques ou par de la modélisation 3D (ce que l’on appelle, par abus
de langage, les « images de synthèse »).
 traitée grâce à des outils informatiques, de façon à la transformer, à en modifier
la taille, les couleurs, d’y ajouter ou d'en supprimer des éléments, d’y appliquer
des filtres variés, le tatouage numérique etc.

2- Matérielles utilisé pour le développement :


L’application a été développée sur un PC ayant les caractéristiques
suivantes :
 Disque Dur 300 GO.
 SYSTEME D’EXPLOITATION: Windows7 64 bit.
 Carte Graphique : Mobile intel ® 4 series express chipset family.
 Ram: 3 GO.
 PROCESSEUR : Intel®Core™ 2Duo CPU T6670 @2.20GHz
2.20GHZ.

3- Langage d’implémentation[ 5 ] :

Le langage de programmation choisit est très performant pour développer


l’application. Il s’agit du C++. Plus particulièrement, c’est l’environnement Cbuilder6
qui a été utilisé.
Qu'est-ce que C++ ?
Le C++ est un langage de programmation permettant la programmation
sous de multiples paradigmes comme la programmation procédurale, la

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.

3-2 La bibliothèque standard (C++ standard library) : [ 5 ]

La bibliothèque standard du C++ est en grande partie un sur-ensemble des


fonctions disponibles dans la bibliothèque standard du C (on parle de SL pour
Standard Library) qui est composée, entre autre, d'une bibliothèque de flux, de
la bibliothèque standard du C, de la gestion des exceptions, ..., etc. Elle englobe
la Standard Template Library (STL) qui met à la disposition du programmeur
des outils puissants comme les collections (conteneurs) et les itérateurs, et les
algorithmes.

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

Figure 4.1 : fenêtre d’application 1.

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.

Image1 Image2 Image3


Figure 4.3 : Echantillon pour test.

5-1 Test de la méthode de projection :

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

Tableau 4.1 : nombre des pixels utilisés relatif { la taille de l’image.


Dans le tableau 4.1, une comparaison entre les échantillons des 3 images
relativement aux différentes tailles de ces images montre qu’{ chaque fois qu’on
augmente la taille de l’image, le nombre de positions hors ligne ou le nombre
de position répétées augmente.

L’image Angle = 0,999 Angle = 0,5 Angle = 0,001 Angle = 5


originale(a) radians (b) radians (c) radians (d) radians(e)
Figure 4.4 : le nombre de position relatif { l’angle
Les trous apparaissent lorsqu’on utilise soit de petits ou grands angles;
 Les trous dans les bordures d’une image virtuelle montre l’existence de
positions répétées, cela est expliqué par l’utilisation de grands angles.
Figure 4.4(b)
 Les autres trous sont des lignes et/ou des colonnes qui sont répandues et sont
séparées les uns des autres. Ils sont le résultat de petits angles, et dans ce cas
ils résultent des positions hors limite. Figure 4.4(c)

5-2 Test de la méthode de substitution :


5-2-1 Le temps d’exécution de l’algorithme :
Nous avons utilisé ces trois images pout voir comment elles sont
cachées dans les trois précédentes:

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

Tableau2 : les temps d’exécution de l’algorithme en fonction des tailles des


images à cacher.
Dans le tableau 02, une comparaison entre les échantillons des 3 images
relativement aux différentes tailles de ces images montre qu’{ chaque fois qu’on
augmente la taille de l’image, le temps d’exécution de l’algorithme augmente.
5-2-2 les résultats obtenus :
Nous avons utilisé les mêmes images pour ce test ainsi que les mêmes facteurs
(angle et distance), les résultats sont les suivants :

(a)L’image { cacher (b)L’image Originale (c)L’image Originale (d)L’image


1026*770 273*185 après avoir cacher (a) Extraite
Figure 4.6 : Signature de grande taille et image originale de petite taille.

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 :

(a)L’image { cacher (b)L’image Originale (c)L’image Originale après (d)L’image Extraite


66*66 602*451 avoir cacher (a)
Figure 4.7 : Signature de petite taille et image originale de grande taille.

La Figure2 montre qu’{ chaque fois qu’on diminué la taille de la signature, et on


augmente la taille de l’image originale, la dégradation de cette dernière diminuer.

(a)L’image { cacher (b)L’image Originale (c)L’image Originale après (d)L’image Extraite


197*261 197*261 avoir cacher (a)
Figure 4.8 : Signature et image originale ont des tailles similaires.

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

L'acronyme JPEG (Joint Photographic Expert Group prononcez jipègue ou en


anglais djaypègue) provient de la réunion en 1982 d'un groupe d'experts de la
photographie, dont le principal souci était de travailler sur les façons de transmettre
des informations (images fixes ou animées). En 1986, l'ITU-T mit au point des
méthodes de compression destinées à l'envoi de fax. Ces deux groupes se
rassemblèrent pour créer un comité conjoint d'experts de la photographie (JPEG). La
compression JPEG est une compression avec pertes. Cette méthode de compression est
inefficace pour la steganographie.

2- Les étapes de La compression JPEG [ 6 ]

On peut diviser la compression et la décompression JPEG en six étapes, voici


l’organigramme :

Figure 5.1 : Organigramme de compression.

 Découpage en blocs de 64 (8 × 8) pixels.


 Transformation des couleurs JPEG.
 Sous-échantillonnage.

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 :

À chaque bloc de pixels :

Équation 5.1 : Transformée DCT directe.

Et la transformée DCT inverse s’exprime par :

Équation 5.2 : Transformée DCT inverse.

Dans les deux cas, la constante vaut :

Équation 5.3 : Définition de la constante C.


 Quantification
La quantification est l’étape dans laquelle on perd réellement des informations (et
donc de la qualité visuelle), mais c'est celle qui fait gagner beaucoup de place.
La DCT a retourné, pour chaque bloc, une matrice de 8×8 nombres. La
quantification consiste à diviser cette matrice par une autre, appelée matrice de
quantification, et qui contient 8×8 coefficients savamment choisis par le codeur.
Voici le calcul permettant la quantification :

36
Équation 5.4 : Calcul de la quantification.
Et pour la quantification inverse :

Équation 5.5 : Calcul de la quantification inverse.


 Codage, compression RLE et Huffman
Le codage s’effectue en zigzag comme le montre la figure suivante et se termine par
un caractère de fin :

Figure 5.2 : Ordre de codage défini par la norme JPEG.


Ce résultat est ensuite compressé selon un algorithme RLE basé sur la valeur 0,
Avec le schéma de codage très simplifié suivant :

Figure 5.3 : Schéma de codage simplifié.


 Décompression JPEG : Les étapes de la décompression s’effectuent dans l’ordre
inverse de la compression.

3- Idées suivies pour signer des images qui seront compressées :


Nous avons essayé de signer une image de telle sorte que les transformations
JPEG ne la dégradent pas
Dans tous les tests de compression qui suivent, nous avons utilisé les valeurs des
paramètres suivants :
 Le taux de compression = 6.
 L’angle de projection = (15*π /180)° et la distance = 2,4 , pour les colonnes.
 L’angle de projection = (7*π /180)° et la distance = 2,8 , pour les lignes.

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.

(a) (b) (c) (d)


Figure 5.4 : Extraction de tatouage
 Le nombre de pixels conservés est 0,83%.
 Idée I :
Dans l’exemple précédent, nous remarquons que l’image cachée est dégradé {
99%. La première idée que nous avons utilisée est :
Nous avons compressé l’image originale (a). Ensuite nous avons fait la
différence entre cette dernière (image (b)) et celle non compressée (image (a)).
Ensuite nous avons gardé les positions des pixels qui ne sont pas modifiés après
avoir compressé l’image (a) (image (c)).
Enfin, nous avons caché les bits de la signature dans l’image originale en
utilisant uniquement ces positions. Ensuite, nous avons compressé l’image tatouée.
Dans l’extraction de la signature, nous avons trouvé qu’elle est dégradée. La figure
suivante donne tous les détails des résultats obtenus :

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 :

(g) (h) (i) (e) (j) (k)

39
Figure 5.6 : les résultats de la deuxième idée

Résultats : Le nombre de pixels conservés est 1,07%


Nous remarquons l’augmentation du nombre de pixels conservés mais l’image
reste dégradée.
 idée 3 :
Ensuite nous avons pensée que la compression peut garder le bit de poids faible mais
ne garde pas la valeur du pixel. Par exemple, 5≠15 mais 0101 et 1111 ont le même bis de
poids faible. Nous avons alors utilisé les mêmes images dans la figure 4 ainsi que les
mêmes étapes, mais ici nous cherchons les bits conservés.
Résultats : Le nombre de bits réservés est 47,50%.
Et parce que l’idée 2 fait augmenter le nombre de pixels, nous avons utilisé les
mêmes étapes que celles de l’idée 2 mais la différence est faite au niveau bits.
 L’image (m) est la différence entre l’image (g), (h) et (e) (Figure 5.6).
 L’image (n) est l’image extraite.

 Idée 4 ;

Image(m) Image(n)
Figure 5.7 : les résultats de la quatrième idée

Résultats : Le nombre de bits conservés est 49,27%. C’et le taux de conservation


obtenu le plus haut.

40
Conclusion générale :
Ce travail consiste en l’étude et le développement d’une méthode dans le

domaine de la steganographie. Les algorithmes proposés peuvent être utilisés pour

renforcer la technique de telle sorte { empêcher les steganalists d’extraire les

informations cachées.

Pour satisfaire ces objectifs, nous avons proposé une méthode de projection

qui permet de réaliser une steganographie secrète.

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

inchangés. Ainsi nous avons pu atteindre un taux de 49,27%.

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

[5]  Programmation C++-La librairie standard - Wikibooks.mht


 STL Containers - C++ Reference.mht
 Cours de C++ Utilisations des conteneurs Cécile Braunstein
cecile.braunstein@lip6.fr.

[6] http://fr.wikipedia.org/w/index.php?title=Compression_JPEG&redirect=no

[4] Pixel Permutation of a Color Image Based on a Projection from a


Rotated View Brahim Nini,

44

Vous aimerez peut-être aussi