• Aucun résultat trouvé

Nous présentons maintenant les traitements effectués par chaque agent de façon plus dé- taillée.

4.6.1

Les agents SiftExtractor

Dans un premier temps, ils extraient les points SIFT de l’image, qu’ils transmettent de fa- çon ascendante aux SiftMatcher. En pratique, pour garantir que les points SIFT extraits corres- pondent à ceux de [Low04], nous utilisons le binaire fourni par l’auteur. Ces agents se contentent donc ici de forger des messages contenant chacun des points SIFT extraits par le programme externe.

La priorité associée à chaque message ne peut être déterminée à ce niveau que grâce à un a priorisur les zones où les objets peuvent être présents. Dans le cas général, cette priorité est fixée de façon aléatoire, pour ne pas dépendre de l’ordre de parcours de l’image, et entre −1 et 0, pour avoir une priorité inférieure aux messages de prédictions que nous détaillerons plus loin. Toutefois, pour des images en extérieur, il peut être intéressant d’utiliser des mesures de saillance bas niveau, comme les cartes de saillance de [IKN+98] qui mesurent le contraste entre une zone de l’image et son voisinage. Plus le contraste est élevé, plus la région a une valeur

de saillance élevée. Ce modèle est particulièrement pertinent pour des objets isolés sur un fond relativement homogène, comme le montre la figure 4.4. Nous expérimenterons l’utilisation de cette mesure de saillance sur un jeu de test spécifique composé d’images naturelles en extérieur dans la section 4.9.

Les agents SiftExtractor reçoivent également des requêtes descendantes initiées par l’agent Main. Il s’agit de prédictions sur l’emplacement de certains points SIFT. Chaque message de prédiction contient un point SIFT de la base et une transformation de similarité (orientation, échelle, position) supposée. L’agent SiftExtractor concerné recherche alors parmi les points SIFT de la zone quels sont ceux qui sont compatibles avec la transformation présumée. Chaque point compatible est ensuite envoyé aux agents SiftMatcher via un message ayant comme prio- rité la distance du χ2 entre le point de l’image et le point du modèle. Cette distance étant nécessairement positive, ces messages seront toujours plus prioritaires que ceux dont la priorité a été fixée aléatoirement entre −1 et 0.

4.6.2

Les agents SiftMatcher

Chaque message reçu en provenance des agents SiftExtractor contient un point SIFT de l’image et les agents SiftMatcher se chargent de rechercher le plus proche dans la base. Ils en- voient ensuite la mise en correspondance à l’agent parent, avec comme priorité − log PH0(Dr≤ Dr(k)) avec Dr le ratio entre la distance avec le point le plus proche de la base et la distance avec le second point le plus proche (voir section 3.3.2).

4.6.3

L’agent SiftClusterer

Cet agent reçoit les mises en correspondance des SiftMatcher. Pour chaque mise en corres- pondance, il calcule sa cellule dans l’espace de Hough généralisé (section 3.2.3). Ensuite, si une hypothèse a déjà été créée pour cette cellule, il y ajoute la mise en correspondance, sinon il crée une nouvelle hypothèse dans la mémoire collective. L’agent met ensuite à jour la PFA de l’hypothèse en calculant le nouveau terme PH0(P

Lowe H0 ≤ P Lowe H0 (H)) × PH0(P µ H0 ≤ P µ H0(H)) (voir section 3.3.5). Il envoie alors un message contenant l’hypothèse H mise à jour à l’agent parent Main, en utilisant − log PFA(H) pour fixer la priorité du message.

4.6.4

L’agent Main

Cet agent prend les décisions. Les messages qu’il reçoit contiennent une hypothèse H qui a été mise à jour récemment. Il regarde si sa PFA est inférieure au seuil de décision. Si oui, l’hypothèse donne lieu à une détection immédiate. Sinon, si son terme PH0(Dsad ≤ Dsad(H)) n’a pas été calculé, il envoie un message contenant l’hypothèse à son agent fils SadComputer. La priorité du message est donnée ici aussi par − log PFA(H).

FIG. 4.4 – À gauche : images de test contenant un objet à détecter. À droite : cartes de saillance normalisées calculées par l’algorithme de [IKN+98], qui mesurent le contraste entre chaque région et sa zone environnante. Ces cartes sont très efficaces pour trouver a priori la position d’objets manufacturés dans des images en extérieur, car ils sont très différents de leur voisinage. En images d’intérieur, cette information est beaucoup moins utile, puisque les objets à détecter ne sont pas nécessairement plus saillants que les autres objets de la scène. Dans l’exemple du bas, les grandes zones sombres et contrastées associées à l’écran et au sac noir (à gauche) sont ainsi plus saillantes que l’objet artificiellement incrusté.

Il lance également des prédictions pour K points SIFT du modèle de l’hypothèse qui n’ont pas encore été mis en correspondance et pour lesquels des prédictions n’ont pas encore été émises. K est fixé empiriquement à 5 dans nos expériences. Pour choisir quels points du modèle vont donner lieu aux prédictions, ils sont classés par pouvoir discriminant et stabilité à l’aide d’une étape d’estimation hors-ligne préalable. Chaque modèle de la base est transformé par une rotation de 5 degrés, un ajout de bruit uniforme de 1% et une réduction d’échelle de 12. Les points SIFT de chaque image sont ensuite mis en correspondance avec leur voisin le plus proche dans la base. À chaque point correctement associé est donné un score inversement proportionnel au ratio des distances Dravec le second point le plus proche de la base. Les autres points SIFT ont un score nul. À la fin, chaque point a un score de répétabilité qui permet de les ordonner et de rechercher en priorité les points stables les plus discriminants.

4.6.5

L’agent SadComputer

Cet agent reçoit des hypothèses à analyser. Il calcule simplement le terme PH0(Dsad ≤ Dsad(H)) de la probabilité de fausse alarme de chaque hypothèse, puis renvoie l’hypothèse mise à jour à l’agent Main, avec comme priorité − log PFA(H).