FR 2964771 A1 20120316 FR 1057287 A 20100913 PROCEDE DE VISION BASE SUR DES CONTRAINTES VALIDES EN GEOMETRIE PROJECTIVE POUR UN FILTRE DE COIIERENCE SPATIALE Le domaine de l'invention est celui de la vision par ordinateur, et plus particulièrement celui de la reconnaissance automatique d'objets et/ou de lieux dans une image numérique courante, même lorsque ces objets/lieux sont tournés, agrandis, recadrés, éclairés différemment par rapport à une image de référence des objets/lieux, connue. A cet effet, il est connu de représenter ces images numériques par des descripteurs locaux, cette représentation étant plus robuste à certaines transformations ou altérations de l'image qu'une approche par descripteurs globaux. Elle nécessite d'abord l'extraction de points d'intérêt dans une image de référence et dans une image courante. Un point d'intérêt aussi désigné point saillant ou point-clé est en quelque sorte un point qui ressemble le moins possible à ses voisins et qu'il est possible de restituer précisément malgré par exemple un changement dans le point de vue d'une image à l'autre ; il s'agit typiquement soit d'angles (ou coins) soit de centres de nuées (ou « blobs » en anglais). On associe alors à ces points d'intérêt, des descripteurs du signal en les choisissant de manière à ce qu'ils restent invariants même lorsque par exemple l'image courante a tourné par rapport à l'image de référence. Parmi les descripteurs les plus utilisés, on peut citer les descripteurs SIFT acronyme de l'expression anglo-saxonne « Scale Invariant Feature Transform » (présentés dans la publication « Distinctive Image Features from Scale-Invariant Keypoints » David G. Lowe (International Journal of Computer Vision, January 5, 2004)) , et les descripteurs SURF acronyme de l'expression anglo-saxonne « Speed Up Robust Features », qui sont invariants à plusieurs transformations affines telles que rotation, échelle, illumination et changements mineurs du point de vue. Les images sont alors comparées en mettant en correspondance les points d'intérêt (associés à leurs descripteurs) qui les représentent, c'est-à-dire en appariant les descripteurs de l'image courante aux descripteurs de l'image de référence. Cependant, dans ces approches qui ne tiennent pas compte de la géométrie de ce que l'on souhaite reconnaître, il reste toujours un certain nombre de mauvais appariements entre points d'intérêt. C'est pourquoi, un filtrage est utilisé pour éliminer les mauvais appariements et les fausses reconnaissances qui pourraient s'en suivre et pour améliorer l'évaluation de la position courante de l'objet/du lieu dans l'image courante par rapport à celle de l'objet/du lieu dans l'image de référence. Ce filtrage met en oeuvre une étape de cohérence spatiale qui prend en compte la configuration spatiale des points d'intérêt entre eux, dans une image. On peut se reporter à la publication « Video Google : A Text Retrieval Approach to Object Matching in Video », J. Sivic and A. Zisserman (2003 IEEE Computer Society). En géométrie affine, la cohérence spatiale s'appuie sur des invariants tels que le parallélisme ou l'isométrie mais, en géométrie projective, de tels invariants disparaissent comme illustré figure 1 entre les deux images. Le parallélisme, la valeur des angles et l'isométrie des segments de la face avant de la figure de gauche ne sont pas conservés lorsque cette face a tourné de 90° figure de droite. Les implémentations qui sont faites de la cohérence spatiale utilisent donc pour la plupart une approche statistique (RANSAC, PROSAC, etc.) sur l'ensemble des points d'intérêt trouvés ou un groupe de points proches, mais cela implique des suppositions fortes sur la proximité d'autres points d'intérêts appartenant au même objet, sur le ratio bons/mauvais appariements, ou encore sur la possibilité que des objets aient été intervertis dans une scène, entre l'image de référence et l'image courante. Certains y ajoutent des contraintes géométriques sur les différences d'angles ou de distances, en supposant que les changements de perspective sont faibles afin de se rapprocher du cas de la géométrie affine. Mais dans le cas de changements de perspective importants (certains descripteurs tolèrent des perspectives au-delà de 55° et permettent même, via certaines manipulations, de retrouver un certain nombre de points d'intérêt jusqu'à 80° par rapport à une vue de référence de face), de bons appariements sont supprimés, ce qui s'avère pénalisant lorsque ceux-ci sont peu nombreux. D'autre part, même si les approches récentes tendent à diminuer le coût de calcul, ces derniers restent non négligeables sur une architecture embarquée à faible puissance de calcul. Le but de l'invention est de pallier ces inconvénients. Le procédé selon l'invention comporte une alternative aux méthodes de cohérence spatiale présentées en préambule. Il permet de réaliser cette cohérence spatiale en se basant sur une cascade de contraintes valides en géométrie projective, en tirant parti du fait que les points d'intérêt traités sont plus que des points ponctuels, puisque les approches par descripteurs leur donne une échelle et une orientation. On définit de nouvelles contraintes que les points d'intérêt doivent respecter sous peine de réjection lors de leur passage dans la cascade. Plus précisément, l'invention a pour objet un procédé de vision par 5 ordinateur qui comprend : - une étape d'acquisition d'une image numérique de référence et d'une image numérique courante par une caméra, - une étape pour extraire des points d'intérêt dans ces images numériques selon une approche par descripteurs, chaque point d'intérêt obtenu étant ainsi associé 10 à au moins un descripteur portant avec lui une information d'échelle et/ou d'orientation, - une étape de mise en correspondance des points d'intérêt d'une image courante avec ceux d'une image de référence, - une étape de filtrage des points d'intérêt de l'image courante au moyen 15 d'un filtre de cohérence spatiale. Il est principalement caractérisé en ce qu'un point d'intérêt de l'image courante est conservé par le filtre s'il appartient à au moins un couple de points d'intérêt de l'image courante qui respectent au moins une contrainte géométrique déterminée en fonction dudit (desdits) descripteur(s) et du couple correspondant de 20 l'image de référence, cette (ces)contrainte(s) étant valide(s) en géométrie projective. Quatre contraintes géométriques sont présentées dans un ordre ici arbitraire. La première contrainte géométrique s'exprime de la façon suivante : fi(RE1) REJ f2(RE1) 25 en notant REK = échelle du point K dans l'image courante / échelle du point K dans l'image de référence, et fi et f2 étant déterminés en fonction de l'angle de champ de la caméra et de l'angle maximum toléré pour la perspective par le descripteur. 30 La deuxième contrainte s'exprime comme suit : Çl.IIJlréférence 2 / (RE'. REJ) Ce procédé présente l'avantage d'être robuste aux fortes perspectives, de pouvoir fonctionner avec moins de bons appariements que de mauvais, de ne pas être pénalisé pour la reconnaissance de lieux lorsque des objets ont changé de place, de 20 pouvoir s'étendre dans une certaine mesure à des objets articulés L'invention a aussi pour objet un programme d'ordinateur comprenant des instructions de code de programme permettant l'exécution du procédé tel que décrit, lorsque le programme est exécuté sur un ordinateur. Sur un processeur classique de 25 type x86, le gain par rapport à des filtrages par cohérence spatiale utilisant des approches de type RANSAC s'est avéré aller de 1 à 3 ordres de grandeur selon le niveau de tolérance paramétré pour RANSAC. L'invention concerne également un robot humanoïde apte à reconnaître des objets dans son environnement, ce robot comportant des moyens de mise en 30 oeuvre du procédé de vision tel que décrit. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit, faite à titre d'exemple non limitatif et en référence aux dessins annexés dans lesquels :5 la figure 1 déjà décrite illustre schématiquement la perte d'isométrie, d'angle droit et de parallélisme en géométrie projective, les figures 2 illustrent schématiquement la relation entre d'une part l'angle de champ de la caméra et l'angle maximal de perspective toléré par un descripteur et d'autre part la contrainte géométrique sur le rapport d'échelle entre deux points d'intérêt, les figures 3 illustrent schématiquement la relation entre d'une part l'angle de champ de la caméra et l'angle maximal de perspective toléré par un descripteur et d'autre part la contrainte géométrique sur le rapport de distance dans l'image entre deux points d'intérêt, les figures 4 illustrent schématiquement la quatrième contrainte géométrique prenant en compte les orientations associées aux descripteurs, les figures 5 illustrent schématiquement la différence des plus proches voisins, entre une image de référence et une image courante dans laquelle un objet a été déplacé, la figure 6 illustre l'orientation associée à un point d'intérêt situé au centre du cercle dans le cas d'un descripteur SURF, la figure 7 est un organigramme de l'algorithme passant en revue les points d'intérêt de l'image courante, la figure 8 est un schéma de l'architecture physique d'un robot humanoïde, la figure 9 illustre la tête d'un robot humanoïde comportant des capteurs utiles à la mise en oeuvre de l'invention. Le procédé selon l'invention est basé sur une extraction des points d'intérêt dans l'image de référence et dans l'image courante, selon une approche par descripteurs (SIFT, SURF, GLOH, etc.) afin qu'il leur soit associé comme descripteur une échelle et/ou une orientation, en plus de leur position. L'image de référence est typiquement une image d'une base de données, stockée avec ses points d'intérêt et les descripteurs associés (notons qu'il n'est pas réellement nécessaire de stocker l'image de référence, les stockages de ses points d'intérêt et de leur position suffisant). On rappelle comment l'échelle et l'orientation d'un point d'intérêt sont obtenues. L'échelle que l'on associe à un point d'intérêt va permettre de rendre sa description robuste dans une certaine mesure à l'éloignement et au rapprochement. Rappelons qu'un point d'intérêt est un point dont la différence d'intensité avec son voisinage est supérieure au seuil posé (le point d'intérêt peut être obtenu de différentes manières : détecteur de Harris, FAST, calcul du déterminant de la matrice Hessiène, etc.). Pour choisir l'échelle, chaque point d'intérêt est analysé à plusieurs échelles (simulant différents niveaux de zooms) pour ne retenir que celle qui semble la plus pertinente, c'est-à-dire dont la réponse est meilleure que celles des échelles supérieures et inférieures (elle définira ensuite la taille du voisinage qui servira à la description du point d'intérêt). L'orientation que l'on associe à un point d'intérêt permet d'analyser un objet indépendamment de sa rotation dans le plan image. Il existe plusieurs façons d'évaluer cette orientation principale, comme par exemple de calculer la norme de l'orientation dominante de tous les gradients dans une fenêtre F de taille fixe voisine du point d'intérêt P et que l'on fait tourner autour de celui-ci, l'orientation principale O étant celle de la fenêtre dont la norme de l'orientation dominante retenue est la plus grande (à noter que si deux fenêtres ont plusieurs orientations dominantes de norme similaire, il est possible de créer autant de descripteurs). La figure 6 illustre le cas pour SURF. Selon l'invention, les points d'intérêt de l'image courante sont appariés à ceux de l'image de référence, et filtrés en mettant en oeuvre une étape de cohérence spatiale. Pour qu'un point d'intérêt d'une image courante ne soit pas rejeté lors de cette étape, il faut qu'il appartienne à un doublet (ou triplet ou quadruplet ou quintuplet, etc...) de points d'intérêt de cette même image, qui respectent une (ou plusieurs) contrainte(s) valable(s) en géométrie projective que l'on va décrire ; ces contraintes font intervenir les points d'intérêt correspondants dans l'image de référence. Il suffit que ces contraintes géométriques soient respectées mais elles peuvent éventuellement l'être en combinaison avec d'autres types de contraintes posées comme des contraintes statistiques. Le filtrage est d'autant plus robuste que le nombre de contraintes appliquées est élevé. Ces contraintes valables en géométrie projective profitent du fait que les points d'intérêt traités bénéficient d'une échelle et d'une orientation. Quatre contraintes sont proposées, deux étant déterminées en fonction de l'échelle associée aux points d'intérêt, les deux autres en fonction de l'orientation. Les deux premières contraintes sont présentées en relation avec les figures 2 et 3. Sachant que l'on a : - d'une part un champ de vision dont l'angle maximum est de 20 pour la caméra qui acquiert l'image de référence et l'image courante, , - d'autre part une limitation connue sur l'angle maximum pour la perspective p toléré par le descripteur (cet angle peut être atteint entre deux vues lorsque dans l'une de ces deux vues la face de l'objet est dans un plan normal à l'axe optique de la caméra. Dans le cas contraire, la tolérance du descripteur à la perspective est moindre), pour filtrer les points j dont le ratio d'échelle impliquerait un changement de perspective entre les deux points i et j trop important par rapport à la perspective dans l'image de référence, on définit la première contrainte qui concerne le rapport d'échelle entre deux points de la manière suivante : fi(REI) REJ f2(RE1) où RE1 et REJ désignent le ratio entre l'échelle courante et l'échelle de référence respectivement pour les projections I et J dans l'image des points i et j. fi et f2 s'évaluent grâce aux caractéristiques de la caméra et aux limitations du descripteur utilisé citées en préambule. En se référant aux figures 2, la méthode de 20 calcul est la suivante : - Soit L la distance maximale séparant deux points d'intérêt i et j observés lorsqu'ils sont dans un plan normal à l'axe optique de la caméra, on a L = 2. d;. sin 0 (1), avec d; la distance séparant le point i de la caméra. Le choix d'un plan ij 25 normal à l'axe optique provient du fait que c'est cette configuration dans l'image de référence qui permet d'obtenir par la suite la plus grande robustesse aux angles p dans l'image courante, présentant donc le pire cas. - Lorsque le point i se retrouve en i' pour l'image courante, sa distance 30 par rapport à la caméra est alors d;' (avec RE1 = d;' / di). Dans le pire cas, le point j se retrouvera alors en j' et avec (1) nous aurons les équations suivantes : xi' = 2. d;. sin O. cos p - di'. sin 0 = d;. (2sin O. cos p - REI. sin 0) yj' = 2. d;. sin O. sin p + di'. cos 0 35 = d;. (2sin O. sin p + REI. cos 0) D'où l'équation suivante = d;. i[(2sin O. cos p - REI. sin 0)2 + (2sin O. sin p + REI. cos 0)2] - Or avec notre choix d'un plan ij normal à l'axe optique de la caméra, di =d;, Nous obtenons alors REJ = di'/ di = i[(2sin O. cos p - REI. sin 0)2 + (2sin O. sin p + REI. cos 0)2] - Comme il s'agit du pire cas, nous avons en réalité une inégalité REJ f2(RE1) avec (2) f2(RE1) = i[(2sin O. cos p - REI. sin 0)2 + (2sin O. sin p + REI. cos 0)2] Pour le calcul de fi nous nous plaçons dans le pire cas qui correspond à un rapprochement du point j par rapport à i. Mais il faut alors procéder à une vérification supplémentaire si l'on veut que la condition soit la plus contraignante possible: le point j ne doit pas sortir du champ comme illustré en (d) Figure 2. Dans cette figure, tan p' = h /l1 tan 20 = h /12 d;'=11+12 On en déduit que d;' = h[(1/ tan p')+(l/ tan 20)] => h = d;' [ tan p'. tan 20 / (tan 20 + tan p') ] Et comme L' = h / sin p' = d;'/sin p' [ tan p'. tan 20 / (tan 20 + tan p') ] si L' L , alors di' = h / sin 20 = d;'/sin 20 [ tan p'. tan 20 / (tan 20 + tan p') ] et ayant di = d; , nous pouvons poser fi(REI) REJ avec (3) fI (REI) = RE1 /sin 20 [ tan p'. tan 20 / (tan 20 + tan p') ] (nous pouvons même aller encore plus loin en évaluant le changement d'échelle maximum possible lorsque le point i ne se trouve pas en bordure du champ de vision de la caméra comme illustré, mais au détriment alors du temps de calcul.) - Si L' > L, de façon similaire au calcul de f2, nous posons pour fl yj' = max(d;'. cos 0 - 2. d;. sin O. sin p, 0) = max(d;. (RE'. cos 0 - 2. sin O. sin p), 0) car le point j ne peut être observé que devant la caméra - Nous obtenons donc au final fi (REI) REJ avec (4) fi(RE1) = i[(2sin O. cos p - RE'. sin 0)2 + max(RE1. cos 0 - 2sin O. sin p, 0)2] La deuxième contrainte est déterminée en fonction des rapports d'échelle tels que définis précédemment et de la distance entre deux points i et j respectivement projetés en I et J dans l'image de référence et en I' et J' dans l'image courante. On peut utiliser les inégalités suivantes : Ç1.IIJ12 / (RE' . REJ) - Par ailleurs, en nous rapportant à la Figure 3 (c) où les points i et j cités ci-dessus sont représentés par il' et ji', pour la distance de leur projection Ih' Ji'I dans le plan image on a II2' J2' I Enfin, la distance dans le plan image II2" J2"I = 2. di . sin 4/2) II2" J2" I = IIJI . sin 4/2) / sin 0' permet d'obtenir Ç1 =(II2"J2"I/IIJI )2 = ( sin 4/2) / sin 0' )2 30 Ç1 étant une fonction de 0' décroissante, et 0' ne pouvant être supérieur à 0, sa borne minimale est donc limitée par 0' = 0, d'où grâce à (6) (7) Ç1=(sin(0.5atan(cosp/(sin p+1/(2.tan0))))/sin0)2 20 25 - D'une façon similaire, pour on estime que le pire cas correspond à des points I et J dans l'image de référence, projections de points de l'espace réel appartenant à un plan formant un angle p avec le plan normal à l'axe optique de la caméra, tandis que les points I' et J' dans l'image courante sont les projections de points i' et j' de l'espace réel appartenant au plan normal à l'axe optique de la caméra. - Ainsi, pour le calcul de on peut se baser sur la Figure 3 (c) en intervertissant les notations i2' j2' et ij. On a donc Ç2=1/Ç1 (8) Ç2=(sin0/sin(0.5atan(cosp/(sin p+1/(2.tan0)))))2 Les deux contraintes qui viennent sont fondées sur la remarque suivante : lorsque deux points i et j appartiennent à une même face plane ou relativement courbée d'un objet, ou même à deux faces reliées par une arrête molle, d'une image à l'autre l'orientation de leurs projections I et J dans le plan image reste du même côté du segment les reliant (on rappelle que les points dont on parle ont la particularité d'être orientés et d'avoir une échelle). Ceci est illustré figures 4. Cette condition n'est pas valable lorsque les points appartiennent à deux faces reliées par une arrête vive, mais comme le descripteur tolère les perspectives jusqu'à un certain angle au delà duquel il ne peut pas retrouver un point, cela donne une certaine latitude sur les courbures ou arrête molles. La troisième contrainte s'énonce comme suit : quel que soit l'angle areference entre l'orientation d'un point d'intérêt I et la droite le reliant à un autre point d'intérêt coplanaire J de l'image de référence, si cet angle est inférieur à 180° dans l'image de référence (figure 4 (a)), l'angle ac°urant correspondant dans l'image courante (figure 4 (b)) ne pourra pas être supérieur à 180°, et inversement (cf. figure 4 (b) (c) (d)): Signe(a°°'rant - 180°) = Signe(areferen°e - 180°) On garde bien sûr une tolérance pour les angles originellement proches de 180°(à ± 10° par exemple), leur affectation à l'une ou l'autre des classes pouvant être erronée en raison du caractère discret et partiellement bruité d'une image numérique.35 La quatrième contrainte s'énonce comme suit : la différence en valeur absolue d'un angle acourant dans l'image courante avec l'angle aréférence dans l'image de référence ne peut être supérieure à un certain seuil Amax en géométrie projective car l'on prend en compte le fait que le descripteur a une tolérance maximale sur l'angle de perspective p lui permettant de retrouver un point. On a donc : Iacourant - aréférencel Comme on l'a vu plus haut, un point d'intérêt d'une image courante ne sera pas rejeté lors de cette étape de cohérence spatiale s'il appartient à un doublet (ou un triplet ou un quadruplet, etc) de points d'intérêt qui respectent une (ou plusieurs) des contraintes décrites, ou dit autrement s'il appartient à un doublet (ou un triplet ou un quadruplet, etc) de points d'intérêt cohérents entre eux. Selon un premier mode de réalisation, tous les points d'intérêt de l'image courante sont passés en revue et comparés aux autres en prenant tous les points de la liste un par un. Selon un deuxième mode de réalisation, tous les points d'intérêt de l'image courante sont passés en revue un par un, mais ces points ne sont comparés qu'avec les autres points d'intérêt de l'image courante qui leur sont proches. Cette notion de distance maximale peut être exprimée en distance « L2 » (distance euclidienne), voire « L1 » (distance de Manhattan) pour une plus grande rapidité de calcul. Cette distance doit être bien choisie, pour ne pas pénaliser la validation de points d'intérêt dans des situations comme celle montrée figure 5. Le cube s'étant déplacé entre l'image de référence (Fig 5a) et l'image courante (Fig 5b), le point d'intérêt P représenté par le cercle formera un doublet (triplet, ..) dans l'image de référence avec l'un des points d'intérêt du bas de la porte alors qu'il tentera de le faire avec l'un des points d'intérêt du cube dans l'image courante (représentés par des étoiles). Selon un mode de réalisation préféré, décrit en relation avec l'organigramme de la figure 7, voici comment l'ensemble des points d'intérêt de l'image courante est passé en revue, (deux points sont cohérents entre eux s'ils respectent au moins une contrainte géométrique telle que définie précédemment) : Dans l'algorithme suivant, nous allons entretenir trois listes (A), (B) et (C) qui vont accueillir les points de la liste des points d'intérêt (L). Un triplet à tester est formé par trois points se trouvant respectivement en (A), (B) et (C). 1. Pour l'initialisation, prenons le premier point d'intérêt de la liste des points d'intérêt (L) et plaçons-le en (A). Pour la suite, nous placerons en (A) le point de la liste (L) suivant le point actuellement en (A) et n'ayant pas encore été indexé comme appartenant à un triplet cohérent. Lorsque l'avant-avant dernier point a été traité, aller en 14. 2. Prenons le point suivant de (L) n'ayant pas été indexé comme étant incohérent avec le point en (A). Il est alors placé en (B). Si l'avant dernier point de (L) a été traité, retour en 1. 3. Si ces deux points en (A) et (B) sont cohérents (leur cohérence vient d'être testée, ou bien elle l'avait déjà été dans une étape précédente où le point en (B) se trouvait en (C)), 4. nous prenons le point suivant de (L) n'ayant pas été indexé comme incohérent avec (A) et le plaçons en (C). Si le dernier point de (L) a été traité, retour en 2. 5. Si le point en (C) n'a pas encore été testé avec celui en (A) 6. Si le point en (C) est incohérent avec le point en (A), 7. on précise l'incohérence avec (A) afin que le point actuellement en (C) ne soit plus testé tant que le point en (A) n'a pas changé (ce point en (C) peut en effet se retrouver plus tard à nouveau en (C) mais avec un point en (B) différent de l'actuel, voire ce point peut se retrouver en (B) ), 8. Retour en 4. 9. Sinon, 10. on précise la cohérence du point actuellement en (C) avec (A) pour ne pas avoir à ré-effectuer les tests par la suite (lorsque le point en (B) changera, voir que ce point actuellement en (C) se retrouvera en (B) ), 11. Si le point en (C) est cohérent avec le point en (B) 12. les trois points en (A), (B) et (C) sont marqués définitivement comme cohérents, 13. Retour en 4. 14. Tout point qui n'a pas été indexé comme appartenant à un triplet cohérent est éliminé. Ce troisième mode de réalisation est rapide à calculer avec une 35 complexité de l'ordre de O(mn), n étant le nombre de points d'intérêt appariés pour l'objet/lieu de la base retrouvé dans l'image courante, et m=1+k, k représentant le nombre de points mal appariés (à noter qu'en pratique k«n lorsque plusieurs dizaines de points ont été appariés). On obtient ainsi un filtrage efficace en termes de réjection de mauvais appariements. Parmi ses avantages on compte : - sa robustesse aux fortes perspectives ; - sa possibilité de traiter des cas où le nombre de bons appariements est très inférieur à celui des mauvais ; - sa robustesse aux déplacements d'objets les uns par rapport aux autres dans des scènes (ce qui s'avère gênant avec les approches statistiques généralement proposées) puisque la cohérence est interne à chaque objet ; - sa possibilité de fonctionner dans une certaine mesure avec des objets articulés, voir déformables ; - et enfin sa rapidité de calcul par rapport aux approches statistiques (complexité proche de O(mn) avec n le nombre de points d'intérêt appariés pour l'objet/lieu courant et m le nombre de mauvais appariements qui seront rejetés plus 1). Ainsi, un rapide test comparatif entre la méthode ici proposée de cohérence spatiale et une cohérence spatiale utilisant une approche de type RANSAC a mis en évidence sur un processeur Geode (x86 d'AMD dédié à l'embarqué) un gain en temps de calcul allant de 1 à 3 ordres de grandeur selon le niveau de tolérance imposé à RANSAC. Ceci permet par exemple d'envisager l'utilisation de cet algorithme plus sereinement dans des approches par « sac de mots » où les descripteurs des points d'intérêt des éléments appris sont regroupés en clusters par kmeans. On rappelle qu'en statistique et apprentissage, la clustérisation par k-means est une méthode d'analyse de cluster dont le but est de partitionner n observations dans k clusters dans lesquels chaque observation appartient au cluster dont la moyenne des éléments est la plus proche. Ce procédé s'applique à différents domaines de la vision par ordinateur tels que la mise en correspondance d'images, la classification, la détection d'objets, la localisation, .... Il est typiquement mis en oeuvre par un ordinateur embarqué à bord d'une 35 plateforme mobile du type robot Pioneer ou d'un véhicule, ou à bord d'un robot, notamment d'un robot humanoïde doté de capacités de vision et apte à reconnaître des objets dans son environnement. Plus précisément, il s'applique aux méthodes de programmation et d'emploi de robots de ce type pour des usages spécialisés, tels que le jeu. Un robot peut être qualifié d'humanoïde à partir du moment où il possède certains attributs de l'apparence et des fonctionnalités de l'homme: une tête, un tronc, deux bras, éventuellement deux mains, deux jambes, deux pieds...Au-delà de l'apparence, les fonctions qu'un robot humanoïde est capable de remplir vont dépendre de sa capacité à effectuer des mouvements, à parler et à « raisonner ». Des robots humanoïdes sont capables de marcher, de faire des gestes, avec les membres ou avec la tête. La complexité des gestes qu'ils sont capables d'effectuer augmente sans cesse. Ils peuvent même jouer au football, la Robocup étant devenue le challenge où s'affrontent les meilleures équipes de conception de robots humanoïdes du monde. Certains robots peuvent parler, en réponse à des paroles entendues et interprétées ou en déclamant un texte qui leur est envoyé par e-mail ou mis sous le regard. Des ordinateurs, pour le moment non embarqués sur des robots humanoïdes ont été conçus pour jouer aux échecs et ont battu les meilleurs grands maîtres. Les robots virtuels sont par ailleurs très présents dans l'univers du jeu vidéo, avec un développement considérable des avatars de personnages réels qui vivent une « deuxième vie » dans un univers miroir de l'univers réel (« Second Life »). Mais les robots physiques ont jusqu'à présent été peu mêlés à l'univers du jeu. Tout au plus peut-on signaler quelques réalisations simples, telles que le ROB (Robotic Operating Buddy) de NintendoTM dans les années 1980. Ce robot est programmé pour réagir à des variations de luminosité, de couleur ou de forme de parties d'un écran et avoir des comportements déterminés en fonction de séquences d'un jeu s'affichant sur l'écran. Ces méthodes ont fait l'objet de plusieurs brevets, notamment les brevets américains US 4,729,563 et US 4,815,733. La figure 8 illustre l'architecture physique d'un robot humanoïde dans un mode de réalisation de l'invention. Un tel robot a été divulgué notamment dans la demande de brevet WO2009/124951 publiée le 15/10/2009. Dans la suite de la description, ce robot humanoïde peut être indifféremment désigné sous cette appellation générique ou sous sa marque commerciale NAOTM, sans que la généralité de la référence en soit modifiée.35 Ce robot comprend environ deux douzaines de cartes électroniques du type 110 de commande de capteurs et d'actionneurs qui pilotent les articulations. La carte 110 montrée sur la figure est celle qui contrôle le pied gauche. Une des vertus de l'architecture est que les cartes contrôlant les articulations sont pour la plupart interchangeables. Une articulation a normalement au moins deux degrés de liberté et donc deux moteurs. Chaque moteur est piloté en angle. L'articulation comporte également plusieurs capteurs de position, notamment des MRE (Magnetic Rotary Encoder). La carte électronique de contrôle comporte un microcontrôleur du commerce. Ce peut être par exemple un DSPICTM de la société Microchip. C'est un MCU 16 bits couplé à un DSP. Ce MCU a un cycle d'asservissement en boucle d'une ms. Le robot peut également comporter d'autres types d'actionneurs, notamment des LED (Diodes électroluminescentes) dont la couleur et l'intensité peuvent traduire les émotions du robot. Celui-ci peut également comporter d'autres types de capteurs de position, notamment une centrale inertielle, des FSR (Capteurs de pression au sol), etc.... La tête 160 comporte l'intelligence du robot, notamment la carte 130 qui exécute les fonctions de haut niveau qui permettent au robot d'accomplir les missions qui lui sont assignées, notamment la participation à des jeux. La carte 130 pourrait cependant être située ailleurs dans le robot, par exemple dans le tronc. Cependant, cette localisation, lorsque la tête est amovible, permet de remplacer ces fonctions de haut niveau et donc notamment de changer complètement l'intelligence du robot et donc ses missions très rapidement. Ou à l'inverse de changer un corps par un autre (par exemple un corps défectueux par un non défectueux) en gardant la même intelligence artificielle. La tête peut comporter également des cartes spécialisées, notamment dans le traitement de la parole ou de la vision ou également dans le traitement d'entrées/sorties de service. Le processeur de la carte 130 peut être un processeur x86 du commerce. On choisira de manière privilégiée un processeur à basse consommation tel que le GeodeTM de la société AMD (32 bits, 500 MHz). La carte comporte également un ensemble de mémoires RAM et flash. Cette carte gère également les communications du robot avec l'extérieur (serveur de comportements, autres robots...), normalement sur une couche de transmission WiFi, WiMax, éventuellement sur un réseau public de communications mobiles de données avec des protocoles standards éventuellement encapsulés dans un VPN. Le processeur est normalement piloté par un OS standard ce qui permet d'utiliser les langages de haut niveau usuels (C, C++, Python, ...) ou les langages spécifiques de l'intelligence artificielle comme URBI (langage de programmation spécialisé dans la robotique) pour la programmation des fonctions de haut niveau. Une carte 120 est logée dans le tronc du robot. C'est là que se situe le calculateur qui assure la transmission aux cartes 110 des ordres calculés par la carte 130. Cette carte pourrait être logée ailleurs dans le robot. Mais la localisation dans le tronc est avantageuse car elle se situe près de la tête et au carrefour des quatre membres, ce qui permet donc de minimiser la connectique reliant cette carte 130 à la carte 120 et aux cartes 110. Le calculateur de cette carte 120 est également un processeur du commerce. Ce peut avantageusement être un processeur 32 bits du type ARM 9TM cadencé à 100 MHz. Le type du processeur, sa position centrale, proche du bouton de marche/arrêt, sa liaison au contrôle de l'alimentation en font un outil bien adapté pour la gestion de l'alimentation du robot (mode veille, arrêt d'urgence, ...). La carte comporte également un ensemble de mémoires RAM et flash. Cette architecture à trois niveaux est particulièrement avantageuse pour la mise en oeuvre de la présente invention dans laquelle le robot doit pouvoir exécuter des mouvements coordonnés et d'autres actions tels que des lectures de capteurs et simultanément interpréter des signes visuels émis dans son environnement et réagir ou répondre à ceux-ci. La figure 9 représente une vue de face de la tête d'un robot humanoïde comportant des capteurs utiles à la mise en oeuvre de l'invention. La tête 160 de la figure 8 est améliorée en une tête 200a, de manière à doter le robot des capacités sensorielles et d'expressions qui sont utiles à la mise en oeuvre de la présente invention. NAO voit à travers deux caméras CMOS 640x480, 220a, capables de capter jusqu'à 30 images par seconde, par exemple des caméras dont le capteur est de marque OmnivisionTM de référence OV7670 (capteur CMOS 1/hème pouce : pixels de 3,6 µm). La première caméra placée au niveau du front, est pointée vers son horizon, alors que la seconde placée au niveau de la bouche, scrute son environnement immédiat. Le logiciel permet de récupérer des photos de ce que voit NAO ainsi que le flux vidéo. Pour percevoir et interpréter son environnement, NAO embarque un ensemble d'algorithmes de reconnaissance de visage, de formes mettant en oeuvre le procédé tel que décrit, qui lui permettent de reconnaître son interlocuteur, de localiser une balle ainsi que des objets plus complexes et dès lors de déclencher une action ou un enchaînement d'actions.35 REVENDICATIONS1. Procédé de vision par ordinateur qui comprend une étape d'acquisition d'une image de référence et d'une image courante par une caméra numérique, une étape pour extraire des points d'intérêt dans ces images numériques selon une approche par descripteurs, chaque point d'intérêt obtenu étant ainsi associé à au moins un descripteur portant avec lui une information d'échelle et/ou d'orientation, une étape de mise en correspondance des points d'intérêt d'une image courante avec ceux d'une image de référence, une étape de filtrage des points d'intérêt de l'image courante au moyen d'un filtre de cohérence spatiale, caractérisé en ce qu'un point d'intérêt de l'image courante est conservé par le filtre s'il appartient à au moins un doublet de points d'intérêt de l'image courante qui respectent au moins une contrainte géométrique déterminée en fonction dudit (desdits) descripteur(s) et du doublet correspondant de l'image de référence, cette contrainte étant valide en géométrie projective. 2. Procédé de vision par ordinateur selon la revendication précédente, caractérisé en ce que la contrainte géométrique s'exprime de la façon suivante : f1(REI) REJ f2(RE1) en notant REK = échelle du point K dans l'image courante / échelle du point K dans l'image de référence, et fi et f2 étant déterminés en fonction de l'angle de champ de la caméra et de l'angle maximum toléré pour la perspective par le descripteur. 3. Procédé de vision par ordinateur selon l'une des revendications précédentes, caractérisé en ce que la contrainte géométrique s'exprime de la façon suivante : Çl.IlJlréférence 2 / (REI. REJ) 4. Procédé de vision par ordinateur selon l'une des revendications précédentes, caractérisé en ce que la contrainte géométrique est telle que Signe(acourant - 180°) = Signe(aréférence - 180°), aréférence étant l'angle entre l'orientation d'un point d'intérêt I et la droite le 10 reliant à un autre point d'intérêt coplanaire J de l'image de référence, acourant étant l'angle correspondant dans l'image courante. 5. Procédé de vision par ordinateur selon l'une des revendications précédentes, caractérisé en ce que la contrainte géométrique s'exprime de la 15 façon suivante : Iacourant - aréférencel 6. Procédé de vision par ordinateur selon l'une des revendications précédentes, caractérisé en ce qu'un point d'intérêt de l'image courante est 25 conservé par le filtre s'il appartient à un triplet de points d'intérêt de l'image courante qui respectent au moins une contrainte géométrique. 7. Procédé de vision par ordinateur selon la revendication précédente, caractérisé en ce que l'étape de cohérence spatiale est appliquée aux points 30 d'intérêt de l'image courante de la manière suivante : a) Pour l'initialisation, on prend le premier point d'intérêt de la liste des points d'intérêt (L) et on le place en (A). Pour la suite, on place en (A) le point de la liste (L) suivant le point actuellement en (A) et n'ayant pas encore été indexé comme appartenant à un triplet cohérent. Lorsque l'avant-avant 35 dernier point a été traité, aller en n).b) On prend le point suivant de (L) n'ayant pas été indexé comme étant incohérent avec le point en (A). Il est alors placé en (B). Si l'avant dernier point de (L) a été traité, retour en a). c) Si ces deux points en (A) et (B) sont cohérents d) on prend le point suivant de (L) n'ayant pas été indexé comme incohérent avec (A) et on le place en (C). Si le dernier point de (L) a été traité, retour en b). e) Si le point en (C) n'a pas encore été testé avec celui en (A), f) Si le point en (C) est incohérent avec le point en (A), g) on précise l'incohérence avec (A) afin que le point actuellement en (C) ne soit plus testé tant que le point en (A) n'a pas changé. h) Retour en d). i) Sinon, j) on précise la cohérence du point actuellement en (C) avec (A) pour ne pas avoir à ré-effectuer les tests par la suite. k) Si le point en (C) est cohérent avec le point en (B) 1) les trois points en (A), (B) et (C) sont marqués définitivement comme cohérents, m) Retour en d). n) Tout point qui n'a pas été indexé comme appartenant à un triplet cohérent est éliminé. 8. Programme d'ordinateur comprenant des instructions de code de programme permettant l'exécution du procédé selon l'une des revendications précédentes lorsque le programme est exécuté sur un ordinateur. 9. Robot humanoïde apte à reconnaître des objets dans son environnement, comportant des moyens de mise en oeuvre du procédé de vision selon l'une des revendications 1 à 7.30