Projet C IG (1A)

IHM (2A)


VR/AR/Post-WIMP (3A)


Projet image (2A)


HCI (MoSIG 2)


Test Logiciel


Projects Docs

PrecedentMenuSuivant

Tracking

Lorsque le visage de l'orateur a été localisé à l'aide de la détection de mouvements, on souhaite que la caméra le filme en plan rapproché, et suive ses déplacements.
À l'initialisation de l'étape de tracking, on dispose d'une indication sur la position du visage, donnée par la détection de mouvements. Par la suite, chaque image de la caméra est passée par la détection de couleur de peau puis la recherche de zones connexes ; on obtient en sortie une liste de zones de pixels de peau contigus.

Le repérage du visage en se basant sur sa forme est très malaisé : les mouvements de la tête, les changements de conditions lumineuses font qu'à la sortie de la recherche de zones connexes, la forme du visage varie énormément. De plus, la caméra doit constamment ajuster son zoom, et l'orateur est libre de s'approcher ou de s'éloigner de la caméra. On ne peut donc pas faire d'hypothèse absolue sur les dimensions du visage à l'écran.
Le visage est rarement représenté par une seule et unique zone de pixels connexes. Les zones qui le constituent se scindent ou fusionnent fréquement, en fonction des déplacements ou tout simplement du bruit. Par exemple, le front est souvent disjoint du reste du visage, car le pourtour des yeux est plus éloigné de la teinte de la peau ; et dans le cas d'un éclairage direct, la composante spéculaire sur la peau crée parfois des "trous" non reconnus comme couleur de peau.

On est donc amenés à suivre parfois une, parfois plusieurs zones de pixels connexes, dont la forme et le nombre varient, mais dont le mouvement général est le même.

Représentation du visage

On choisit de représenter le visage par un volume englobant : lorsqu'il est constitué de plusieurs zones de pixels contigus, on considère le rectangle dont les côtés sont ajustés sur les abscisses et ordonées extrémales des zones qui constituent le visage.
À l'initialisation du tracking, c'est l'étape de détection de mouvements qui fournit le premier volume englobant.


"Volume englobant du visage"

À tout instant t+1, on s'attend à trouver le visage approximativement à la position qu'il occupait à l'instant t. On va donc le rechercher à cet endroit, et tenir compte de son déplacement pour actualiser la représentation de sa position.

Toutes les zones de pixels contigus de l'image étant représentées par leur propre volume englobant (en rouge sur les images), on marque toutes celles qui ont une intersection non vide avec le rectangle qui désignait le visage à l'instant t. On considère que ces zones constituent le visage à l'instant t+1.
Les frontières du volume englobant du visage sont alors ajustées sur les zones qui viennent d'être marquées : on obtient notre représentation du visage à t+1. Le barycentre de ces zones constitue le point que la caméra va chercher à placer au centre de l'écran.


Volume englobant du visage (en vert) et des zones qui le composent (en rouge)

A l'image suivante, on cherche les zones d'intersection non null avec l'ancienne position du visage

Le volume englobant du visage est rajusté


Cette méthode présente l'avantage d'être relativement tolérante à l'égard du bruit. Si une zone de pixels contigus se scinde en plusieurs morceaux entre les instants t et t+1, tous se retrouveront dans le nouveau volume englobant. De plus le rectangle du visage se redimensionne de lui-même lorsque les dimensions du visage évoluent (l'orateur se rapproche ou s'éloigne de la caméra, ou tourne la tête).

La méthode est inefficace lorsqu'entre deux images successives les positions du visage sont disjointes. En pratique, l'échantillonnage est rapide (25 images par secondes) et il est difficile de bouger la tête assez vite pour que ce cas de figure se produise.

Toute zone de pixels connexes qui entre en contact avec le rectangle du visage y est incorporé, et contribue ensuite à redimensionner le volume englobant. Ainsi, une main qui passe devant le visage puis s'en éloigne va tirer à elle les frontières du rectangle du visage, ainsi que son barycentre : la caméra ne sera donc plus centrée sur le visage. Il en va de même pour tous les objets dont la teinte est proche de celle de la peau, et qui peuvent accidentellement être présents à l'arrière plan.

La main entre en contact avec le visage puis s'en détache. Elle déforme le volume englobant, et entraîne le barycentre, point d'intérêt de la caméra (le point vert) avec elle.


Éclatement du volume englobant

Afin de pouvoir utiliser notre méthode, peu coûteuse en temps d'exécution, on va chercher à retirer de notre volume englobant les zones de pixels qui y auraient été incorporées mais ne feraient pas partie du visage.

Pour savoir à quel moment procéder à cet "éclatement" du volume englobant, on observe en permanence sa densité : le rapport du nombre de pixels couleur peau présents dans les zones du visage sur la superficie du rectangle. Lorsque la densité descend en dessous d'un certain seuil, c'est que les zones de pixels dans le volume englobant ne se déplacent pas toutes dans la meme direction, et que certaines ont excessivement agrandi le rectangle. On va donc tenter de l'éclater, et de ne garder que les zones qui correspondent au visage.

Durant l'étape de recherche des zones connexes dans l'image binaire, on a enregistré les informations sur la distribution des pixels de chaque zone. On dispose donc du barycentre et de la matrice de covariance de chacune. On peut donc en déduire le barycentre et les axes principaux du volume englobant, c'est à dire de l'union des zones qui s'y trouvent. La plupart du temps, si le visage et l'objet à éliminer du volume englobant se déplacent en sens contraire, alors le visage, le barycentre et l'objet intrus sont alignés, selon l'axe principal du volume englobant.

Pour chaque zone de pixels contigus présente dans le volume englobant, on projette son barycentre sur cet axe principal. En calculant la variance de la distribution des pixels de la zone selon l'axe, on peut représenter sur cet axe le segment, centré sur le barycentre, et de largeur deux fois l'écart-type.
Lorsque ces segments sont agglomérés, on en déduit que les zones correspondantes sont spatialement rapprochées. On peut alors dégager des groupes distincts de zones de pixels.

Eclatement du volume englobant. Le point vert est le barycentre du volume englobant. Les deux vecteurs qui en sortent sont les axes principaux du volume. En bleu, les grands groupes de zones repérés.


L'un de ces groupes correspond au visage, les autres sont des intrus ; reste à savoir lesquels. En première approximation, on peut considérer que le groupe de zones dont le barycentre est le plus proche du barycentre du volume englobant de départ est le visage. En effet, la main ou les petits objets du décor sont souvent de taille inférieure au visage, et attirent peu le barycentre à eux.

Cependant, si l'orateur a les bras bien visibles, la tendance s'inverse. On s'en tire donc en déduisant des matrices de covariance la forme générale de chacun des groupes : un groupe trop allongé sera considéré comme un bras ou un objet intru, et sera rejeté.

Si l'algorithme trouve un groupe de zones dont la position et la forme générale sont satisfaisantes, on réajuste le volume englobant du visage sur les zones qui constituent ce groupe.

Le bras attire le barycentre à lui, mais sa forme allongée le disqualifie.

Asservissement en luminosité

La répartition des différentes sources de lumière dans une pièce (lampes, néons, lumière naturelle) donne souvent une luminosité inégalement répartie. Notre système doit permettre à l'orateur de se déplacer librement dans le champ de la caméra, et doit donc être peu sensible aux variations de luminosité.

Par défaut, la caméra adapte ses paramètres d'ouverture et de gain pour ajuster la luminosité apparente. Ce comportement n'est pas toujours satisfaisant. Par exemple, si l'orateur se tient devant un fond clair, la caméra a tendance à diminuer l'ouverture pour que le fond atteigne une luminosité convenable ; le visage de l'orateur devient de fait beaucoup plus sombre. Ce cas de figure apparaît fréquemment en l'absence de lumière naturelle, en présence d'un éclairage néon.


Placé devant un fond clair, l'auto-exposition donne un visage trop foncé, donc mal détecté

Visage correctement détecté

Visage surexposé trop près d'une source de lumière naturelle ; l'auto-exposition ne baisse pas assez la luminosité

Si l'utilisation de l'espace de couleurs YUV permet de se concentrer sur la teinte en écartant l'information de luminosité, les couleurs extrêmes - visage trop sombre, ou surexposés - donnent une information beaucoup trop imprécise et difficilement exploitable. On passe donc la caméra en mode "Brightness", de façon à régler nous même la luminosité, le but étant d'avoir une luminosité à peu près constante sur le visage, quitte à obtenir un arrière plan sombre ou surexposé.

Pendant l'étape de détection de la couleur de peau, qui nécessite une conversion des pixels en YUV, on met de côté l'information de luminance Y. Lors de la recherche de zones connexes dans l'image binaire, on calcule au fur à mesure, pour chaque zone, la somme de la luminance de ses pixels. Dans l'étape de tracking, on peut donc déterminer la luminance moyenne zones qu'on a marquées comme faisant partie du visage.

On définit empiriquement un intervalle acceptable pour cette valeur de luminance. Lorsqu'on en sort, le paramètre Brightness de la caméra est ajusté en conséquence. L'orateur peut alors se déplacer d'une zone éclairée à une zone sombre sans perturber le suivi de la caméra.

Perte de la cible

Lorsque le nombre de pixels couleur peau présents dans le volume englobant descend en dessous d'un certain seuil, on considère qu'on a perdu la cible : l'orateur peut être caché par un objet, ou bien s'est tout simplement retourné. Parfois cette perte n'est que temporaire, par exemple dans le cas d'une brève occlusion : quelqu'un passe entre la caméra et l'orateur, ou bien ce dernier tourne rapidement la tête puis refait face à la caméra.

Avant de déclarer la cible comme perdue, et d'avoir recours à la détection de mouvements pour la retrouver, on immobilise la caméra et on persiste pendant quelques instants à rechercher le visage là où il a "disparu". On procède pour cela comme pour un suivi normal : on teste la présence de zones de pixels contigus dans le volume englobant qui, quelques instants auparavant, correspondait au visage.


L'orateur tourne le visage

Le visage est invisible ; on le recherche à l'endroit où il a disparu

Le visage réapparaît à l'emplacement d'origine ; on peut le rattrapper

Performances

Quantitativement, l'étape de tracking est très rapide comparée à la détection de la couleur de peau et à la connexité (de l'ordre de quelques milisecondes). Les calculs ne se font plus pour chaque pixel de l'image, mais pour chaque zone de pixels connexes. Les zones les plus petites n'étant pas considérées (pour éliminer le bruit), l'algorithme travaille sur une dizaine ou une vingtaine de zones seulement.

Qualitativement, on obtient des résultats assez satisfaisants. L'asservissement en luminosité donne un résultat robuste face aux changements de conditions lumineuses, et l'éclatement du volume englobant permet d'être relativement résistant à l'occlusion du visage par les mains et à la présence de bruit dans le décor.
Cependant ce système a ses limites : en sachant s'y prendre, il est aisé de tromper l'algorithme de tracking, et de transferrer le point d'intérêt de la caméra du visage vers les mains. De plus, des objets présents dans la scène plus volumineux que le visage dont la teinte ressemble à celle de la peau et dont la forme n'est pas allongée seront pris pour le visage et la caméra y restera fixée.

L'éclatement du volume englobant préfère l'objet du décor...



PrecedentMenuSuivant
 Retour haut de la page 
Edit - History - Upload - Print - Recent Changes - Search
Page last modified on June 14, 2007, at 02:29 PM