View  Edit  Attributes  History  Attach  Print  Search


ACCUEIL | DOCUMENTATION | STRATEGIES | TESTS

JavacvPro : Stratégies : Soustraction du fond (background subtraction)

Principe de soustraction du fond

  • Le principe consiste à enregistrer une image du fond, dans une première approche par appui sur une touche clavier par exemple, puis ensuite à soustraire ce fond à chaque nouvelle image du flux vidéo : l'image résultante fournit uniquement l'objet recherché, le reste de l'image étant noir.
  • Ensuite, on applique un seuillage sur l'image finale pour extraire l'objet à détecter sous forme d'une forme blanche sur fond noir.

Soustraction de base du fond

  • La librairie javacvPro fournit plusieurs buffer images qui permettent des manipulations entre plusieurs images. Notamment la fonction absDiff() mémorise dans le buffer Memory2 le résultat de la soustraction du buffer principal et du Memory.

L'opération mathématique utilisée : la différence absolue

  • Ici, on réalise pixel par pixel la différence entre le fond et l'image courante :
    • les valeurs possibles pour chaque pixels de l'image de départ sont comprises entre 0 et 255
    • les valeurs possibles pour chaque pixels de l'image de fond sont également comprises entre 0 et 255
    • l'espace des valeurs possibles pour chaque pixel final est compris entre 255 et -255 si l'on réalise une simple soustraction. Toutes les valeurs négatives seraient ainsi perdues. (du noir (=0) - du blanc (=255) donne -255. Si on prend la différence simple, cette valeur sera "perdue")
    • On prend donc la différence absolue de cette différence pour que les valeurs négatives soient prises en compte.
  • Si l'on considère un pixel de départ donné, on a :
  • Si l'on considère toutes les valeurs possibles d'un pixel de départ donné, on a :

Résultat final obtenu

  • Pour tous les pixels dont la valeur est identique au même pixel du fond, la valeur finale sera 0 et le pixel de sortie sera noir.
  • Pour tous les pixels dont la valeur est différente au même pixel du fond, la valeur finale oscillera entre 1 (2 couleurs proches) et 255 (2 couleurs éloignées) donnant un niveau fonction de la différence observée.
  • Typiquement, on voudra isoler les pixels utiles de l'avant-scène (foreground) pour une reconnaissance de forme : on va donc binariser l'image à l'aide d'un seuillage pour que l'avant-scène soit mis en blanc et le fond en noir.

Remarques

  • Il faut veiller à éviter les ombres, donc le fond devra être assez éloigné de l'objet à détecté ou bien sinon, il faudra que l'objet soit "plaqué" sur le fond lui-même.
  • Eviter les fonds trop contrastés avec des zones claires et foncées car cela donnera une image finale de l'objet à détecté qui ne sera pas harmonieuse.