DWT vs IWT : le problème des arrondis
La DWT standard utilise des filtres en virgule flottante. Quand on transforme puis inverse (IDWT), des erreurs d'arrondi inévitables font que l'image reconstruite n'est pas exactement identique à l'originale. Ces infimes différences (±1 niveau de gris) détruisent toute tentative de stéganographie véritablement réversible.
IWT résout ce problème en utilisant uniquement l'arithmétique entière grâce au lifting scheme. Chaque étape de la transformation est exactement inversible — zéro erreur d'arrondi.
DWT standard (virgule flottante) :
Signal [a, b] = [100, 102]
LL = (a + b) / 2.0 = 101.0
HH = a - b = -2
→ IDWT : a' = LL + HH/2 = 101.0 + (-1.0) = 100.0 ✓
b' = LL - HH/2 = 101.0 - (-1.0) = 102.0 ✓
(Trivial ici, mais pour des filtres complexes : erreurs !)
IWT (Lifting Scheme de Haar - entiers) :
Signal [a, b] = [100, 102]
d = b - a = 2 ← "detail" (entier)
s = a + floor(d/2) = 100 + 1 = 101 ← "smooth" (entier)
→ IIWT : a' = s - floor(d/2) = 101 - 1 = 100 ✓
b' = a' + d = 100 + 2 = 102 ✓
Parfaitement réversible ! Aucune erreur d'arrondi.Lifting scheme de Haar
Le lifting scheme décompose la transformation en une série d'étapes Predict et Update. Pour l'ondelette de Haar (la plus simple) :
- → Split : séparer les échantillons pairs et impairs
- → Predict (d) : d[i] = impair[i] - pair[i] (coefficients detail)
- → Update (s) : s[i] = pair[i] + floor(d[i]/2) (coefficients smooth)
En 2D (pour les images), on applique IWT successivement sur les lignes puis les colonnes, produisant 4 subbands : LL (smooth-smooth), LH (smooth-detail), HL (detail-smooth), HH (detail-detail).
IWT 2D (Haar Lifting) - une étape :
Étape 1 : IWT sur chaque LIGNE
[100 102 98 104] →
Pairs : [100, 98] Impairs : [102, 104]
d = [102-100, 104-98] = [2, 6]
s = [100+1, 98+3] = [101, 101]
→ [101 101 | 2 6]
subband L subband H
Étape 2 : IWT sur chaque COLONNE du résultat
→ 4 subbands 2D : LL LH HL HH
Subbands résultantes :
LL : basses fréquences lignes+colonnes (thumbnail)
LH : basses fréquences lignes, hautes colonnes (contours verticaux)
HL : hautes fréquences lignes, basses colonnes (contours horizontaux)
HH : hautes fréquences lignes+colonnes (diagonales, bruit)
Cache données dans HH → changements imperceptiblesStéganographie dans les coefficients IWT
On cache les données dans les coefficients de la subband HH (hautes fréquences diagonales) : modifications imperceptibles. Les subbands LL/LH/HL (basses fréquences) ne doivent pas être modifiées pour préserver la qualité visuelle.
Comme les coefficients IWT sont des entiers, on peut appliquer directement le remplacement LSB sur ces entiers. La IIWT reconstruit ensuite une image parfaitement décodable — et réversible après extraction du message.
Appliquer IWT à l'image → 4 subbands entières (LL, LH, HL, HH)
Modifier le LSB des coefficients HH avec les bits du message
Appliquer IIWT → image stéganographiée (différence invisible)
Décodage : IWT → lire LSB de HH → extraire bits → IIWT pour restaurer
IWT multi-niveau
En appliquant IWT récursivement sur la subband LL, on obtient une décomposition multi-niveau (pyramide d'ondelettes). La stéganographie peut alors cibler différents niveaux selon le compromis capacité/discrétion voulu. Le niveau 1 (HH₁) est le plus imperceptible mais a la plus grande capacité. Les niveaux supérieurs (HH₂, HH₃) ont moins de capacité mais sont encore plus résistants à la détection.
Décomposition IWT 3 niveaux (image 512×512) : Niveau 1 : LL₁ (256×256) LH₁ (256×256) HL₁ (256×256) HH₁ (256×256) ← 65 536 coefs Niveau 2 (IWT sur LL₁) : LL₂ (128×128) LH₂ (128×128) HL₂ (128×128) HH₂ (128×128) ← 16 384 coefs Niveau 3 (IWT sur LL₂) : LL₃ (64×64) LH₃ (64×64) HL₃ (64×64) HH₃ (64×64) ← 4 096 coefs Stéganographie dans HH₁ : 65 536 bits ≈ 8 Ko (maximal, légèrement perceptible) Stéganographie dans HH₂ : 16 384 bits ≈ 2 Ko (bon compromis) Stéganographie dans HH₃ : 4 096 bits ≈ 512 octets (très discret)
Comparaison LSB / DWT / IWT
| Propriété | LSB | DWT | IWT |
|---|---|---|---|
| Domaine de travail | Spatial | Ondelettes (float) | Ondelettes (entier) |
| Réversibilité | ✓ oui | ✗ non (float) | ✓ oui (entier) |
| Qualité (PSNR) | Moyen | Élevé | Élevé |
| Capacité (512×512) | ~96 Ko | ~8 Ko (HH) | ~8 Ko (HH) |
| Robustesse JPEG | ✗ | △ | △ |
| Complexité impl. | Simple | Modérée | Modérée |
| Format requis | PNG/BMP | PNG/BMP | PNG/BMP |
→ IWT est la technique de choix quand on a besoin à la fois d'une bonne qualité visuelle ET d'une réversibilité parfaite. C'est le cœur de JPEG 2000 lossless (CDF 5/3 lifting) et de nombreux systèmes de watermarking réversible.
Questions fréquentes
Quelle est la vraie différence entre DWT et IWT ?
DWT utilise des opérations en virgule flottante (divisions par 2.0, filtres Daubechies avec coefficients décimaux). Quand on transforme puis retransforme en inverse, des erreurs d'arrondi inévitables font que l'image reconstruite diffère de l'originale de ±1 niveau de gris par pixel. IWT remplace ces opérations par des approximations entières exactement inversibles — zéro erreur. C'est cette réversibilité parfaite qui justifie la complexité supplémentaire.
Qui utilise IWT en pratique ?
IWT est au cœur de JPEG 2000 lossless (mode sans perte), où elle s'appelle CDF 5/3. Les systèmes d'imagerie médicale (DICOM), les archives d'images astronomiques et les musées numériques utilisent JPEG 2000 lossless — et donc IWT. En stéganographie, c'est la technique de choix quand on a besoin d'une réversibilité garantie avec une bonne qualité visuelle.
Est-ce difficile à implémenter pour un débutant ?
Avec PyWavelets, non : `import pywt; cA, (cH, cV, cD) = pywt.dwt2(image, 'haar')` décompose l'image. Pour IWT spécifiquement, il faut préciser le mode entier. La complexité réside dans la gestion des arrondis et la reconstruction correcte — OpenStego gère tout cela automatiquement et propose DWT (pas encore IWT nativement).
IWT est-elle utile pour le watermarking médical ?
Oui, c'est son application principale en dehors de la compression. Des hôpitaux et laboratoires utilisent IWT pour intégrer des métadonnées patients directement dans les images IRM ou radiographies. La réversibilité garantit que les radiologues travaillent sur des données de pixels strictement identiques aux originales — essentiel pour les diagnostics.
Les détecteurs de stéganographie peuvent-ils détecter IWT ?
Plus difficilement qu'avec LSB, car les modifications sont dans le domaine des ondelettes et non directement dans les pixels. Un stéganalyste doit calculer la transformée IWT de l'image suspecte, puis analyser la distribution statistique des coefficients HH — ce qui requiert des outils spécialisés. SRM (Spatial Rich Model) et les CNN de stéganalyse ont du mal car les modifications semblent naturelles.
Voir la DWT classique
Comprenez d'abord la DWT flottante avant de passer à IWT.