Watermarking par DCT à taille de blocs variable



Dans cette méthode O-Hyung Kwon, Young-Sik Kim et Rae-Hong Park proposent une variante pour l'intégration du watermark dans les coefficients de la DCT de l'image d'origine.
Comme d'habitude on considère une séquence pseudo-aléatoire W=[w1,w2,...,wM] représentant le tatouage (distribution normale, moyenne à zéro, variance de 1...). L'idée principale de cette méthode est la suivante:
On utilise l'image originale dans le domaine spatiale pour déterminer les blocs de contours, et les blocs de "non-contours". Par défaut la DCT se fait sur des blocs de dimension N*N ( N étant une puissance de 2 pour la FFT). Mais dans cette méthode on subdivise le bloc en 4 (la division de N par 2 permet de rester une puissance de 2), si au cours du traitement dans le domaine spatial nous nous sommes aperçu que nous avions à faire à un bloc de contour.
Il reste bien sur à déterminer ce qu'est un bloc de contour et un bloc de "non-contour". Pour cela, on s'interesse aux composantes frequentielles. Et l'on classe les blocs selon la relation suivante:

Bloc contour <=> Variance^2 >= Seuil

Bloc non-contour <=> Variance^2 < Seuil


Si le bloc n'est pas un contour, on le remplace en entier par sa valeur moyenne, sinon on le découpe en 4 blocs de dimensions N/2*N/2, et l'on recommence. On obtient alors l'image I'h.
On procède ensuite de la façon suivante:

-Calcul de la DCT de I(x,y) (image d'origine) => I'(u,v).
-Calcul de la DCT de Ih(x,y) (image traitée en blocs) => I'h(u,v).
-Pour chaque bloc de I'h(u,v) on ne conserve que la valeur M la plus importante de la DCT, ce qui nous donne Lh (comme une sorte de filtre non linéaire maximum dans l'espace fréquentiel).

On incorpore ensuite le watermarking par la formule suivante:

I'wk = I'k(Lh,k)*(1+Alpha*wk)


Avec Alpha qui détermine la force du watermaking.
On effectue enfin une IDCT (Inverse Discret Cosinus Transform) sur I'w(u,v) ce qui nous donne l'image marquée Iw(x,y).

Processus de détection:

Pour verifier si une image à été marquée voici comment l'on procède:
-On recherche Lh à partir de l'image originale.
-On effectue la DCT de l'image à vérifier => Icw.
-On extrait le possible tatouage W'c par la formule suivante:


       I'cw(Lh,k) - I(Lh,k)
W'ck = --------------------
          Alpha * I(Lh,k)


Il suffit ensuite de mesurer la ressemblance du watermark supposé W'c et du watermark original W. Et ainsi on peut savoir si l'image à été marquée.