Équipe IMAGE - Le projet Pantheon

Tutoriel : Supprimer le moiré dans des photos scannées

Identification

Ressources

I. Objectif

L'objectif est de diminuer l'effet moiré qui apparaît dans des images issues de photos scannées. Le moiré résulte d'un phénomène d'interférences spatiales entre plusieurs réseaux de tramage de fréquences différentes. Ce phénomène a lieu en particulier lors de la numérisation de photos d'imprimés tels que des cartes postales, illustrations de livres ou images de magazines ou de journaux. Il se traduit par une texture ondulatoire uniformément répartie sur toute la surface de l'image. Il est dû au fait qu'une photo est imprimée sous la forme d'une série de points avec une certaine fréquence, alors que le scanner acquière une image sous la forme d'une série de pixels à une fréquence d'échantillonnage différente. Quelque fois il y a recouvrement parfait entre les point de la photo et les points d'échantillonnage du scan, mais d'autre fois il a décalage et ceci de manière régulière.

Le but est donc de détecter les fréquences de la texture du moiré et de les supprimer sans toucher aux informations présentes de l'image.

L'image initiale.L'image résultat.

II. Méthode

Une façon simple pour supprimer le moiré est d'utiliser un lissage Gaussien (opérateur pgaussianfiltering dans Pandore).

La méthode décrite ici est plus sophistiquée. Elle est basée sur la suppression des pics de fréquence les plus importants dans les images de la transformée de Fourier de l'image originale. Vu que le moiré est assez fort dans les images, il présente donc des pics importants dans l'espace fréquentiel.

Les étapes de la méthode sont donc :

  1. Transformation de l'image dans le domaine fréquentiel de Fourier.
  2. Détection des pics de fréquence.
  3. Suppression des pics de fréquence.
  4. Transformation inverse de Fourier pour revenir dans le domaine spatial.

À noter que pour les images couleurs, ce plan doit être appliqué bande par bande.

II.1 Transformée de Fourier

La transformée est directe. On ne s'intéresse ici qu'à l'image du module de la transformée.

pany2pan input.png input.pan
psetcst 0 input.pan tmp1.pan
pfft input.pan tmp1.pan real.pan imag.pan

pfftshift real.pan imag.pan tmp2.pan tmp3.pan
pmodulus tmp2.pan tmp3.pan modulus.pan
logtransform 0 0 255 modulus.pan mod.pan
mod.pan : L'image du module de la transformée de Fourier.

II.2 Détection des pics de fréquence

La détection des pics est effectuée par un chapeau haut-de-forme blanc puis une binarisation. Au préalable un lissage médian permet de supprimer les petits points blancs isolés.

Le chapeau haut-de-forme blanc correspond à la différence entre l'image et son ouverture :

WTH(f) = f - δ(ε(f))

La valeur de seuil de la binarisation est déterminée comme la valeur de niveau de gris qui maximise la quantité totale d'information du fond et des pics pris séparément. L'information se mesure par l'entropie, on utilise donc une binarisation par entropie.

pmedianfiltering 3 mod.pan mod.pan

perosion 1 8 mod.pan tmp4.pan
pdilatation 1 8 tmp4.pan tmp5.pan
pdif tmp5.pan mod.pan wth.pan

pentropybinarization wth.pan freq.pan
freq.pan : Les pics détectés.

II.3 Suppression des pics de fréquence

La suppression se fait par le masquage des pics détectés sur l'image de la transformée de Fourier. Seuls les pics situés sur l'axe des abscisses et des ordonnées sont conservés. Pour cela, on crée une image artificielle d'une croix blanche.

pshapedesign 1024 512 0 3 23 1024 horiz.pan
pshapedesign 1024 512 0 3 512 12 vertic.pan
por horiz.pan vertic.pan mask1.pan
pinverse mask1.pan mask1.pan

pmask freq.pan mask1.pan mask.pan
mask1.pan : Le masque utilisé pour supprimer les pics.
mask.pan : Les pics supprimés.

II.4 Transformée de Fourier inverse

Une fois, les pics de fréquence sélectionnés, il faut masquer l'image de Fourier (partie réelle et partie imaginaire) avec le masque défini. Il suffit ensuite d'appliquer la transformée inverse pour revenir dans le domaine spatial.

# Masking (inversion and shift)
pinverse tmp6.pan tmp6.pan
pfftshift tmp6.pan tmp6.pan tmp7.pan tmp8.pan
pmask real.pan tmp7.pan tmp9.pan
pmask imag.pan tmp8.pan tmp10.pan

# Inverse Fourier transform
pifft tmp9.pan tmp10.pan tmp11.pan tmp12.pan
plineartransform 0 0 255 tmp11.pan tmp13.pan
pim2uc tmp13.pan output.pan
ppan2png output.pan output.png
output.pan : L'image résultat.

III. Le script Pandore complet


Projet Panthéon
Equipe Image Laboratoire GREYC
UMR CNRS 6072 - ENSICAEN - Université de Caen, France
Page modifiée le 14 November 2013