FR2895104A1 - Procede pour fournir des donnees a un moyen de traitement numerique - Google Patents

Procede pour fournir des donnees a un moyen de traitement numerique Download PDF

Info

Publication number
FR2895104A1
FR2895104A1 FR0553947A FR0553947A FR2895104A1 FR 2895104 A1 FR2895104 A1 FR 2895104A1 FR 0553947 A FR0553947 A FR 0553947A FR 0553947 A FR0553947 A FR 0553947A FR 2895104 A1 FR2895104 A1 FR 2895104A1
Authority
FR
France
Prior art keywords
data
generic
block
parameters
logical blocks
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.)
Withdrawn
Application number
FR0553947A
Other languages
English (en)
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
Application filed by Dxo Labs SA filed Critical Dxo Labs SA
Priority to FR0553947A priority Critical patent/FR2895104A1/fr
Priority to JP2008545066A priority patent/JP5254030B2/ja
Priority to CNA2006800530529A priority patent/CN101379469A/zh
Priority to PCT/FR2006/051388 priority patent/WO2007071882A2/fr
Priority to US12/097,886 priority patent/US8473720B2/en
Priority to EP06847178A priority patent/EP1963970A2/fr
Publication of FR2895104A1 publication Critical patent/FR2895104A1/fr
Priority to KR1020087017727A priority patent/KR101391569B1/ko
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

L'invention se rapporte à un procédé pour fournir des données formatées génériques (12) à au moins un moyen de traitement numérique de données (10), destiné à traduire les données formatées génériques en données formatées spécifiques (18), les données formatées génériques (12) comprenant des données relatives à des blocs logiques, au moins un des blocs logiques correspondant à un objet (22) à traiter directement ou indirectement en fonction des données formatées spécifiques (18) par au moins une plateforme de traitement (20) à processeur(s) et mémoire(s), située à l'aval du moyen de traitement (10) ou intégrée dans le moyen de traitement (10), l'objet (22) étant constitué d'informations élémentaires de même nature, dont chacune est représentée par au moins une valeur numérique

Description

PROCEDE POUR FOURNIR DES DONNEES A UN MOYEN DE TRAITEMENT NUMERIQUE
La presente invention concerne un procede pour fournir des donnees formatees generiques a un moyen de traitement numerique de donnees.
Lorsqu'on souhaite developper de nouveaux algorithmes pour une ou plusieurs plateformes de traitement d'objets avec de fortes contraintes en terme de memoire consommee et puissance de calcul consommee, la duree de mise au point est tres longue. En effet, chaque plateforme a ses propres caracteristiques, tant en terme de materiel (par exemple nombre et type de processeurs ou taille et type de memoire), qu'en terme de langage utilise (C pour un processeur scalaire et assembleur pour un processeur vectoriel). Ainsi, meme si un algorithme a deja ete developpe pour une plateforme, son adaptation optimisee pour une autre plateforme demande une reecriture quasi-complete du programme ou code. Par exemple, un processeur de traitement du signal dispose d'une petite memoire locale et doit recopier les donnees depuis et vers la memoire principale a partir de cette memoire locale. 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 ne sont pas exprimables de maniere independante de la plateforme lorsqu'on utilise un langage tel que le langage C.
Ces adaptations constituent un obstacle a la diffusion de nouveaux algorithmes puisque, par exemple, 1'adaptation d'un logiciel de traitement d'image a un type d'appareil photographique peut demander plusieurs mois de developpement. Or, le marche des appareils de prise de vue, notamment les telephones munis d'un appareil photographique, de type cameraphones >>, est tres dynamique, avec un renouvellement de la gamme tous les six a douze mois et une evolution tres rapide des fonctionnalites. I1 est donc indispensable de pouvoir adapter rapidement ces nouvelles fonctionnalites pour pouvoir suivre le marche. Par ailleurs, la puissance de calcul augmente tres vite et il est donc possible de tirer parti de cette performance avec des algorithmes de plus en plus puissants, pour peu que l'on puisse les optimiser rapidement. D'autre part, les caracteristiques des capteurs evoluent tres vite et il est donc necessaire d'adapter les algorithmes de traitement d'images aux caracteristiques de ces capteurs, notamment de bruit qui croft avec la miniaturisation, pour peu que l'on puisse les optimiser rapidement.
L'invention part de la constatation que, pour remedier a ces inconvenients, it faudrait developper les algorithmes dans un langage independant de 1'organisation des donnees et de 1'ordre des traitements, sans coder manuellement explicitement ces informations afin de rester independants de la plateforme et de laisser toute marge de manoeuvre a des outils automatiques. Les langages existants ne permettent pas d'atteindre cet objectif, puisqu'ils imposent tous des conditions qui caracterisent les algorithmes pour une plateforme donnee.
Ainsi, par exemple, les langages imperatifs tels que le langage C imposent le codage explicite des boucles, et donc la definition d'un ordre de traitement. Les langages tableaux tels que Matlab, quant a eux, permettent de melanger des traitements tableaux avec des traitements directs sur les informations elementaires, ces traitements directs ayant pour consequence de rompre la regularite du code et d'empecher des optimisations automatiques poussees. De plus, avec les langages connus, pour effectuer des operations sur des images avec des deplacements relatifs ou des echelles relatives, notamment fonction de la position absolue dans 1'objet, it est necessaire d'utiliser des manipulations explicites des informations elementaires en utilisant des acces aux pixels et des boucles, ce qui introduit une forte dependance du code a la plateforme, en terme, notamment, de memoire et de parallelisme.
Ainsi, les programmes ecrits avec de tels langages sont dependants de la plateforme de traitement de donnees, puisqu'ils contiennent des instructions mettant directement en jeu les informations elementaires.
L'invention a pour but de fournir des donnees formatees generiques visant a remedier a au moms un des inconvenients cites precedemment et ainsi a permettre d'accelerer la mise sur le marche de materiel et de logiciels de traitement de donnees, notamment des images, en obtenant automatiquement et rapidement une implementation optimisee pour diverses plateformes d'un algorithme quelconque.
En outre, 1'invention permet de modifier tardivement les algorithmes, par exemple pour: - beneficier de la performance des processeurs des leur mise sur le marche, et/ou - b&n&ficier des dernieres avanc&es en matiere de traitement de donnees, notamment d'images, et/ou - tenir compte des caract&ristiques particulieres de la plateforme, par exemple, dans le cas d'un appareil de capture d'image, adapter rapidement un algorithme aux caract&ristiques d'un capteur et/ou d'une optique.
L'invention concerne ainsi un procede pour fournir des donnees formatees generiques a au moms un moyen de traitement numerique de donnees, destine a traduire les donnees formatees generiques en donnees formatees specifiques. Les donnees formatees generiques comprennent des donnees relatives a des blocs logiques, au moms un des blocs logiques correspondant a un objet a traiter en fonction, directement ou indirectement, des donnees formatees specifiques par au moms une plateforme de traitement a processeur(s) et m&moire(s), situ&e a 1'aval du moyen de traitement ou int&gr&e dans le moyen de traitement. L'objet a traiter est constitu& d'informations &1&mentaires de meme nature, dont chacune est repr&sent&e par au moms une valeur numerique. Le procede comprend les &tapes suivantes : On fournit au moyen de traitement numerique des premieres donnees, faisant partie des donnees formatees generiques, et d&crivant au moms une sequence d'op&rations generiques a r&aliser sur au moms un bloc logique et/ou sur au moms un parametre. On fournit des secondes donnees au moyen de traitement numerique, pour les operations generiques impliquant plusieurs blocs logiques. Ces secondes donnees font partie des donnees formatees generiques et se rapportent 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.
Les donnees formatees generiques fournies au moyen de traitement excluent les donnees relatives a 1' identification des informations elementaires et a 1'ordre dans lequel les informations elementaires seront traitees par la plateforme, de telle facon que les donnees formatees generiques soient independantes de la plateforme de traitement utilisee. Ces donnees formatees generiques sont egalement independantes de donnees relatives a la decomposition de 1'objet en sous-objets, a la forme, taille et recouvrement de ces sous-objets, et au stockage des informations elementaires constituant ces sous-objets dans une memoire. Ces donnees relatives a 1'ordre et a la decomposition en sous-objets sont determinees par le moyen de traitement. 20 Dans la presente description, les 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 elle- 25 meme. Ces donnees formatees generiques sont, dans le cadre de 1'invention, fournies a un moyen de traitement qui peut contenir la plateforme de traitement, ou se trouver en amont de celle-ci. Les objets traites correspondent a un ensemble d'informations elementaires de meme nature ; ces objets sont par exemple des 30 images, des sons numerises, de la video ou encore des donnees de simulation.
Dans une realisation, les secondes donnees font partie des donnees formatees generiques et se rapportent a la position 35 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 rapportent 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 10 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, 15 -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 chacune a des distances, les pixels etant chacun dote d'une couleur, par exemple rouge, vert ou 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 exemple rouge/vert/bleu, 20 25 30 - 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 5 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 10 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, 15 -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, 20 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 25 disposes selon une ou plusieurs dimensions, - de maniere plus generale un objet avec une ou plusieurs dimensions.
Dans le cadre de la presente invention, les informations 30 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 espace, notamment un espace constitue d'ondelettes: - une information elementaire d'un objet << son >> peut correspondre a une intensite ; dans ce cas, l'information elementaire a une position absolue correspondant a un instant donne et, dans le cas, d'un son multicanaux, a un canal donne. -une information elementaire d'un objet << image >> peut correspondre a un pixel; dans ce cas, l'information elementaire a une position absolue correspondant a une position dans l'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, une 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 signs 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 >>), 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, representant chacune une couleur, par exemple rouge, vert et bleu.
Les objets peuvent egalement etre 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 etre 10 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 15 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. 20 - 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 25 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 : 30 - 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 35 une imprimante incluant une plateforme de traitement. - Un appareil mixte qui corrige les defauts de ses elements, par exemple un scanner/imprimante/telecopieur incluant une plateforme de traitement. - Un appareil de capture d'image professionnel qui 5 produit des images traitees, par exemple un endoscope incluant une plateforme de traitement. La plateforme de traitement peut titre deportes en tout ou partie sur un serveur.
10 Le traitement qui sera applique a 1'objet dans la 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 15 traitement du son, 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 ou encore tout domaine mettant en oeuvre un grand nombre de donnees. 20 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. 25 De preference, au moms un bloc logique correspond a 1'objet a traiter.
La notion d'echelle relative et de position relative de deux blocs logiques et/ou parametre permet notamment, sans que 30 la liste soit limitative, de: - combiner plusieurs blocs logiques et/ou parametres variables en fonction de la position absolue, et/ou - changer d'echelle, et/ou - realiser des filtres sur des voisinages, et/ou - determiner la valeur d'un parametre lorsque la valeur depend de la position absolue de 1'information elementaire de 1'objet , 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
Au moment du traitement, les blocs logiques peuvent, dans une realisation, correspondre, selon le type du bloc logique, a des blocs physiques constitues d'elements de meme nature que les informations elementaires ou bien constitues d'elements de nature differente que les informations elementaires. La notion de position absolue ou relative est independante du type du bloc logique. Au sens de 1'invention, la notion d'informations elementaire s'applique a taus les elements quel que soit le type du bloc logique.
Un algorithme peut, par exemple, sans que la liste soit limitative, correspondre, dans le cas on 1'objet, est une image 35 a . un calcul, notamment de statistiques, pour une balance des blancs, et/ou un calcul, notamment de statistiques, pour une 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 >>) , 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 une mesure, et/ou une compression, et/ou 25 une decompression, et/ou une interpolation ou un grossissement (zoom), et/ou Un scan, et/ou Un effet special.
30 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 1'objet. 10 15 20 35 Generalement, les operations generiques d'un algorithme font intervenir, en plus des informations elementaires, des parametres tels que, par exemple, des 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 des tables de correspondances.
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 transmise au moyen de traitement ou a la plateforme, et/ou dependre de la provenance ou de 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 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 30 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 35 elementaire dans 1'objet ; dans ce cas la valeur de 15 20 25 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 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 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 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 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.
Dans le cas on 1'objet est une image, dans une realisation 1'image est decompose en sous-objets rectangulaires juxtaposes, les sous-objets etant 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 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 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 est transfers en memoire lente pendant le calcul relatif au sous-objet courant, et pendant le transfert de la memoire lente vers la memoire rapide des donnees necessaires au calcul relatif 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 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, de type<< raw >>, - 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 35 efficace 1'adaptation a une plateforme quelconque. 5 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 Deplacement Codage Necessite un Necessite 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 Necessite un Necessite un bords 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 >>) Dans une realisation, les premieres et secondes donnees et les valeurs des parametres sont suffisantes pour que la 5 plateforme puisse traiter 1'objet.
Les premieres donnees comprennent en outre des informations sur le nombre de bits sur lesquels sont codees les valeurs representant les blocs logiques. 10 Les donnees formatees specifiques sont les donnees obtenues en sortie du moyen de traitement. Elles sont, en fait, une traduction des donnees formatees generiques, et en cela elles representent, de la meme facon, un algorithme de traitement destine a etre applique sur un objet a traiter. Ces 15 donnees formatees specifiques contiennent notamment des operations specifiques, issues des operations generiques, et decrivant les instructions qui seront effectuees sur 1'objet en lui-meme lors du traitement dans la plateforme.
20 Les donnees formatees generiques selon 1'invention contiennent suffisamment d'informations pour permettre le calcul de ces donnees formatees specifiques, sans toutefois etre dependantes de cette plateforme. En effet, les operations definies par les donnees formatees generiques sont des 25 operations generiques s'appliquant a des blocs logiques, tels que definis plus haut. Ainsi, Les premieres donnees excluent des donnees decrivant des operations generiques mettant en jeu une ou plusieurs informations elementaires independamment des autres informations elementaires appartenant au (x) meme (s) bloc (s) 30 logiques. En effet, un bloc logique etant une entite abstraite, it n'est pas possible de distinguer et d'identifier les differentes informations elementaires qui le composent. Ainsi, les donnees formatees generiques peuvent etre fournies a differentes plateformes de traitement, quel que soit 35 le type d'architecture de la plateforme et egalement quel que soit le format de 1'objet a traiter. Par exemple, les donnees formatees generiques seront les memes pour une image de 3 millions de pixels que pour une image de 5 millions de pixels. De cette facon, lorsqu'un nouvel algorithme est developpe, it suffit de definir une seule fois des donnees formatees generiques pour pouvoir faire fonctionner, apres un delai tres court, cet algorithme de facon optimisee en terme de performance et de taille memoire sur differentes plateformes.
Selon le type d'operation generique mise en jeu dans 1'algorithme de traitement, les secondes donnees peuvent presenter des caracteristiques differentes.
Selon une realisation de 1'invention, au moms une partie des secondes donnees fournis au moyen de traitement et/ou la valeur d'au moms unparametre sont, pour une operation generique donnee, communes a toutes les informations elementaires de 1'objet a traiter.
Selon une autre realisation, au moms une partie des secondes donnees fournis au moyen de traitement et/ou la valeur d'au moms un parametre dependent de la position absolue des informations elementaires dans 1'objet a traiter. Par exemple, 1'utilisation d'un parametre commun a toutes 25 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 30 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 dematricage (<< demosaicing >>) 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. 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 changement de format, permet d'obtenir les pixels necessaires au nouveau format. Ainsi on peut, par exemple, obtenir les valeurs de pixels pour un codage couleur de type YUV a partir des informations separees de luminance (Y) et de chrominance rouge et bleue (U et V).
Dans une realisation de 1'invention, les operations generiques comprennent au moms une operation generique de position qui permet d'obtenir un bloc logique constitue de la position absolue selon une dimension de 1'objet, ainsi qu'une operation generique d'indirection, qui permet d'obtenir, a partir d'un premier bloc, un second bloc par deplacement et/ou changement d'echelle en fonction d'un troisieme bloc ou d'un parametre.
Dans une autre realisation, les operations generiques comprennent au moms une operation generique elementaire comprise dans le groupe comprenant : 1'addition de blocs logiques et/ou de parametres, la soustraction de blocs logiques et/ou de parametres, le calcul de la valeur absolue de la difference entre des blocs logiques, la multiplication de blocs logiques et/ou de parametres, le maximum parmi au moms deux blocs logiques et/ou parametres, le minimum parmi au moms deux blocs logiques et/ou parametres le groupement et degroupement de blocs logiques, le calcul d'un bloc logique par application d'un parametre, correspondant a une table de correspondance, a un bloc logique, le choix conditionnel d'un bloc logique parmi au moms deux blocs logiques et/ou parametres, ce choix se faisant de la facon suivante : si a>b on choisit c, sinon on choisit d, avec a, b, c, et d qui sont des blocs logiques et/ou des parametres, 1'histogramme d'un bloc logique, le changement d'echelle d'un bloc logique en fonction d'un parametre et/ou d'un bloc logique, le deplacement relatif d'un bloc logique en fonction d'un parametre et/ou d'un bloc logique, et une operation produisant un bloc contenant au moms une coordonnee. Les operations generiques mettant en oeuvre un bloc logique et un parametre, telle que 1'addition, peuvent etre traduites en traitement dans la plateforme, et correspondent, par exemple lorsque 1'operation generique est une addition, a additionner chaque element ou information elementaire du bloc physique traite, correspondant au bloc logique, avec la valeur du parametre correspondant a la position absolue de 1'element ou de 1'information elementaire traite.
Ces operations en tant que telles sont des operations relativement courantes en traitement d'image mais egalement dans le traitement d'autres sortes d'objets, par contre, lorsqu'elles sont appliquees a des blocs logiques en combinaison avec les secondes donnees, ces operations permettent de resoudre le probleme pose. Ces operations servent de base pour former toutes les operations pouvant etre mises en oeuvre dans un algorithme de traitement de donnees. Ainsi, dans une realisation, les operations generiques 35 comprennent des operations generiques complexes correspondant a des groupements d'operations generiques elementaires utilises en tant que tels. Parmi ces groupements, on peut notamment citer : le calcul de la valeur mediane d'au moins trois blocs logiques et/ou parametres, qui correspond a un groupe d'operations generiques constitue de calculs de minimum et de maximum, la multiplication/accumulation de blocs logiques et/ou de parametres, la convolution d'un bloc logique avec un parametre, qui correspond a un groupe d'operations generiques constitue de multiplications et d'additions avec plusieurs positions relatives, l'addition combinee avec un maximum et un minimum, le calcul d'un gradient, qui correspond a une valeur absolue de differences avec deux positions relatives, le produit scalaire d'un parametre constitue d'un vecteur et de plusieurs blocs logiques pour produire un bloc logique, le calcul d'un changement d'echelle avec interpolation qui correspond a un groupe d'operations generiques constitue de changements d'echelle et de multiplications et d'additions avec plusieurs positions relatives, la combinaison de blocs logiques, qui correspond a un groupe d'operations generiques constitue de changements d'echelle avec plusieurs positions relatives.
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, 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 notamment titre brut, rouge, vert, 8 bits...). Dans le cas on 1'objet est une image fixe a pixels carres, la position absolue ou relative et 1'echelle absolue ou relative peuvent correspondre, dans une realisation, chacune 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 etre 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)= - 15 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 un parametre relatif a une position absolue; - une correction de distorsion se code avec f et g 20 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- 25 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: 30 - 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 35 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 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 35 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 code 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. I1 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 code 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 code 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 35 position absolue ou relative peut correspondre a n valeurs correspondant chacune a une dimension de 1'objet qui, selon le cas, peuvent etre de nature temporelle, spatiale, frequentielle, phase ou autre. De meme, une combinaison de deplacement relatif et d'echelle relative peut etre code a 1'aide de n fonctions, et une regle d'arrondi doit etre choisie...DTD: Ainsi, dans une realisation de 1'invention, les positions relatives et/ou les echelles relatives des blocs logiques selon au moms une dimension de 1'objet, notamment spatiale et/ou temporelle, ont des valeurs entieres ou des valeurs fractionnaires comme decrit dans les exemples ci-dessus.
Dans une realisation, les informations elementaires sont representees par des valeurs numeriques en virgule fixe. Dans ce cas, it faut tenir compte de cette virgule fixe lors de 1'application des operations, afin de ne pas perdre d'information dans les resultats. A cet effet, dans la meme realisation de 1'invention, les operations generiques comprennent des operations de decalage, une operation de saturation et/ou au moms une operation generique elementaire combinee a cette operation de saturation.
Dans une realisation, les parametres comprennent une information representant le type de codage des informations 25 elementaires. Par exemple, dans le cas on les informations elementaires sont les pixels d'une image, elles sont representees, par exemple, sur 24 bits representant 3 couleurs dans un codage rouge-vert-bleu (RVB), ou encore sur N bits representant une 30 couleur par pixel variant selon la position du pixel pour les images brutes issues d'un capteur, ou encore sur 8 bits correspondant aux informations de luminance et de chrominance Y ou U ou V pour une image codee avec un codage de type YUV. Il est donc utile de fournir au moyen de traitement des donnees lui permettant de connaitre le type de codage afin de traduire correctement les donnees formatees generiques. De preference, les donnees formatees generiques representent des algorithmes de traitement d'objets constituant des images, et qui sont composes d'informations elementaires formant des pixels. 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, notamment, 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 egalement 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. Toutefois les donnees formatees generiques peuvent representer d'autres types d'algorithmes de traitement de donnees. Ainsi, dans une 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/ou temporelles caracterisant chaque point du maillage.
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 : - la figure 1 represente un dispositif de traitement de donnees utilisant un procede conforme a 1'invention, - la figure 2 represente un dispositif analogue a celui de la figure 1, dans le cas on l'on prevoit plusieurs plateformes de traitement, et - la figure 3 represente un exemple d'une sequence d'operations generiques appliquee a plusieurs blocs logiques et a un parametre. Le dispositif represente sur la figure 1 est destine a traiter une image 22. Cette image comprend un ensemble de pixels dont chacun est represente 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 est un compilateur dans 1'exemple.
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 decrivent les positions relatives des blocs logiques impliques dans ces operations generiques. Ces premieres et secondes donnees seront illustrees par le tableau 1.
A partir de ces donnees formatees generiques 12, le moyen de traitement 10 fournit a une plateforme de traitement 20, telle qu'un appareil de capture ou de restitution d'images, directement ou indirectement, par exemple via un compilateur, 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 les operations specifiques effectuees par la plateforme, et leur groupement. La plateforme de traitement 20 utilise alors ces donnees formatees specifiques 18 pour traiter 1'image 22 qu'elle recoit en entree.
Le systeme represents sur la figure 2 est analogue a celui represents sur la figure 1, dans le cas on l'on prevoit deux plateformes de traitement. Dans ce cas, on fournit a un moyen de traitement 30 deux series de donnees formatees generiques 32a et 32b. Ces donnees formatees generiques 32a et 32b contiennent chacune des premieres et secondes donnees, respectivement 34a pour les donnees formatees generiques 32a, et 34b pour les donnees formatees generiques 32b. Ces premieres et secondes donnees presentent les memes caracteristiques que les premieres et secondes donnees decrites en relation avec la figure 1. Ce moyen de traitement 30 fournit a deux plateformes 40a et 40b des donnees formatees specifiques 38a et 38b correspondant respectivement aux donnees formatees generiques 32a et 32b. La plateforme 40a traite ainsi un objet 42a en fonction des donnees 32a ou en fonction des donnees 32b. De meme, la plateforme 40b traite un objet 42b en fonction des donnees 32a ou en fonction des donnees 32b. Ainsi, le meme moyen de traitement 30 est utilise pour fournir des donnees formatees specifiques a deux plateformes de traitement differentes, 40a et 40b. La figure 2 illustre ainsi plusieurs avantages de 1'invention : - dans le cas on les plateformes 40a et 40b sont identiques, on peut rapidement remplacer les donnees formatees generiques 32a par 32b et les traduire en des donnees formatees specifiques 38b optimisees pour la plateforme. Ceci permet de reduire le temps de mise sur le marche de la plateforme. - dans le cas on les plateformes 40a et 40b sont differentes, et les donnees formatees 32a et 32b sont identiques, on peut rapidement les traduire en des donnees formatees specifiques 38a et 38b optimisees pour chaque plateforme. Ceci permet egalement de reduire le temps de mise sur le marche de plusieurs plateforme. Le tableau 1 ci-dessous et la figure 3 montrent un 10 exemple de sequence d'operations generiques appliquees a un bloc logique B1. Cette sequence comporte trois operations generiques. Les colonnes du tableau representent dans 1'ordre : le rang de 1'operation dans la sequence, le nom de 1'operation generique, 15 le bloc logique (sortie) sur lequel est inscrit le resultat de 1'operation generique, c'est-a-dire 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, 20 qui peut etre un bloc logique ou un parametre, la position relative du bloc logique a utiliser par 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 25 la position relative du bloc logique a utiliser par rapport au bloc logique mis en entree 2, s'il y a lieu. Les informations se << position relative >> sont les 30 secondes donnees fournies a un procede selon 1'invention. Dans trouvant dans les colonnes informations presentes dans les moyen de traitement grace a un ce tableau, ces informations se trouvent sous la forme comprehensibles, mais en generiques, elles peuvent << gauche >> et realite, dans egalement etre << droite >> pour etre les donnees formatees codees par des valeurs numeriques telles que (0 ;1) comme decrit dans les exemples de realisation plus haut et/ou par des fonctions telle que f(x ;y). Dans une realisation, les operations generiques comprennent au mains une operation generique de position qui permet d'obtenir un bloc logique constitue de la position absolue selon une dimension de 1'objet, ainsi qu'une operation generique d'indirection qui permet d'obtenir, a partir d'un premier bloc, un second bloc par deplacement et/ou changement d'echelle fonction d'un troisieme bloc ou d'un parametre. On peut alors effectuer les calculs des fonctions donnant la position relative et/ou 1'echelle relative, par exemple, 0,5*(x-100) a 1'aide d'operations generiques sur les blocs, puis utiliser 1'operation generique d'indirection pour effectuer le deplacement relatif et/ou le changement d'echelle relatif correspondant. Le tableau 1 n'est 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 1 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 30 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.25 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 1 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 droite puis de haut en bas : 30 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 5 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).
10 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 15 entierement le bloc physique BP1 et on lit 2 fois entierement le bloc physique BP2. On peut se limiter a une lecture et une ecriture seulement 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 20 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 25 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 30 sortie BP2 (correspondant au bloc logique B4)
Dans un quatrieme exemple, plus particulierement adapte a un processeur scalaire avec cache, on ecrit le resultat dans la meme zone memoire que 1'entree. Ceci permet de reduire 35 encore la taille de la memoire et de rendre locaux les acces memoire, ce qui est tres favorable dans le cas dune memoire cache ou une memoire paginee. On obtient ainsi la traduction suivante : Pour chaque pixel de 1'objet d'entree BP1 (correspondant aubloc 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 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)
Un cinquieme exemple de traduction est particulierement adapte a un processeur de traitement du signal avec une petite memoire rapide et une grosse memoire lente, chaque sous-objet est un rectangle par exemple 32x32 ou toute autre valeur maximisant 1'utilisation de la memoire rapide, les rectangles etant jointifs. On obtient ainsi la traduction suivante :
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 de une colonne a gauche et a droite, soit 32x34 Lancer un transfert par un mecanisme de DMA (<< direct memory access >>) du bloc physique de sortie precedent 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 Pour chaque pixel du bloc physique d'entree (correspondant au bloc logique B1) en excluant les deux colonnes 10 de gauche et de droite parcouru 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 15 courant du bloc, stocker le resultat dans le bloc physique courant de sortie (correspondant au bloc logique B4).
Un sixieme exemple de traduction est particulierement adapte a un processeur vectoriel capable d'appliquer un meme 20 calcul aux differents pixels du vecteur, chaque sous-objet est un rectangle par exemple 64 pixels horizontaux ou toute autre valeur egale a la taille d'un vecteur que la plateforme sait traiter et stocker. Cette traduction ne necessite aucune memoire car un vecteur est traite a la fois. On obtient ainsi la 25 traduction suivante :
Pour chaque sous-objet V1 de 1'objet d'entree BP1 (correspondant au bloc logique B1) en excluant les deux colonnes de gauche, les sous-objets etant parcourus de gauche a droite 30 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 35 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 plateforme tres diverses. En particulier on peut : reduire la taille du code en n'utilisant qu'une seule 15 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 20 des filtre verticaux, et/ou reduire le nombre d'instructions necessaires, notamment en groupant les boucles, et/ou s'adapter a toute taille de vecteur, et/ou s'adapter a toute architecture memoire.
25 Afin de simplifier, les exemples produisent une image 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 30 ligne pour dupliquer le pixel du bord.

Claims (9)

REVENDICATIONS
1. Procede pour fournir des donnees formatees generiques (12) decrivant un traitement a apporter sur un objet a une ou plusieurs dimensions (22), compris dans le groupe comprenant : une image, un signal sonore numerise, une sequence d'images, un signal module, une donnee de simulation et un maillage numerique ; les donnees formatees generiques etant fournies a au moins un moyen de traitement numerique de donnees (10), destine a traduire les donnees formatees generiques en donnees formatees specifiques (18), les donnees formatees generiques (12) comprenant des donnees relatives a des blocs logiques, au moins un des blocs logiques correspondant a 1'objet (22) a traiter en fonction, directement ou indirectement, des donnees formatees specifiques (18) par au moins une plateforme de traitement (20) a processeur(s) et memoire(s), situee a 1'aval du moyen de traitement (10) ou integree dans le moyen de traitement (10), 1'objet (22) etant constitue d'informations elementaires de meme nature, dont chacune est representee par au moins une valeur numerique, ces informations elementaires etant comprise dans le groupe comprenant : les pixels d'une image, les echantillons d'un signal sonore numerise, 1'intensite et la phase d'un signal module, une donnee caracterisant 1'etat d'une donnee de simulation, les informations temporelles et/ou spatiales caracterisant les points d'un maillage numerique, ce procede comprenant les etapes suivantes : - on fournit au moyen de traitement numerique des premieres donnees (14), faisant partie des donnees formatees generiques, decrivant au moins une sequence d'operations generiques a realiser sur au moins un bloc logique et/ou sur au moins un parametre, et - on fournit au moyen de traitement numerique, pour les operations generiques impliquant plusieurs blocs logiques, des secondes donnees (14), faisant partie des donnees formatees generiques et se rapportant a la position relative, selon au moins une dimension de 1'objet, spatiale et/ou temporelle, des blocs logiques et/ou des parametres les uns par rapport aux autres et/ou se rapportant a 1'echelle relative, spatiale et/ou temporelle, des blocs logiques et/ou des parametres les uns par rapport aux autres, les donnees formatees generiques (12) fournies au moyen de traitement numerique (10) excluant les donnees relatives a 1'identification des informations elementaires et a 1'ordre dans lequel les informations elementaires seront traitees par la plateforme, de fagon que les donnees formatees generiques (12) soient independantes de la plateforme de traitement (20) utilisee, et les donnees formatees generiques fournies (12) etant independantes de donnees relatives a la decomposition de 1'objet en sous-objets, a la forme, taille et recouvrement de ces sous-objets, et au stockage des informations elementaires dans une memoire, ces donnees relatives a 1'ordre et celles relatives a la decomposition en sous-objets etant determinables par le moyen de traitement {10).
2. Procede selon la revendication 1 dans lequel au moins une partie des secondes donnees fournies au moyen de traitement et/ou la valeur d'au moins un parametre sont, pour une operation generique donnee, communes a toutes les informations elementaires de 1'objet a traiter.
3. Procede selon la revendication 1 ou 2 dans lequel les secondes donnees fourni(s) au moyen de traitement et/ou la valeur du(des) parametre(s) depend(ent), pour une operation generique donnee, de la position absolue des informations elementaires dans 1'objet a traiter. 5
4. Procede selon 1'une des revendications precedentes dans lequel les operations generiques comprennent au moins une operations generique de position qui permet d'obtenir un bloc logique constitue de la position absolue selon une dimension de 1'objet, ainsi qu'une operation generique 10 d'indirection qui permet d'obtenir a partir d'un premier bloc, un second bloc par deplacement et/ou changement d'echelle fonction d'un troisieme bloc ou d'un parametre.
5. Procede selon 1'une des revendications precedentes 15 dans lequel les operations generiques comprennent au moins une operation generique elementaire comprise dans le groupe comprenant : 1'addition de blocs logiques et/ou de parametres, la soustraction de blocs logiques et/ou de parametres, le calcul de la valeur absolue de la difference 20 entre des blocs logiques, la multiplication de blocs logiques et/ou de parametres, le maximum parmi au moins deux blocs logiques et/ou parametres, le minimum parmi au moins deux blocs logiques et/ou parametres, le groupement et le degroupement de blocs logiques, le calcul d'un bloc logique 25 par application d'un parametre correspondant a une table de correspondance a un bloc logique, le choix conditionnel d'un bloc logique parmi au moins deux blocs logiques et/ou parametres, ce choix se faisant de la fawn suivante : si a > b on choisit c, sinon on choisit d, avec a, b, c, et d 30 qui sont des blocs logiques et/ou des parametres, 1'histogramme d'un bloc logique, le changement d'echelle d'un bloc logique fonction d'un parametre et/ou d'un bloc logique, le deplacement relatif d'un bloc logique fonction d'un parametre et/ou d'un bloc logique et une operation 35 produisant un bloc contenant au moins une coordonnee.
6. Procede selon la revendication 5 dans lequel les operations generiques comprennent des operations generiques complexes correspondant a des groupements d'operations 2895104 . 40 generiques elementaires utilises en tant que tels, ces groupements comprenant notamment : le calcul de la valeur mediane d'au moins trois blocs logiques et/ou parametres qui correspond a un groupe d'operations generiques constitue de minimum et maximum, la multiplication-accumulation de blocs logiques et/ou de parametres, la convolution d'un bloc logique avec un parametre qui correspond a un groupe d'operations generiques constitue de multiplications et d'additions avec plusieurs positions relatives, 1'addition combinee avec un maximum et un minimum, la soustraction combinee avec un maximum et un minimum, le calcul d'un gradient qui correspond a un valeur absolue de difference avec deux positions relatives, le produit scalaire d'un parametre constitue d'un vecteur et de plusieurs blocs logiques pour produire un bloc logique, le calcul d'un changement d'echelle avec interpolation qui correspond a un groupe d'operations generiques constitue de changement d'echelle et de multiplications et d'additions avec plusieurs positions relatives, la combinaison de blocs logiques qui correspond a un groupe d'operations generiques constitue de changement d'echelle avec plusieurs positions relatives,.
7. Procede selon 1'une des revendications precedentes dans lequel les positions relatives et/ou les echelles relatives, selon au moins une dimension de 1'objet, notamment spatiale et/ou temporelle, des blocs logiques ont des valeurs entieres ou des valeurs fractionnaires.
8. Procede selon 1'une des revendications precedentes dans lequel les informations elementaires sont representees par des valeurs numeriques en virgule fixe, et dans lequel les operations generiques comprennent des operations de decalage, une operation de saturation et/ou au moins une operation generique elementaire combinee a cette operation de saturation.
9. Procede selon 1'une des revendications precedentes dans lequel, dans le cas ou 1'objet est une image, la plateforme de traitement fait partie d'un appareil de capture et/ou de restitution d'image, et dans lequel 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.
FR0553947A 2005-12-19 2005-12-19 Procede pour fournir des donnees a un moyen de traitement numerique Withdrawn FR2895104A1 (fr)

Priority Applications (7)

Application Number Priority Date Filing Date Title
FR0553947A FR2895104A1 (fr) 2005-12-19 2005-12-19 Procede pour fournir des donnees a un moyen de traitement numerique
JP2008545066A JP5254030B2 (ja) 2005-12-19 2006-12-19 ディジタル処理手段にデータを提供する方法
CNA2006800530529A CN101379469A (zh) 2005-12-19 2006-12-19 向数字处理装置提供数据的方法
PCT/FR2006/051388 WO2007071882A2 (fr) 2005-12-19 2006-12-19 Procede pour fournir des donnees a un moyen de traitement numerique
US12/097,886 US8473720B2 (en) 2005-12-19 2006-12-19 Method for providing data to a digital processing means
EP06847178A EP1963970A2 (fr) 2005-12-19 2006-12-19 Procede pour fournir des donnees a un moyen de traitement numerique
KR1020087017727A KR101391569B1 (ko) 2005-12-19 2008-07-18 디지털 처리 수단에 데이터를 제공하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0553947A FR2895104A1 (fr) 2005-12-19 2005-12-19 Procede pour fournir des donnees a un moyen de traitement numerique

Publications (1)

Publication Number Publication Date
FR2895104A1 true FR2895104A1 (fr) 2007-06-22

Family

ID=36716757

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0553947A Withdrawn FR2895104A1 (fr) 2005-12-19 2005-12-19 Procede pour fournir des donnees a un moyen de traitement numerique

Country Status (7)

Country Link
US (1) US8473720B2 (fr)
EP (1) EP1963970A2 (fr)
JP (1) JP5254030B2 (fr)
KR (1) KR101391569B1 (fr)
CN (1) CN101379469A (fr)
FR (1) FR2895104A1 (fr)
WO (1) WO2007071882A2 (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1273931C (zh) 2001-07-12 2006-09-06 杜莱布斯公司 改进图象质量的方法和***
CN101927543B (zh) * 2009-06-26 2013-11-06 深圳市远望工业自动化设备有限公司 塑料箱体水冷定型机
KR101080974B1 (ko) * 2009-11-24 2011-11-09 한국과학기술정보연구원 계산 시뮬레이션 모사 시스템 및 그 방법
US9021017B2 (en) * 2011-09-03 2015-04-28 Barracuda Networks, Inc. Configuring a plurality of diverse devices/services from an adaptive configuration control hyper-server apparatus
CN103002464B (zh) * 2011-09-08 2015-08-19 ***通信集团设计院有限公司 一种无线网络仿真的参数信息转发方法、装置及仿真***
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
US10573024B1 (en) * 2016-08-22 2020-02-25 Amazon Technologies, Inc. Distance detection based on chromatic aberration

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666503A (en) * 1994-11-14 1997-09-09 Xerox Corporation Structured image (SI) image editor and method for editing structured images
US5675773A (en) * 1995-12-21 1997-10-07 Cirrus Logic, Inc. Graphics display system with a low level hardware dependent graphics library
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6321323B1 (en) * 1997-06-27 2001-11-20 Sun Microsystems, Inc. System and method for executing platform-independent code on a co-processor
US5923892A (en) * 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US5999179A (en) * 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6305009B1 (en) * 1997-12-05 2001-10-16 Robert M. Goor Compiler design using object technology with cross platform capability
US6847980B1 (en) * 1999-07-03 2005-01-25 Ana B. Benitez Fundamental entity-relationship models for the generic audio visual data signal description
US20020057286A1 (en) * 2000-08-25 2002-05-16 Markel Steven O. Device independent video enhancement scripting language
US20020170039A1 (en) * 2001-02-22 2002-11-14 Kovacevic Branko D. System for operating system and platform independent digital stream handling and method thereof
CN1273931C (zh) * 2001-07-12 2006-09-06 杜莱布斯公司 改进图象质量的方法和***
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
JP4159986B2 (ja) * 2001-07-12 2008-10-01 ドゥ ラブズ デジタル画像から変換された画像を計算するための方法およびシステム
US7901291B2 (en) * 2001-09-28 2011-03-08 Igt Gaming device operable with platform independent code and method
JP2004030386A (ja) * 2002-06-27 2004-01-29 Canon Inc 画像処理方法および画像処理装置
US9207958B1 (en) * 2002-08-12 2015-12-08 Arm Finance Overseas Limited Virtual machine coprocessor for accelerating software execution
US7987455B1 (en) * 2003-07-23 2011-07-26 International Business Machines Corporation System and method of command processing
JP2005157857A (ja) * 2003-11-27 2005-06-16 Canon Inc データ処理装置および印刷制御方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US7614075B2 (en) * 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
No Search *

Also Published As

Publication number Publication date
KR20080087123A (ko) 2008-09-30
US20090037877A1 (en) 2009-02-05
WO2007071882A8 (fr) 2008-05-29
US8473720B2 (en) 2013-06-25
CN101379469A (zh) 2009-03-04
KR101391569B1 (ko) 2014-05-02
JP2009520256A (ja) 2009-05-21
EP1963970A2 (fr) 2008-09-03
WO2007071882A2 (fr) 2007-06-28
JP5254030B2 (ja) 2013-08-07

Similar Documents

Publication Publication Date Title
FR2895103A1 (fr) Procede et systeme de traitement de donnees numeriques
Khashabi et al. Joint demosaicing and denoising via learned nonparametric random fields
FR2895102A1 (fr) Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
KR101137753B1 (ko) 고속의 메모리 효율적인 변환 구현 방법
Liu et al. A new polarization image demosaicking algorithm by exploiting inter-channel correlations with guided filtering
FR2895104A1 (fr) Procede pour fournir des donnees a un moyen de traitement numerique
Song et al. Real-scene reflection removal with raw-rgb image pairs
Lapray et al. Hardware-based smart camera for recovering high dynamic range video from multiple exposures
Singh et al. Multifocus and multiexposure techniques
Aberkane et al. Edge detection from Bayer color filter array image
Jia et al. Learning rich information for quad bayer remosaicing and denoising
Shao et al. Partition-based interpolation for color filter array demosaicking and super-resolution reconstruction
Marenzi et al. Block matching super-resolution parallel GPU implementation for computational imaging
Singh et al. Detail Enhanced Multi-Exposer Image Fusion Based on Edge Perserving Filters
Guo et al. Low-light color imaging via dual camera acquisition
Hajisharif Computational Photography: High Dynamic Range and Light Fields
Tajima et al. Chromatic interpolation based on anisotropy-scale-mixture statistics
WO2019012647A1 (fr) Dispositif de traitement d&#39;image, procédé de traitement d&#39;image et support de stockage de programme
da Silva et al. Isp meets deep learning: A survey on deep learning methods for image signal processing
US20170132750A1 (en) Multi-line image processing with parallel processing units
Hagen et al. Fourier domain filtering method for demosaicking color polarization camera images
Kim et al. Noise insensitive high resolution color interpolation scheme considering cross-channel correlation
Zhou Towards practical deep learning based image restoration model
Zhang et al. Graphic-processing-unit-accelerated real-time exposure fusion method using pixel-level optimal exposure criterion
Liang et al. Pixel-wise exposure control for single-shot HDR imaging: A joint optimization approach

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

ST Notification of lapse

Effective date: 20190906