Brevet FR2939547A1 — publié le 20100611

Dispositif et procédé pour la reconnaissance et la localisation d'objets dans une image par balayage de fenêtres de détection L'invention concerne un procédé de reconnaissance et de localisation d'objets dans une image numérique et un dispositif permettant de mettre en oeuvre ce procédé. Elle s'applique notamment aux domaines de l'électronique embarquée nécessitant une fonction de détection/classification tels que la vidéosurveillance, le traitement vidéo mobile et les systèmes d'aide à la conduite. La détection de mouvement est possible par simple soustraction d'images successives. Cependant, cette méthode présente l'inconvénient de ne pas pouvoir faire de discrimination entre les différents types d'objets en ~o mouvement. En particulier, il n'est pas possible de discriminer un mouvement de feuilles d'arbres sous l'effet du vent du déplacement d'une personne. Par ailleurs, dans les applications embarquées, l'image entière peut être soumise à un mouvement, par exemple dû au déplacement du véhicule sur lequel est fixée la caméra. 15 La détection d'un objet complexe, comme une personne ou un visage humain, est en outre très difficile dans la mesure où la forme apparente de l'objet dépend non seulement de sa morphologie, mais aussi de sa posture, de l'angle de vue et de la distance entre l'objet et la caméra. En plus de ces difficultés s'ajoutent les problèmes de variations d'éclairage, 20 d'expositions et d'occultation des objets. P. Viola et M. Jones ont développé un procédé permettant de détecter de façon fiable un objet dans une image. Ce procédé est notamment décrit dans P. VIOLA and M. JONES. Robust Real-time Object Detection, 2nd international workshop on statistical and computational theories of vision - 25 modelling, learning, computing and sampling, Vancouver, Canada, July 2001. Il comprend une phase d'apprentissage et une phase de reconnaissance. Lors de la phase de reconnaissance, on effectue un balayage de l'image par une fenêtre de détection dont la taille varie afin d'identifier des objets de différentes tailles. L'identification des objets est 30 basée sur l'utilisation de descripteurs mono-variables de type ondelettes de Haar, qui sont des descripteurs de forme relativement simple. Ces descripteurs sont déterminés lors de la phase d'apprentissage et permettent de tester des caractéristiques représentatives de l'objet à reconnaître. Ces caractéristiques sont souvent désignées sous le terme de signature de l'objet. Pour une même position dans l'image, une fenêtre de détection est analysée par plusieurs descripteurs afin de tester des caractéristiques sur différentes zones de la fenêtre de détection et ainsi obtenir un résultat relativement fiable. Pour améliorer l'efficacité des descripteurs, on a proposé des descripteurs multivariables. Ces descripteurs multivariables sont par exemple composés d'une part, d'un histogramme de l'orientation des gradients d'intensité et, d'autre part, d'une composante de densité de la magnitude du gradient dans la zone de calcul. Par ailleurs, afin d'accélérer la méthode de détection, les descripteurs sont regroupés dans des classifieurs testés successivement dans une cascade ou boucle d'étage. Chaque étage de la cascade effectue des tests plus complexes et plus sélectifs que l'étage précédent afin d'éliminer rapidement les zones de l'image sans intérêt comme le ciel. Actuellement, la méthode de P. Viola et M. Jones est implantée soit de façon matérielle sur des circuits complètement dédiés, soit de façon logicielle sur des processeurs. L'implantation matérielle est très performante mais très peu flexible. En effet, un circuit dédié est câblé pour détecter un type d'objet donné avec une précision donnée. A l'inverse, l'implantation logicielle est très flexible, mais les performances s'avèrent souvent insuffisantes dans la mesure où les processeurs généralistes manquent de puissance de calcul et les processeurs de signaux numériques ont une efficacité très réduite dans les instructions de branchement conditionnel. En outre, les solutions logicielles peuvent difficilement être intégrées dans un système embarqué tel qu'un véhicule ou un téléphone mobile du fait qu'elles consomment énormément d'énergie et qu'elles présentent un encombrement important. Enfin, dans la plupart des cas, la mémoire interne et/ou la bande passante est insuffisante pour effectuer une détection rapide. Un but de l'invention est notamment de pallier tout ou partie des inconvénients précités. A cet effet, l'invention a pour objet un dispositif pour la reconnaissance et la localisation d'objets dans une image numérique par balayage de fenêtres de détection, caractérisé en ce qu'il comprend N unités de traitement en parallèle, chaque unité de traitement étant apte à analyser en parallèle l'une des fenêtres de détection pour fournir un score global représentatif de la probabilité que ladite fenêtre de détection contienne l'objet à reconnaître. L'invention a également pour objet un procédé de reconnaissance et de localisation d'objets dans une image numérique, caractérisé en ce qu'il comprend une étape de balayage de l'image numérique par des fenêtres de détection, plusieurs fenêtres de détection étant balayées simultanément, ladite étape de balayage comportant une itération des sous-étapes suivantes : io - générer pour chaque fenêtre de détection un histogramme modélisant des caractéristiques d'une partie de l'image numérique appartenant à la fenêtre de détection, cette partie de l'image numérique étant délimitée par un descripteur, analyser simultanément les histogrammes générés lors de la 15 sous-étape précédente, chaque analyse fournissant un score partiel pour une fenêtre de détection, ce score partiel étant représentatif de la probabilité que le descripteur associé à l'histogramme contienne au moins une partie de l'objet à reconnaître, les scores partiels étant additionnés à la fin de l'itération respectivement à la 20 fenêtre de détection à laquelle ils sont associés afin de fournir un score global pour chaque fenêtre de détection, le score global étant représentatif de la probabilité que la fenêtre de détection contienne l'objet à reconnaître. L'invention a notamment pour avantage qu'elle peut être 25 implémentée dans un circuit intégré à application spécifique, bien connu sous le terme anglo-saxon de circuit ASIC pour "Application Specific Integrated Circuit", ou un réseau prédiffusé programmable par l'utilisateur, mieux connu sous le terme anglo-saxon de FPGA pour "field programmable gate array". Par conséquent, le dispositif selon l'invention présente une 30 surface silicium et une consommation électrique réduites. Il peut ainsi être intégré dans un système embarqué. Le dispositif permet en outre d'effectuer plusieurs tests de classification en parallèle, offrant ainsi une forte puissance de calcul. Le dispositif est complètement programmable. Par conséquent, le type de détection, la précision de la détection ainsi que le nombre de descripteurs et de classifieurs utilisés peuvent être ajustés afin d'optimiser le rapport entre la qualité du résultat et le temps de calcul. L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description détaillée d'un mode de réalisation donné à titre d'exemple, description faite en regard de dessins annexés qui représentent : - la figure 1, des étapes possibles pour le fonctionnement d'un dispositif selon l'invention, - la figure 2, des sous-étapes possibles du fonctionnement du dispositif représenté à la figure 1, - la figure 3, par un synoptique, un exemple de réalisation d'un dispositif selon l'invention, la figure 4, un exemple de réalisation d'une unité de traitement 15 du dispositif de la figure 3, - la figure 5, une illustration des différents systèmes de coordonnées utilisés pour la mise en oeuvre de l'invention, - la figure 6, un exemple de réalisation d'une unité de cascade du dispositif de la figure 3, 20 - la figure 7, une forme de réalisation d'une unité de boucle de descripteur du dispositif de la figure 3, - la figure 8, un exemple de réalisation d'une unité de détermination d'histogrammes du dispositif de la figure 3, la figure 9, un exemple de réalisation d'une unité d'analyse de 25 scores du dispositif de la figure 3. La figure 1 décrit des étapes possibles pour le fonctionnement du dispositif selon l'invention. Pour la suite de la description, on considère des images numériques formées d'une matrice de Nc colonnes par NI lignes de 30 pixels. Chaque pixel contient une valeur, appelée poids, représentative de l'amplitude d'un signal, par exemple représentative d'une intensité lumineuse. Le fonctionnement d'un dispositif selon l'invention est fondé sur un procédé adapté de la méthode de P. Viola et M. Jones. Dans une première étape E,, la signature du gradient de l'amplitude du signal, est 35 calculée pour l'image dans laquelle sont recherchés des objets, appelée image originale Tong. Cette signature est par exemple celle du gradient d'intensité lumineuse. Elle génère une nouvelle image appelée image dérivée Idériv. A partir de cette image dérivée Idériv, M images d'orientation Im avec m un indice variant de 1 à m peuvent être déterminées dans une deuxième étape E2, chaque image d'orientation lm étant de la même taille que l'image originale Tong et contenant, pour chaque pixel, le gradient d'intensité lumineuse sur une certaine plage de valeurs d'angles. A titre d'exemple, 9 images d'orientation lm peuvent être obtenues pour des plages de valeurs d'angles de 20°. La première image d'ori entation Il contient par io exemple les gradients d'intensité lumineuse dont la direction est comprise entre 0 et 20°, la deuxième image d'orientation I2 contenant les gradients d'intensité lumineuse dont la direction est comprise entre 20 et 40°, et ainsi de suite jusqu'à la neuvième image d'orientation I9 contenant les gradients d'intensité lumineuse dont la direction est comprise entre 160 et 180°. En 15 outre une M+1 eme, soit une dixième, image d'orientation IM+t correspondant à la magnitude du gradient d'intensité lumineuse peut être déterminée, M étant égal à 9 dans l'exemple de la figure 1. Cette M+lème image d'orientation IM+t permet notamment de renseigner sur la présence de contours. Dans une troisième étape E3, chaque image d'orientation Im est transformée en image 20 intégrale l;nt,m avec m variant de 1 à M. Une image intégrale est une image de même taille que l'image originale où le poids wi(m,n) de chaque pixel p(m,n) est déterminé par la somme des poids wo(x,y) de tous les pixels p(x,y) situés dans la surface rectangulaire délimitée par l'origine O de l'image et le pixel p(m,n) considéré. Autrement dit, le poids wi(m,n) des pixels p(m,n) d'une 25 image intégrale I;nt,m peut être modélisé par la relation : m n V(m,n)E [1,N1]x[1,Nc],wi(m,n)=wo(x,y) (1) x=1 y=) Dans une quatrième étape E4, les M+1 images intégrales Iint,m ainsi obtenues sont balayées par des fenêtres de détection de différentes tailles comprenant chacune un ou plusieurs descripteurs. Les M+1 images intégrales lint,m sont 30 balayées simultanément, de sorte que le balayage de ces images intégrales Iint,m correspond à un balayage de l'image originale long. Un descripteur délimite une partie d'image appartenant à la fenêtre de détection. C'est dans ces parties d'image qu'est recherchée la signature de l'objet. Le balayage des images intégrales lint,m par les fenêtres est réalisé par quatre niveaux de boucles imbriquées. Une première boucle, appelée boucle d'échelle, effectue un bouclage sur la taille des fenêtres de détection. La taille diminue par exemple au fur et à mesure que l'on avance dans la boucle d'échelle afin d'analyser des zones de plus en plus petites. Une deuxième boucle, appelée boucle d'étage, effectue un bouclage sur le niveau de complexité de l'analyse. Le niveau de complexité, également appelé étage, dépend principalement du nombre de descripteurs utilisés pour une fenêtre de détection. Pour le premier étage, le nombre de descripteurs est relativement limité. Il est par exemple de un ou deux descripteurs par fenêtre de détection. to Le nombre de descripteurs augmente généralement avec les étages. L'ensemble des descripteurs utilisés pour un étage est appelé un classifieur. Une troisième boucle, appelée boucle de position, effectue le balayage proprement dit, c'est-à-dire un bouclage sur la position des fenêtres de détection dans les images intégrales I;flt,m. Une quatrième boucle, appelée 15 boucle de descripteur, effectue un bouclage sur les descripteurs utilisés pour l'étage courant. A chaque itération de cette boucle, un des descripteurs du classifieur est analysé afin de déterminer s'il contient une partie de la signature de l'objet à reconnaître. 20 La figure 2 illustre plus précisément les quatre niveaux de boucles imbriquées par des sous-étapes possibles pour la quatrième étape E4 de la figure 1. Dans une première étape E41, la boucle d'échelle est initialisée. L'initialisation de la boucle d'échelle comporte par exemple la génération d'une taille initiale de fenêtre de détection et d'un pas de déplacement initial. 25 Dans une deuxième étape E42, la boucle d'étage est initialisée. L'initialisation de cette boucle comprend par exemple la détermination des descripteurs utilisés pour le premier étage. Ces descripteurs peuvent être déterminés par leurs coordonnées relatives dans la fenêtre de détection. Dans une troisième étape E43, la boucle de position est initialisée. Cette initialisation comporte 30 par exemple la génération des fenêtres de détection et l'allocation de chaque fenêtre de détection à une unité de traitement du dispositif selon l'invention. Les fenêtres de détection peuvent être générées sous forme d'une liste, appelée liste de fenêtres. Une liste distincte est associée à chaque itération de la boucle d'échelle. Pour la première itération de la boucle d'étage, les 35 fenêtres de détection sont généralement générées de manière exhaustive, c'est-à-dire de manière à couvrir toutes les zones des images intégrales lit,,. Plusieurs itérations de la boucle de position sont nécessaires lorsque le nombre de fenêtres de détection est supérieur au nombre d'unités de traitement. Les fenêtres de détection peuvent être déterminées par leur position dans les images intégrales Ce sont alors ces positions qui sont stockées dans la liste de fenêtres. Dans une quatrième étape E44, la boucle de descripteur est initialisée. Cette initialisation comprend par exemple la détermination, pour chaque fenêtre de détection allouée à une unité de traitement, des coordonnées absolues d'un premier descripteur parmi les io descripteurs du classifieur associé à l'étage considéré. Dans une cinquième étape E45, un histogramme est généré pour chaque descripteur. Un histogramme comporte par exemple M+1 composantes Cm avec m variant de 1 à M+1. Chaque composante Cm contient la somme des poids wo(x,y) des pixels p(x,y) de l'une des images d'orientation Im contenus dans le 15 descripteur considéré. La somme de ces poids wo(x,y) peut notamment être obtenue de façon simple par le poids de quatre pixels de l'image intégrale correspondante, comme nous le verrons plus loin. Dans une sixième étape E46, les histogrammes sont analysés. Le résultat de chaque analyse est fourni sous la forme d'un score, appelé score partiel, représentatif de la 20 probabilité que le descripteur associé à l'histogramme analysé contienne une partie de la signature de l'objet à reconnaître. Dans une septième étape E47, on détermine si la boucle de descripteur est terminée, autrement dit si tous les descripteurs ont été générés pour l'étage courant. Si tel n'est pas le cas, on avance dans la boucle de descripteur dans une étape E48 et on reboucle 25 à partir de l'étape E45. L'avancée dans la boucle de descripteur comprend la détermination, pour chaque fenêtre de détection allouée à une unité de traitement du dispositif, des coordonnées absolues d'un nouveau descripteur parmi les descripteurs du classifieur associé à l'étage considéré. Un nouvel histogramme est alors généré pour chaque nouveau descripteur et fournit un 30 nouveau score partiel. Les scores partiels sont additionnés à chaque itération de la boucle de descripteur afin de fournir pour chaque fenêtre de détection, lors de la dernière itération, un score global S pour le classifieur. Ces scores globaux S sont alors représentatifs de la probabilité que les fenêtres de détection contiennent l'objet à reconnaître, cette probabilité étant relative à 35 l'étage courant. S'il est déterminé à l'étape E47 que la boucle de descripteur est terminée, on détermine dans une étape E49 si les scores globaux S sont supérieurs à un seuil d'étage Se prédéterminé. Ce seuil d'étage Se est par exemple déterminé dans une phase d'apprentissage. Dans une étape E50, les fenêtres de détection pour lesquelles les scores globaux S sont supérieurs au seuil d'étage Se sont stockées dans une nouvelle liste de fenêtres afin d'être analysées à nouveau par le classifieur de l'étage suivant. Les autres fenêtres de détection sont définitivement considérées comme ne contenant pas l'objet à reconnaître. Elles ne sont donc pas stockées et ne seront plus analysées dans la suite du procédé. Dans une étape E51, on détermine si la boucle de position est terminée, c'est-à-dire si toutes les fenêtres de détection pour l'échelle et l'étage considérés ont été allouées à une unité de traitement. Si tel n'est pas le cas, on avance dans la boucle de position dans une étape E52 et on reboucle à partir de l'étape E44. L'avancée dans la boucle de position comprend l'allocation des fenêtres de détection comprises dans la liste de fenêtres de l'étage courant mais non encore analysées aux unités de traitement. En revanche, si la boucle de position est terminée, on détermine dans une étape E53 si la boucle d'étage est terminée, autrement dit si l'étage courant est le dernier étage de la boucle. L'étage courant est par exemple repéré par un compteur d'étage. Si la boucle d'étage n'est pas terminée, on change d'étage dans une étape E54. Le changement d'étage consiste par exemple à incrémenter le compteur d'étage. II peut également comporter la détermination des coordonnées relatives des descripteurs utilisés pour l'étage courant. Dans une étape E55, la boucle de position est initialisée en fonction de la liste de fenêtres générée lors de l'étage précédent. Des fenêtres de détection de cette liste sont alors allouées aux unités de traitement du dispositif. A l'issue de l'étape E55, on reboucle à partir de l'étape E44. De même que pour la première itération de la boucle d'étage, les étapes E51 et E52 permettent le cas échéant un rebouclage pour que toutes les fenêtres de détection à analyser soient finalement allouées à une unité de traitement. S'il est déterminé à l'étape E53 que la boucle d'étage est terminée, on détermine dans une étape E56 si la boucle d'échelle est terminée. Si tel n'est pas le cas, on change d'échelle dans une étape E57 et on reboucle à partir de l'étape E42. Le changement d'échelle comprend par exemple la détermination d'une nouvelle taille de fenêtres de détection et d'un nouveau pas de déplacement pour ces fenêtres. Les objets sont alors recherchés dans ces nouvelles fenêtres de détection par la mise en oeuvre des boucles d'étage, de position et de descripteur. Si la boucle d'échelle est terminée, autrement dit si toutes les tailles de fenêtres de détection ont été analysées, on met fin au procédé dans une étape E58. Les fenêtres de détection ayant passé tous les étages avec succès, c'est-à-dire celles stockées dans les différentes listes de fenêtres lors des dernières itérations de la boucle d'étage, sont considérées comme contenant les objets à reconnaître. ~o La figure 3 représente un exemple de réalisation d'un dispositif 1 selon l'invention exécutant l'étape E4 de balayage précédemment décrite en référence à la figure 2. Le dispositif 1 comprend une mémoire 2 contenant M+1 images intégrales I;nt,m. Les M+1 images intégrales Iint,m correspondent aux images intégrales de M images d'orientation et à une image intégrale de 15 la magnitude du gradient d'intensité lumineuse, comme définies précédemment. Le dispositif 1 comprend en outre un contrôleur 3 de mémoire, une unité 4 de boucle d'échelle, une unité 5 de cascade, une unité 6 de boucle de descripteur, une unité 7 de détermination d'histogrammes, N unités de traitement UT1, UT2, ..., UTN en parallèle, notées de façon 20 générique UT, une unité 8 d'analyse de scores et une unité 9 de contrôle. Le contrôleur 3 de mémoire permet de gérer les accès à la mémoire 2 par l'unité 7 de détermination d'histogrammes. L'unité 4 de boucle d'échelle est contrôlée par l'unité de contrôle 9. Elle exécute la boucle d'échelle décrite précédemment. Autrement dit, elle génère lors de l'étape E41 d'initialisation 25 de la boucle d'échelle ainsi que lors de l'étape E57 de changement d'échelle, une taille de fenêtre de détection et un pas de déplacement de ces fenêtres dans les images intégrales I;nt,m. La taille des fenêtres de détection et le pas de déplacement sont programmables. L'unité 4 de boucle d'échelle envoie les données de taille de fenêtres de détection et de pas de déplacement vers 30 l'unité 5 de cascade. Cette unité 5 exécute les boucles d'étage et de position. En particulier, elle génère pour chaque fenêtre de détection des coordonnées (XFA,YFA) et (xFC,yFC) en fonction de la taille des fenêtres et du pas de déplacement. Ces coordonnées (XFA,YFA) et (XFC,YFC) sont envoyées vers l'unité 6 de boucle de descripteur. De plus, l'unité 5 de cascade alloue 35 chaque fenêtre de détection à une unité de traitement UT. L'unité 6 de boucle de descripteur réalise la boucle de descripteur. En particulier, elle génère successivement pour chaque fenêtre de détection allouée à une unité de traitement UT les coordonnées (XDA,YDA) et (xDC,YDC) des différents descripteurs du classifieur associé à l'étage courant. Ces coordonnées (XDA,YDA) et (xDC,YDC) sont envoyées au fur et à mesure vers l'unité 7 de détermination d'histogrammes. L'unité 7 détermine successivement, à partir des coordonnées (XDA,YDA) et (xDC,YDC) et des M+1 images intégrales I;nt,m, un histogramme pour chaque descripteur. Dans un mode de réalisation, chaque histogramme comporte M+1 composantes Cm, chaque composante Cm contenant la somme des poids wo(x,y) des pixels p(x,y) de l'une des images d'orientation Im contenus dans le descripteur considéré. Les histogrammes sont envoyés vers les unités de traitement UT1, UT2, ..., UTN. Selon l'invention, les N unités de traitement UT1, UT2, ..., UTN sont en parallèle. Chaque unité de traitement UT exécute une analyse sur l'histogramme de l'un des descripteurs contenus dans la fenêtre de détection qui lui est allouée. Une analyse d'histogramme est par exemple réalisée en fonction de quatre paramètres nommés attribut, seuil de descripteur Sd, a et 8. Ces paramètres sont programmables. Ils dépendent notamment du type d'objet à reconnaître et de l'étage considéré. Ils sont par exemple déterminés lors d'une étape d'apprentissage. Les paramètres étant dépendants de l'itération d'étage, ils sont envoyés vers les unités de traitement UT1, UT2, ..., UTN à chaque itération de la boucle d'étage lors des étapes E42 et E54. Une analyse d'histogramme génère un score partiel pour cet histogramme ainsi qu'un score global pour le classifieur de la fenêtre de détection qui lui est allouée. Les unités de traitement UT permettent d'exécuter simultanément jusqu'à N analyses d'histogrammes. Mais toutes les unités de traitement UT ne sont pas nécessairement utilisées lors d'une itération de la boucle de descripteur. Le nombre d'unités de traitement UT utilisées dépend du nombre d'histogrammes devant être analysés et donc du nombre de fenêtres de détection contenues dans la liste de fenêtres pour l'étage courant. Ainsi, la consommation électrique du dispositif 1 peut être optimisée en fonction du nombre de traitements à réaliser. A l'issue de la boucle de descripteur, les scores partiels des histogrammes sont additionnés de manière à obtenir un score global S pour le classifieur de chaque fenêtre de détection. Ces scores globaux S sont envoyés vers l'unité 8 d'analyse de scores. A partir de ces scores globaux S, l'unité 8 génère la liste de fenêtres pour l'étage suivant de la boucle d'étage. La figure 4 représente un exemple de réalisation d'une unité de traitement UT permettant d'analyser un histogramme à M+1 composantes Cm. L'unité de traitement UT comprend un premier bloc logique 21 comportant M+1 entrées et une sortie. Par bloc logique, on entend un circuit commandé possédant une ou plusieurs entrées et une ou plusieurs sorties, chaque sortie pouvant être en liaison avec l'une des entrées en fonction d'une commande appliquée au bloc logique, par exemple par un contrôleur général ou par une logique interne au bloc logique. Le terme bloc logique est entendu au sens large. Un bloc logique possédant plusieurs entrées et/ou sorties peut être réalisé par un ensemble de multiplexeurs et/ou démultiplexeurs et de portes logiques possédant chacun une ou plusieurs entrées et une ou plusieurs sorties. Le bloc logique 21 permet de sélectionner l'une des M+1 composantes Cm en fonction du paramètre attribut. L'unité de traitement UT comprend en outre un comparateur 22 dont une première entrée 221 reçoit la composante Cm sélectionnée par le bloc logique 21 et une deuxième entrée 222 reçoit le paramètre seuil de descripteur Sd. Le résultat de la comparaison entre la composante Cm sélectionnée et le paramètre seuil Sd est envoyé vers un deuxième bloc logique 23 comportant deux entrées et une sortie. La première entrée 231 de ce bloc logique 23 reçoit le paramètre a et la deuxième entrée 232 reçoit le paramètre R. En fonction du résultat de la comparaison, la sortie du bloc logique 23 délivre soit le paramètre a, soit le paramètre R. En particulier, si la composante Cm sélectionnée par le bloc logique 21 est supérieure au paramètre seuil Sd, le paramètre a est délivré en sortie. A l'inverse, si la composante Cm sélectionnée est inférieure au paramètre seuil Sd, le paramètre R est délivré en sortie. La sortie du bloc logique 23 est additionnée à la valeur contenue dans un accumulateur 24. Si plusieurs composantes Cm d'un histogramme doivent être comparées, le bloc logique 21 les sélectionne successivement. Les composantes Cm sélectionnées sont alors comparées une à une par rapport au paramètre seuil Sd, et les paramètres a et/ou R sont additionnés dans l'accumulateur 24 afin d'obtenir un score partiel pour l'histogramme. Une unité de traitement UT analyse successivement les différents histogrammes des descripteurs formant un classifieur. Par conséquent, les paramètres a et/ou R peuvent être additionnés dans l'accumulateur 24 pour tous les descripteurs du classifieur considéré afin d'obtenir le score global S pour ce classifieur dans la fenêtre de détection. Selon une forme particulière de réalisation, les M premières composantes Cm sont divisées par la M+1 ème composante CM+, avant d'être comparées au paramètre seuil Sd tandis que la M+1 ème composante CM+, est divisée par la surface du descripteur considéré avant d'être comparée au paramètre seuil Sd. Alternativement, le paramètre seuil Sd peut être multiplié ~o soit par la M+1 ème composante CM+, de l'histogramme analysé, soit par la surface du descripteur selon la composante Cm considérée, comme représenté à la figure 4. L'unité de traitement UT comprend alors un troisième bloc logique 25 recevant sur une première entrée 251 la M+lème composante CM+, de l'histogramme et sur une deuxième entrée 252 la 15 surface du descripteur. Une sortie du bloc logique 25 relie l'une des deux entrées 251 ou 252 à une première entrée 261 d'un multiplieur 26 selon la multiplication choisie. Une deuxième entrée 262 du multiplieur 26 reçoit le paramètre seuil Sd et une sortie du multiplieur 26 est alors reliée à la deuxième entrée 222 du comparateur 22. 20 Une unité de traitement UT peut également comporter deux mémoires tampons 27 et 28 en série. La première mémoire tampon 27 peut recevoir de l'unité 7 de détermination d'histogrammes les M+1 composantes Cm d'un premier histogramme à un pas de temps donné. Au pas de temps suivant, les composantes Cm du premier histogramme peuvent être 25 transférées sur la deuxième mémoire tampon 28, cette mémoire étant reliée aux entrées du bloc logique 21, tandis que les composantes Cm d'un deuxième histogramme peuvent être chargées dans la première mémoire tampon 27. L'utilisation de deux mémoires tampons permet de compenser le temps de calcul des histogrammes. 30 La figure 5 illustre les différents systèmes de coordonnées utilisés pour la présente invention. Un repère cartésien (O,i,j) est associé à une image 41, en l'occurrence une image intégrale Iint,m. L'origine O est par exemple fixée au coin supérieur gauche de l'image 41. Une fenêtre de 35 détection F peut ainsi être repérée dans cette image 41 par les coordonnées (XFA,YFA) et (XFC,YFC) de deux de ses coins opposés FA et Fc. Un deuxième repère cartésien (OF,i,j) peut être associé à la fenêtre de détection F. L'origine OF est par exemple fixée au coin supérieur gauche de la fenêtre de détection F. La position d'un descripteur D est déterminée par deux de ses coins opposés DA et Dc, soit dans le repère (OF,i,j) par les coordonnées relatives (x'DA,y'DA) et (x'Dc,Y'Dc), soit dans le repère (O,i,j) par les coordonnées absolues (XDA,YDA) et (xDC,YDC)• La figure 6 représente un exemple de réalisation d'une unité 5 de io cascade. L'unité 5 comprend une machine à états finis 51, quatre blocs logiques 521, 522, 523 et 524 comprenant chacun une entrée et N sorties et quatre blocs de registres 531, 532, 533 et 534, chaque bloc de registres étant associé à un bloc logique 521, 522, 523 ou 524. Un bloc de registres 531, 532, 533 ou 534 comporte N registres de données, chaque registre de 15 données étant relié à l'une des sorties du bloc logique 521, 522, 523 ou 524 associé. La machine à états finis 51 reçoit les informations de taille de fenêtres de détection et de pas de déplacement et génère jusqu'à N fenêtres de détection F qu'elle alloue aux unités de traitements UT1, UT2, ..., UTN. La génération des fenêtres de détection comprend la détermination des 20 coordonnées (XFA,YFA) et (XFC,YFC) de leurs coins FA et Fc. Comme nous l'avons vu précédemment, les coordonnées (XFA,YFA) et (XFC,YFC) des fenêtres de détection F sont générées de façon exhaustive lors de la première itération de la boucle d'étage. Pour les itérations suivantes, seules les fenêtres de détection F faisant partie de la liste de positions sont analysées. 25 Les coordonnées (XFA,YFA) et (XFC,YFC) attaquent une entrée du premier bloc logique 521, une entrée du deuxième bloc logique 522, une entrée du troisième bloc logique 523 et une entrée du quatrième bloc logique 524. Chaque bloc logique 521, 522, 523, 524 relie son entrée à l'une de ses sorties en fonction de l'unité de traitement UT considérée. Ainsi, les blocs de 30 registres 531, 532, 533 et 534 contiennent respectivement les coordonnées XFA, yFA, XFC et yFC pour toutes les unités de traitement UT utilisées. La figure 7 représente un exemple de réalisation d'une unité 6 de boucle de descripteur. L'unité 6 comprend un premier bloc logique 61 35 recevant en entrée les données des premier et deuxième blocs de registres 531 et 532, autrement dit les coordonnées XFA et YFA pour les différentes unités de traitement UT utilisées, ainsi qu'un deuxième bloc logique 62 recevant en entrée les données des troisième et quatrième blocs de registres 533 et 534, autrement dit les coordonnées XFC et YFC. L'unité 6 comprend également une mémoire 63 contenant les coordonnées relatives (x'DA,Y'DA) et (x'DC,Y'DC) des différents descripteurs D, ces derniers variant en fonction de l'étage courant. Les coordonnées relatives (x'DA,y'DA) et (x'DC,y'DC) des descripteurs D formant le classifieur associé à l'étage courant attaquent successivement une première entrée 641 d'un bloc de calcul 64. Ce bloc de io calcul 64 reçoit également sur une deuxième et une troisième entrées 642 et 643 les coordonnées (XFA,YFA) et (xFC,YFC) des fenêtres de détection F par l'intermédiaire de sorties des blocs logiques 61 et 62. Le bloc de calcul 64 peut ainsi calculer les coordonnées absolues (XDA,YDA) et (xDC,yDC) des coins DA et DD des descripteurs D. Les coordonnées absolues (XDA,YDA) et (xDC,YDc) 15 sont alors envoyées vers un bloc de registres 65 par l'intermédiaire d'un bloc logique 66 comportant par exemple une entrée et quatre sorties, chaque sortie étant reliée à l'un des quatre registres de données du bloc de registres 65. L'unité 6 de boucle de descripteur comporte en outre une machine à états finis 67 contrôlant les blocs logiques 61, 62 et 66 ainsi que les accès en 20 lecture à la mémoire 63 par des moyens de commande 671, 672, 673 et 674. La machine à états finis 67 reçoit les numéros d'itération dans la boucle d'échelle et dans la boucle d'étage par des moyens de liaison 675 et 676 afin de générer successivement les descripteurs D pour chaque fenêtre de détection F allouée à une unité de traitement UT. L'unité 6 peut également 25 comporter un bloc de calcul 68 calculant, à partir des coordonnées absolues (XDA,YDA) et (xDC,YDC), la surface des descripteurs. La valeur de cette surface peut être stockée dans un registre de données 69. La figure 8 représente un exemple de réalisation d'une unité 7 de 30 détermination d'histogrammes. L'unité 7 est partitionnée en trois parties. Une première partie 71 génère les adresses mémoire des pixels DA, DB, Dc et DD correspondant aux quatre coins des descripteurs D à partir des coordonnées absolues (XDA,YDA) et (xDC,yDC) des coins DA et Dc. Une deuxième partie 72 calcule les composantes Cm d'histogrammes selon la méthode de P. Viola et 35 M. Jones, et une troisième partie 73 filtre les composantes Cm d'histogramme. La première partie 71 comprend un générateur d'adresses 711 recevant en entrée les coordonnées absolues (XDA,YDA) et (XDC,YDC) et la surface du descripteur D considéré. La surface du descripteur D peut ainsi être transmise aux unités de traitement UT par l'intermédiaire de l'unité 7 de détermination d'histogrammes en même temps que les composantes Cm d'histogrammes. A partir des coordonnées absolues (XDA,YDA) et (XDC,YDC), le générateur d'adresses 711 retrouve les coordonnées absolues (XDB,YDB) et (XDD,YDD) des deux autres coins DB et DD du descripteur D, soit respectivement (xDC,YDA) et (XDA,YDC). Le générateur d'adresses 711 génère ainsi les adresses mémoire des quatre coins DA, DB, Dc et DD du descripteur D pour chaque image intégrale lint,m. Les poids WO(XDA,YDA), WO(XDB,YDB), wo(xDC,YDC) et WO(XDD,YDD) de ces pixels DA, DB, Dc et DD sont chargés depuis la mémoire 2 vers un bloc de registres 712 comportant 4x(M+1) registres de données, par exemple par l'intermédiaire d'un bloc logique 713. La deuxième partie 72 comprend un ensemble 721 d'additionneurs et de soustracteurs reliés en entrée au bloc de registres 712 et en sortie à un bloc de registres 722 comportant M+1 registres de données. Cette deuxième partie 72, et en particulier l'ensemble 721 d'additionneurs et de soustracteurs, est agencée de manière à générer M+1 composantes Cm d'histogramme en un cycle d'horloge. Chaque composante Cm est calculée à partir des poids WO(XDA,YDA), WO(XDB,YDB), WO(XDC,YDC) et WO(XDD,YDD) des pixels DA, DB, Dc et DD d'une image intégrale lint,m et stockée dans l'un des registres de données du bloc de registres 722. Pour une image intégrale lint,m et un descripteur D tels que représentés à la figure 5, le calcul de la composante Cm, avec m un entier compris entre 1 et M+1, peut être modélisé par la relation suivante : Cm=Dc - DB - DD+DA (2) Ainsi, chaque composante Cm contient la somme des poids wo(x,y) des pixels p(x,y) d'une image d'orientation lm contenus dans le descripteur D. La troisième partie 73 comprend un filtre 731 éliminant les histogrammes dont le gradient d'intensité lumineuse est très faible, car ceux-ci sont considérés comme du bruit. Autrement dit, si la composante CM+, est inférieure à un seuil prédéterminé, appelée seuil d'histogramme Sh, toutes les composantes Cm sont mises à zéro. Les composantes Cm sont ensuite stockées dans un bloc de registres 732 afin de pouvoir être utilisées par les unités de traitement UT. L'unité 7 de détermination d'histogrammes est un élément important du dispositif 1. Ses performances sont directement liées à la bande passante de la mémoire 2. En effet, pour calculer un histogramme, il faut accéder à 4x(M+1) données. Si la mémoire 2 peut accéder à k données par cycle, un histogramme est calculé en un nombre N, de cycles défini par la relation : N =4x(M+1) (3) k Avantageusement, la mémoire 2 possède une forte bande passante afin que le facteur k soit proche de 4x(M+1). En tout état de cause, le facteur k est préférentiellement choisi de sorte que le nombre Nc de cycles soit inférieur à dix. Ce nombre N, correspond au temps de calcul d'un histogramme. Ce temps peut être masqué dans l'analyse d'un histogramme par la mémoire tampon 27 des unités de traitement UT. La figure 9 illustre un exemple de réalisation d'une unité 8 d'analyse de scores. L'unité 8 comprend une pile FIFO 81, autrement dit une pile dont la première donnée entrée est la première sortie. La pile FIFO 81 permet de gérer la liste de positions. En particulier, elle peut stocker les coordonnées (XFA,YFA) et (xFC,yFC) des fenêtres de détection F dont le score global S du classifieur est supérieur au seuil Se d'étage courant, ce seuil Se pouvant varier en fonction de l'étage. La pile FIFO 81 peut également stocker les scores globaux S associés à ces coordonnées (xFA,YFA) et (xFC,YFC). Etant donné que l'itération courante de la boucle d'échelle est connue, seules les coordonnées (xFA,yFA) des fenêtres de détection F peuvent être stockées afin de déterminer la position et la taille des fenêtres de détection F. Selon une forme particulière de réalisation, représentée à la figure 9, la pile FIFO 81 reçoit successivement les coordonnées XFA du bloc de registres 531 par l'intermédiaire d'un bloc logique 82 et les coordonnées yFA du bloc de registres 532 par l'intermédiaire d'un bloc logique 83. Les scores globaux S calculés par les N unités de traitement UT sont stockés dans un bloc de registres 84 et envoyés conjointement avec les coordonnées XFA et yFA vers la pile FIFO 81 par l'intermédiaire d'un bloc logique 85. En fonction du score global S associé à une fenêtre de détection F, les coordonnées (xFA,yFA) sont écrites ou non dans la pile FIFO 81. Le score S est par exemple comparé au seuil Se d'étage courant. Les différents seuils d'étage Se peuvent être stockés dans un bloc de registres 86. La sélection du seuil d'étage Se est par exemple réalisée par un bloc logique 87 dont les entrées sont reliées au bloc de registres 86 et dont la sortie est reliée à un comparateur 88. Le comparateur 88 compare chacun des scores S avec le seuil Se d'étage courant. Si le score S est supérieur au seuil Se, les coordonnées (XFA,YFA) sont écrites dans la pile FIFO 81. Le contrôle des blocs logiques 82, 83, 85 et 87 peut être réalisé par une machine à états finis 89. L'unité 8 peut également comporter un générateur d'adresses 801 contrôlant la lecture de io la pile FIFO 81 et l'exportation de ses données vers l'unité 5 de cascade afin d'analyser les fenêtres de détection F ayant passé l'étage courant lors de l'étage suivant. A la fin de chaque itération de la boucle d'échelle, la pile FIFO contient la liste des positions ayant passé tous les étages avec succès, c'est-à-dire les positions contenant l'objet à reconnaître. Le contenu de la pile 15 FIFO 81 peut ainsi être transféré dans la mémoire 2 par l'intermédiaire du contrôleur 3 de mémoire. Selon une forme particulière de réalisation, le dispositif 1 comprend une unité 10 d'extraction de paramètres, comme représenté à la 20 figure 1. L'unité 10 comprend une mémoire dans laquelle sont stockés les paramètres attribut, seuil de descripteur Sd, a et p pour chaque étage. Ces paramètres sont déterminés lors d'une étape d'apprentissage réalisée préalablement à l'utilisation du dispositif 1. A chaque itération de la boucle d'étage lors des étapes E42 et E54, les paramètres correspondants sont 25 envoyés vers les unités de traitement UT utilisées. Selon une forme particulière de réalisation, le dispositif 1 comprend une unité 11 de découpage des images, comme représenté à la figure 1. Cette unité 11 permet de découper des images, en l'occurrence les 30 M+1 images intégrales, en plusieurs imagettes. Elle s'avère particulièrement utile lorsque les images à analyser, du fait de leur résolution, occupent un espace mémoire supérieur à la capacité de la mémoire 2. Dans ce cas, les imagettes correspondant à une zone donnée des images intégrales sont chargées successivement dans la mémoire 2. Le dispositif 1 peut alors traiter 35 les imagettes de la même manière que les images intégrales en répétant l'étape E4 autant de fois qu'il y a d'imagettes, l'analyse de l'image étant terminée lorsque toutes les imagettes ont été analysées. L'unité 11 de découpage des images comprend une machine à états finis générant les frontières des imagettes en fonction de la résolution des images et de la capacité de la mémoire 2. Les frontières des imagettes sont envoyées vers l'unité 5 de cascade afin d'adapter la taille et le pas de déplacement des fenêtres de détection aux imagettes. REVENDICATIONS1. Dispositif pour la reconnaissance et la localisation d'objets dans une image numérique (long) par balayage de fenêtres de détection (F1r F2, ..., FN), caractérisé en ce qu'il comprend N unités de traitement (UT1, UT2, ..., UTN) en parallèle, chaque unité de traitement (UT1, UT2, ..., UTN) étant apte à analyser en parallèle l'une des fenêtres de détection (F1, F2, ..., FN) pour fournir un score global (S1, S2, ..., SN) représentatif de la probabilité que ladite fenêtre de détection (F1, F2, ..., FN) contienne l'objet à reconnaître. 2. Dispositif selon la revendication 1, caractérisé en ce que ~o chaque score global (S1, S2, ..., SN) est la somme de scores partiels, chaque score partiel étant représentatif de la probabilité qu'un descripteur (D) de la fenêtre de détection (F1, F2, ..., FN) associée au score global (S1, S2, ..., SN) considéré contienne au moins une partie de l'objet à reconnaître, un descripteur (D) délimitant une partie de l'image numérique (lods) appartenant 15 à ladite fenêtre de détection (F1, F2, ..., FN). 3. Dispositif selon la revendication 2, caractérisé en ce que chaque score partiel est obtenu en analysant des caractéristiques du descripteur (D) considéré en fonction de paramètres (attribut, Sd, a, a) 20 déterminés lors d'une étape d'apprentissage, l'apprentissage dépendant de l'objet à reconnaître. 4. Dispositif selon la revendication 3, caractérisé en ce que l'image numérique (long) est transformée en M+1 images d'orientation (Im), les 25 M premières images d'orientation (Im) contenant chacune, pour chaque pixel (p(x,y)), le gradient de l'amplitude d'un signal sur une plage de valeurs d'angles, la dernière image d'orientation (Im) contenant, pour chaque pixel (p(x,y)), la magnitude du gradient de l'amplitude du signal, les caractéristiques d'un descripteur (D) étant modélisées sous forme d'un 30 histogramme comportant M+1 composantes (Cm), chaque composante (Cm) contenant la somme des poids (wo(x,y)) des pixels (p(x,y)) de l'une des images d'orientation (Im) contenus dans le descripteur (D) considéré. 5. Dispositif selon la revendication 4, caractérisé en ce que chaque unité de traitement (UT1, UT2, ..., UTN) comprend : - un premier bloc logique (21) comprenant M+1 entrées et une sortie et permettant de sélectionner successivement l'une des composantes (Cm) d'un histogramme en fonction du premier paramètre (attribut), - un comparateur (22) comparant la composante (Cm) sélectionnée avec le deuxième paramètre (Sd), - un deuxième bloc logique (23) comprenant deux entrées (231, 232) et une sortie, la première entrée (231) recevant le troisième paramètre (a), la deuxième entrée (232) recevant le quatrième paramètre ([3) et la sortie délivrant soit le troisième paramètre (a), soit le quatrième paramètre ([3) en fonction du résultat de la comparaison, - un accumulateur (24) relié à la sortie du deuxième bloc logique (23) additionnant les troisièmes et/ou quatrièmes paramètres (a, [3) afin de fournir d'une part les scores partiels associés aux différents descripteurs (D) de la fenêtre de détection (F1, F2, ..., FN) considérée et, d'autre part, le score global (S1, S2, ..., SN) associé à ladite fenêtre de détection (F1, F2, ..., FN). 6. Dispositif selon la revendication 5, caractérisé en ce que les M premières composantes (Cm) sont divisées par la M+1ème composante (CM+1) avant d'être comparées au deuxième paramètre (Sd) et en ce que la M+1 ème composante (CM+1) est divisée par une surface du descripteur (D) considéré avant d'être comparée au deuxième paramètre (Sd). 7. Dispositif selon l'une quelconque des revendications 4, 5 ou 6, caractérisé en ce qu'il comprend une unité (7) de détermination d'histogrammes déterminant successivement pour chaque fenêtre de détection (F1, F2, ..., FN), un histogramme en fonction du descripteur (D) considéré à partir de M+1 images intégrales chaque image intégrale (I;nt,m) étant une image où le poids (wi(m,n)) de chaque pixel (p(m,n)) est égal à la somme des poids (wo(x,y)) de tous les pixels (p(x,y)) considérés dans l'une des images d'orientation (lm) et situés dans la surface rectangulaire délimitée par l'origine (0) et le pixel (p(m,n)) considéré. 8. Dispositif selon la revendication 7, caractérisé en ce qu'il comprend une mémoire (2) contenant les M+1 images intégrales (I;nt,m) et un contrôleur (3) de mémoire permettant de gérer des accès à la mémoire (2), une bande passante de la mémoire (2) étant déterminée de telle sorte que chaque histogramme soit déterminé à partir de 4x(M+1) données en un nombre N, de cycles inférieur ou égal à dix, le nombre N, étant défini par la relation : N~=4xMk 1, où k est le nombre de données auxquelles la mémoire (2) peut accéder en io un cycle. 9. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (4) de boucle d'échelle permettant de déterminer de façon itérative une taille de fenêtres 15 de détection (F,, F2, ..., FN) et un pas de déplacement de ces fenêtres (F1, F2, ..., FN) dans l'image numérique (l0ri9). 10. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (5) de cascade 20 permettant de générer des coordonnées (xFA,YFA) et (xFC,yFC) de fenêtres de détection (F,, F2, ..., FN) en fonction d'une taille de ces fenêtres et d'un pas de déplacement et d'allouer chaque fenêtre de détection (F1, F2, ..., FN) à une unité de traitement (UT1, UT2, ..., UTN). 25 11. Dispositif selon les revendications 2 et 10, caractérisé en ce qu'il comprend une unité (6) de boucle de descripteur permettant de générer de façon itérative, pour chaque fenêtre de détection (FI, F2, ..., FN), des coordonnées (XDA,YDA) et (xpc,ypc) de descripteurs (D) en fonction des coordonnées (XFA,YFA) et (XFC,YFC) de ces fenêtres de détection (F1, F2, ..., 30 FN) et de l'objet à reconnaître. 12. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (8) d'analyse de scores permettant de générer une liste de scores globaux (S,, S2, ..., SN) etde positions ((XFA,YFA), (xFC,yFC)) de fenêtres de détection (FI, F2, ..., FN) en fonction d'un seuil d'étage (Se). 13. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une unité (10) d'extraction de paramètres permettant d'envoyer les paramètres (attribut, Sd, a, 3) aux N unités de traitement (UT,, UT2, ..., UTN) simultanément. 14. Procédé de reconnaissance et de localisation d'objets dans ~o une image numérique (loris), caractérisé en ce qu'il comprend une étape (E4) de balayage de l'image numérique (long) par des fenêtres de détection (F,, F2, FN), plusieurs fenêtres de détection (FI, F2, ..., FN) étant balayées simultanément, ladite étape (E4) de balayage comportant une itération des sous-étapes suivantes : 15 - générer (E45) pour chaque fenêtre de détection (F,, F2, ..., FN) un histogramme modélisant des caractéristiques d'une partie de l'image numérique (long) appartenant à la fenêtre de détection (F,, F2, ..., FN), cette partie de l'image numérique (lor;g) étant délimitée par un descripteur (D), analyser (E46) simultanément les histogrammes générés lors 20 de la sous-étape (E45) précédente, chaque analyse fournissant un score partiel pour une fenêtre de détection (F,, F2, ..., FN), ce score partiel étant représentatif de la probabilité que le descripteur (D) associé à l'histogramme contienne au moins une partie de l'objet à reconnaître, les scores partiels étant additionnés à la fin de l'itération respectivement à la 25 fenêtre de détection (F,, F2, ..., FN) à laquelle ils sont associés afin de fournir un score global (Si, S2, SN) pour chaque fenêtre de détection (FI, F2, ..., FN), le score global (Si, S2, ..., SN) étant représentatif de la probabilité que la fenêtre de détection (F,, F2, ..., FN) contienne l'objet à reconnaître. 30 15. Procédé selon la revendication 14, caractérisé en ce que les fenêtres de détection (F,, F2, ..., FN) pour lesquelles le score global (Si, S2, ..., SN) est supérieur à un seuil d'étage (Se) prédéterminé sont stockées (E50) dans une liste de fenêtres afin d'analyser les caractéristiques d'autres descripteurs (D) appartenant auxdites fenêtres de détection (F,, F2, ..., FN).