Traitement d’image

Vision artificielle bio-inspirée

Une grande partie des systèmes électroniques de vision bio-inspirée s’inspirent de la rétine des mammifères, la plupart du temps de la rétine humaine.
On peut citer parmi les rétines artificielles embarqués, les travaux d’Elouardi et al. (EBD+04). Les auteurs présentent PARIS, un prototype de rétine CMOS sous forme de système sur puce, dont les résultats sont traités par un processeur ARM7.
Dans (GRRD07), une puce de rétine artificielle est utilisée pour effectuer des tâches de vision bas niveau, comme la détection de mouvements. Un ordinateur reçoit, via un FPGA qui joue le rôle d’interface, les informations provenant de la rétine artificielle. Le modèle de rétine utilisé dans ces travaux (Boa02) est inspiré de la rétine du chat, et modélise les signaux générés par les couches de traitement bas niveau de la rétine biologique.
La génération automatique de rétines artificielles a aussi été étudiée (MRP+05). Le code de description matérielle (HDL) synthétisable est généré automatiquement à partir d’une description haut niveau, elle-même conçue et simulée à l’aide d’un programme dédié. Afin d’obtenir de meilleures performances temporelles, les systèmes décrits par les auteurs peuvent être déployés sur ASIC plutôt que sur FPGA. Le but principal de ces travaux est la génération de puces destinées à l’implantation in-vivo avec des électrodes, sous forme de neuro-prothèses. L’intérêt présenté d’un déploiement sur FPGA est ici de pouvoir modifier des paramètres du système pour adapter la puce en fonction du patient.
Bolduc présente les différences entre les rétines artificielles traditionnelles qui uti-lisent une cartographie de cellules réceptrices non recouvrantes, et un type plus avancé de rétines artificielles (BL98). Ces dernières modélisent le fonctionnement des cellules ganglionnaires, qui induisent un recouvrement partiel des cellules réceptrices dans la gé-nération des données de sortie de la rétine. Si les premières fonctionnent généralement à des plus hautes cadences d’images, les dernières présentent une piste de recherche particulièrement prometteuse.

Caméras intelligentes

Ces dernières années, la thématique des caméras intelligentes et rétines artificielles gagne de l’ampleur. On observe plusieurs angles d’attaque sur cette thématique : l’étude technologique, tendant à concevoir des capteurs intelligents au niveau circuit, et une étude système utilisant des capteurs visuels existants, couplés avec des systèmes destinés au traitement de l’image. Certaines études se situent entre les deux approches, utilisant une première étape de pré-traitement des pixels sur le circuit même du capteur, et une deuxième étape de pré-traitements plus complexe sur un élément de calcul couplé au capteur.
Le terme « caméra intelligente » est encore relativement jeune, et est utilisé pour divers types de systèmes, comprenant les réseaux de caméras de surveillance inter-communicantes et les capteurs optiques de souris, ainsi que les rétines artificielles contenant une ou plusieurs couches de traitement. En général, on appelle caméra intelligente un système où un capteur optique se voit associé à un circuit de traitements dédiée, sur une même puce où juste sous la forme d’un système à fort couplage. Dans le livre (Bel09), un historique des caméras intelligentes permet d’aborder ce sujet plus en profondeur. Cette section se focalise sur les architectures matérielles des caméras intelligentes.
L’avantage principal d’une caméra intelligente, dû au couplage étroit d’un capteur avec une unité de traitements dédiée, est une faible latence entre la capture d’une image et son utilisation par l’unité de traitements. Le système peut ainsi corriger plus rapide-ment certains paramètres de capture en fonction des résultats de l’architecture dédiée qui y est associée, augmentant ainsi la qualité de l’information générée par la caméra intelligente. Un avantage essentiel que l’on retrouve sur certains systèmes est une consi-dérable réduction de la quantité de données, à l’aide d’étages de pré-traitements à la sortie du capteur. Cet aspect est essentiel dans les systèmes où une très faible partie des images capturées sont jugées pertinentes, ou/et pour lesquels la distribution de ces pré-traitements sur un réseau de capteurs est préférable à une exécution centralisée (Kha10). Cela permet de réduire, en amont du système client, la charge des canaux de communication, et l’utilisation mémoire, ainsi que la charge de calcul du client qui n’a plus à exécuter ces pré-traitements. Lorsque les flux d’images traités ne sont pas d’une taille trop imposante, une intégration de la caméra à même le circuit de trai-tements n’est généralement pas indispensable. Une caméra déportée sur carte fille, ou reliée par un autre canal de communication dédié, génère une latence minime et permet l’étude d’images à haute résolution à une cadence suffisante pour beaucoup de systèmes.
Un exemple assez représentatif des caméras intelligentes, présenté dans (LMY04), répond à une problématique proche de la notre. Deux applications de traitement d’image qui ne peuvent pas être déployées en temps-réel sur des stations de travail classiques, se voient accélérées à l’aide d’un FPGA pour devenir utilisables. Pour la première ap-plication, les éléments les plus chronophages de la version logicielle pré-existante sont déployés sur FPGA, permettant l’exécution du système en temps-réel avec une latence globale très faible. Dans les deux cas, les gains obtenus sont de l’ordre d’un facteur 20 par rapport aux programmes logiciels pré-existants, exécutés sur un processeur Intel Xeon à 1,5GHz.
Dans (MDBS09), l’auteur présente une caméra intelligente composée non seulement d’une caméra et d’une plate-forme de traitements dédiés, mais aussi de capteurs inertiels. La plate-forme intelligente se compose d’un FPGA central pilotant un DSP. Un proces-seur virtuel est présenté afin de faciliter le déploiement d’applications sur le système, à travers la programmation en assembleur simplifié. L’interprétation par le processeur virtuel de ce code assembleur se charge d’utiliser les modules de traitement présents sur le système de façon transparente pour le programmeur.
La plupart des travaux existants portent sur l’utilisation de capteurs CMOS tradi-tionnels (lecture par colonnes de pixels), comme par exemple (Koz06), où une solution de suppression du bruit sur les pixels est proposée, sans remettre en question l’organi-sation en lignes et en colonnes traditionnelle. Parallèlement, plusieurs travaux ont été réalisés pour intégrer l’architecture de traitement au plus près des capteurs photosen-sibles, afin de permettre plus de traitements au niveau pixel. Une architecture pour la vision à haute vitesse présentée dans (KII97) est un exemple représentatif de cette nou-velle étape dans l’évolution des capteurs vidéo. La conception passe tout d’abord par un prototypage sur FPGA, pour être envoyée à la fabrication en full-custom. L’architecture présentée se compose d’un tableau de 8 8 éléments de calcul hébergeant chacun un photo-récepteur. Chaque élément de calcul se compose d’une ALU, d’une mémoire de 24 bits, et reçoit les valeurs des pixels de ses quatre voisins les plus proches. L’architecture est ensuite déployée sous la forme d’un tableau de 64 64 pixels (IK01). L’architecture EYE-RIS (ACJG+09) est un exemple plus récent construit autour d’un processeur à plan focal. La famille de plate-formes bio-inspirée EYE-RIS repose sur un étage de traitements parallèles effectués à même le capteur visuel, sous forme analogique, de façon similaire à une rétine. Ce capteur actif est appelé processeur à plan focal (PPF), et est ici intégré sur le même circuit imprimé qu’un FPGA. Au fil du remaniement de l’architecture, plusieurs PPF ont été utilisés : les versions 1.0 et 1.1 du système utilisent un ACE16K-v2 (RVLCC+04), et une nouvelle puce, Q-Eye (RVDCF+07), est développée et employée dans la version 1.2, augmentant la densité des cellules, réduisant la consommation de la puce tout en augmentant la puissance de calcul des cellules. Au second plan des traitements de l’image, le FPGA (un Cyclone d’ALTERA pour la version 1.1 de EYE-RIS) héberge un processeur soft-core NIOS II qui exécute des programmes chargés depuis un ordinateur, donnant une plus grande flexibilité au système. L’ordinateur reste connecté au système et dispose des résultats de la caméra intelligente.
Au LEAD, un autre système à plan focal, cette fois une puce de vision SIMD rapide (GDHP10), se construit sur le plan focal sous la forme d’une grille de processeurs SIMD reconfigurables dynamiquement. Chaque pixel est composé, en plus d’une photo-diode, de deux blocs analogiques permettant de mémoriser les valeurs du pixel pour l’image présente et l’image précédente, et d’une unité arithmétique analogique responsable de combiner les quatre pixels adjacents à l’aide de quatre multiplieurs analogiques et d’un noyau de convolution 2 2. Les auteurs présentent un prototype de démonstration de 64 64 pixels, permettant une capture RAW à 10000 image par seconde, ou 5000 images par seconde en appliquant un traitement basique au niveau pixel.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *