With FPGA technology and the NI Vision Development Module, you can perform high-speed field-programmable gate array (FPGA) processing on images acquired from cameras. FPGA processing is particularly useful in applications that require low latency between acquisition and the processed image. This document provides an overview of image processing on an FPGA, including typical use cases.
Il n’est plus nécessaire d’être un expert des langages de bas niveau comme le VHDL pour programmer un circuit FPGA. Cela peut se faire dans l’environnement de programmation graphique NI LabVIEW, ou plus exactement avec le Module NI LabVIEW FPGA qui se charge de synthétiser le code graphique et de le déployer sur du matériel FPGA. Lorsque l’on a l’habitude d’utiliser LabVIEW, ce qui est le cas d’un grand nombre d’ingénieurs maintenant, utiliser le module dédié au FPGA ne nécessite pas beaucoup d’efforts d’apprentissage ; ce qui a le mérite de réduire considérablement le temps de développement des applications nécessitant un FPGA, en éliminant le besoin de concevoir une carte électronique.
Bon nombre d'algorithmes de traitement d'images sont naturellement parallèles et conviennent donc aux mises en œuvre FPGA. Ces algorithmes qui impliquent des opérations sur des pixels, des lignes et une région d'intérêt n'ont pas besoin d'informations de haut niveau sur les images, comme les formes ou les objets présents sur l'image. Il est possible d’exécuter ces fonctions sur de petites régions de bits ainsi que sur plusieurs régions d'une même image simultanément. Les données des images peuvent être transmises vers le FPGA en parallèle et, étant donné qu'un processeur central n'est pas nécessaire pour traiter les données, le traitement peut se faire simultanément. Vous trouverez ci-dessous quelques exemples de fonctions de traitement d'images qui profitent bien de l’utilisation d’un FPGA :
Prétraitement
|
Extraction de caractéristiques
Mesures
|
Si la programmation fait appel au langage graphique LabVIEW, le Module LabVIEW FPGA supporte une caractéristique permettant l'intégration d'IP (propriétés intellectuelles) HDL, appelées CLIP (Component-Level IP). Grâce au CLIP, vous pouvez insérer un IP HDL dans une cible FPGA de façon à ce que le code VHDL communique directement avec le programme graphique FPGA. Le CLIP facilite également la communication entre le FPGA et la circuiterie électronique externe en utilisant l'IP HDL existant.
Le traitement d'images par FPGA réduit le besoin de ressources de calcul. Le FPGA permet effectivement de libérer le processeur pour d'autres opérations. Celui-ci n'étant pas sollicité pour procéder à l'analyse des images, la latence s'en trouve considérablement réduite entre les entrées prétraitées et les sorties traitées. La Figure n°1 illustre la façon d'utiliser le FPGA pour libérer complètement les ressources du processeur. Dans ce cas, le FPGA effectue la totalité du traitement d'images, ce qui se traduit par une latence minimale du système. Il est bien sûr possible d’envoyer les informations sur l'image au processeur, pour un stockage des données ou pour l'affichage ultérieur de l'image une fois le traitement terminé.
Figure 1. Le traitement tout entier s'effectue en « dur » sur le circuit FPGA. Le processeur est libre d'effectuer d'autres tâches, et la latence du système est réduite au temps de transit des données dans le FPGA.
La technologie FPGA est utilisée de cette façon par exemple dans les applications de tri haute vitesse, de poursuite oculaire et d’alignement laser.
Vous pouvez aussi utiliser un FPGA en conjonction avec un processeur de système de vision pour lui déléguer des opérations de prétraitement. La Figure n°2 présente la façon de procéder au prétraitement avec un FPGA pendant que le processeur traite les algorithmes de traitement plus avancé. Dans ce cas-là, le FPGA effectue le traitement au niveau bit comme le filtrage ou la détection de bords. L'image prétraitée est ensuite envoyée au processeur pour un traitement au niveau image comme la reconnaissance de formes. La latence du système reste relativement faible dans ce cas-là car le processeur a moins de fonctions à exécuter que dans un système de vision traditionnel.
Figure 2. L'acquisition et le prétraitement d'images s'effectuent sur le FPGA. Les données d’image sont ensuite transmises au processeur, qui effectue une analyse d’images plus compliquée comme la reconnaissance et la classification de formes.
Le traitement d'images par FPGA se révèle particulièrement utile dans les applications qui nécessitent un traitement haute vitesse au niveau bit. Le circuit FPGA reçoit les données d’image et traite les bits individuellement en utilisant une horloge haute vitesse embarquée (avec une fréquence pouvant atteindre 100 MHz). Le transfert et le traitement de données s’effectuent de façon matérielle sur un seul et unique cycle d'horloge. Il est d’ailleurs possible de fractionner un grand nombre d'algorithmes de vision en plusieurs tâches itératives et ensuite, de fractionner à nouveau ces mêmes tâches en opérations parallèles sur FPGA.
Parmi les exemples d'utilisation de ce type d'architecture, citons les applications avec inspection de surface et la tomographie optique cohérente (OCT).
Produits de vision FPGA
NI-1483 : Module FlexRIO Camera Link pour le traitement d'images sur FPGA
Initiation au module d'adaptation FlexRIO Camera Link NI-1483
Logiciel FPGA
NI LabVIEW FPGA
Technologie FPGA
Introduction à la technologie FPGA : les cinq principaux avantages