Qu'est-ce que la DWT
La Transformée en Ondelettes Discrète (DWT) applique des filtres passe-bas et passe-haut séquentiellement sur les lignes puis les colonnes de l'image. Le résultat est une décomposition en quatre sous-images appelées subbands, chacune à résolution réduite de moitié.
Contrairement à la DCT qui opère sur des blocs 8×8 indépendants, la DWT traite l'image dans sa globalité — ce qui lui confère une bien meilleure cohérence spatiale et une robustesse accrue face aux compressions avec perte comme JPEG2000.
IMAGE ORIGINALE (N×M)
│
┌───┴────────────────────────┐
│ Filtre passe-bas (L) │ Filtre passe-haut (H)
▼ ▼
Lignes L Lignes H
│ │
┌──┴──┐ ┌──┴──┐
LL LH HL HH
(L×L) (L×H) (H×L) (H×H)
Chaque subband fait N/2 × M/2 (la moitié de la résolution originale).
L = composante basses fréquences (lisse)
H = composante hautes fréquences (contours, détails)→ La DWT est la transformée utilisée par JPEG2000, qui offre une meilleure qualité d'image que JPEG à taux de compression équivalent — et une base idéale pour la stéganographie robuste.
Les 4 subbands LL LH HL HH
Chacune des quatre subbands encode un type différent d'information visuelle. Comprendre leur contenu est essentiel pour choisir où dissimuler des données sans impact perceptible sur l'image hôte.
LL — Approximation
NE PAS UTILISERVersion basse résolution de l'image. Contient l'essentiel de l'énergie visuelle — c'est "l'image en miniature". Ne jamais modifier ici : l'impact visuel serait immédiat et majeur.
LH — Détails horizontaux
PRÉCAUTIONEncode les contours et transitions horizontales de l'image. Une modification est légèrement perceptible sur les bords horizontaux. Utilisable avec précaution.
HL — Détails verticaux
PRÉCAUTIONEncode les contours et transitions verticales. Comportement similaire à LH. Modification légèrement visible sur les tranches verticales de l'image.
HH — Détails diagonaux
ZONE IDEALEHaute fréquence diagonale, très peu perçue par l'œil humain. Les modifications y sont quasi imperceptibles. C'est la zone idéale pour cacher des données.
┌────────────────────────┬────────────────────────┐ │ │ │ │ LL │ LH │ │ (visible) │ (contours →) │ │ énergie principale │ transitions horiz. │ │ │ │ ├────────────────────────┼────────────────────────┤ │ │ │ │ HL │ HH │ │ (contours ↕) │ ← cacher ici │ │ transitions vert. │ haute fréq. diag. │ │ │ │ └────────────────────────┴────────────────────────┘
Cacher dans les subbands
On sélectionne les coefficients de la subband HH (et parfois HL/LH selon la capacité voulue), puis on modifie le bit de poids faible de chaque coefficient pour encoder les bits du message. La subband HH représente environ 1/4 de l'image d'origine.
La capacité maximale en ciblant uniquement HH est d'environ N×M / 32 caractères pour une image N×M pixels. En incluant HL et LH, la capacité triple — mais au prix d'une légère augmentation du risque de détection visuelle.
Coefficient HH : 127 → 01111111 Bit du message : 1 HH modifié : 128 → 10000000 Variation : ±1 sur un coefficient de haute fréquence diagonale Perceptibilité : imperceptible Calcul de capacité (cible HH uniquement) : Image 1024×1024 pixels → Subband HH : 512×512 = 262 144 coefficients → 262 144 bits ÷ 8 = 32 768 caractères maximum → recommandé : utiliser < 50% → ~16 384 chars pour plus de sécurité Comparaison avec LSB direct : LSB sur pixels → 1 bit par canal × 3 → ~384 000 chars / 1MP DWT-HH → ~125 000 chars / 1MP (moins mais plus robuste)
⚠ Contrairement au LSB sur pixel, les coefficients DWT sont des valeurs à virgule flottante dans le domaine transformé. Lors de la reconstruction, les arrondis peuvent altérer les bits cachés — il est donc recommandé d'ajouter un mécanisme de correction d'erreurs.
Multi-résolution
L'un des atouts majeurs de la DWT est la possibilité d'appliquer la décomposition sur plusieurs niveaux. Au niveau 1, on obtient les quatre subbands classiques. Au niveau 2, on re-décompose LL1 pour obtenir LL2, LH2, HL2, HH2 — et ainsi de suite.
Chaque niveau supplémentaire offre un compromis différent : les subbands profondes sont plus robustes à la compression mais ont une capacité réduite. Choisir le niveau d'injection dépend du contexte d'utilisation.
┌──────────┬──────────┬─────────────────────────┐
│ LL2 │ LH2 │ │
├──────────┼──────────┤ LH1 │
│ HL2 │ HH2 │ │
├─────────────────────┼─────────────────────────┤
│ │ │
│ HL1 │ HH1 │
│ │ ← niveau 1 │
└─────────────────────┴─────────────────────────┘
Niveau 2 ↑
Niveau 1 : taille HH1 = N/2 × M/2 → capacité élevée, robustesse standard
Niveau 2 : taille HH2 = N/4 × M/4 → capacité ÷ 4, robustesse accrue
Niveau 3 : taille HH3 = N/8 × M/8 → très faible capacité, robustesse maximale
→ Watermarking professionnel : niveau 3-4 pour résister aux attaques géométriques
→ Stéganographie courante : niveau 1 pour maximiser la capacitéNiveau 1
Capacité : ~N×M/32 chars
Robustesse : Standard
Usage : Usage courant
Niveau 2
Capacité : ~N×M/128 chars
Robustesse : Accrue
Usage : Archivage sécurisé
Niveau 3+
Capacité : Très faible
Robustesse : Maximale
Usage : Watermarking
DWT vs DCT vs LSB
Les trois grandes approches de stéganographie image opèrent dans des domaines différents et présentent des profils de robustesse, capacité et complexité très distincts. Le choix dépend du canal de transmission et du niveau de sécurité requis.
| Critère | LSB (PNG) | DCT (JPEG) | DWT (JPEG2000) |
|---|---|---|---|
| Format | PNG | JPEG | PNG / JPEG2000 |
| Domaine | Spatial (pixels) | Fréquentiel (blocs) | Fréquentiel (global) |
| Robustesse compression | ✗ Aucune | ✓ Partielle | ✓ Bonne |
| Capacité | ~375k chars/1MP | ~10k chars/1MP | ~32k chars/1MP |
| Résistance détection | Faible | Modérée | Modérée–Bonne |
| Complexité impl. | Très simple | Complexe | Modérée–Complexe |
Outils utilisant DWT
La DWT est principalement utilisée dans les systèmes de watermarking professionnel et dans certains outils de stéganographie open source. Elle est moins répandue que LSB ou DCT dans les outils grand public, car son implémentation requiert un codec capable de manipuler les coefficients d'ondelettes directement.
OpenStego
Open SourceOpen source, écrit en Java. Supporte à la fois la stéganographie DWT et le watermarking invisible. Interface graphique disponible.
JSTEG DWT
RechercheVariante de l'outil JSTEG original adaptée pour la décomposition en ondelettes. Plus expérimental, principalement utilisé à des fins de recherche.
Digimarc
CommercialSolution professionnelle de watermarking basée sur DWT multi-niveaux. Utilisée pour la protection de contenu commercial et le traçage de documents.
Questions fréquentes
C'est quoi une ondelette en termes simples ?
Imaginez une loupe mathématique qui analyse l'image à différentes résolutions simultanément. Contrairement à la DCT qui découpe l'image en blocs 8×8 indépendants, la DWT regarde l'image dans sa globalité et identifie les variations à plusieurs échelles — comme voir une photo de près et de loin à la fois.
Quand choisir DWT plutôt que LSB ou DCT ?
LSB : quand vous voulez la capacité maximale sur une image PNG et que l'image ne sera pas recompressée. DCT : quand l'image sera retransmise en JPEG. DWT : quand vous avez besoin d'un bon compromis entre robustesse et capacité, notamment pour le watermarking d'images qui seront redimensionnées ou légèrement filtrées.
Est-ce que la DWT fonctionne avec les fichiers JPEG ordinaires ?
Pas directement. La DWT standard opère sur des images sans perte (PNG, BMP, TIFF). JPEG2000 utilise la DWT, mais ce format est rare dans la pratique courante. Pour des JPEG, préférez la DCT qui est native au format. Si vous avez besoin de DWT, travaillez en PNG.
La DWT peut-elle servir à protéger mes photos professionnelles ?
Oui, c'est son usage principal. Le watermarking DWT multi-niveaux est utilisé par Digimarc et des solutions professionnelles pour intégrer des identifiants invisibles dans les photos. Ces watermarks survivent au redimensionnement, à certains filtres et même à des captures d'écran partielles.
Est-ce difficile d'implémenter la DWT soi-même ?
Avec une bibliothèque, non. Python avec PyWavelets (pywt) permet de décomposer et reconstruire une image en DWT en quelques lignes : `coeffs = pywt.dwt2(image, 'haar')`. La partie complexe est l'écriture correcte du fichier image modifié sans perte. En pratique, préférez OpenStego qui gère tout.
Outil DWT en développement
L'outil DWT est en cours de développement. En attendant, testez la stéganographie LSB sur image PNG directement dans votre navigateur — aucune installation requise.