FR2895103A1 - Procede et systeme de traitement de donnees numeriques - Google Patents

Procede et systeme de traitement de donnees numeriques Download PDF

Info

Publication number
FR2895103A1
FR2895103A1 FR0553946A FR0553946A FR2895103A1 FR 2895103 A1 FR2895103 A1 FR 2895103A1 FR 0553946 A FR0553946 A FR 0553946A FR 0553946 A FR0553946 A FR 0553946A FR 2895103 A1 FR2895103 A1 FR 2895103A1
Authority
FR
France
Prior art keywords
specific
platform
operations
sub
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0553946A
Other languages
English (en)
Other versions
FR2895103B1 (fr
Inventor
Bruno Liege
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GoPro Inc
Original Assignee
Dxo Labs SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to FR0553946A priority Critical patent/FR2895103B1/fr
Application filed by Dxo Labs SA filed Critical Dxo Labs SA
Priority to CNA2006800530321A priority patent/CN101379468A/zh
Priority to PCT/FR2006/051389 priority patent/WO2007071883A2/fr
Priority to JP2008545067A priority patent/JP6085405B2/ja
Priority to KR1020087017730A priority patent/KR101391465B1/ko
Priority to EP06847179A priority patent/EP1963971A2/fr
Priority to US12/097,893 priority patent/US8429625B2/en
Publication of FR2895103A1 publication Critical patent/FR2895103A1/fr
Application granted granted Critical
Publication of FR2895103B1 publication Critical patent/FR2895103B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)

Abstract

L'invention se rapporte à un procédé et à un système de traitement de données formatées génériques (12), comprenant des premières données (14) décrivant une séquence d'opérations génériques, en vue de fournir des données formatées spécifiques (18), pour une plateforme déterminée (20) comportant Q processeur(s) et au moins une mémoire, la plateforme étant destinée à traiter, en fonction directement ou indirectement des données formatées spécifiques (18), un objet (22) constitué d'informations élémentaires de même nature, chaque information élémentaire étant représentée par au moins une valeur numérique.

Description

PROCEDE ET SYSTEME DE TRAITEMENT DE DONNEES NUMERIQUES
La presente invention concerne un procede et un systeme de traitement de donnees formatees generiques en vue de fournir des donnees formatees specifiques a une plateforme de traitement. Les donnees formatees specifiques peuvent etre fournies directement ou indirectement en utilisant un compilateur pour generer un code binaire adapte a la plateforme a partir des donnees formatees specifiques.
Actuellement, les algorithmes de traitement d'objets sont generalement ecrits dans un langage connu, tel que le C, 1'assembleur ou le VHDL, et sont ensuite compiles ou traduits en binaire avant d'etre utilises par une plateforme destine a effectuer le traitement. Les compilateurs utilises sont des compilateurs 15 specifiques a un type de langage. Dans 1'exemple d'un compilateur C, qui est un des plus courants, le code en C est traduit pour etre comprehensible, par exemple, pour un ordinateur personnel de type PC ou de type MAC. Cette compilation depend de la plateforme pour laquelle 20 1'algorithme est compile. Les processeurs de ces deux plateformes ayant des caracteristiques similaires, it est possible d'ecrire des algorithmes de traitement compatibles avec les deux plateformes. D'autre part, dans un algorithme code en C, le programmeur doit definir, des le depart, differentes parties du code dependantes de la plateforme telles que la decomposition de 1'objet en sous-objets, les boucles, 1'ordre de traitement des informations elementaires et sous-objets, 1'organisation des donnees en memoire, notamment pour permettre les acces a des donnees de differentes positions et le changement d'echelle, les echanges de donnees entre memoires, la gestion des bords. Ces parties du code dependantes de la plateforme etant determinees a priori par un programmeur, en fonction de la plateforme et de 1'algorithme, elles doivent titre optimisees << a la main >> pour chaque combinaison algorithme + plateforme. De plus, puisqu'elles sont definies explicitement, et melangees avec le code decrivant 1'algorithme lui-meme, le compilateur peut tres difficilement faire abstraction de ces parties du code dependantes de la plateforme pour les adapter lui-meme a une autre plateforme.
Par exemple, dans le cas d'un processeur de traitement du signal disposant d'une petite memoire locale et devant recopier les donnees depuis et vers la memoire principale a partir de cette memoire locale, cette copie doit titre ajoutee a la main et remet profondement en cause la structure des boucles et des donnees en memoire. Par exemple encore, un processeur vectoriel, notamment de type SIMD (Single Instruction Multiple Data) doit traiter des donnees groupees par vecteurs de tailles differentes selon la plateforme et, les vecteurs n'etant pas exprimables de maniere independante de la plateforme lorsqu'on utilise un langage tel que le langage C, it faut donc coder en assembleur de maniere dependante de la plateforme. D'autre part, lorsque l'on modifie un algorithme, notamment en terme d'acces a des donnees a diverses positions, cela remet en cause, au moins partiellement, les differentes parties du code dependantes de la plateforme. Il est donc tres difficile d'optimiser la taille du code, la taille de la memoire et le nombre d'instructions necessaires, sans passer un temps considerable pour optimiser chaque combinaison algorithme + plateforme. En effet, chaque plateforme a ses propres caracteristiques, tant en terme de materiel (par exemple le nombre et le type de processeurs, ou la taille et le type de memoire), qu'en terme de langage utilise (C pour un processeur scalaire et assembleur pour un processeur vectoriel). Afin de resoudre ce probleme, it est connu d'utiliser des librairies de bas niveau capables d'effectuer divers traitements sur des blocs physiques, tels que des convolutions, des multiplications, ou encore 1'application de tables de correspondance. Ceci permet de n'optimiser qu'une fois ces librairies pour chaque plateforme. Cette methode presente toutefois de nombreux inconvenients : - la taille des librairies, et donc du code, est 20 importante, - compte tenu du temps d'appel a des librairies, it faut utiliser des blocs physiques de taille relativement importante, ce qui se traduit par une utilisation memoire importante, 25 -les boucles internes sur les informations elementaires se trouvant a 1'interieur des librairies, it n'est pas possible d'optimiser des sequences d'operations, et les performances sont ainsi limitees, - les blocs physiques sont stockes en memoire, ce qui se 30 traduit par une utilisation intensive de la memoire et beaucoup de temps passe a ecrire et lire des donnees intermediaires depuis la memoire, et - ces librairies sont optimisees pour un nombre limite de plateformes, souvent par un fabricant de processeurs et ne sont donc pas disponibles pour taus les types de plateformes. L'invention a donc pour objet de proposer un procede de traitement de donnees tel qu'il permet d'optimiser automatiquement pour plusieurs plateformes, avec une grande vitesse d'ex&cution, une faible utilisation memoire et une faible taille de code, tout algorithme de traitement d'objet compose d'un grand nombre d'informations elementaires diff&rentes, code dans un langage adapt& a ce type d'algorithmes. L'invention permet notamment d'accelerer la mise sur le march& de materiel et de logiciels de traitement de donnees, notamment des images, en obtenant automatiquement et rapidement une implementation optimise pour diverses plateformes d'un algorithme quelconque, et en permettant une modification de 1'algorithme le plus tard possible. Dans le cas d'un appareil de capture d'image, par exemple, cette modification tardive permet de s'adapter rapidement a un nouveau capteur, dont les caract&ristiques, notamment de bruit, qui croit avec la miniaturisation, &voluent tres vite.
L'invention concerne un procede de traitement de donnees formatees generiques, comprenant des premieres donnees d&crivant une sequence d'op&rations generiques, en vue de fournir, directement ou indirectement, des donnees formatees specifiques, pour une plateforme d&termin&e comportant Q processeur(s) et au moms une memoire, la plateforme &taut destine a traiter, en fonction des donnees formatees specifiques, un objet constitu& d'informations elementaires de meme nature, chaque information &1&mentaire &taut repr&sent&e par au moms une valeur num&rique. Le procede comprend les &tapes suivantes : - 1'&tape de traduire les operations generiques en operations specifiques, - 1'&tape de determiner 1'ensemble des boucles 35 n&cessaires au traitement, -1'etape de calculer une sequence d'operations specifiques contenant les boucles ainsi determinees, et permettant, directement ou indirectement, de traiter 1'objet, conformement aux donnees formatees generiques, la sequence etant optimisee pour la plateforme en terme de taille de code et/ou de taille memoire, et/ou temps de calcul. Les donnees formatees specifiques comprennent la sequence d'operations specifiques ainsi determinee.
La sequence d'operations specifiques consiste, par exemple, a appliquer toutes les operations a un pixel, ou chaque operation a taus les pixels, avant de passer a 1'operation suivante ou a une autre sequence.
Dans la presente description, des donnees formatees generiques sont des donnees numeriques permettant de decrire un traitement a apporter sur un objet par une plateforme de traitement de donnees, independamment de la plateforme ellememe. Dans le cadre de 1'invention, les objets traites correspondent a un ensemble d'informations elementaires de meme nature ; ces objets sont, par exemple, des images, des sons numerises, de la video ou encore des donnees de simulation.
Dans une realisation, les donnees formatees generiques comprennent des secondes donnees se rapportant a la position relative, selon au moms une dimension de 1'objet, notamment spatiale et/ou temporelle, des blocs et/ou des parametres les uns par rapport aux autres, et/ou se rapportant a 1'echelle relative, selon au moms une dimension de 1'objet notamment spatiale et/ou temporelle, des blocs logiques et/ou des parametres les uns par rapport aux autres.
Dans une realisation, les objets et sous-objets, ainsi que les blocs logiques, ont plusieurs dimensions.
Les dimensions des sous-objets et des blocs logiques correspondent a toutes ou une partie des dimensions de 1'objet. Les dimensions peuvent titre de diverses natures, notamment : - spatiale, par exemple une distance, un angle ou un parcours dans un maillage, - temporelle, -frequentielle, par exemple une couleur, une frequence, une bande de frequence - une phase, -une decomposition selon une autre base d'espace vectoriel, par exemple une decomposition en ondelettes - de maniere generale, les dimensions de tout espace de topologie quelconque.
La liste suivante, non limitative, donne des exemples d'objets avec leurs dimensions : - une image fixe avec 2 dimensions, correspondant chacune a des distances, notamment mesuree en pixels, - une image fixe brute avec 2 dimensions, correspondant 20 chacune a des distances, les pixels etant chacun dote d'une couleur, par exemple rouge, vert, ou encore bleu, - une image fixe en couleur, avec 2 dimensions, correspondant chacune a des distances, et une dimension correspondant a une frequence representant le canal couleur, par 25 exemple rouge/vert/bleu, - une image animee avec 3 dimensions, correspondant, pour 2 d'entre elles, a des distances, notamment mesurees en pixels et, pour une d'entre elles, au temps, - une image en relief avec 3 dimensions, correspondant 30 a des distances, - une image en relief avec 3 dimensions, correspondant , pour 2 d'entre elles, a des distances, et, pour la troisieme, a un angle de vue, - une image medicale avec des dimensions de distance et 35 eventuellement des dimensions de canal, - un hologramme avec des dimensions d'angle de vue, -de maniere plus generale, une image avec des dimensions de distance et/ou d'angle et/ou temporelle, et/ou frequentielle, - un son avec une dimension correspondant au temps, - un son avec 2 dimensions correspondant au temps et a un canal, - un signal module avec une ou plusieurs dimensions correspondant au temps et eventuellement une frequence et eventuellement une position dans 1'espace ou un angle, - la modulation et demodulation de signal, la mesure, 1'analyse de donnees, 1'indexation ou la recherche dans une base de donnees, la vision par ordinateur, le traitement graphique, la simulation representes par des informations elementaires disposees selon une ou plusieurs dimensions, - de maniere plus generale, un objet avec une ou plusieurs dimensions.
Dans le cadre de 1'invention, les informations elementaires d'un objet peuvent avoir une position et/ou une echelle, absolue notamment spatiale et/ou temporelle et/ou frequentielle mais egalement selon au moms une dimension de 1'objet ainsi que dans tout autre espace, notamment un espace constitue d'ondelettes: - une information elementaire d'un objet << son >> peut correspondre a une intensite ; dans ce cas, 1'information elementaire a une position absolue correspondant a un instant donne et, dans le cas d'un son multicanaux, pour un canal donne. -une information elementaire d'un objet << image >> peut correspondre a un pixel ; dans ce cas, 1'information elementaire a une position absolue correspondant a une position dans 1'image et, dans le cas d'une image video, a un instant donne. - une information elementaire d'un objet << donnee de simulation >> peut correspondre a un etat ; dans ce cas, 1'information elementaire a une position absolue correspondant a un nceud de maillage et a un instant donne. - une information elementaire d'un objet << signal module peut correspondre a une intensite et/ou une phase; dans ce cas, 1'information elementaire a une position absolue correspondant a un instant donne et, eventuellement, a une frequence donnee et/ou a une position donnee si plusieurs antennes ou emetteurs sont utilises. Une information elementaire est un element d'information a traiter, represents par une ou plusieurs valeurs numeriques. Ces informations peuvent titre codees selon divers types de codage tels que le codage sur 8 bits, le codage sur 10 bits ou encore le codage sur 16 bits signs. Dans le cas on 1'objet est une image, par exemple, les informations elementaires seront les pixels de cette image. Les objets peuvent titre des images brutes (de type << raw >>) avant operation de dematricage (<< demosaicing >> en anglais), auquel cas une information elementaire est un pixel represents par une valeur numerique correspondant, selon la position absolue du pixel, par exemple a du rouge, a du vert ou a du bleu. Les objets peuvent aussi titre des images visibles, auquel cas une information elementaire est un pixel represents, par exemple, par trois valeurs numeriques, chacune representant une couleur, par exemple rouge, vert et bleu.
Les objets peuvent egalement titre des sequences d'images, notamment brutes ou visibles, auquel cas une information elementaire est un pixel d'une image de la sequence d'images. Les objets correspondent donc, par exemple, a des videos. Dans le cas on 1'objet est une image, 1'image peut titre issue d'un appareil de capture d'image et/ou destinee a un appareil de restitution d'images : - Un appareil de capture d'images est, par exemple, un appareil photo jetable, un appareil photo numerique, un appareil reflex (numerique ou non), un scanner, un fax, un endoscope, une camera, un camescope, une camera de surveillance, un jouet, une camera ou un appareil photo integre ou relie a un telephone, a un assistant personnel ou a un ordinateur, une camera thermique, un appareil d'echographie, un appareil d'imagerie IRM (resonance magnetique), un appareil de radiographie a rayons X. - Un appareil de restitution d'images est, par exemple, un ecran, un projecteur, un televiseur, des lunettes de realite virtuelle, ou une imprimante. - Un appareil de capture et de restitution d'images est, par exemple, un scanner/fax/imprimante, un mini lab d'impression 10 photos, un appareil de video conference. La plateforme de traitement peut prendre diverses formes selon 1'application. A titre d'exemple, dans le cas on 1'objet est une image, on citera notamment le cas on la plateforme de traitement est integree a l'un des appareils suivants : 15 - Un appareil de capture d'images qui produit des images traitees, par exemple un appareil photo numerique qui integre une plateforme de traitement. - Un appareil de restitution d'images qui affiche ou imprime des images traitees, par exemple un projecteur video ou 20 une imprimante incluant une plateforme de traitement. - Un appareil mixte qui corrige les defauts de ses elements, par exemple un scanner/imprimante/telecopie incluant une plateforme de traitement. - Un appareil de capture d'images professionnel qui 25 produit des images traitees, par exemple un endoscope incluant une plateforme de traitement. La plateforme de traitement peut etre deportee en tout ou partie sur un serveur. Le traitement qui sera applique a 1'objet dans la 30 plateforme correspond a un algorithme, decrit par une ou plusieurs sequences d'operations generiques, pouvant intervenir dans divers domaines tels que, par exemple, le traitement d'image, la compression et la decompression de donnees, le traitement du son, la modulation et demodulation de signal, la 35 mesure, 1'analyse de donnees, 1'indexation ou la recherche dans une base de donnees, la vision par ordinateur, le traitement graphique, la simulation ou encore tout domaine mettant en oeuvre un grand nombre de donnees. Les operations generiques sont des operations qui s'appliquent a des blocs logiques, c'est-a-dire a des entites abstraites, sans notion de taille, ni de forme, ni d' instant . Les operations generiques peuvent produire des blocs logiques. De preference, au moms un bloc logique correspond a 1'objet a traiter.
Dans une realisation, le procede comprend, en outre, 1'etape de determiner un mode de parcours des informations elementaires dans la plateforme en fonction de 1'architecture de cette plateforme et des donnees formatees generiques, la determination de ce mode de parcours comprenant le choix et/ou calcul : - d'un groupement d'informations elementaires en sous-objets, comprenant chacun un nombre N d'informations elementaires, le nombre N etant un multiple de Q, et determine en fonction de la plateforme, et le traitement dans la plateforme consistant a demarrer periodiquement un sous-traitement qui consiste a appliquer la sequence d'operations specifiques a un sous-objet, - de la forme et du recouvrement des sous-objets, determines en fonction de la plateforme, de 1'ordre de traitement des sous-objets, determine en fonction de la plateforme, - de 1'organisation en memoire des donnees destinees a titre conservees pour le traitement des sous-objets ulterieurs, determinee en fonction de la plateforme et de la sequence d'operations generiques. Les etapes, decrites plus haut, qui consistent a determiner 1'ensemble des boucles necessaires au traitement et/ou a calculer les sequences d'operations specifiques, tiennent compte de ce mode de parcours.
L'emplacement memoire dans lequel sont stockees les donnees depend, par exemple, du moment auquel elles seront reutilisees. Ainsi, les donnees pourront etre stockees dans des registres, dans une memoire rapide, ou encore dans une memoire lente. Dans une realisation, la determination du mode de parcours comprend 1'etape de determiner, quelle(s) operation(s) specifique(s) de la sequence d'operations specifiques est (sont) effectuee(s) par chaque processeur, chacune des operations etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats. En outre, le procede comprend 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
Dans une realisation, la determination du mode de parcours comprend 1'etape de determiner, a chaque instant relatif de la periode, quelle(s) operation(s) specifique(s) de la sequence d' operations specifiques est (sont) effectuee (s) par chaque processeur, chacune des operations etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats. En outre, le procede comprend 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
Le procede comprend en outre 1'etape de calculer les donnees formatees specifiques en fonction des operations specifiques et du mode de parcours determine.
La notion d'echelle relative et de position relative de deux blocs logiques permet notamment, sans que la liste soit limitative, de: -combiner plusieurs blocs logiques, et/ou - changer d'echelle, - et/ou realiser des filtres sur des voisinages, - et/ou changer de representation. Dans le cadre de 1'invention, les blocs logiques sont de plusieurs types selon 1'operation generique, par exemple dans le cas on 1'objet est une image, - au moms un bloc logique est de type << brut >>, et/ou - au moms un bloc logique est de type rouge, et/ou - au moms un bloc logique est de type vert, et/ou - au moms un bloc logique est de type bleu, et/ou - au moms un bloc logique est representable par des donnees sur 8 bits, et/ou - au moms un bloc logique est representable par des donnees sur 16 bits.
Dans une realisation, au moms un bloc logique contient des donnees multi echelles, par exemple des donnees a echelle 1, '- et 1/8. Ceci permet de realiser des operations generiques a plusieurs echelles, et de combiner ensuite les resultats Un algorithme peut, par exemple, sans que la liste soit 25 limitative, correspondre dans le cas on 1'objet est une image a : - Un calcul, notamment de statistiques, pour une balance des blancs, et/ou - un calcul, notamment de statistiques, pour une 30 exposition automatique, et/ou - un calcul, notamment de statistiques, pour une mise au point automatique, et/ou - un calcul, notamment de statistiques, pour une amelioration de contraste automatique, et/ou une conversion image brute en image visible (<< image pipe >> en anglais) , et/ou une correction de defauts d'optique, et/ou une correction de defauts de capteur, et/ou une correction de defauts d'imageur, et/ou un traitement, notamment d'amelioration de nettete, et/ou un traitement, notamment d'amelioration de rendu couleur, et/ou un traitement, notamment d'amelioration de rendu du contraste, et/ou un traitement, notamment d'amelioration de rendu des details, et/ou une reduction de bruit, et/ou 15 une mesure, et/ou une compression, et/ou une decompression, et/ou une interpolation ou grossissement (zoom), et/ou un scan, et/ou 20 un effet special. L'objet a traiter est generalement, lors du traitement, decompose en sous-objets, c'est-a-dire en groupes d'informations elementaires ayant une taille et une forme determinees, tant dans 1'espace que dans le temps ou les autres dimensions de 25 1'objet.
Les sous-objets sont des ensembles d'informations elementaires ayant une forme et une taille qui, selon les cas, dependent des caracteristiques de la plateforme, notamment de la 30 taille et du type de memoire ainsi que, dans le cas d'un processeur vectoriel, de la taille d'un vecteur, mais aussi des caracteristiques de 1'objet a traiter. Differents types de decomposition en sous-objets possibles, sans recouvrement sont illustrees par les figures la 35 a 1d. Sur ces figures, on voit qu'une meme image peut titre 10 decoupee en lignes (lignes 90, 91, 92 et 93 sur la figure la), en colonnes (colonnes 94, 95, 96 et 97 sur la figure lb) , en sous-objets d'une tout autre forme (formes 70, 71, 72 et 73 sur la figure lc) , ou encore en rectangles (formes 60, 61, 62, 63, 64, 65, 66 et 67 sur la figure 1d). Dans le cas on les sous-objets sont sans recouvrement, it faut acceder a des informations elementaires d'un moms un autre sous-objet pour traiter les informations elementaires d'un sous-objet sans perdre de bord, par exemple lors du calcul de filtres. La decomposition en sous-objet peut egalement dependre de la sequence d'operations generique, notamment du nombre et du type de filtres, horizontaux ou verticaux, presents dans cette sequence.
Par ailleurs, lorsque certaines des operations generiques ont des deplacements non nuls, it est necessaire, pour qu'aucune information elementaire ne soit perdue lors de 1'execution de 1'algorithme, de decomposer 1'image en sous-objets ayant un recouvrement non nul.
Cette configuration est illustree sur les figures le et if : la figure le represente un sous-objet compose de 6x6 informations elementaires dans le cas on la sequence d'operations perd un pixel sur chaque bord, et la figure if represente un objet comprenant 100 informations elementaires.
Sur cette figure, on voit que les sous-objets sont quatre rectangles 80, 82, 83 et 84 contenant chacun 36 informations elementaires. Le rectangle 80 est constitue des 36 informations elementaires situees en haut a gauche dans 1'image, et le rectangle 82 est constitue des 36 informations elementaires en haut a droite de 1'image. Ainsi, les 8 informations elementaires 86 sont communes aux deux sous-objets 80 et 82. De meme, les 8 informations elementaires 85 sont communes aux deux sous-objets 80 et 83 ; les 8 informations elementaires 88 sont communes aux deux sous-objets 82 et 84, et les 8 informations elementaires 89 sont communes aux deux sous-objets 83 et 84 Enfin, les 4 informations elementaires 87 sont communes aux quatre sous-objets 80, 82, 83 et 84. Dans le cas on l'objet est une image, dans une realisation 1'image est decomposee en sous-objets rectangulaires juxtaposes, les sous-objets etant destines a titre traites, par exemple, de gauche a droite puis de haut en bas. Selon la plateforme, les sous-objets sont choisis et stockes selon 1'une des facons suivantes, sans que la liste soit 10 limitative : - dans le cas d'un processeur de traitement du signal disposant d'une petite memoire rapide et d'une grosse memoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement d'un sous-objet sans acces a la memoire 15 lente ; on pourra, par exemple, prendre des sous-objets correspondant a des carres de 32x32 pixels, le resultat du calcul sur le sous-objet precedent etant transfers en memoire lente pendant le calcul relatif au sous-objet courant, et pendant le transfert de la memoire lente vers la memoire rapide 20 des donnees necessaires au calcul relatifs au sous-objet suivant, - dans le cas d'un processeur scalaire disposant d'une petite memoire cache et une grosse memoire lente, la taille des sous-objets est choisie pour pouvoir effectuer le traitement 25 d'un sous-objet en utilisant la memoire cache le plus possible; on pourra, par exemple, prendre des sous-objets correspondant a des carres de 32x32 pixels ou des sous-objets de 1 pixel ou des sous-objets de 4 pixels, notamment dans le cas d'une image brute (<< raw >>), 30 - dans le cas d'un processeur vectoriel, la taille des sous-objets est choisie comme egale a, ou multiple de, la taille d'un vecteur que la plateforme sait traiter et stocker, on pourra, par exemple, prendre des sous-objets correspondant a 64 pixels horizontaux.
Dans le cas on 1'objet est d'un autre type qu'une image, la decomposition en sous-objet peut titre adaptee de maniere similaire a la plateforme.
Dans les langages tels le C, cette decomposition en sous-objets et le codage des boucles correspondant doit titre explicite en fonction de la plateforme et realise manuellement pour chaque plateforme. Il existe des compilateurs vectoriels qui essaient d'extraire, a partir des boucles codees, explicitement les sous-objets, mais leur efficacite est limitee car ils doivent extraire le concept de 1' algorithme avant de le coder automatiquement, ce qui est tres difficile. L'invention permet ainsi d'automatiser et de rendre plus efficace 1'adaptation a une plateforme quelconque.
Le tableau suivant resume les principales differences entre 1'invention et les langages connus : Invention Langages Exemple du C connus Sequence Codee Codee Codee d'operations manuellement manuellement manuellement D~placement Codage N~cessite un N~cessite un relatif et automatique et codage manuel codage manuel Echelle relative optimise ( des boucles et des boucles et boucles, acces acces memoire acces memoire memoire... ) Boucles Codage Automatique et Codage manuel automatique et lent dans optimise certains cas (Java) Organisation des Codage Automatique et Codage manuel donnees en automatique et lent dans memoire optimise certains cas (Java) Gestion des Codage N~cessite un N~cessite un bards automatique et codage manuel codage manuel optimise Echange memoire Codage Necessite une Necessite une lente a memoire automatique et optimisation optimisation rapide optimise ou un codage ou un codage manuel manuel Allocation des Automatique automatique automatique registres Ordonnancement Automatique automatique automatique des instructions (<< scheduling >>) Une fois cette decomposition en sous- objets effectuee, dans une realisation, on peut attribuer des operations specifiques aux processeurs. A chaque instant, une operation specifique peut titre effectuee par aucun, un ou plusieurs processeurs. Ce choix depend, notamment de 1'architecture de la plateforme, a savoir le type de processeur et 1'agencement des differents processeurs. De cette architecture depend egalement le transit des donnees, a savoir les informations elementaires et/ou resultats d'operations specifiques d'un processeur a 1'autre. Dans ce cas, si on appelle T le temps entre deux demarrages successifs de deux sous-traitements, a un instant t+k*T, on t est un instant quelconque et k un entier quelconque, la plateforme effectue sur au moins un sous-objet j les memes operations que celles effectuees a 1'instant t sur au moins un sous-objet i, ces operations specifiques s'appliquant a des informationselementaires et/ou des resultats d'operations specifiques ayant la meme position relative dans leur(s) sousobjet(s) respectif(s). Ceci signifie que taus les sous- traitements sont identiques, ce qui permet d'avoir un code de taille relativement faible puisqu'il suffit d'ecrire explicitement un des sous-traitements, et de 1'appliquer plusieurs fois. T est le temps qui s'ecoule entre deux demarrages successifs de deux sous-traitements, mais cette valeur n'est pas forcement egale au temps necessaire a 1'execution complete d'un sous-traitement. En effet, on peut demarrer un sous-traitement avant que le precedent soit termine, ce qui peut, par exemple, permettre de gagner du temps. Ce cas de figure est illustre par la figure 2 sur laquelle on voit que le sous-traitement ST1 n'est pas termine au moment on le sous-traitement ST2 commence. De meme, le soustraitement ST2 est toujours en train de s'executer lorsque le sous-traitement ST3 demarre. Dans une realisation, 1'attribution des operations specifiques aux processeurs et/ou le choix du moment auquel est realisee chaque operation specifique est determine(e) par le compilateur de la plateforme a partir des donnees formatees specifiques. 15 Afin de pouvoir optimiser au maximum 1'algorithme, it peut titre utile de rendre le traitement a effectuer le plus regulier possible. Pour cela, dans une realisation de 1'invention, le procede comprend 1'etape, dans le cas on le 20 nombre d'operations specifiques a appliquer sur chaque sous-objet n'est pas un multiple du nombre de processeurs Q et/ou le nombre d'informations elementaires de 1'objet a traiter n'est pas un multiple de N, de raj outer des operations specifiques sans effet et/ou des informations elementaires nulles, de 25 maniere que le nombre d'operations specifiques soit un multiple de Q et que le nombre d'informations elementaires soit un multiple de N.
Dans une realisation, la sequence d'operations 30 generiques s'applique a au moms un ensemble d'informations elementaires, denomme bloc logique, et les donnees formatees generiques comprennent en outre des secondes donnees, pour les operations generiques impliquant au moms deux blocs logiques, se rapportant a la position relative et/ou une echelle relative, 35 notamment spatiale ou temporelle, des blocs logiques les uns par 10 rapport aux autres, et dans lequel les informations elementaires et/ou resultats d'operations specifiques sur lesquels doit s'appliquer chaque operation specifique dependent des secondes donnees et dans lequel, dans le cas on au moms une position relative des blocs logiques les uns par rapports aux autres est non nulle, au moms une operations specifiques fait intervenir, directement ou indirectement, au moms une information elementaire d'un autre sous-objet. Dans ce cas, on peut calculer la position et 1'echelle relative entre deux blocs logiques quelconques en utilisant les secondes donnees. On peut en deduire la taille de chaque bloc physique correspondant, ainsi que son echelle et la position absolue de chaque element du bloc physique. Certaines des operations font appel a plusieurs blocs logiques. On a vu que, dans ce cas, on fournit des secondes donnees relatives aux positions des blocs logiques mis en jeu les uns par rapport aux autres. Les positions relatives et les echelles relatives, notamment spatiales et/ou temporelles, peuvent correspondre a divers concepts selon la nature de 1'objet. Elles s'appliquent entre 2 blocs quelconques, quel que soit leur type (dans le cas d'une image comme decrit plus haut un bloc logique peut titre notamment brut, rouge, vert, 8 bits...). Dans le cas on 1'objet est une image fixe a pixels carres, la position absolue ou relative peut correspondre dans une realisation a 2 valeurs (verticale et horizontale) et 1'echelle absolue ou relative a 2 valeurs (verticale et horizontale) ; les pixels de la ligne du haut d'un objet peuvent avoir comme positions absolues (0 ;0) (0 ;1) (0 ;2) ..., et les pixels de la n ieme ligne peuvent avoir comme positions absolues (n ;0) (n ;1) (n ;2); dans ce cas, les positions relatives peuvent titre codees de la facon suivante :(-1 ; 0) indique en haut, (0 ;1) indique a droite et (2 ; -2) indique 2 pixels au dessous et 2 a gauche ; une echelle relative de (0,5 ;0,5) correspond alors a une resolution de moitie dans chaque direction. De maniere plus generale, une combinaison de deplacement relatif et d'echelle relative peut etre codee a 1'aide de 2 fonctions f et g de la facon suivante : (f(x ;y) ;g(x ;y))) pour chaque pixel de position absolue x,y. I1 est a noter qu'une regle d'arrondi est necessaire afin de prendre, par exemple, le pixel le plus proche. Ainsi : - une position relative au-dessus se code avec f(x ;y)= - 1 et g(x ;y)=0 - une echelle relative de 0,7 se code avec f(x ;y)= 0, 7* (x-x0) et g(x ; y) =0, 7* (y-y0) ; xO et yO correspondant a la position absolue invariante ; - une correction de distorsion se code avec f et g 15 correspondant au champ de distorsion - un changement de format YUV 4 :2 :2 a savoir YYUV a partir des informations de luminance et de chrominances Y, U et V separees peut utiliser pour obtenir Y1 Y2 xx xx Y3 Y4 xx xx ... a partir de Y1 Y2 Y3 Y4
. les fonctions suivantes f(x ;y)= (x- 20 x0) * 0, 5 si x pair et (x+l-x0) * 0, 5 si x-xO impair et f(y)=y-yO ; xO et yO correspondant a un parametre relatif a une position absolue; La liste suivante, non limitative, donne d'autres exemples de realisation avec divers types d'objets: 25 - dans le cas on 1'objet est une image fixe a pixels hexagonaux disposes par ligne, deux lignes successives etant decalees d'un demi-pixel, la position absolue ou relative et 1'echelle absolue ou relative peuvent correspondre chacune a 2 valeurs (verticale et horizontale); les pixels de la ligne du 30 haut d'un objet peuvent avoir comme positions absolues (0 ;0) (0 ;1) (0 ;2) ..., et les pixels de la n ieme ligne peuvent avoir comme positions absolues (n ;0,5) (n ;1,5) (n ;2,5) si la ligne est impaire, et (n ;0) (n ;1) (n ;2) si la ligne est paire; la position relative peut correspondre a 2 valeurs (verticale et 35 horizontale), par exemple (-0,5 ; 0,5) indique en haut a droite, (0, 1) indique a droite et (-0,5 ; 1,5) indique le pixel situe a droite du pixel en haut a droite ; une echelle relative de (0,5 ;0,5) correspond alors a une resolution de moitie dans chaque direction. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre codee a 1'aide de 2 fonctions f et g de la facon suivante : (f(x ;y) ;g(x ;y))) pour chaque pixel de position absolue x,y. I1 est a noter qu'une regle d'arrondi est necessaire afin de prendre, par exemple, le pixel le plus proche. - dans le cas on 1'objet est une image animee a pixels carres, la position absolue ou relative peut correspondre a 3 valeurs (verticale, horizontale et temporelle), par exemple (-1 ; 0 ;0) indique un pixel situe en haut dans la meme image, (0 ; 0 ; -1) indique le pixel ayant la meme position dans 1'image precedente et (2 ; -2, -1) indique le pixel situe 2 pixels au dessous et 2 a gauche dans 1'image precedente. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre codee a 1' aide de 3 fonctions f, g, h de la facon suivante : (f(x ;y ;t) ;g(x ;y ;t)) ; h(x ; y ;t)) pour chaque pixel de position absolue x,y a 1'instant t. I1 est a noter qu'une regle d'arrondi est necessaire afin de prendre, par exemple, le pixel le plus proche. dans le cas on 1'objet est un son monocanal, la position absolue ou relative peut correspondre a 1 valeur (temporelle), par exemple (-1) indique 1'instant precedent, et (2) indique 2 instants apres, une fonction f(t) permet alors de coder un deplacement et echelle relatifs. Une regle d'arrondi etant utilisee pour prendre 1'instant le plus proche. - dans le cas on 1'objet est un son multi canal, la position absolue ou relative peut correspondre a 2 valeurs (temporelle, canal), par exemple (-1, 0) indique 1'instant precedent du meme canal, et (2,1) indique 2 instants apres du canal suivant, ordonnes par exemple spatialement de facon circulaire. De meme, une combinaison de deplacement relatif et d' echelle relative peut titre codee a 1' aide de 2 fonctions f, g de la facon suivante : (f (t ;c) ; g (t ;c)) pour chaque echantillon sonore de position a 1'instant t pour le canal c. Il est a noter qu'une regle d'arrondi est necessaire afin de prendre, par exemple, 1'instant et le canal le plus proche. - dans le cas on 1'objet est un maillage de simulation, la position absolue ou relative peut correspondre a n valeurs correspondant chacune a une dimension spatiale ou temporelle fonction de la topologie du maillage. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre code a 1'aide de n fonctions. I1 est a noter qu'une regle d'arrondi est necessaire afin de prendre, par exemple, le nceud et 1'instant le plus proche. - dans le cas on 1'objet est un signal module, la position absolue ou relative peut correspondre a n valeurs correspondant respectivement au temps, le cas echeant au canal frequentiel (emission ou reception sur plusieurs frequences) et le cas echeant (plusieurs emetteurs ou recepteurs disposes spatialement) a une dimension spatiale. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre codee a 1'aide de n fonctions, et une regle d'arrondi doit titre choisie. - dans le cas on 1'objet est un ensemble de mesures, la position absolue ou relative peut correspondre a n valeurs correspondant chacune a une dimension de 1'objet qui, selon le cas peuvent titre de nature temporelle, spatiale, frequentielle, phase ou autre. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre codee a 1'aide de n fonctions et une regle d'arrondi doit titre choisie. - dans le cas general on 1'objet est de dimension n, la position absolue ou relative peut correspondre a n valeurs correspondant chacune a une dimension de 1'objet qui, selon le cas, peuvent titre de nature temporelle, spatiale, frequentielle, phase ou autre. De meme, une combinaison de deplacement relatif et d'echelle relative peut titre codee a 1'aide de n fonctions et une regle d'arrondi doit titre choisie...DTD: Lorsque plusieurs operations mettent en jeu un deplacement nul, it n'est pas utile d'inscrire les resultats de chacune des operations specifiques en memoire, et de les refire pour 1'operation suivante, ces instructions de stockage et de relecture perdent du temps et ne presentent aucun avantage particulier pour le traitement. Ainsi, dans une realisation, les donnees formatees specifiques comprennent des informations concernant le groupement des operations specifiques, ce groupement consistant en la formation de paquets de une ou plusieurs operations specifiques destinees a etre executees sans conserver les resultats de chaque operation specifique non utiles pour un autre sous-traitement. Dans une realisation 1'ensemble des operations 15 specifiques de la sequence sont groupees. Dans une realisation, les donnees formatees specifiques ne comportent qu'un seul jeu de boucles imbriquees.
Par ailleurs, certaines operations specifiques peuvent 20 s'appliquer sur des resultats d'operations utilises au prealable dans un autre sous-traitement. Par exemple, lorsque la sequence d'operations specifiques contient un filtre mettant en jeu trois lignes issues de calculs intermediaires, dans le cas dune image decomposee en sous-objets correspondant a des lignes : 25 1'operation filtre appliquee au premier sous-objet, c'est-a-dire a la premiere ligne, utilise egalement, par exemple, les deuxieme et troisieme lignes de 1'image. Ces deuxieme et troisieme lignes seront egalement utilisees par cette meme operation filtre lorsqu'elle s'appliquera au deuxieme sous- 30 objet, et meme au troisieme sous-objet pour ce qui est de la troisieme ligne. Dans ce cas, it peut etre interessant de garder en memoire ces lignes de pixels pour ne pas avoir a les recalculer ulterieurement, ce qui est couteux en calculs.
Dans le cas on plusieurs filtres sont utilises sur des donnees differentes, it peut etre utile de memoriser d'autres donnees de maniere similaire. Ainsi, dans une realisation, les donnees formatees specifiques comprennent des instructions permettant de garder en memoire de la plateforme au moins une partie des resultats d'operations specifiques necessaires aux operations specifiques ulterieures pour un autre sous-traitement.
Dans certains cas, les donnees formatees specifiques comprennent des informations concernant le transfert des resultats d'operations specifiques et/ou d'informations elementaires en memoire d'un emplacement memoire de la plateforme vers un autre. Le cinquieme exemple de traduction decrit plus bas contient de tels transferts. Dans une realisation, au moins une operation specifique peut, quant a elle, etre telle qu'elle a un effet de bord, c'est-a-dire qu'il y a une perte de certaines informations se trouvant au bord des sous-objets sur lesquels sont appliquees ces operations. Pour eviter ces effets de bords, on decompose 1'image en sous-objets qui ont un recouvrement, c'est-a-dire qu'ils ont certaines informations elementaires communes. Ainsi, les donnees formatees specifiques comprennent des instructions pour que des resultats d'operations specifiques soient calcules plusieurs fois dans la plateforme, de maniere a ne perdre aucune information au moment de 1'execution des operations specifiques, notamment dans le cas on les sous-objets ont un recouvrement dans au moins une dimension. Le cinquieme exemple de traduction decrit plus bas contient un tel recouvrement.
Dans une realisation, les donnees formatees specifiques contiennent des informations d'adressage pour permettre a la plateforme d'acceder a au moins une partie des resultats d'operations specifiques et/ou informations elementaires en memoire, ces informations d'adressage etant sous la forme << adresse de base + decalage ou << adresse de base + decalage modulo (taille d'une memoire tampon) >>, le decalage etant constant pour les resultats issus d'une meme operation specifique d'un sous-traitement a 1'autre. Dans une realisation, on modifie 1'adresse de base pour chaque sous-traitement. De preference la memoire tampon est integree dans 1'une des memoires de la plateforme de traitement.
Dans une realisation, le procede comprend 1'etape de calculer le decalage en fonction de 1'ordre des operations specifiques, de maniere a fournir a la plateforme des adresses d'emplacements memoire vide ou contenant un resultat d'operation specifique ou une information elementaire qui nest plus utilisee, afin de stocker des resultats d'operations specifiques. Ce calcul se fait en tenant compte de differents parametres, notamment des operations specifiques, afin de ne pas effacer de la memoire des informations qui sont utilisees ulterieurement dans un autre sous-traitement ou par une autre operation specifique, tel que decrit precedemment. On obtient ainsi, avec un calcul d'adresse simple, et en reutilisant la memoire, un buffer circulaire permettant de stocker les donnees intermediaires necessaires aux calculs ulterieurs. Notamment, dans le cas d'une image on les traitements sont effectues par ligne, on conserve les lignes utilisees en entree des filtres verticaux.
Pour appliquer les operations specifiques sur des sous-objets, it est generalement interessant d'utiliser des boucles afin de reduire la taille du code et de le rendre plus regulier. Ainsi, dans une realisation, le traitement comporte le calcul d'au moms une boucle, le nombre d'iterations de la ou des boucles et, quand it y a plusieurs boucles, les imbrications des boucles, en fonction du mode de parcours. Les exemples de traduction ci-apres montrent qu'il est possible de calculer automatiquement les boucles en fonction de la plateforme, contrairement aux langages connus on les boucles sont codees manuellement en fonction de la plateforme. Ces boucles peuvent, par exemple, titre utilisees pour parcourir les sous-objets, notamment dans le cas on 1'objet a traiter est une image decoupee en sous-objet de forme rectangulaire, et on on choisit de les parcourir soit horizontalement, soit verticalement. De la meme facon, les donnees formatees specifiques comprennent dans certains cas des variables temporaires 10 necessaires au traitement.
Certaines operations specifiques utilisent des parametres, et, dans ce cas, on traite egalement les valeurs de ces parametres. Ces parametres peuvent par exemple titre des 15 coefficients multiplicateurs. Ces parametres peuvent correspondre, par exemple, sans que la liste soit limitative a : - des coefficients de filtres, - des valeurs de saturation, - des valeurs de decalages, et 20 - des tables de correspondances.
Dans une realisation, les valeurs des parametres utilises par les operations specifiques dependent de la position absolue des souis-objets et/ou de la position absolue dans les sous- 25 objets des informations elementaires mises en jeu, directement ou indirectement, dans ces operations specifiques. Par exemple, dans le cas on 1'objet a traiter est une image, des defauts peuvent apparaitre sur 1'image, dus a 1'optique ayant servi a faire la prise de vue. Ces defauts ne sont en general pas 30 homogenes sur toute 1'image, notamment sur les bords. Dans ce cas, pour compenser ce flou, on n'appliquera pas les memes coefficients de compensation sur taus les pixels de 1'image.
Par exemple, 1'utilisation d'un parametre commun a toutes les informations elementaires pour un filtre permet d'augmenter la nettete de maniere uniforme. Par exemple, 1'utilisation d'un parametre dependant de la position absolue des informations elementaires dans 1'objet a traiter, pour un filtre, permet d'augmenter la nettete de maniere plus importante au bord afin de compenser un defaut optique. Par exemple, 1'utilisation d'un parametre dependant de la position absolue des informations elementaires dans 1'objet a traiter, pour une correction de vignetage, permet d'obtenir une compensation plus forte au bord afin de compenser un defaut optique. Par exemple, 1'utilisation d'un parametre dependant de la position absolue des informations elementaires dans 1'objet a traiter pour un de matricage (<< demosaicing >> en anglais) permet de traiter differemment les pixels rouges, les pixels verts et les pixels bleus d'une image brute issue d'un capteur.
Par exemple, 1'utilisation de secondes donnees, notamment un deplacement, dependant de la position absolue des informations elementaires dans 1'objet a traiter pour un calcul d'agrandissement (<< zoom >>) numerique ou une correction de distorsion permet d'obtenir les pixels necessaires au calcul de 1' interpolation en chaque point. Dans une realisation, la valeur d'un parametre, selon la nature de ce parametre, peut : - titre constante et intrinseque a 1'algorithme ; dans ce cas la valeur de parametre peut, notamment, titre 30 transmise au moyen de traitement ou a la plateforme,et/ou - dependre de la provenance ou la destination de 1'objet, par exemple, dans le cas on 1'objet a traiter est une image issue d'un appareil muni d'une optique donnee, la 35 valeur du parametre peut dependre du type d'optique qui a un impact sur le niveau de flou dans 1'image ; dans ce cas la valeur de parametre peut, notamment, titre transmise au moyen de traitement ou a la plateforme, et/ou -dependre de 1'objet a traiter, par exemple, dans le cas on 1'objet a traiter est une image issue d'un capteur, la valeur du parametre peut dependre du gain du capteur effectivement utilise pour capturer ledit objet qui a un impact sur le niveau de bruit dans 1'image ; dans ce cas, la valeur de parametre peut, notamment, titre transmise, choisie ou calculee par la plateforme, et/ou - dependre de la position absolue de 1'information elementaire dans 1'objet ; dans ce cas la valeur de parametre peut, notamment, titre transmise, choisie ou calculee par la plateforme , et/ou - ne pas dependre de la position absolue de 1'information elementaire dans 1'objet.
La valeur de parametre peut titre determinee simultanement 20 ou a posteriori par rapport a la definition de 1'algorithme. On a vu que la valeur de certains parametres peut varier d'un objet a 1'autre, d'un sous-objet a 1'autre ou d'une information elementaire a 1'autre. Dans ce cas, dans une realisation, on calcule la valeur du parametre a chaque 25 changement. Dans une autre realisation, on calcule a priori les valeurs possibles du parametre, et, a chaque changement, on determine 1'index ou 1'adresse permettant d'acceder a la valeur du parametre, par exemple dans une table. Dans une autre 30 realisation, plus particulierement adaptee aux parametres dont la valeur varie d'un sous-objet a 1'autre en fonction de la position absolue du sous-objet et dont le nombre de valeurs est limite, par exemple les parametres correspondant aux caracteristiques de flou de 1'optique, on determine un nombre 35 limite de jeux de valeurs de parametres, on stocke chaque jeu et pour chaque sous-objet on selectionne le jeu a utiliser, par exemple en calculant une fonction de la position donnant 1'adresse du jeu a utiliser. Comme mentionne precedemment, les parametres sont utilises fors de 1'application de certaines operations specifiques. Pour que cela soit possible, dans une realisation, les donnees formatees specifiques comprennent la (les) valeur(s) des parametres et/ou un code de calcul de la (des) valeur(s) des parametres.
Dans une autre realisation, on choisit la (les) valeur(s) de parametre(s) en fonction de la plateforme de traitement, de sorte que le traitement tienne compte des caracteristiques de cette plateforme. Ainsi, on peut disposer d'un algorithme identique pour plusieurs plateformes, et cet algorithme est adapte a chaque plateforme souhaitee, uniquement en faisant varier ces caracteristiques. Dans une autre realisation, ces valeurs de parametres dependent de 1'objet a traiter.
De preference, les objets a traiter sont des images, et les informations elementaires sont les pixels de cette image. Ainsi, dans une realisation, la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d'image, et les valeurs des parametres sont liees aux caracteristiques de 1'optique et/ou du capteur et/ou de 1'imageur et/ou de 1'electronique et/ou du logiciel de 1'appareil de capture et/ou de restitution d'images. Les caracteristiques peuvent etre, par exemple, des caracteristiques intrinseques fixes pour taus les objets ou variables selon 1'objet, par exemple des caracteristiques de bruit qui varient en fonction du gain d'un capteur. Les caracteristiques peuvent etre identiques pour toutes les informations elementaires ou variables selon la position absolue de 1'information elementaire, par exemple les caracteristiques de flou de 1'optique.
Dans une autre realisation, 1'objet a traiter est un signal sonore numerise, et, dans ce cas, les informations elementaires sont les echantillons sonores de ce signal. Dans ce cas, les positions relatives presentes dans les secondes donnees seront generalement des positions temporelles. I1 peut toutefois arriver que ces positions soient spatiales, notamment dans le cas on 1'objet a traiter est un son present sur plusieurs canaux. Dans une autre realisation de 1'invention, notamment dans le cas de la simulation numerique, 1'objet a traiter est un maillage numerique et les informations elementaires sont les informations spatiales et temporelles caracterisant chaque point du maillage.
Les donnees formatees specifiques decrites ici peuvent etre fournies directement a une plateforme de traitement. Mais elles peuvent egalement etre fournies, dans un langage informatique connu, tel que le C ou le VHDL, a un compilateur destine a traduire ce langage informatique pour la plateforme.
Ceci permet, par exemple, d'utiliser une plateforme existante dotee d'un compilateur, sans avoir a s'occuper de 1'allocation des registres ou du segeuncement temporel des instructions (<< scheduling en anglais >>). L'invention concerne egalement un systeme de traitement de donnees formatees generiques, comprenant des premieres donnees decrivant une sequence d'operations generiques, le systeme fournissant, directement ou indirectement, des donnees formatees specifiques, pour une plateforme determinee comportant Q processeur(s) et au moms une memoire, la plateforme etant destinee a traiter, en fonction des donnees formatees specifiques, un objet constitue d'informations elementaires de meme nature, chaque information elementaire etant representee par au moms une valeur numerique, le systeme comprenant : - des moyens pour traduire les operations generiques en operations specifiques, - des moyens pour determiner 1'ensemble des boucles necessaires au traitement, des moyens pour calculer une sequence d'operations specifiques contenant les boucles ainsi determinees et permettant, directement ou indirectement, de traiter 1'objet conformement aux donnees formatees generiques, la sequence d'operations specifiques etant optimisee pour la plateforme en terme de taille de code et/ou taille memoire et/ou temps de calcul, les donnees specifiques fournies comprenant la sequence d'operations specifiques determinee.
15 Dans une realisation, le systeme comprend : - des moyens pour determiner un mode de parcours des informations elementaires dans la plateforme en fonction de 1'architecture de cette plateforme et des donnees formatees generiques, ces moyens pour determiner ce mode de parcours 20 comprenant des moyens pour choisir et/ou calculer : un groupement d'informations elementaires en sous-objets, comprenant chacun un nombre N d'informations elementaires, multiple de Q, determine en fonction de la plateforme, le traitement dans la plateforme consistant a demarrer 25 periodiquement un sous-traitement, qui consiste a appliquer la sequence d'operations specifiques sur l'un des sous-objets, la forme et le recouvrement des sous-objets, determines en fonction de la plateforme, 30 1'ordre de traitement des sous-objets, determine en fonction de la plateforme, 1'organisation en memoire des donnees destinees a titre conservees pour le traitement des sous-objets ulterieurs, determine en fonction de la plateforme et de la sequence 35 d'operations generiques, et 10 - les moyens pour determiner 1'ensemble des boucles necessaires au traitement et/ou pour calculer la sequence d'operations specifiques tenant compte du mode de parcours.
Dans une realisation, le systeme comprend des moyens pour determiner quelle(s) operations specifique(s) de la sequence d'operations specifiques est (sont) effectuees par chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
Dans une realisation, le systeme comprend des moyens pour determiner, a chaque instant relatif de la periode, quelle(s) operations specifique(s) de la sequence d'operations specifiques est (sont) effectuees par chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
Dans une realisation, le systeme comprend des moyens pour, dans le cas on le nombre d'operations specifiques a appliquer sur chaque sous-objet n'est pas un multiple du nombre de processeurs Q et/ou le nombre d'informations elementaires de 1'objet a traiter n'est pas un multiple de N, ajouter des operations specifiques sans effet et/ou des informations elementaires nulles, de maniere que le nombre d'operations specifiques soit un multiple de Q et que le nombre d'informations elementaires soit un multiple de N.
Dans une realisation, le systeme comprend: - des moyens pour que la sequence d'operations generiques s'applique a au moms un ensembled'informations elementaires denomme bloc logique, des moyens pour recevoir des donnees formatees generiques comprenant des secondes donnees, pour les operations generiques impliquant au moms deux blocs logiques, se rapportant a la position relative et/ou a 1'echelle relative, notamment spatiale ou temporelle, des blocs logiques les uns par rapport aux autres, des moyens pour que les informations elementaires et/ou resultats d'operations specifiques sur lesquels doit s'appliquer chaque operation specifique dependent des secondes donnees et - des moyens pour, dans le cas on au moms une position relative des blocs logiques les uns par rapport aux autres est non nulle, qu'au moms une operation specifique fasse intervenir, directement et/ou indirectement, au moms une information elementaire d'un autre sous-objet.
Dans une realisation, le systeme comprend des moyens pour que les donnees formatees specifiques comprennent des informations concernant le groupement des operations specifiques, ce groupement consistant en la formation de paquets de une ou plusieurs operations specifiques destinees a titre executees sans conserver les resultats de chaque operation specifiques pour un autre sous-traitement.
Dans une realisation, le systeme comprend des moyens pour que les donnees formatees specifiques comprennent des instructions permettant de garder en memoire de la plateforme au moms une partie des resultats d'operations specifiques necessaires aux operations specifiques ulterieures pour un autre sous-traitement.
Dans une realisation, le systeme comprend des moyens pour que les donnees formatees specifiques comprennent des instructions pour que des resultats d'operations specifiques soient calcules plusieurs fois dans la plateforme, de maniere a ne perdre aucune information au moment de 1'execution des operations specifiques, notamment dans le cas on les sous-objets ont un recouvrement dans au moms une dimension de 1'objet.
Dans une realisation, le systeme comprend des moyens pour que les donnees formatees specifiques contiennent des informations d'adressage permettant a la plateforme d'acceder a au moms une partie des resultats d'operations specifiques et/ou informations elementaires en memoire, ces informations d'adressage etant sous la forme << adresse de base + decalage ou << adresse de base + decalage modulo (la taille d'une memoire tampon situee dans la plateforme), le decalage etant constant pour les resultats issus d'une meme operation specifique.
Dans une realisation, le systeme comprend des moyens pour modifier 1'adresse de base pour chaque sous-traitement.
Dans une realisation, le systeme comprend des moyens pour calculer le decalage en fonction de 1'ordre des operations specifiques, de maniere a fournir a la plateforme des adresses d'emplacements memoire vide ou contenant un resultat d'operation specifique ou une information elementaire qui nest plus utilisee, afin de stocker des resultats d'operations specifiques.
Dans une realisation, le systeme comprend des moyens pour calculer au moms une boucle, le nombre d' iterations de la (ou des) boucle(s) et, quand it y a plusieurs boucles, les imbrications des boucles, en fonction du mode de parcours.
Dans une realisation, le systeme comprend des moyens pour traiter en outre au moins un parametre, de facon telle que la (les) valeur(s) du (des) parametre(s) utilise(s) par les operations specifiques depende(nt) de la position dans les sous-objets des informations elementaires mises en jeu, directement ou indirectement, dans ces operations specifiques.
Dans une realisation, le systeme comprend des moyens pour traiter en outre au moins un parametre, de facon telle que les donnees formatees specifiques comprennent la (les) valeur(s) du (des) parametres et/ou un code de calcul de la (des) valeur(s) du (des) parametre(s).
Dans une realisation, le systeme comprend des moyens pour traiter, en outre, au moins un parametre, et comprenant des moyens pour choisir la (les) valeur(s) de parametre(s) en fonction de la plateforme de traitement, de sorte que le traitement tienne compte des caracteristiques de cette plateforme.
Dans une realisation, le systeme comprend des moyens pour traiter en outre au moins un parametre, de facon telle que la (les) valeur(s) du (des) parametre(s) depende(nt) de 1'objet a traiter.
Dans une realisation, le systeme comprend des moyens 30 pour que 1'objet a traiter soit une image et pour que les informations elementaires soient des pixels de cette image.
Dans une realisation, le systeme comprend des moyens pour que la plateforme de traitement fasse partie d'un appareil 35 de capture et/ou de restitution d'image, et pour que la (les) valeur(s) du (des) parametre (s) soi (en) t liee (s) aux caracteristiques de 1'optique et/ou du capteur et/ou de 1'imageur et/ou de 1'electronique et/ou du logiciel de 1'appareil de capture et/ou de restitution d'images.
Dans une realisation, le systeme comprend des moyens pour que 1'objet a traiter soit un signal sonore numerise et pour que les informations elementaires soient des echantillons sonores de ce signal.
Dans une realisation, le systeme comprend des moyens pour que 1'objet a traiter soit un maillage numerique et pour que les des informations elementaires des informations spatiales et temporelles caracterisant chaque point du maillage. 15 D'autres caracteristiques et avantages de 1'invention apparaitront avec la description non limitative de certains de ses modes de realisation, cette description etant effectuee a 1'aide des figures sur lesquelles : 20 Les figures la, 1b, 1c 1d, le et if, deja decrites, representent des exemples de decomposition d'une image en sous-objets, conformement a 1'invention La figure 2, deja decrite, represente un exemple de sequencement de plusieurs sous traitements, 25 la figure 3 represente un dispositif utilisant un procede conforme a 1'invention, la figure 4 represente un exemple d'une sequence d'operations generiques appliquee a plusieurs blocs logiques et a un parametre, 30 la figure 5 represente la structure de donnees formatees specifiques fournies par un procede conforme a 1'invention, les figures 6, 7 et 8 presentent differentes architectures de plateformes pouvant recevoir des donnees formatees 10 specifiques fournies par un procede conforme a 1'invention.
Le dispositif represents sur la figure 3 est utilise pour traiter une image 22, cette image etant un ensemble de pixels representes par au moms une valeur numerique. Dans ce dispositif, on fournit a un moyen de traitement de donnees numeriques 10 des donnees formatees generiques 12. Ce moyen de traitement peut par exemple etre un compilateur. Les donnees formatees generiques, fournies par un procede conforme a 1'invention, comprennent des premieres et secondes donnees 14 qui decrivent des sequences d'operations generiques et qui donnent les positions relatives des blocs logiques impliques dans ces operations generiques. Ces premieres et secondes donnees seront illustrees par la description de la figure 4. Le moyen de traitement 10 recoit egalement en entree un mode parcours 24 choisi ou calcule en fonction des caracteristiques d'une plateforme de traitement 20, telle qu'un appareil de capture ou de restitution d'images. A partir de ces donnees formatees generiques 12 et de ces parametres, le moyen de traitement 10 fournit a la plateforme de traitement 20 des donnees formatees specifiques 18. Les donnees formatees specifiques contiennent differents types de donnees, telles que des donnees concernant 1'organisation des pixels dans la memoire de la plateforme, 1'ordre dans lequel les pixels sont traites par la plateforme ou encore le groupement des operations specifiques effectuees par la plateforme. La plateforme 20 utilise alors ces donnees formatees specifiques 18 pour traiter 1'image 22 qu'elle recoit en entree.
La figure 3 illustre ainsi plusieurs avantages de 1'invention : - on peut rapidement modifier ou remplacer les donnees formatees generiques 12 et les traduire en des donnees formatees specifiques 18 optimisees pour la plateforme. Ceci permet de reduire le temps de mise sur le marche de la plateforme. - on peut rapidement traduire les donnees formatees generiques 12 en des donnees formatees specifiques optimisees pour plusieurs plateforme. Ceci permet egalement de reduire le temps de mise sur le marche de plusieurs plateformes. Le tableau 4 ci-dessous et la figure 4 montrent un exemple de donnees formatees generiques, sous la forme d'une sequence d'operations generiques appliquees a un bloc logique B1. Cette sequence comporte trois operations generiques. Les 15 colonnes du tableau representent, dans 1'ordre : le rang de 1'operation dans la sequence, le nom de 1'operation generique, le bloc logique (sortie) sur lequel est inscrit le resultat de 1'operation generique, c'est-a-dire 20 1'emplacement on se trouverait ce resultat si on reconstituait 1'objet a 1'issue de chaque operation, la premiere entree (entree 1) de 1'operation generique, qui peut etre un bloc logique ou un parametre, la position relative du bloc logique a utiliser par 25 rapport au bloc logique mis en entree 1, s'il y a lieu, la seconde entree (entree 2) de 1'operation generique, qui peut egalement etre un bloc logique ou un parametre, et la position relative du bloc logique a utiliser par rapport au bloc logique mis en entree 2, s'il y a lieu. 30 Les informations se trouvant dans les colonnes << position relative >> sont les informations presentes dans les secondes donnees fournies a un moyen de traitement grace a un procede selon 1'invention. Dans ce tableau, ces informations se 35 trouvent sous la forme << gauche >> et << droite >> pour etre comprehensibles, mais en realite, dans les donnees formatees generiques, elles peuvent egalement etre codees par des valeurs numeriques telles que (0 ;1) et/ou par des fonctions telle que f(x ;y), comme decrit dans les exemples de realisation plus haut. Dans une realisation, une operation generique permet d'obtenir un bloc logique constitue de la position absolue selon une dimension de 1'objet, une autre operation generique dite d'indirection permet d'obtenir un bloc par deplacement et/ou changement d'echelle indique par un deuxieme bloc a troisieme fonctions partir d'un calculs des 1'echelle relative bloc. On peut alors effectuer les donnant la position relative et/ou par exemple 0,5*(x-100) a 1'aide d'operations 1'operation generiques sur les blocs puis utiliser generique d'indirection pour effectuer le deplacement relatif correspondant. Le tableau 4 n'est et/ou le changement d'echelle relatif qu'un exemple de codage, les premieres donnees et secondes donnees peuvent etre codees de diverses facons sous forme tabulee, mais egalement sous forme symbolique, sous forme graphique ou sous toute autre forme. De plus, des informations supplementaires relatives aux types des donnees, aux decalages et saturations ne sont pas representees a des fins de simplification de 1'exemple.
TABLEAU IV Sequence Operation Sortie Entree 1 Position relative Entree 2 Position relative bloc entree 1 bloc entree 2 1 Addition B2 B1 Gauche B1 Droite 2 Table B3 Param 1 B2 3 Multiplication B4 B3 B1 Le premier bloc logique utilise dans cette sequence d' operations est un bloc logique B1 (51). La premiere operation generique est une addition (52) entre le bloc logique B1 decale a gauche(51g), et le bloc logique B1 decale a droite(51d). Le resultat de cette addition est inscrit dans le bloc B2 (53) : B2=Blgauche + Bldroite. La deuxieme operation (54) est une transformation du bloc B2 (53) par rapport a une table. Cette operation a donc en entree le bloc B2 (53) et un parametre Paraml (55) qui represente la table de modification. Le resultat de cette operation est inscrite dans le bloc B3 (56) : B3 = LUT (Paraml, B2). La troisieme et derniere operation (57) de cette sequence est une multiplication de blocs logiques. Cette operation a pour entrees le bloc logique B3 (56) et le bloc logique B1 (51) : B4 = B3*B1. Le bloc logique B4 (58) est ainsi le bloc obtenu a 1'issue de la sequence d'operations generiques.
Les donnees formatees generiques de 1'exemple du tableau 4 sont independantes de la plateforme, de la decomposition de 1'objet en sous-objets, du mode de parcours des informations elementaires de 1'objet, de 1'ordre dans lequel les informations elementaires seront traitees dans la plateforme, ainsi que de 1'organisation en memoire. En effet, les donnees formatees generiques du tableau 1 peuvent titre traduites de diverses facons en donnees formatees specifiques ou en code pour la plateforme, par exemple, sans que la liste soit limitative, selon les traductions suivantes.
Un premier exemple de traduction, bien que non optimal en terme de memoire et de temps de calcul, permet d'illustrer une traduction simple sans passer par une decomposition en sous- objets :
Pour chaque pixel de 1'objet d'entree BP1 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche et de droite, les pixels etant parcourus de gauche a 35 droite puis de haut en bas : Additionner le pixel situe a gauche du pixel courant et le pixel situe a droite, stocker le resultat dans un bloc physique BP2 (correspondant au bloc logique B2).
Pour chaque pixel de BP2 parcouru de gauche a droite puis de haut en bas appliquer la table au pixel courant, et stocker le resultat dans un bloc physique BP3 (correspondant au bloc logique B3) Pour chaque pixel de BP3 parcouru de gauche a droite puis de haut en bas Multiplier le pixel courant par le pixel correspondant de BP1 et stocker le resultat dans le bloc 15 physique de sortie BP4 (correspondant au bloc logique B4)
Un deuxieme exemple de traduction montre que l'on peut diminuer la taille de la memoire utilisee sans changer les donnees formatees generiques. En effet, dans le premier exemple 20 on utilise 4 blocs physiques de taille voisine de 1'image. On peut n'utiliser que 2 blocs physique en utilisant la meme memoire pour BP2, BP3 et BP4. On obtient la traduction suivante :
25 Pour chaque pixel de 1'objet d'entree BP1 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche et de droite, les pixels etant parcourus de gauche a droite puis de haut en bas : Additionner le pixel situe a gauche du pixel 30 courant et le pixel situe a droite, stocker le resultat dans un bloc physique BP2 (correspondant au bloc logique B2).
Pour chaque pixel de BP2 parcouru de gauche a droite puis de haut en bas appliquer la table au pixel courant, et stocker le resultat dans un bloc physique BP2 (correspondant maintenant au bloc logique B3) Pour chaque pixel de BP2 parcouru de gauche a droite puis de haut en bas : Multiplier le pixel courant par le pixel correspondant de BP1 et stocker le resultat dans le bloc physique de sortie BP2 (correspondant maintenant au bloc logique B4)
Un troisieme exemple de traduction montre que l'on peut reduire le temps de calcul sans changer les donnees formatees generiques. En effet, dans le deuxieme exemple, on utilise 2 blocs physiques de taille voisine de 1' image, mais on ecrit 3 fois entierement le bloc physique BP2, on lit 2 fois entierement le bloc physique BP1 et on lit 2 fois entierement le bloc physique BP2. On peut se limiter a seulement une lecture et une ecriture avec un mode de parcours different et des blocs differents. Ceci reduit le nombre d'instructions necessaires, mais egalement les acces a la memoire. On obtient la traduction suivante :
Pour chaque pixel de 1'objet d'entree BP1 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche et de droite, les pixels etant parcourus de gauche a droite puis de haut en bas : Additionner le pixel situe a gauche du pixel courant et le pixel situe a droite, appliquer la table au resultat et multiplier la sortie de la table par le pixel courant , stocker le resultat dans le bloc physique courant de sortie BP2 (correspondant au bloc logique B4)
Dans un quatrieme exemple, plus particulierement 35 adapte a un processeur scalaire avec cache, on ecrit le resultat dans la meme zone memoire que 1'entree. Ceci permet de reduire encore la taille de la memoire et de rendre local les acces memoire, ce qui est tres favorable dans le cas d'une memoire cache ou une memoire paginee. On obtient ainsi la traduction suivante :
Pour chaque pixel de 1'objet d'entree BP1 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche et de droite, les pixels etant parcourus de gauche a 10 droite puis de haut en bas : Additionner le pixel situe a gauche du pixel courant et le pixel situe a droite, appliquer la table au resultat et multiplier la sortie de la table par le pixel courant , stocker le resultat dans le bloc physique courant de 15 sortie BP1 a la place du pixel situe a la gauche du pixel courant (le pixel de gauche n'est plus utilise par la suite, contrairement au pixel courant qui va devenir le pixel de gauche pour la prochaine iteration ; BP1 correspond partiellement au bloc logique B4 et partiellement au bloc logique B1) 20 Un cinquieme exemple de traduction est particulierement adapte a un processeur de traitement du signal disposant d'une petite memoire rapide et d'une grosse memoire lente, chaque sous-objet etant un rectangle, par exemple 32x32, 25 ou toute autre valeur maximisant 1'utilisation de la memoire rapide, les rectangles etant jointifs. On obtient ainsi la traduction suivante :
30 Pour chaque sous-objet, les sous-objets etant parcourus de gauche a droite puis de haut en bas : Lancer un transfert par un mecanisme de DMA (<< direct memory access >>) du bloc physique d'entree suivant depuis la memoire lente vers la memoire rapide, correspondant au sous-objet suivant etendu sur une colonne supplementaire a gauche et a droite, soit 32x34, Lancer un transfert par un mecanisme de DMA (<< direct memory access >>) du bloc physique de sortie precedent 5 depuis la memoire rapide vers la memoire lente On prend en entree le bloc physique correspondant au sous-objet courant etendu sur une colonne supplementaire a gauche et a droite, soit 32x34 et obtenu a 1'issue du DMA de 1'iteration precedente 10 Pour chaque pixel du bloc physique d'entree (correspondant au bloc logique B1) en excluant les deux colonnes de gauche et de droite parcouru de gauche a droite puis de haut en bas : Additionner le pixel situe a gauche du 15 pixel courant et le pixel situe a droite, appliquer la table au resultat et multiplier la sortie de la table par le pixel courant du bloc, stocker le resultat dans le bloc physique courant de sortie (correspondant au bloc logique B4)
20 Un sixieme exemple de traduction est particulierement adapte a un processeur vectoriel capable d'appliquer un meme calcul aux differents pixels du vecteur, chaque sous-objet etant un rectangle, par exemple 64 pixels horizontaux, ou toute autre valeur egale a la taille d'un vecteur que la plateforme sait 25 traiter et stocker. Cette traduction ne necessite aucune memoire car un seul vecteur est traite a la fois. On obtient ainsi la traduction suivante :
Pour chaque sous-objet V1 de 1'objet d'entree BP1 30 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche, les sous-objets etant parcourus de gauche a droite puis de haut en bas : En debut de chaque ligne, creer un vecteur VO contenant, a droite, les 2 pixels de gauche de la ligne Extraire de VO et V1, le vecteur V2 correspondant aux deux pixels de droite de VO et aux pixels de gauche de V1, en excluant les 2 pixels de droite de VO; Additionner V1 et V2 pour obtenir V2, appliquer la table a chaque pixel de V2 pour obtenir V2, Extraire de VO et V1, le vecteur V3 correspondant au pixel de droite de VO et aux pixels de gauche de V1 en excluant le pixel de droite de VO; copier V1 dans VO pour 1'iteration suivante ; multiplier V2 par V3 pour obtenir V2, stocker le resultat V2 dans le bloc physique courant de sortie.
Les exemples de traductions ci-dessus montrent qu'il est possible, a partir des memes donnees formatees generiques, de traduire de plusieurs facons avec des structures memoire, des boucles et un degre de parallelisme adaptes a des plateformes tres diverses. En particulier on peut : - reduire la taille du code en n'utilisant qu'une seule boucle, et/ou - reduire la taille memoire, a 0 dans 1'exemple, mais dans le cas plus general on it y a des filtres verticaux, it faut quand meme quelques lignes de memoire si on veut eviter de refaire des calculs pour les donnees en entree des filtre verticaux, et/ou - reduire le nombre d'instructions necessaires, notamment en 25 groupant les boucles, et/ou -s'adapter a toute taille de vecteur, et/ou - s'adapter a toute architecture memoire.
Afin de simplifier, les exemples produisent une image 30 plus petite que 1'image d'entree. On peut facilement, si necessaire, obtenir une image de sortie de taille identique a 1'image d'entree en ajoutant du code en debut et fin de chaque ligne pour dupliquer le pixel du bord.
La figure 5 represente la structure des donnees formatees specifiques a la sortie d'un moyen de traitement utilisant un procede conforme a 1'invention. Les donnees formatees specifiques sont calculees par un moyen de traitement a partir de donnees formatees generiques 32 fournies au moyen de traitement et d'un mode de parcours 34 determine par ce moyen de traitement. Les donnees formatees generiques comportent des premieres donnees 36 contenant des donnees 38 decrivant au moms une operation generique ou sequence d'operations a realiser par le moyen de traitement. Les donnees formatees generiques comportent egalement des secondes donnees 40 se rapportant a la position et 1'echelle relative de blocs logiques les uns par rapport aux autres, pour les operations generiques impliquant au moms deux blocs logiques. A partir des ces donnees formatees generiques et du mode de parcours 34, le moyen de traitement fournit des donnees 42 relatives aux operations specifiques, et des donnees 44 relatives aux boucles. Ces donnees 42 et 44 font partie des donnees formatees specifiques 30 .
Nous allons maintenant decrire plusieurs exemples de modes de parcours pouvant etre determines par un procede conforme a 1'invention. Chacun de ces modes de parcours est destine a etre utilise dans une plateforme dont 1'architecture est representee sur 1'une des figures 6 a 8.
Dans un premier exemple, illustre par la figure 6, la plateforme de traitement comporte cinq processeurs chaines en une dimension. Ceci signifie que le resultat des calculs sortant du processeur Proc A est utilise en entree du processeur ProcB, et ainsi de suite. Le resultat des calculs sortant du processeur ProcE est applique a 1'entree du processeur ProcA. Chacun des processeurs est dote d'une memoire de capacite limitee, notee MemA a MemE Cette unite de memoire est destinee a stocker les valeurs de parametres utiles aux operations specifiques effectuees par le processeur, ou des informations elementaires ou resultats d'operations qui sont destines a titre reutilises rapidement par le processeur.
Dans ce premier exemple, le traitement consiste a appliquer 5 aux informations elementaires composant 1'objet une sequence de huit operations notees OP1 a OP8. Afin de traiter 1'objet, celui-ci doit titre decompose en sous-objet de N informations elementaires. N, qui doit titre un multiple de Q (Q = 5, nombres d'unites de calculs), est 10 determine en amont de la plateforme par un procede conforme a 1'invention, en fonction notamment des capacites memoire de la plateforme. Dans 1'exemple N = 5. Par ailleurs, afin d'assurer un sequencement regulier des operations specifiques, un procede conforme a 1'invention 15 cree des operations specifiques sans effet OP9 et OP10 de telle sorte que le nombre d'operations specifiques a realiser sur chaque sous-objet soit un multiple du nombre de processeurs disponibles. En fonction du type des operations specifiques, on affecte 20 chaque operation a effectuer a un processeur. Ici, le processeur A realise OP1 et OP6, le processeur B realise OP2 et OP7, le processeur C realise OP3 et OP8, le processeur D realise OP4 et OP9, et 25 le processeur E realise OP5 et OP10. Chaque processeur execute un jeu d'instructions (InsA a InsE) corespondant aux operations specifiques qui lui ont ete affectees. De cette affectation dependent egalement les valeurs des parametres stockes dans les memoires a capacite limitee. Par 30 exemple, si OP1 est une multiplication par 2, la memoire MemA contiendra le chiffre 2. Une fois ces affectations realisees, les operations se deroulent selon un sequencement decrit par le tableau I cidessous : Dans ce tableau, les instants d'avancement du processus sont notes Ti, T2, T13. Tableau I IE1 1E2 1E3 1E4 1E5 OP1 T1 - ProcA T2 - ProcA T3 - ProcA T4 - ProcA T5 - ProcA OP2 T2 - ProcB T3 - ProcB T4 - ProcB T5 -ProcB T6 - ProcB OP3 T3 - ProcC T4 - ProcC T5 - ProcC T6 - ProcC T7 -ProcC OP4 T4 - ProcD T5 - ProcD T6 - ProcD T7 - ProcD T8 - ProcD OP5 T5 -ProcE T6 - ProcE T7 - ProcE T8 - ProcE T9 - ProcE OP6 T6 - ProcA T7 -ProcA T8 - ProcA T9 - ProcA T10 - ProcA OP7 T7 - ProcB T8 - ProcB T9 -ProcB T10 - T11 - ProcB ProcB OP8 T8 - ProcC T9 - ProcC T10 - T11 - T12 -ProcC ProcC ProcC OP9 T9 - ProcD T10 - T11 - T12 - T13 - ProcD ProcD ProcD ProcD OP10 T10 - T11 - T12 - T13 - T14 - ProcE ProcE ProcE ProcE ProcE Chaque ligne represente une des 10 operations specifiques OP1 a OP10. Chaque colonne represente une des informations elementaires IE1 a IE5 composant chacun des sous-objets a traiter. Cette notation IE1 a IE5 est formelle ; elle ne correspond pas forcement a une realite spatiale ou temporelle. En effet, certaines operations specifiques ont pour effet de deplacer les informations elementaires. Ainsi, 1'information IE1 traitee par 1'operation specifique OP2 peut ne pas titre le resultat de 1'operation specifique OP1 appliquee a 1'information IE1, mais le resultat de cette operation specifique OP1 appliquee a 1'information IE2, par exemple si 1'operation specifique OP1 consiste en un decalage vers la gauche. Chaque case de ce tableau contient le nom du processeur qui effectue 1'operation specifique, ainsi que le moment on cette operation specifique est effectuee au cours du traitement. Bien entendu, ce tableau ne represente qu'une partie du traitement. On suppose ici que taus les resultats d'operations specifiques necessaires ont ete calcules au prealable dans le traitement. >- Sous-objet 1 Sous-objet 2 Ainsi, on peut voir qu'a 1'instant T1, le processeur ProcA effectue 1'op&ration OP1 sur la premiere information IE1 du sous-objet 1. A cet instant, les autres processeurs sont en train d'effectuer d'autres operations non repr&sent&es sur ce tableau. A 1'instant T5, on voit que chacun des processeurs effectue une operation sur une des informations du sous-objet 1. Lorsqu'un processeur a effectue une operation specifique sur toutes les informations elementaires d'un sous- objet, it passe a 1'op&ration suivante parmi celles qui lui ont &t& affectees. Ainsi, le processeur ProcA effectue, a partir de T6, 1'op&ration OP6. Lorsqu'un processeur a effectue toutes les operations specifiques qui lui ont &t& affectees, le sous-objet suivant est trait&. Deux sous-objets diff&rents (sous-objet 1 et sous-objet 2) sont donc traits en meme temps dans la plateforme. Sur ce tableau on constate bien que chaque operation specifique est effectue N fois (ici N = 5).
Ce s&quencement est obtenu par le chainage circulaire en une dimension des processeurs. Les informations elementaires peuvent donc transiter d'une unite de calcul a 1'autre. Par exemple, 1'information elementaire IE1 passe par taus les processeurs pour << subir les operations specifiques OP1 a OP5, puis elle remonte au processeur ProcA pour recommencer un cycle et << subir les operations OP6 a OP7. (Attention, comme expliqu& pr&c&demment, 1'information elementaire IE1 de depart ne sera pas forc&ment 1'information IE1 a toutes les &tapes). On voit ainsi que 1'invention permet de g&n&rer les donnees formatees specifiques adapt&es a une architecture systolique qui a 1'avantage, notamment, de stocker les valeurs de parametres localement et de pouvoir cabler les chemins de donnees. Il est a noter que le s&quencement exact peut etre realise au moms partiellement par un compilateur de laplateforme. Dans ce cas, les donnees formatees specifiques ne contiennent pas les sequencement absolu dans le temps, mais plutot des contraintes sur le sequencement.
Dans un deuxieme exemple, illustre sur la figure 7, la plateforme contient cinq processeurs relies a une memoire commune. Une telle structure est classique : elle correspond a celle d'un processeur vectoriel (de type << Single Instruction Multiple Data >> ou SIMD). Dans 1'exemple, chaque processeur est relie individuellement a une petite memoire pouvant contenir des parametres tels qu'une table de correspondance T. Dans cette structure, chaque processeur effectue toutes les operations specifiques. Ainsi, tous les processeurs recoivent le meme jeu d'instructions INS. On considere dans ce deuxieme exemple le cas on 1'une des operations consiste en 1'utilisation d'une table pour modifier une ou plusieurs informations elementaires. Comme vu precedemment, chacun des processeurs a acces a sa propre table, toutes les tables etant identiques. Dans une variante, chaque memoire est partagee par un groupe de processeurs.
I1 s'agit d'une realisation parallele : a chaque instant du processus, tous les processeurs realisent la meme operation sur des informations elementaires differentes. Ce deroulement est illustre par le tableau II ci-dessous : Dans ce tableau, les instants d'avancement du processus sont notes T1, T2, T10. Tableau II IE1 1E2 1E3 1E4 1E5 OP1 T1 -ProcA T1 -ProcB T1 -ProcC T1 -ProcD T1 -ProcE OP2 T2 - ProcA T2 - ProcB T2 - ProcC T2 -ProcD T2 - ProcE OP3 T3 - ProcA T3 - ProcB T3 - ProcC T3 - ProcD T3 -ProcE OP4 T4 - ProcA T4 - ProcB T4 - ProcC T4 - ProcD T4 - ProcE OP5 T5 -ProcA T5 - ProcB T5 - ProcC T5 - ProcD T5 - ProcE OP6 T6 - ProcA T6 -ProcB T6 - ProcC T6 - ProcD T6 - ProcE OP7 T7 - ProcA T7 - ProcB T8 -ProcC T7 - ProcD T7 - ProcE OP8 T8 - ProcA T8 - ProcB T8 - ProcC T8 -ProcD T8 - ProcE OP9 T9 - ProcA T9 - ProcB T9 - ProcC T9 - ProcD T9 -ProcE OP10 T10 - T10 - T10 - T10 - T10 - ProcA ProcB ProcC ProcD ProcE On peut voir dans ce tableau qu'a un instant donne Ti, 1'operation specifique OPi est effectuee par chacun des processeurs ProcA a ProcE respectivement sur les informations elementaires IE1 a IE5. Au bout du l0ieme increment, on constate bien que chaque operation specifique de la sequence d'operations specifiques a ete realisee sur chacune des informations elementaires d'un sous-objet.
Dans ce cas, it apparait qu'il n'est pas necessaire de completer la sequence d'operations specifiques par des operations sans effet, puisque les operations specifiques sont realisees en parallele par taus les processeurs. De cette facon, une fois 1'operation OP8 terminee, on peut recommencer le processus en appliquant 1'operation OP1 sur les informations elementaires constituant le sous-objet suivant. I1 est a noter que le sequencement exact peut titre realise, au moms partiellement, par un compilateur de la plateforme. Dans ce cas les donnees formatees specifiques ne contiennent pas les sequencements absolus dans le temps, mais plutot des contraintes sur le sequencement. Dans un troisieme exemple, illustre par la figure 8, la plateforme comporte un processeur vectoriel compose de cinq processeurs relies a une memoire commune, similaire au processeur vectoriel notamment present dans un ordinateur de type personnel (PC). Its sont egalement tous relies a une petite memoire pouvant contenir des parametres, et notamment une table de correspondance. Dans cette structure, chaque processeur effectue toutes les operations specifiques. Ainsi, tous les processeurs recoivent le meme jeu d'instructions INS comportant des donnees decrivant toutes les operations specifiques a realiser. On considere dans cet exemple le cas on deux operations specifiques de suite consistent en 1'utilisation d'une table pour modifier une ou plusieurs informations elementaires. Ici, les tables ne sont presentes qu'a un seul endroit, et les processeurs doivent donc se les partager. Au debut du processus, on est dans une realisation parallele, puisque tous les processeurs realisent en meme temps une meme operation sur les differentes informations elementaires d'un sous-objet. Ce deroulement est illustre par le tableau III ci-dessous : Dans ce tableau, les instants d'avancement du processus sont notes T1, T2,... T18.
Tableau III IE1 1E2 1E3 1E4 1E5 OP1 T1 -ProcA T1 -ProcB T1 -ProcC T1 -ProcD T1 -ProcE OP2 T2 - ProcA T2 - ProcB T2 - ProcC T2 - ProcD T2 -ProcE OP3 T3 - ProcA T3 - ProcB T3 - ProcC T3 - ProcD T3 - ProcE •-a T4 ProcA T5 - ProcB T6 - ProcC T7 - ProcD T8 - ProcE OP5 T9 - ProcA T10 ProcB T11 - ProcC T12 - ProcD T13 - ProcE OP6 T10 - ProcA T11 - ProcB T12 - ProcC T13 - ProcD T14 - ProcE OP7 T11 - ProcA T12 - ProcB T13 -ProcC T14 - ProcD T15 - ProcE OP8 T12 - ProcA T13 - ProcB T14 - ProcC T15 - ProcD T16 - ProcE OP9 T13 - ProcA T14 - ProcB T15 - ProcC T16 - ProcD T17 ProcE OP10 T14 - ProcA T15 - ProcB T16 - ProcC T17 - ProcD T18 -ProcE On peut voir dans les trois premieres lignes de ce tableau qu'a un instant donne Ti, 1'operation specifique OPi est effectuee par chacun des processeurs ProcA a Proc E respectivement sur les informations elementaires IE1 a IE5. Lorsqu'on arrive a l'operation OP4 qui utilise une table, on se retrouve face a un probleme d'acces, puisque taus les processeurs ne peuvent pas acceder en meme temps a cette table. Les processeurs sont donc obliges << d'attendre leur tour >>, c'est-a-dire d'attendre que le processeur precedent ait fini d'utiliser la table pour pouvoir s'en servir. Ainsi, l'operation OP4 est effectuee par les processeurs ProcA a ProcE respectivement aux instants T4 a T8. Si l'on suppose que l'operation OP5 fait egalement appel a une table, on aura de la meme facon : l'operation OP5 est effectuee par les processeurs ProcA a ProcE respectivement aux instants T9 a T13. Une fois ces operations effectuees, le processus peut 15 reprendre normalement. Dans ce dispositif, on obtient des resultats moms bons en temps de calcul que dans les autres exemples, puisque a certains instants, certains processeurs sont inactifs mais on reduit la taille memoire.
20 Il est a noter que le sequencement exact peut titre realise au moms partiellement par un compilateur de la plateforme. Dans ce cas les donnees formatees specifiques ne contiennent pas les sequencements absolus dans le temps, mais plutot des contraintes sur le sequencement.

Claims (42)

REVENDICATIONS
1. Procede de traitement de donnees formatees generiques (12), comprenant des premieres donnees (14) decrivant une sequence d'operations generiques, en vue de fournir directement ou indirectement des donnees formatees specifiques (18), pour une plateforme determinee (20) comportant Q processeur(s) et au moms une memoire, la plateforme etant destinee a traiter, en fonction des donnees formatees specifiques (18), un objet (22) constitue d'informations elementaires de meme nature, chaque information elementaire etant representee par au moms une valeur numerique ; le procede comprenant les etapes suivantes : - 1'etape de traduire les operations generiques en operations specifiques, - 1'etape de determiner 1'ensemble des boucles necessaires au traitement, et - 1'etape de calculer une sequence d'operations specifiques contenant les boucles ainsi determinees et permettant directement ou indirectement de traiter 1'objet conformement aux donnees formatees generiques, la sequence etant optimisee pour la plateforme en terme de taille de code et/ou taille memoire et/ou temps de calcul, les donnees formatees specifiques comprenant la sequence d'operations specifique ainsi determinee.
2. Procede selon la revendication 1, le procede 25 comprenant en outre -1'etape de determiner un mode de parcours (24) des informations elementaires dans la plateforme en fonction de 1'architecture de cette plateforme (22) et des donnees formatees generiques (18), la determination de ce mode de parcours 30 comprenant le choix et/ou calcul : - d'un groupement d'informations elementaires en sous- objets, comprenant chacun un nombre N d'informations elementaires , multiple de Q, determine en fonction de la plateforme, le traitement dans la plateforme consistant a demarrer periodiquement un sous-traitement, qui consiste a appliquer la sequence d'operations specifiques sur l'un des sous-objets, - de la forme et du recouvrement des sous-objets, determines en fonction de la plateforme, de 1'ordre de traitement des sous-objets, determine en fonction de la plateforme, de 1'organisation en memoire des donnees destinees a titre conservees pour le traitement des sous-objets ulterieurs, determine en fonction de la plateforme et de la sequence d'operations generiques, et - 1'etape de determiner 1'ensemble des boucles necessaires au traitement et/ou 1'etape de calculer la sequence d'operations specifiques tenant compte du mode de parcours.
3. Procede selon la revendication 2 dans lequel la determination d'un mode de parcours comprend 1'etape de determiner quelle(s) operation(s) specifique(s) de la sequence d'operations specifiques est (sont) effectuee(s) par chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
4. Procede selon la revendication 2 ou 3 dans lequel la determination d'un mode de parcours comprend 1'etape de determiner a chaque instant relatif de la periode, quelle(s) operation(s) specifique(s) de la sequence d'operations specifiques est (sont) effectuee(s) par chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et indirectement, au moins une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi deteminees.
5. Procede selon 1'une des revendications 2 a 4 comprenant 1'etape, dans le cas on le nombre d'operations specifiques a appliquer sur chaque sous-objet n'est pas un multiple du nombre de processeurs Q et/ou le nombre d'informations elementaires de 1'objet a traiter n'est pas un multiple de N, d'ajouter des operations specifiques sans effet et/ou des informations elementaires nulles, de maniere que le nombre d'operations specifiques soit un multiple de Q et que le nombre d'informations elementaires soit un multiple de N.
6. Procede selon 1'une des revendications 2 a 5 dans lequel la sequence d'operations generiques s'applique a au moins un ensemble d'informations elementaires denomme bloc logique, et les donnees formatees generiques comprennent en outre des secondes donnees, pour les operations generiques impliquant au moins deux blocs logiques, se rapportant a la position relative et/ou une echelle relative, notamment spatiale et/ou temporelle, des blocs logiques les uns par rapport aux autres, et dans lequel les informations elementaires et/ou resultats d'operations specifiques sur lesquels doit s'appliquer chaque operation specifique dependent des secondes donnees et dans lequel, dans le cas on au moins une position relative des blocs logiques les uns par rapport aux autres est non nulle, au moins une operation specifique fait intervenir, directement ou indirectement, au moins une information elementaire d'un autre sous-objet.
7. Procede selon 1'une des revendications 2 a 6 dans 35 lequel les donnees formatees specifiques comprennent des informations concernant le groupement des operations specifiques, ce groupement consistant en la formation de paquets de une ou plusieurs operations specifiques destinees a titre executees sans conserver les resultats de chaque operation specifiques non necessaires a un autre sous-traitement.
8. Procede selon 1'une des revendications 2 a 7 dans lequel les donnees formatees specifiques comprennent des instructions permettant de garder en memoire de la plateforme au moms une partie des resultats d'operations specifiques necessaires aux operations specifiques ulterieures pour un autre sous-traitement.
9. Procede selon 1'une des revendications 2 a 8 dans lequel les donnees formatees specifiques comprennent des instructions pour que des resultats d'operations specifiques soient calcules plusieurs fois dans la plateforme, de maniere a ne perdre aucune information au moment de 1'execution des operations specifiques, notamment dans le cas on les sous-objets ont un recouvrement dans au moms une dimension de 1'objet.
10. Procede selon 1'une des revendications 2 a 9 dans lequel les donnees formatees specifiques contiennent des informations d'adressage pour permettre a la plateforme d'acceder a au moms une partie des resultats d'operations specifiques et/ou informations elementaires en memoire, ces informations d'adressage etant sous la forme << adresse de base + decalage ou << adresse de base + decalage modulo (la taille d'une memoire situee dans la plateforme), le decalage etant constant pour les resultats issus d'une meme operation specifique pour chaque sous-traitement.
11. Procede selon la revendication 10 dans lequel on modifie 1'adresse de base pour chaque sous-traitement.35
12. Procede selon la revendication 10 ou 11 comprenant 1'etape de calculer le decalage en fonction de 1'ordre des operations specifiques, de maniere a fournir a la plateforme des adresses d'emplacements memoire vide ou contenant un resultat d'operation specifique ou une information elementaire qui nest plus utilisee, afin de stocker des resultats d'operations specifiques.
13. Procede selon 1'une des revendications 2 a 12 dans lequel le traitement comporte le calcul d'au moms une boucle, le nombre d'iterations de la ou des boucles et, quand it y a plusieurs boucles, les imbrications des boucles, en fonction du mode de parcours.
14. Procede selon 1'une des revendications 2 a 13 traitant en outre au moms un parametre, et dans lequel la (les) valeur(s) du (des) parametre(s) utilise(s) par les operations specifiques dependent de la position absolue des sous-objets et/ou de la position absolue dans les sous-objets des informations elementaires mises en jeu, directement ou indirectement, dans ces operations specifiques.
15. Procede selon 1'une des revendications precedentes traitant en outre au moms un parametre, et dans lequel les donnees formatees specifiques comprennent la (les) valeur(s) du (des) parametres et/ou un code de calcul de la (des) valeur(s) du (des) parametre(s).
16. Procede selon 1'une des revendications precedentes traitant en outre au moms un parametre, et dans lequel on choisit la (les) valeur(s) de parametre(s) en fonction de la plateforme de traitement, de sorte que le traitement tienne compte des caracteristiques de cette plateforme.
17. Procede selon 1'une des revendications precedentes traitant en outre au moins un parametre, et dans lequel la (les) valeur(s) de parametre (s) depend (ent) de 1'objet a traiter.
18. Procede selon 1'une des revendications precedentes dans lequel 1'objet a traiter est une image et les informations elementaires sont des pixels de cette image.
19. Procede selon 1'une des revendications precedentes dans lequel la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d'image, et dans lequel la (les) valeur(s) du (des) parametre (s) est (sont) liee (s) aux caracteristiques de 1'optique et/ou du capteur et/ou de 1'imageur et/ou de 1'electronique et/ou du logiciel de 1'appareil de capture et/ou de restitution d'images.
20. Procede selon 1'une des revendications 1 a 17 dans lequel 1'objet a traiter est un signal sonore numerise et les informations elementaires sont les echantillons sonores de ce signal.
21. Procede selon 1'une des revendications 1 a 17 dans lequel 1'objet a traiter est un maillage numerique et les informations elementaires sont les informations spatiales et temporelles caracterisant chaque point du maillage.
22. Systeme de traitement de donnees formatees generiques (12), comprenant des premieres donnees (14) decrivant une sequence d'operations generiques, le systeme fournissant, directement ou indirectement, des donnees formatees specifiques (18), pour une plateforme determinee 20) comportant Q processeur(s) et au moins une memoire, la plateforme etant destinee a traiter, en fonction des donnees formatees specifiques (18), un objet (22) constitue d'informationselementaires de meme nature, chaque information elementaire etant representee par au moms une valeur numerique, le systeme comprenant : - des moyens pour traduire les operations generiques en 5 operations specifiques, - des moyens pour determiner l'ensemble des boucles necessaires au traitement, des moyens pour calculer une sequence d'operations specifiques contenant les boucles ainsi determinees et 10 permettant, directement ou indirectement, de traiter l'objet conformement aux donnees formatees generiques, le sequence d'operations specifiques etant optimisee pour la plateforme en terme de taille de code et/ou taille memoire et/ou temps de calcul, 15 les donnees specifiques fournies comprenant la sequence d'operations specifiques determinee.
23. Systeme selon la revendication 22 comprenant : - des moyens pour determiner un mode de parcours des 20 informations elementaires dans la plateforme en fonction de 1'architecture de cette plateforme et des donnees formatees generiques, ces moyens pour determiner ce mode de parcours comprenant des moyens pour choisir et/ou calculer : - un groupement d'informations elementaires en sous-objets, 25 comprenant chacun un nombre N d'informations elementaires, multiple de Q, determine en fonction de la plateforme, le traitement dans la plateforme consistant a demarrer periodiquement un sous-traitement sur l'un des sous-objets, 30 - la forme et le recouvrement des sous-objets, determines en fonction de la plateforme, - 1'ordre de traitement des sous-objets, determine en fonction de la plateforme, - 1'organisation en memoire des donnees destinees a titre 35 conservees pour le traitement des sous-objets ulterieurs,determine en fonction de la plateforme et de la sequence d'operations generiques, et - les moyens pour determiner 1'ensemble des boucles necessaires au traitement et/ou pour calculer la sequence 5 d'operations specifiques tenant compte du mode de parcours.
24. Systeme selon la revendication 23 comprenant des moyens pour determiner quelle(s) operations specifique(s) de la sequence d'operations specifiques est (sont) effectuees par 10 chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et 15 produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations ainsi determinees.
25. Systeme selon la revendication 23 ou 24 comprenant 20 des moyens pour determiner, a chaque instant relatif de la periode, quelle(s) operations specifique(s) de la sequence d'operations specifiques est (sont) effectuees par chaque processeur, chacune des operations specifiques etant appliquee au moms N fois sur chaque sous-objet, chaque operation 25 specifique faisant intervenir, directement et/ou indirectement, au moms une fois chacune des informations elementaires d'un sous-objet au cours de ses N applications et produisant exactement N resultats ; le procede comprenant en outre 1'etape d'ajouter aux donnees formatees specifiques les informations 30 ainsi determinees.
26. Systeme selon 1'une des revendications 23 a 25 comprenant des moyens pour, dans le cas on le nombre d'operations specifiques a appliquer sur chaque sous-objet n'est 35 pas un multiple du nombre de processeurs Q et/ou le nombre d'informations elementaires de 1'objet a traiter n'est pas un multiple de N, ajouter des operations specifiques sans effet et/ou des informations elementaires nulles, de maniere que le nombre d' operations specifiques soit un multiple de Q et que le nombre d'informations elementaires soit un multiple de N.
27. Systeme selon 1'une des revendications 23 a 26 comprenant : - des moyens pour que la sequence d'operations 10 generiques d'applique a au moms un ensemble d'informations elementaires denomme bloc logique, des moyens pour recevoir des donnees formatees generiques comprenant des secondes donnees, pour les operations generiques impliquant au moms deux blocs logiques, se 15 rapportant a la position relative et/ou a 1'echelle relative, notamment spatiale ou temporelle, des blocs logiques les uns par rapport aux autres, des moyens pour que les informations elementaires et/ou resultats d'operations specifiques sur lesquels doit 20 s'appliquer chaque operation specifique dependent des secondes donnees et - des moyens pour, dans le cas on au moms une position relative des blocs logiques les uns par rapport aux autres est non nulle, qu'au moms une operation specifique fasse 25 intervenir, directement ou indirectement, au moms une information elementaire d'un autre sous-objet.
28. Systeme selon 1'une des revendications 23 a 27 comprenant des moyens pour que les donnees formatees specifiques 30 comprennent des informations concernant le groupement des operations specifiques, ce groupement consistant en la formation de paquets de une ou plusieurs operations specifiques destinees a titre executees sans conserver les resultats de chaque operation specifiques pour un autre sous-traitement. 35
29. Systeme selon 1'une des revendications 23 a 28 comprenant des moyens pour que les donnees formatees specifiques comprennent des instructions permettant de garder en memoire de la plateforme au moms une partie des resultats d'operations specifiques necessaires aux operations specifiques ulterieures pour un autre sous-traitement.
30. Systeme selon 1'une des revendications 23 a 29 comprenant des moyens pour que les donnees formatees specifiques comprennent des instructions pour que des resultats d'operations specifiques soient calcules plusieurs fois dans la plateforme, de maniere a ne perdre aucune information au moment de 1'execution des operations specifiques notamment dans le cas on les sous-objets ont un recouvrement dans au moms une dimension de 1'objet.
31. Systeme selon 1'une des revendications 23 a 30 comprenant des moyens pour que les donnees formatees specifiques contiennent des informations d'adressage permettant a la plateforme d'acceder a au moms une partie des resultats d'operations specifiques et/ou informations elementaires en memoire, ces informations d'adressage etant sous la forme << adresse de base + decalage ou << adresse de base + decalage modulo (la taille d'une memoire tampon situee dans la plateforme), le decalage etant constant pour les resultats issus d'une meme operation specifique.
32. Systeme selon la revendication 31 comprenant des moyens pour modifier 1'adresse de base pour chaque sous-30 traitement.
33. Systeme selon la revendication 31 ou 32 comprenant des moyens pour calculer le decalage en fonction de 1'ordre des operations specifiques, de maniere a fournir a la plateforme des 35 adresses d'emplacements memoire vide ou contenant un resultat d'operation specifique ou une information elementaire qui nest plus utilisee, afin de stocker des resultats d'operations specifiques.
34. Systeme selon 1'une des revendications 23 a 33 comprenant des moyens pour calculer au moms une boucle, le nombre d'iterations de la (ou des) boucle(s) et, quand it y a plusieurs boucles, les imbrications des boucles, en fonction du mode de parcours.
35. Systeme selon 1'une des revendications 23 a 34 comprenant des moyens pour traiter en outre au moms un parametre, de facon telle que la (les) valeur(s) du (des) parametre(s) utilise(s) par les operations specifiques depende(nt) de la position dans les sous-objets des informations elementaires mises en jeu, directement ou indirectement, dans ces operations specifiques.
36. Systeme selon 1'une des revendications 22 a 35 comprenant des moyens pour traiter en outre au moms un parametre, de facon telle que les donnees formatees specifiques comprennent la (les) valeur(s) du (des) parametres et/ou un code de calcul de la (des) valeur(s) du (des) parametre(s).
37. Systeme selon 1'une des revendications 22 a 36 comprenant des moyens pour traiter en outre au moms un parametre, et comprenant des moyens pour choisir la (les) valeur(s) de parametre(s) en fonction de la plateforme de traitement, de sorte que le traitement tienne compte des caracteristiques de cette plateforme.
38. Systeme selon 1'une des revendications 22 a 37 comprenant des moyens pour traiter en outre au moms un parametre, de facon telle que la (les) valeur(s) du (des) parametre(s) depende (nt) de 1' objet a traiter.
39. Systeme selon 1'une des revendications 22 a 38 comprenant des moyens pour que 1'objet a traiter soit une image et pour que les informations elementaires soient des pixels de cette image.
40. Systeme selon 1'une des revendications 22 a 39 comprenant des moyens pour que la plateforme de traitement fasse partie d'un appareil de capture et/ou de restitution d'image, et pour que la (les) valeur(s) du (des) parametre(s) soi(en)t liee(s) aux caracteristiques de 1'optique et/ou du capteur et/ou de 1'imageur et/ou de 1'electronique et/ou du logiciel de 1'appareil de capture et/ou de restitution d'images.
41. Systeme selon 1'une des revendications 22 a 38 comprenant des moyens pour que 1'objet a traiter soit un signal sonore numerise et pour que les informations elementaires soient des echantillons sonores de ce signal.
42. Systeme selon 1'une des revendications 22 a 38 comprenant des moyens pour que 1'objet a traiter soit un maillage numerique et pour que les des informations elementaires des informations spatiales et temporelles caracterisant chaque point du maillage.
FR0553946A 2005-12-19 2005-12-19 Procede et systeme de traitement de donnees numeriques Expired - Fee Related FR2895103B1 (fr)

Priority Applications (7)

Application Number Priority Date Filing Date Title
FR0553946A FR2895103B1 (fr) 2005-12-19 2005-12-19 Procede et systeme de traitement de donnees numeriques
PCT/FR2006/051389 WO2007071883A2 (fr) 2005-12-19 2006-12-19 Procede et systeme de traitement de donnes numeriques
JP2008545067A JP6085405B2 (ja) 2005-12-19 2006-12-19 ディジタルデータ処理のための方法およびシステム
KR1020087017730A KR101391465B1 (ko) 2005-12-19 2006-12-19 디지털 데이터 처리 방법 및 시스템
CNA2006800530321A CN101379468A (zh) 2005-12-19 2006-12-19 数字数据处理方法和系统
EP06847179A EP1963971A2 (fr) 2005-12-19 2006-12-19 Procede et systeme de traitement de donnes numeriques
US12/097,893 US8429625B2 (en) 2005-12-19 2006-12-19 Digital data processing method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0553946A FR2895103B1 (fr) 2005-12-19 2005-12-19 Procede et systeme de traitement de donnees numeriques

Publications (2)

Publication Number Publication Date
FR2895103A1 true FR2895103A1 (fr) 2007-06-22
FR2895103B1 FR2895103B1 (fr) 2008-02-22

Family

ID=37430519

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0553946A Expired - Fee Related FR2895103B1 (fr) 2005-12-19 2005-12-19 Procede et systeme de traitement de donnees numeriques

Country Status (7)

Country Link
US (1) US8429625B2 (fr)
EP (1) EP1963971A2 (fr)
JP (1) JP6085405B2 (fr)
KR (1) KR101391465B1 (fr)
CN (1) CN101379468A (fr)
FR (1) FR2895103B1 (fr)
WO (1) WO2007071883A2 (fr)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343040B2 (en) * 2001-07-12 2008-03-11 Do Labs Method and system for modifying a digital image taking into account it's noise
US9037961B1 (en) * 2006-09-18 2015-05-19 Credit Suisse Securities (Usa) Llc System and method for storing a series of calculations as a function for implementation in a spreadsheet application
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US20110289417A1 (en) * 2010-05-21 2011-11-24 Schaefer Diane E User interface for configuring and managing the cluster
US9134960B2 (en) * 2010-10-29 2015-09-15 International Business Machines Corporation Numerical graphical flow diagram conversion and comparison
CN102867002A (zh) * 2011-07-05 2013-01-09 北大方正集团有限公司 电子文件的处理方法和装置
CN103785173A (zh) * 2014-03-06 2014-05-14 苏州运智互动科技有限公司 Android系统双体感外设数据区分获取方法
US10255547B2 (en) 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
CN105516033A (zh) * 2015-07-23 2016-04-20 中国电子科技集团公司第四十一研究所 一种基于频谱分析仪的模拟信号解调与分析方法
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
KR101763827B1 (ko) * 2016-04-07 2017-08-02 주식회사 라이프시맨틱스 블록체인 기반 의료데이터전송시스템, 방법 및 프로그램
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10467142B1 (en) * 2019-05-07 2019-11-05 12 Sigma Technologies Enhancement of real-time response to request for detached data analytics

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69108900D1 (de) * 1990-01-30 1995-05-18 Johnson Service Co Vernetztes betriebsmittelverwaltungssystem.
US5655130A (en) * 1994-10-14 1997-08-05 Unisys Corporation Method and apparatus for document production using a common document database
US5860072A (en) * 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US5857100A (en) * 1996-09-03 1999-01-05 Insession Inc. System, method and article of manufacture for extending externalization for universal transaction processing
US6014702A (en) * 1997-06-04 2000-01-11 International Business Machines Corporation Host information access via distributed programmed objects
WO1999052040A1 (fr) * 1998-04-08 1999-10-14 Stellar Technologies, Ltd. Architecture pour traitement graphique
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
GB0107882D0 (en) * 2001-03-29 2001-05-23 Ibm Parsing messages with multiple data formats
EP1523730B1 (fr) * 2001-07-12 2009-03-25 DO Labs Procede et systeme pour calculer une image transformee a partir d'une image numerique
US7343040B2 (en) * 2001-07-12 2008-03-11 Do Labs Method and system for modifying a digital image taking into account it's noise
FR2827459B1 (fr) * 2001-07-12 2004-10-29 Poseidon Procede et systeme pour fournir a des logiciels de traitement d'image des informations formatees liees aux caracteristiques des appareils de capture d'image et/ou des moyens de restitution d'image
US7191404B2 (en) * 2002-01-14 2007-03-13 International Business Machines Corporation System and method for mapping management objects to console neutral user interface
US7565660B2 (en) * 2002-09-26 2009-07-21 Siemens Energy & Automation, Inc. System and method for universal extensibility that supports a plurality of programmable logic controllers
JP4487479B2 (ja) * 2002-11-12 2010-06-23 日本電気株式会社 Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
WO2004072796A2 (fr) * 2003-02-05 2004-08-26 Arizona Board Of Regents Traitement reconfigurable
US20040187090A1 (en) * 2003-03-21 2004-09-23 Meacham Randal P. Method and system for creating interactive software
US7987455B1 (en) * 2003-07-23 2011-07-26 International Business Machines Corporation System and method of command processing
US7647580B2 (en) * 2004-09-07 2010-01-12 Microsoft Corporation General programming language support for nullable types
US7694288B2 (en) * 2005-10-24 2010-04-06 Analog Devices, Inc. Static single assignment form pattern matcher
US8117587B1 (en) * 2008-06-03 2012-02-14 Richard Paul Testardi Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
BACON D F ET AL: "Compiler transformations for high-performance computing", ACM COMPUTING SURVEYS, NEW YORK, NY, US, vol. 26, no. 4, December 1994 (1994-12-01), pages 345 - 420, XP002246513, ISSN: 0360-0300 *
BENKNER S ET AL: "Processing array statements and procedure interfaces in the PREPARE High Performance Fortran compiler", COMPILER CONSTRUCTION. 5TH INTERNATIONAL CONFERENCE, CC'94. PROCEEDINGS SPRINGER-VERLAG BERLIN, GERMANY, 1994, pages 324 - 338, XP001248203, ISBN: 3-540-57877-3 *
C. AIGLON, CH. LAVARENNE, Y. SOREL AND A. VICARD: "Utilisation de SynDEx pour le traitement d'images temps-réel", RAPPORT DE RECHERCHE INRIA, no. 2968, September 1996 (1996-09-01), INRIA Rocquencourt, pages 1 - 79, XP002409017 *
DARTE A ET AL: "Generalized multipartitioning of multi-dimensional arrays for parallelizing line-sweep computations", JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, ELSEVIER, AMSTERDAM, NL, vol. 63, no. 9, September 2003 (2003-09-01), pages 887 - 911, XP004459910, ISSN: 0743-7315 *
GRANDPIERRE T ET AL: "From algorithm and architecture specifications to automatic generation of distributed real-time executives:a seamless flow of graphs transformations", FORMAL METHODS AND MODELS FOR CO-DESIGN, 2003. MEMOCODE '03. PROCEEDINGS. FIRST ACM AND IEEE INTERNATIONAL CONFERENCE ON 24-26 JUNE 2003, PISCATAWAY, NJ, USA,IEEE, 24 June 2003 (2003-06-24), pages 123 - 132, XP010643808, ISBN: 0-7695-1923-7 *
RAITLET M ET AL: "Automatic coarse-grain partitioning and automatic code generation for heterogeneous architectures", SIGNAL PROCESSING SYSTEMS, 2003. SIPS 2003. IEEE WORKSHOP ON 27 - 29 AUG. 2003, PISCATAWAY, NJ, USA,IEEE, 27 August 2003 (2003-08-27), pages 316 - 321, XP010661035, ISBN: 0-7803-7795-8 *
Z. CHAMSKI , A. COHEN, M. DURANTON, C. EISENBEIS, P. FEAUTRIER, D. GENIUS, L. PASQUIER, V. RIVIERRE-VIER, F. THOMASSET AND Q. ZHAO: "The SANDRA project: cooperative architecture/compiler technology for embedded real-time streaming applications", RAPPORT DE RECHERCHE INRIA, no. 4773, March 2003 (2003-03-01), INRIA Rocquencourt, pages 1 - 13, XP002380285 *

Also Published As

Publication number Publication date
KR20080087840A (ko) 2008-10-01
JP2009524854A (ja) 2009-07-02
US8429625B2 (en) 2013-04-23
WO2007071883A3 (fr) 2007-08-16
EP1963971A2 (fr) 2008-09-03
KR101391465B1 (ko) 2014-05-26
CN101379468A (zh) 2009-03-04
US20090228677A1 (en) 2009-09-10
JP6085405B2 (ja) 2017-02-22
FR2895103B1 (fr) 2008-02-22
WO2007071883A2 (fr) 2007-06-28

Similar Documents

Publication Publication Date Title
FR2895103A1 (fr) Procede et systeme de traitement de donnees numeriques
FR2895102A1 (fr) Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
CN111194458B (zh) 用于处理图像的图像信号处理器
KR101137753B1 (ko) 고속의 메모리 효율적인 변환 구현 방법
FR2895104A1 (fr) Procede pour fournir des donnees a un moyen de traitement numerique
Liu et al. A new polarization image demosaicking algorithm by exploiting inter-channel correlations with guided filtering
Nguyen et al. Raw image reconstruction using a self-contained srgb–jpeg image with small memory overhead
CN108833974A (zh) 识别视频中的半透明水印的方法、装置和电子设备
WO2013136403A1 (fr) Dispositif de traitement d&#39;image, circuit intégré, programme, dispositif d&#39;imagerie et dispositif d&#39;affichage
TWI417810B (zh) 影像增強方法、影像增強裝置及影像處理電路
Marenzi et al. Block matching super-resolution parallel GPU implementation for computational imaging
Jia et al. Learning rich information for quad bayer remosaicing and denoising
CN113706385A (zh) 一种视频超分辨率方法、装置、电子设备及存储介质
Shao et al. Partition-based interpolation for color filter array demosaicking and super-resolution reconstruction
McGuire Efficient, high-quality bayer demosaic filtering on gpus
JP4014486B2 (ja) 画像処理方法及び画像処理装置
Heade et al. HDR Image Composition and Tone Mapping on the Cell Processor
Zhou Towards practical deep learning based image restoration model
Wang Synergy of physics and learning-based models in computational imaging and display
Thevennin et al. The eISP low-power and tiny silicon footprint programmable video architecture
CN115937044A (zh) 图像处理方法、图像处理装置、存储介质与电子设备
CN117643047A (zh) 相机模组及图像处理方法、装置、终端、电子设备、介质
Μαρτίδης Hardware software co-design of image processing hardware accelerators
Roy Accelerating image processing algorithms using programmable graphics processors
US20110066815A1 (en) Memory access control device and memory access control method

Legal Events

Date Code Title Description
GC Lien (pledge) constituted
GC Lien (pledge) constituted
AU Other action affecting the ownership or exploitation of an industrial property right
AU Other action affecting the ownership or exploitation of an industrial property right

Effective date: 20120705

AU Other action affecting the ownership or exploitation of an industrial property right

Effective date: 20130717

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

TP Transmission of property

Owner name: GOPRO TECHNOLOGY FRANCE SAS, FR

Effective date: 20170822

PLFP Fee payment

Year of fee payment: 13

TP Transmission of property

Owner name: GOPRO, INC., US

Effective date: 20180118

PLFP Fee payment

Year of fee payment: 15

ST Notification of lapse

Effective date: 20210806