Équipe IMAGE - Le projet Pantheon

Tutoriel : Détection de texte dans les images

Identification

Ressources

I. Objectif

Le but est de localiser toutes les zones de texte artificiel dans des images extraites de vidéos. Le texte artificiel est destiné à être lu par un observateur contrairement aux autres types de texte que l'on peut rencontrer dans une scène qui ne sont pas spécialement destinés à être lus (p.ex. textes sur les t-shirts, panneaux d'information ou inscriptions). Ainsi, les textes artificiels sont des zones d'image horizontales, non occultées, fortement contrastées et assez grandes.

Le plan décrit ici est focalisé sur la détection. Par conséquent, il n'y a pas réellement d'élimination des fausses détections. Les résultats obtenus pourrait donc être affinés par la suite en utilisant des connaissances plus spécifiques sur les types de texte à détecter.

L'image initiale (Wolf, 2003).L'image résultat.

II. Méthode

La méthode est basée sur l'hypothèse que les textes artificiels sont des régions caractérisées par une forte densité en contours verticaux. Elle est composée de 5 étapes :

  1. Calculer l'image des gradients verticaux.
  2. Binariser l'image des gradients.
  3. Détecter les régions denses en contours verticaux.
  4. Rendre les régions plus compactes.
  5. Supprimer les fausses régions.
  6. Localiser les régions trouvées dans des boîtes englobantes.

II.1 Calculer l'image des gradients verticaux

L'image est convertie en niveaux de gris puisque la couleur n'est pas une caractéristique intrinsèque des textes. Puis, l'image est lissée avec un filtre gaussien pour atténuer le bruit avant de calculer le gradient vertical par l'utilisation d'opérateurs morphologiques : la différence entre la dilatation horizontale et l'érosion horizontale de l'image :

g(x,y) = δV(f(x,y)) - εV(f(x,y))
pany2pan input.png input.pan
prgb2gray 0.299 0.587 0.114 input.pan tmp1.pan

pgaussianfiltering 0.5 tmp1.pan tmp2.pan

plineardilatation 0 0 1 tmp2.pan tmp3.pan
plinearerosion 0 0 1 tmp2.pan tmp4.pan
psub tmp3.pan tmp4.pan text1.pan
text1.pan : Image des gradients verticaux.

II.2 Binariser l'image des gradients en utilisant la valeur d'entropie

La binarisation est utilisée pour garder les structures verticales les plus contrastées. Le seuil est calculé à partir de la valeur d'entropie qui est bien adaptée à la détection de petites structures fines reposant sur un grand fond uni.

Pratiquement, la valeur de seuil est déterminée comme le niveau de gris qui maximise la quantité totale d'information fournie par le fond et les objets séparément. La quantité d'information est mesurée par l'entropie.

pentropybinarization text1.pan text2.pan
text2.pan : Après la Binarisation par entropie.

II.3 Détecter les régions denses en contours verticaux

Avant la détection des régions, on utilise une fermeture verticale pour reconnecter les lignes verticales puisque le gradient vertical produit des lignes discontinues pour les lignes non strictement droites. Puis, une fermeture horizontale est utilisée pour fusionner ensemble les contours proches en une seule région. La fermeture utilise un élément structurant horizontal de demi-taille 4 qui fusionne les contours qui sont à une distance maximale de 9 pixels.

plineardilatation 90 0 2 text2.pan tmp5.pan
plinearerosion 90 0 2 tmp5.pan text3-1.pan

plineardilatation 0 0 4 text3-1.pan tmp7.pan
plinearerosion 0 0 4 tmp7.pan text3-2.pan
text3-1.pan : Après la fermeture verticale.
text3-2.pan : Après la fermeture horizontale.

II.4 Rendre les régions plus compactes

Une fermeture verticale de 2 pixels de demi-taille permet de rendre les régions plus compactes.

plineardilatation 90 0 2 text3-2.pan tmp8.pan
plinearerosion 90 0 2 tmp8.pan text4.pan
text4.pan : Après la fermeture verticale.

II.5 Supprimer les régions trop petites

L'étape suivante supprime les régions trop petites, à savoir les régions de demi-largeur < 2 pixels et de surface < 100 pixels.

plinearerosion 0 0 2 text4.pan tmp9.pan
plineardilatation 0 0 2 tmp9.pan tmp10.pan

pareaopening 8 100 tmp10.pan text5.pan
text5.pan : Après l'élimination des régions trop petites.

II.6 Supprimer les régions non rectangulaires

L'enveloppe convexe est calculée pour chacune des régions. Les régions qui n'ont pas une enveloppe convexe rectangulaire sont éliminées (ie., un facteur de rectangularité < 70%).

plabeling 8 text5.pan tmp11.pan
pconvexhull tmp11.pan tmp12.pan
prectangularityselection 1 .70 tmp12.pan text6.pan
text6.pan : Après l'élimination des régions non rectangulaires.

II.7 Supprimer les enveloppes convexes trop petites

Les enveloppes convexes de moins de 21 pixels de largeur sont supprimées.

plinearerosion 0 0 10 text6.pan tmp13.pan
plineardilatation 0 0 10 tmp13.pan text7.pan
text7.pan : Après la suppression des petites régions.

II.8 Localiser les régions à l'intérieur de boîtes englobantes.

La localisation des régions est faite dans des boîtes englobantes qui sont ensuite dilatées de 2 pixels pour bien prendre englober tous les pixels des caractères.

pboundingbox text7.pan tmp14.pan
pdilatation 1 2 tmp14.pan text8.pan
text8.pan : Les boîtes englobantes résultantes.

II.9 Superposer le résultat à l'image initiale

Les frontières des boîtes englobantes sont superposées à l'image initiale pour une meilleure visualisation des résultats.

pboundary 8 text8.pan tmp15.pan
psuperimposition 1 input.pan tmp15.pan output.pan
ppan2png output.pan output.png
output.pan : Le 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 31 October 2013