FR2772492A1 - Interpolation radiale dissymetrique et radiale elaguee dissymetrique - Google Patents

Interpolation radiale dissymetrique et radiale elaguee dissymetrique Download PDF

Info

Publication number
FR2772492A1
FR2772492A1 FR9812078A FR9812078A FR2772492A1 FR 2772492 A1 FR2772492 A1 FR 2772492A1 FR 9812078 A FR9812078 A FR 9812078A FR 9812078 A FR9812078 A FR 9812078A FR 2772492 A1 FR2772492 A1 FR 2772492A1
Authority
FR
France
Prior art keywords
values
interpolation
color space
bits
input
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
FR9812078A
Other languages
English (en)
Other versions
FR2772492B1 (fr
Inventor
Gary L Vondran Jr
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of FR2772492A1 publication Critical patent/FR2772492A1/fr
Application granted granted Critical
Publication of FR2772492B1 publication Critical patent/FR2772492B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • H04N1/6016Conversion to subtractive colour signals
    • H04N1/6019Conversion to subtractive colour signals using look-up tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)

Abstract

Une technique d'interpolation radiale réalise une interpolation en engendrant des sous-cubes successifs et en utilisant une valeur de sommet du sous-cube final comme résultat. Une technique d'interpolation radiale élaguée utilise un sous-ensemble des valeurs de sommets pour engendrer le résultat. Dans une interpolation tétraédrique, des sous-cubes successifs sont engendrés et une valeur de sommet de sous-cube final est le résultat. Une interpolation tétraédrique élaguée utilise un sous-ensemble des valeurs de sommets pour engendrer le résultat en améliorant l'efficacité de l'interpolation tétraédrique. Une mise en oeuvre matérielle de l'interpolation radiale élaguée et de l'interpolation tétraédrique élaguée utilise une structure matérielle commune avec un multiplexage des valeurs de sommets d'entrée pour exécuter une interpolation soit radiale, soit tétraédrique. Les interpolations radiale élaguée dissymétrique et tétraédrique élaguée dissymétrique permettent une interpolation en utilisant des valeurs de données d'interpolation réparties sur tout l'espace de couleurs, avec une résolution variable basée sur les caractéristiques de l'espace de couleurs.

Description

La présente demandeconcernedes objets liés â la demande de brevet également en instance intitulée "RADIAL AND PRUNED RADIAL INTERPOLATION", c'est-à-dire
Interpolation radiale et radiale élaguée1 numéro de bordereau de mandataire 10 970 159.1, à la demande de brevet, également en instance intitulée TETEflRAL
AND PRUNED TETRAHEDRAL INTERPOLATION", c'est-à-dire
Interpolation tétraédrique et tétraédrique élaguée, numéro de bordereau de mandataire 10 970 160-1, à la demande de brevet également en instance intitulée "COMMON PRUNED RADIAL AND PRUNED TETRAHEDRAL
INTERPOLATION HARDWARE IMPLEMENTATION", c' est-à-dire
Mise en application par éléments matériels d'une interpolation commune radiale élaguée et tétraédrique élaguée, numéro de bordereau de mandataire 10 970 1571, à la demande de brevet également en instance intitulée 11NON-SYMMETRIC TETRAHEDRAL AND PRUNED
TETRAHEDRAL INTERPOLATION" c'est-à-dire Interpolation tétraédrique dissymétrique et tétraédrique élaguée, numéro de bordereau de mandataire 10 970 156-1, et à la demande de brevet également en instance intitulée "COMMON NON-SYMMETRIC PRUNED RADIAL AND NON-SYMMETRIC
PRUNED TETRAHEDRAL INTERPOLATION HARDWARE
IMPLEMENTATION", c'est-à-dire Mise en application par éléments matériels d'une interpolation commune radiale élaguée dissymétrique et tétraédrique élaguée dissymétrique, numéro de bordereau de mandataire 10 971 846-1, qui ont été déposées à la même date que la présente demande.
La présente invention concerne la transformation de données et, plus particulièrement, la transformation de données d'un premier espace à un deuxième espace, comme dans la conversion d'un premier espace de couleurs à un deuxième espace de couleurs.
La colorimétrie est reconnue depuis longtemps comme une science complexe. On trouve en général possible et commode de représenter des vecteurs de stimuli de couleurs dans un espace tridimensionnel, appelé l'espace tristimulus. Essentiellement, comme défini en 1931 par la Commission Internationale de laEclairage, ou CIE, trois couleurs primaires X, Y, Z, peuvent être combinées pour définir toutes les sensations lumineuses que nous expérimentons par les yeux, c'est-à-dire que les propriétés de concordance de couleurs d'un observateur trichromatique idéal définies en spécifiant trois fonctions indépendantes de longueurs d'ondes qui sont identifiées avec les fonctions idéales de concordance de couleurs de l'observateur idéal forment une norme internationale pour spécifier les couleurs. Les éléments fondamentaux de ces structures tridimensionnelles sont décrits dans les documents techniques comme Principles of Col or
Technology, c'est-à-dire Principes de la technologie des couleurs, de Billmeyer et Saltzman, publié chez
John Wiley & Sons, Inc., NY, copyright 1981, 2-ieme édition, et dans Color Science: Concepts and Methods,
Quantitative Data and Formulae, c'est-à-dire Science des couleurs: Concepts et procédés, données quantitatives et formules, de Wyszecki et Stiles, publié chez John Wiley & Sons, Inc., copyright, 1982, 2't édition, en particulier les pages 119 à 130.
Des systèmes de modèles tri chromatiques - comme rouge, vert et bleu ou RGB, cyan ou bleu-vert, magenta et jaune ou CMY, teinte, saturation, valeur ou HSV, teinte, brillance, saturation ou HLS, luminance, échelle rouge-jaune, échelle vert-bleu ou La*b* ; luminance, échelle rouge-vert, échelle jaune-bleu ou
Luv; YIQ utilisé dans des diffusions commerciales de
télévision en couleurs et similaires-offrent des
variantes aux concepteurs d'un système. voir des
ouvrages comme Fundamentals of Interactive Computer
Graphics, c'est-à-dire Eléments fondamentaux des
graphiques informatiques interactifs de Foley et Van
Dam, Addison-Wesley Publishing Company, en particulier
les pages 606 à 621 qui décrivent divers modules de couleurs à trois variables.
Une transformation de couleurs entre des systèmes de modèles dans un traitement de données numériques présente de nombreux problèmes aux constructeurs de matériels, ou OEM. Traduire des données d'un système à un autre système est difficile parce que la relation entre les systèmes est généralement non linéaire.
C'est donc un problème crucial que de maintenir l'intégrité des couleurs entre, d'une part, une image d'origine provenant d'un dispositif d'entrée, comme un dispositif de balayage en couleurs, un affichage à tube à rayons cathodiques ou CRT, une caméra numérique, une génération par logiciel/microprogrammes d'ordinateur, et similaires et, d'autre part, une copie traduite à un dispositif de sortie, comme un affichage sur tube à rayons cathodiques, une imprimante laser en couleurs, une imprimante à jets d'encre couleurs et similaires.
Par exemple, des artistes qui travaillent par ordinateurs souhaitent pouvoir créer une image en couleurs sur une vidéo informatique et amener une imprimante à produire les mêmes couleurs sur un support d'impression. Ou bien, une photographie d'origine en couleurs peut être numérisée au moyen d'un dispositif de balayage; des données résultantes peuvent être transformées pour être affichées sur un moniteur vidéo ou être reproduites sur support d'impression par une imprimante laser, à jets d'encre, ou à transfert thermique. Comme décrit dans les documents cités en référence ci-dessus, des couleurs peuvent être construites en tant que restitutions des couleurs primaires additives, rouge, vert et bleu, c'est-à-dire RGB, ou des couleurs primaires soustractives, bleu-vert, magenta, jaune et noir ou
CMYK. Une transformation peut exiger de passer d'un espace de couleurs RGB, par exemple, un moniteur vidéo d'ordinateur, à un espace de couleurs CMYK, par exemple, pour imprimer sur support d'impression par imprimante laser. Transformer d'un espace de couleurs à un autre exige des calculs complexes non linéaires à multiples dimensions. Certaines opérations de transformation pourraient être accomplies par multiplication de matrices.
Cependant, une difficulté de ce procédé de conversion d'espaces de couleurs résulte d'imperfections dans les colorants, les substances fluorescentes et les toners utilisés pour la production des couleurs. Une complication additionnelle consiste en ce que différents types de supports produisent des réactions différentes de couleurs en imprimant avec les mêmes mélanges de colorants. Un procédé purement mathématique de conversion d'espace en couleurs ne réalise donc pas une reproduction acceptable en couleurs.
I1 est reconnu que des résultats supérieurs de conversion d'espaces de couleurs sont obtenus en utilisant une méthode par table à consulter, basée sur un ensemble de valeurs dérivées empiriquement.
Typiquement, l'espace de couleurs RGB utilisé pour les affichages vidéo utilise huit bits pour représenter chacune des couleurs primaires, rouge, vert et bleu.
I1 faut donc vingt quatre bits pour représenter chaque élément de représentation. Pour cette résolution, l'espace de couleurs RGB consisterait en 224 ou 16.777.216 couleurs. I1 faudrait une table a consulter de 424, ou 67.10.64, octets de données pour exécuter une conversion d'espaces de couleurs à partir de chacun de ces points de l'espace de couleurs RGB pour engendrer les quatre composantes d'espace de couleurs
CMYK: pour maintenir la pureté de couleur noire lors d'une impression, un noir séparé est habituellement prévu, plut8t que d'imprimer les trois colorants bleuvert, , magenta et jaune afin d'engendrer ce qui est habituellement connu comme noir de processus. La construction empirique d'une table à consulter comprenant un tel nombre d'entrées est trop onéreuse.
Pour réaliser les transformées d'un espace de couleurs à un autre, il est possible d'employer un certain nombre de méthodes d'interpolations bien connues dans le domaine de la conversion des espaces de couleurs. Des procédés d'exécution de conversions d'espaces de couleurs en utilisant une interpolation trilintaire, une interpolation prismatique, et une interpolation tétraédrique, sont décrits dans l'article PERFORMING COLOR SPACE CONVERSIONS WITH
THREE DIMENSIONAL LINEAR INTERPOLATION, c'est-à-dire
Exécuter des conversions d'espaces de couleurs au moyen d'une interpolation linéaire tridimensionnelle, publié dans JOURNAL OF ELECTRONIC IMAGING Juillet 1995
Vol 4 (3) . Le brevet des Etats-Unis n 3 893 166 de
Pugsley décrit une méthode de traduction entre espaces de couleurs qui utilise une table à consulter pour accéder à des valeurs utilisées dans une interpolation.
Convertir de grandes quantités de données entre
espaces de couleurs, comme ce qui est nécessaire pour
une impression en couleurs, en utilisant les procédés
d'interpolation de l'art antérieur est une opération qui exige du temps. En utilisant des procédés de l'art antérieur qui impliquent des calculs importants pour le processus de conversion d'espaces de couleurs, il est difficile d'atteindre des débits élevés de production de données.
Il existe donc un besoin d'un procédé d'interpolation et d'un appareil d'interpolation qui permettent de réduire les calculs nécessaires pour effectuer une conversion entre espaces de couleurs.
C'est le but de la présente invention que de répondre à ce besoin.
Pour atteindre ce but, l'invention réalise, selon un premier aspect, un interpolateur radial élagué dissymétrique pour interpoler entre des valeurs de données d'interpolation en utilisant des valeurs de données d'entrée incluant chacune d composantes pour engendrer des valeurs de données de sortie, lesdites d composantes étant représentées, de façon correspondante, par d ensembles de bits segmentés chacun de façon à former d ensembles de bits d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits,
caractérisé en ce qu'il comprend:
un premier ensemble de 2n - 1 multiplexeurs où n est égal à la plus grande desdites valeurs nl, n2, n3 ..., nd, I chacun desdits multiplexeurs étant configuré pour recevoir l'une des entrées d'un ensemble d'entrées de commande et présentant une sortie de multiplexeur, ledit premier ensemble de 2n 1 multiplexeurs étant destiné à sélectionner parmi lesdites valeurs de données d'interpolation en réponse audit ensemble d'entrées de commande;
un deuxième ensemble de 2n - n - 1 blocs de calcul d'entrées de commande, chacun desdits blocs de calcul d'entrée de commande étant couplé à l'un desdits multiplexeurs, ledit deuxième ensemble de 2n n - 1 blocs de calculs d'entrée de commande étant destiné à fournir 2n - n - 1 entrées dudit ensemble d'entrées de commande, une détermination desdites 2n n - 1 entrées dudit ensemble d'entrées de commande incluant d'utiliser une première fonction; et
un moyen d'addition configuré pour recevoir ladite sortie du multiplexeur dudit premier ensemble.
On peut prévoir que
chacun desdits multiplexeurs dudit premier ensemble inclut une configuration pour recevoir 2d desdites valeurs de données d'interpolation pour sélectionner l'une desdites 2d valeurs desdites valeurs de données d'interpolation;
lb1, lb2, lb3, .. lbd désignent lesdits d ensembles de bits d'ordre inférieur, une position de bit de chaque bit desdits d ensembles de bits d'ordre inférieur étant désignée à partir d'un bit de poids fort parmi lesdits bits d'ordre inférieur jusqu'à un bit de poids faible desdits bits d'ordre inférieur par des valeurs correspondantes de i1, i2, i3... id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2 - 1 à 0, de n3 - 1 à 0, .. de nd - 1 à 0,
un calcul desdites 2n - n - 1 entrées dudit ensemble d'entrées de commande inclut d'utiliser f(N, i) = v[i] # (N & #m[i]) pour ladite première fonction, où m[i] = 2d-1 x Mask1[i] + 2d-2 x Mask2[i] + 2d-3 x Mask3 [i] + + 2d-d + Maskd[i], chacun des éléments Maskj = 2k - 1 pour une valeur de k sélectionnée parmi lesdits n1, n2, n3, ... nd et pour j allant de 1 à d, v[i] = m[i] & < 2d-1 x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + . - + 2d-d x îbd[i]) pour des valeurs de i allant de n - 1 à 0 et où N inclut des valeurs allant de 1 à 2d; et
un calcul de n entrées dudit ensemble d'entrées de commande inclut d'utiliser v[i] pour chacune desdites valeurs de i qui vont de n - 1 à 0.
Dans ce cas, de préférence,
ledit moyen d'addition inclut 2n-1 additionneurs qui présentent chacun une première entrée, une deuxième entrée, et une sortie;
ladite première entrée et ladite deuxième entrée de 2n-1 1 desdits additionneurs sont couplées à l'une desdites sorties de multiplexeurs desdits multiplexeurs;
ladite première entrée de l'un des additionneurs inclut une configuration pour recevoir l'une desdites 2d valeurs de données d'interpolation sélectionnées en utilisant d ensembles de bits d'ordre supérieur segmentés à partir desdits d ensembles de bits et ladite deuxième entrée est couplée à l'une desdites sorties de multiplexeur dudit premier ensemble
ladite première entrée et ladite deuxième entrée de 2n ~ (2ne1 - 1) desdits additionneurs sont couplées à ladite sortie d'un autre desdits additionneurs;
chacune desdites valeurs de données d'interpolation inclut D composantes de valeur de données d'interpolation; et
chacune desdites D composantes de valeur de données d'interpolation correspond à une dimension d'un espace de couleurs de sortie et chacun desdites d composantes desdites valeurs de données d'entrée correspond à une dimension d'un espace de couleurs d'entrée.
On peut en particulier prévoir alors que
un dispositif d'impression inclut ledit interpolateur radial élagué dissymétrique pour exécuter une conversion d'espace de couleurs.
On peut prévoir, selon une première modalité avantageuse,
que D est égal à 3, d est égal à 3 et n est égal à 4, ledit espace de couleurs de sortie inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un XYZ, un HSV, un
Luv, un HLS et un CMY et ledit espace de couleurs d'entrée inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un
XYZ, un HSV, un Luv, un HLS et un CMY,
ou, selon une autre modalité avantageuse,
que D est égal à 4, d est égal à 3 et n est égal à 4, ledit espace de couleurs de sortie inclut un espace CMYK et ledit espace de couleurs d'entrée inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un XYZ, un HSV, un Luv, un HLS et un CMY.
Selon un deuxième aspect, l'invention réalise un interpolateur radial dissymétrique pour interpoler entre des valeurs de données d'interpolation en utilisant des valeurs de données d'entrée incluant chacune d composantes pour engendrer des valeurs de données de sortie, lesdites d composantes étant représentées, de façon correspondante, par d ensembles de bits segmenté s chacun de façon à former d ensembles de bits d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits,
caractérisé en ce qu'il comprend:
un premier ensemble de 2d multiplexeurs, chacun desdits multiplexeurs comportant une sortie de multiplexeur et étant configuré pour recevoir une entrée de commande et lesdites valeurs de données d' interpolation;
un deuxième ensemble de 2d additionneurs, chacun desdits additionneurs présentant une première entrée, une deuxième entrée, et une sortie, chacune desdites premières entrées desdits additionneurs dudit deuxième ensemble de 2d additionneurs étant agencée pour recevoir l'une desdites valeurs de données d'interpolation et chacune desdites deuxièmes entrées de ces additionneurs étant couplée à l'une desdites sorties de multiplexeur; et
un troisième ensemble de 2d blocs de calcul d'entrée de commande, chacun desdits blocs de calcul d'entrée de commande étant couplé à l'un desdits multiplexeurs pour appliquer ladite entrée de commande.
Selon un troisième aspect, l'invention fournit un procédé d'interpolation radiale élaguée dissymétrique intervenant pour une sélection sur des valeurs de données d'interpolation en utilisant des valeurs de données d'entrée incluant chacune d composantes pour engendrer des valeurs de données de sortie, lesdites d composantes étant représentées par d ensembles de bits segmentés chacun de façon à former d ensembles de bits d'ordre inférieur incluant chacun, respectivement, n1, n21 n3 ... nd desdits bits, lesdits dans ensembles de bits d'ordre inférieur étant désignés lb1, lb2, lb3, ... lbd, la position de bit de chaque bit desdits d ensembles de bits d'ordre inférieur étant désignée à partir du bit de poids fort parmi lesdits bits d'ordre inférieur jusqu'au bit de poids faible desdits bits d'ordre inférieur par des valeurs correspondantes de il, i2, i3 ... id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2 - 1 à 0, de n3 - 1 à 0, ... de nd - 1 à 0,
caractérisé en ce qu'il comprend les étapes consistant a:
calculer un premier ensemble de 2n - n - 1 valeurs en utilisant f(N, i) = v[i] (N & m[i] , où m[i] = 2d-1 x Maskl [i] + 2d-2 x Mask2[i] + 2d-3 x Mask3[i] + + 2d-d + Maskd[i], chacun des éléments Maskj = 2k ~ 1 pour une valeur de k sélectionnée parmi lesdits n1, n2, n3, nd et pour j allant de 1 à d, vi] = m[i] & (2d-l x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + + 2d-d x lbd[ij) pour des valeurs de i allant de n - 1 à 0, n étant le plus grand desdits n1, n2, n3, ... nd, et où N inclut des valeurs allant de 1 à 2d;
sélectionner au moins le minimum de 2n et 2d desdites valeurs de données d'interpolation en utilisant certaines valeurs dudit premier ensemble de 2n-1 - 1 valeurs, v[i] pour ladite valeur de i allant de n - 1 à 0, et lesdits d ensembles de bits d'ordre supérieur; et
ajouter un deuxième ensemble desdites valeurs de données d'interpolation formées à partir desdites valeurs de données d'interpolation provenant de ladite étape de sélection, pour engendrer une somme.
Le procédé peut comprendre en outre l'étape consistant à:
diviser ladite somme par 2n
Selon un quatrième aspect, l'invention fournit un procédé d'interpolation radiale dissymétrique intervenant pour une sélection sur des valeurs de données d'interpolation, en utilisant des valeurs de données d'entrée incluant chacune d composantes pour engendrer des valeurs de données de sortie, lesdites d composantes étant représentées par d ensembles de bits segmentés chacun de façon à former d ensembles de bits d'ordre inférieur incluant chacun, respectivement, n1, n21 n3 ... nd desdits bits, lesdits dans ensembles de bits d'ordre inférieur étant désignés lb1, lb2, lb3, ... lbd, la position de bit de chaque bit desdits d ensembles de bits d'ordre inférieur étant désignée à partir du bit de poids fort parmi lesdits bits d'ordre inférieur jusqu'au bit de poids faible desdits bits d'ordre inférieur par des valeurs correspondantes de il, i2, i3 id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2 - 1 à 0, de n3 - 1 à 0, . de nd - 1 à 0,
caractérisé en ce qu'il comprend les étapes consistant à:
calculer un premier ensemble de 2n - n - 1 valeurs en utilisant f(N, i) = v[i] # (N & #m[i], , où m[i] = 2d-1 x Mask1[i] + 2d-2 x Mask2 [i] + 2d-3 x Mask3 [i] + ... + 2d-d + Maskd[i], chacun des éléments Maskj 2k ~ 1 pour une valeur de k sélectionnée parmi lesdits n11 n2, n3, ... nd et pour j allant de 1 à d, v[i] = m[i] & (2d-l x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + ... + 2d-d x lbd[i]) pour i égal à n - 1 n étant le plus grand desdits n1, n2, n3, ... nd, et où N inclut des valeurs allant de 1 à 2d;
sélectionner un premier ensemble de 2d paires desdites valeurs de données d'interpolation en utilisant chacune des valeurs dudit premier ensemble de 2d valeurs et une valeur correspondante de N; et
calculer un premier ensemble de 2d sommes à partir dudit premier ensemble de 2d paires.
Les buts, particularités et avantages de la présente invention exposés ci-dessus, ainsi que d'autres, ressortiront davantage de la lecture de la description qui suit d'un mode de réalisation préféré de la présente invention, en se référant aux dessins annexés, dans lesquels:
la Figure la est une représentation de valeurs d'espace de couleurs de sortie utilisée pour une interpolation dans un treillis cubique. Les sommets de chacun des cubes qui forment le treillis cubique représentent des valeurs de l'espace de couleurs de sortie;
la Figure lb est une représentation graphique d'un processus de conversion d'espaces de couleurs, à partir d'une couleur exprimée en coordonnées cylindriques vers une couleur exprimée en coordonnées rectangulaires;
les Figures 2a à 2d sont une représentation graphique de la sélection d'un sous-cube unique en utilisant les bits correspondants parmi les bits d'ordre inférieur de la valeur de l'espace de couleurs d'entrée ;
les Figures 3a à 3h représentent les huit souscubes possibles qui peuvent être sélectionnés dans un cube en utilisant les bits correspondant parmi les bits d'ordre inférieur de la valeur d'espaces en couleurs d'entrée;
la Figure 4 représente la numérotation des sommets du cube dans le but de sélectionner le souscube qui contient le résultat de l'interpolation en utilisant les bits correspondants des bits d'ordre inférieur;
la Figure 5 est une représentation graphique du processus de génération de sous-cubes radiaux;
les Figures 6a à 6e sont une représentation graphique d'itérations multiples du processus de subdivision du cube utilisé dans une interpolation radiale;
la Figure 7 représente une mise en application par éléments matériels d'un interpolateur radial;
la Figure 8 est un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation radiale;
la Figure 9 est une représentation schématique des calculs nécessaires pour la génération des souscubes dans une interpolation radiale élaguée;
la Figure 10 représente une application par éléments matériels d'une interpolation radiale élaguée;
la Figure 11 est un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation radiale élaguée;
la Figure 12 est un schéma logique de haut niveau d'un procédé mis en application par logiciel pour exécuter une interpolation radiale élaguée;
la Figure 13 est une représentation des frontières extérieures d'un espace en couleurs CMY et d'un espace en couleurs aMY et d'un espace en couleurs
RGB représentant les couleurs aux frontières extérieures des espaces de couleurs;
la Figure 14 est une représentation graphique de la génération d'un sous-cube à partir de deux tétraèdres;
la Figure 15 est une représentation schématique des calculs nécessaires pour la génération des souscubes dans une interpolation tétraédrique élaguée;
la Figure 16 est un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation tétraédrique;
la Figure 17 représente une application par éléments matériels d'une interpolation tétraédrique;
la Figure 18 représente une mise en application par éléments matériels d'une interpolation tétraédrique élaguée;
la Figure 19 est un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation tétraédrique élaguée;
la Figure 20 est un schéma logique de haut niveau d'un procédé de mise en application par logiciel pour effectuer une interpolation tétraédrique élaguée;
la Figure 21 est une représentation schématique d'une mise en application commune d'une interpolation radiale et d'une interpolation tétraédrique élaguée;
la Figure 22 représente une mise en application par éléments matériels d'une interpolation commune radiale élaguée et tétraédrique élaguée;
les Figures 23a à 23e constituent une représentation graphique d'un processus d'interpolation dissymétrique;
la Figure 24 est une représentation graphique de la génération d'un sous-cube à partir d'un cube en utilisant une génération de sous-cubes dissymétriques;
la Figure 25 est une représentation schématique du processus d'interpolation radiale dissymétrique;
la Figure 26 est un schéma logique de haut niveau d'un procédé d'exécution d'une interpolation radiale dissymétrique;
la Figure 27 est un schéma logique de haut niveau d'un procédé mis en application par logiciel pour exécuter une interpolation radiale élaguée dissymétrique;
la Figure 28 représente une mise en application par éléments matériels d'une interpolation radiale élaguée dissymétrique;
la Figure 29 est un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation radiale dissymétrique;
la Figure 30 représente une mise en application par éléments matériels d'une interpolation radiale dissymétrique;
la Figure 31 est une représentation schématique du processus d'interpolation tétraédrique élaguée dissymétrique;
la Figure 32 représente un schéma logique de haut niveau d'un procédé d'exécution d'une interpolation tétraédrique élaguée dissymétrique;
la Figure 33 est un schéma logique de haut niveau d'un procédé mis en application par logiciel pour exécuter une interpolation tétraédrique élaguée dissymétrique;
la Figure 34 représente une mise en application par éléments matériels d'une interpolation tétraédrique élaguée dissymétrique;
la Figure 35 est un schéma logique de haut niveau d'un procédé généralisé de mise en application d'une interpolation tétraédrique dissymétrique;
la Figure 36 représente une mise en application par éléments matériels d'un interpolateur tétraédrique dissymétrique;
La Figure 37 représente une mise en application par éléments matériels d'un interpolateur commun radial élagué dissymétrique et tétraédrique élagué dissymétrique;
la Figure 38 inclut une liste en code C d'un procédé de mise en application d'une interpolation radiale élaguée par logiciel;
la Figure 39 inclut une liste en langage dit "Very High Description Language" ou "VHDL", c'est-àdire langage de description de très élevé, utilisée pour engendrer une mise en application par éléments matériels d'une interpolation radiale élaguée;
la Figure 40 inclut une liste en code C d'un procédé de mise en application d'une interpolation tétraédrique élaguée par logiciel;
la Figure 41 inclut une liste en langage VHDL, utilisée pour engendrer une mise en application par éléments matériels d'une interpolation tétraédrique élaguée;
la Figure 42 inclut une liste en langage VHDL, utilisée pour engendrer une mise en application commune, par éléments matériels, d'une interpolation commune radiale élaguée et d'une interpolation tétraédrique élaguée;
la Figure 43 inclut une liste en code C d'un procédé de mise en application d'une interpolation radiale élaguée dissymétrique par logiciel;
la Figure 44 inclut une liste en langage VHDL, utilisée pour engendrer une mise en application par éléments matériels d'une interpolation radiale élaguée dissymétrique ;
la Figure 45 inclut une liste en code C d'un procédé de mise en application d'une interpolation tétraédrique élaguée dissymétrique par logiciel;
la Figure 46 inclut une liste en langage VHDL, utilisée pour engendrer une mise en application par éléments matériels d'une interpolation tétraédrique élaguée dissymétrique;
la Figure 47 inclut une liste en langage VHDL, utilisée pour engendrer une mise en application par éléments matériels d'une interpolation commune radiale élaguée dissymétrique et tétraédrique élaguée dissymétrique.
La présente invention n'est pas limitée aux exemples spécifiques de modes de réalisation illustrés ici. De plus1 bien que plusieurs modes de réalisation d'interpolation par sous-cubes soient décrits dans le contexte d'une imprimante laser en couleurs l'homme de l'art reconnaît, après avoir compris la présente descriptionS que les modes de réalisation exposés d'interpolation par sous-cubes possèdent une applicabili un grand nombre de calculs. I1 existe un besoin d'un procédé de génération des valeurs des sommets des sous-cubes qui soit plus efficace du point de vue calcul.
A la Figure la est représenté un treillis cubique 1. Le treillis cubique est formé d'une multiplicité de cubes, les sommets des cubes représentant des valeurs dans l'espace de couleurs de sortie. Les valeurs de l'espace de couleurs d'entrée sont segmentées chacune en une partie supérieure et une partie inférieure. La partie supérieure de chacune des valeurs de l'espace de couleurs d'entrée sert d'index pour adresser les valeurs des sommets du treillis cubique 1 utilisé pour l'interpolation. La partie inférieure de chacune des valeurs d'espaces de couleurs d'entrée est utilisée pour interpoler entre les valeurs d'espace de couleurs de sortie auxquelles l'utilisation de la partie supérieure de la valeur d'espace de couleurs d'entrée permet d'accéder. Chacune des dimensions du treillis cubique 1 correspond à l'une des composantes de la valeur d'espace de couleurs d'entrée. Les valeurs associées aux sommets du treillis cubique 1 sont utilisées pour engendrer des valeurs d'espace de couleurs de sortie.
Chacune des valeurs d'espace de couleurs de sortie possède de multiples composantes qui correspondent aux dimensions de l'espace de couleurs de sortie. Une conversion est effectuée à partir des valeurs de l'espace de couleurs d'entrée vers des composantes des valeurs de l'espace de couleurs de sortie. Une conversion à chaque composante de valeurs d'espace de couleurs de sortie utilise un ensemble distinct de valeurs de sommets. Dans le cas où il existe trois composantes à chacune des valeurs d'espace de couleurs de sortie, il existe trois ensembles de valeurs de sommets utilisées pour la conversion d'espace de couleurs. Pour ce cas, on pourrait considérer chaque valeur de sommet comme formée de trois valeurs, chacune des trois valeurs étant sélectionnée dans l'un des trois ensembles. En considérant de cette manière les valeurs de sommets, la conversion à chacune des composantes des valeurs d'espace de couleurs de sortie serait exécutée en parallèle. On peut aussi effectuer de façon sérielle la conversion à chacune des composantes de l'espace de couleurs de sortie. Effectuée de cette manière, la conversion peut être considérée comme utilisant trois réseaux cubiques séparés, correspondant chacun à un ensemble de valeurs de sommets.
La Figure lb est une représentation graphique générale du processus d'interpolation. Considérons par exemple la conversion d'une valeur 10 d'espace de couleurs d'entrée, a, b, c, qui représente une couleur dans un espace de couleurs cylindrique, à une valeur 11 de l'espace de couleurs de sortie x, y, z qui représente la même couleur dans un espace de couleurs cartésien. Dans cet exemple, chacune des éléments a, b et c est représenté par huit bits. Chacun des trois groupes de huit bits peut être segmenté, par exemple, en quatre bits supérieurs 10a, représentés par au, bu et cu et quatre bits inférieurs 10b représentés par al, bl et cl. Les trois groupes de quatre bits supérieurs 10a sont utilisés comme index pour le treillis cubique 1 afin de restituer les huit valeurs correspondant aux sommets d'un cube du treillis cubique 1 qui seront utilisées comme valeurs de données d'interpolation. Les trois groupes de quatre bits inférieurs 10b sont ensuite utilisés pour interpoler entre les huit valeurs de données d'interpolation qui correspondent aux sommets du treillis cubique 1 pour engendrer une composante de la valeur 11 d'espace de couleurs de sortie.
L'homme de l'art reconnaît que d'autres segmentations des bits de la valeur 10 d'espace de couleurs d'entrée sont possibles. La segmentation particulière des bits dépend d'éléments tels que la dimension de la mémoire disponible pour mémoriser les valeurs de l'espace de couleurs de sortie utilisées pour l'interpolation et de l'ampleur de variation de la valeur de l'espace de couleurs de sortie qui se produit entre des sommets du treillis cubique 1. I1 existe un compromis entre l'exactitude de l'interpolation et la dimension de la mémoire utilisée pour mémoriser les valeurs de l'espace de couleurs de sortie utilisées comme valeurs de données d'interpolation. Si les caractéristiques de l'espace de couleurs de sortie sont telles qu'il varie de façon relativement linéaire dans tout l'espace de couleurs, le nombre des sommets nécessaires dans le treillis cubique 1 pour fournir un niveau acceptable d'exactitude d'interpolation est moindre.
L'index formé par au, bu et cu sert de point d'entrée dans le treillis cubique. L'index adresse un sommet parmi les huit sommets du cube utilisés comme valeurs de données d'interpolation. Chacun des sommets du cube correspond à une valeur utilisée pour l'interpolation afin d'engendrer une composante de la valeur 11 d'espace de couleurs de sortie. Les huit sommets associés d'un cube dans le treillis cubique 1 présentent les adresses relatives suivantes: (aU, bu, cu)
(aU + 1, bU, cu)
(aU, bu + 1, cu)
(aU, bu, cu + 1)
U + 1, bu + 1, cu)
(aU + 1, bu, cu + 1)
(aU, bu + 1, cu + 1)
(aU + 1, bu + 1, cu + 1)
Le procédé d'interpolation par subdivision de cubes décrit dans la demande de brevet des Etats Unis dont le numéro de série USPTO est 08/504 406 exécute une interpolation en engendrant un sous-cube en utilisant les valeurs associées aux sommets du souscube engendré précédemment. Le cube initial formé par les valeurs de sommets associées aux trois groupes de bits 10a d'ordre supérieur, au, bu, cu, est utilisé pour engendrer le premier sous-cube. Ce cube initial peut être divisé en huit sous-cubes. Les trois groupes de bits 10b d'ordre inférieur, al, b1, cl, sont utilisés pour sélectionner, pour l'itération suivante de division en sous-cubes, l'un des huit sous-cubes possibles formés. Ces trois groupes de bits 10b d'ordre inférieur identifient celui des sous-cubes possibles dans lequel le résultat de l'interpolation sera situé. Lorsque le sous-cube qui contient le résultat de l'interpolation est identifié, ce souscube est utilisé pour engendrer le sous-cube suivant qui contient le résultat de l'interpolation. Ce processus est répété successivement jusqu'à ce que soit engendré le dernier sous-cube contenant le résultat de l'interpolation. Une des valeurs associées à un sommet de ce dernier sous-cube engendré est utilisée comme résultat de l'interpolation.
Les Figures 2a à 2d représentent graphiquement la sélection d'un sous-cube en utilisant les trois groupes de bits 10b d'ordre inférieur al, bl et cl.
Pour expliquer la sélection de sous-cube, considérons le cas dans lequel les bits 10b d'ordre inférieur de chaque composante de la valeur d'espace de couleurs d'entrée consistent en quatre bits. A chacune des figures 2a à 2d sont représentés les axes qui correspondent aux composantes a, b et c de la valeur d'espace de couleurs d'entrée. Chacun de ces axes correspond à une dimension de l'espace de couleurs d'entrée. Des sous-cubes sont désignés en utilisant parmi les bits 10b d'ordre inférieur de chaque composante de la valeur d'espace de couleurs d'entrée, un bit correspondant, le terme correspondant étant à prendre dans le sens où il s'agit de coefficients de la même valeur de 2. Chaque position de bit des bits 10b d'ordre inférieur de chaque composante peut être considérée comme divisant le cube par moitiés selon la dimension qui correspond à la composante. La valeur du bit pour chaque composante détermine celle des moitiés du cube qui est sélectionnée dans la dimension correspondante, afin de déterminer celui des souscubes dans lequel le résultat de l'interpolation est situé. Le sous-cube sélectionné est le volume défini par l'intersection des moitiés de cube sélectionnées par les bits correspondants de chaque composante des bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée. Si le bit des bits 10b d'ordre inférieur pour la composante est "1", un coin du demicube sélectionné est décalé d'une moitié de la longueur le long de l'axe correspondant à partir de l'origine du cube. Si le bit de la composante est un "0", le coin du demi-cube sélectionné inclut l'origine du cube. Aux Figures 3a à 3h sont représentés les huit sous-cubes possibles définis par l'intersection commune des moitiés de cube désignées par le bit correspondant provenant de chacun des éléments al, b1 et cl.
En numérotant les sommets des cubes d'une manière qui est cohérente avec l'assignation, aux axes, des groupes de bits 10b d'ordre inférieur des composantes de la valeur d'espace de couleurs d'entrée, le sommet du cube utilisé pour engendrer le sous-cube associé à un sommet du sous-cube à engendrer est désigné par la valeur binaire formée en combinant les bits correspondants provenant de chacun des groupes de bits 10b d'ordre inférieur des composantes. A la Figure 4 est représenté un cube dont les axes sont désignés par des lettres et dont les sommets sont numérotés. Le cube utilisé pour engendrer un sous-cube et le souscube engendré partagent un sommet. Dans le cas de cette assignation de numéros de sommets, le numéro du sommet du cube utilisé pour engendrer le sous-cube qui est inclus à l'intérieur du sous-cube engendré est la valeur binaire formée à partir des bits correspondants de al, bl et cl pour une position de bit donnée.
Un exemple sera expliqué pour illustrer l'interpolation qui utilise la génération de souscubes. Supposons que les valeurs suivantes sont utilisées pour al, bl et cl :
al = 1010
bl = 1110
c1 = 0011
Tableau 1
Lorsque ces valeurs sont assignées à al, bl et cl, le numéro de sommet 6 du cube, qui est calculé par sélection du bit de poids fort provenant de chacun des éléments al, bl et cl et par concaténation de ceux-ci en une valeur binaire, pour le cube utilisé pour engendrer le premier sous-cube, est aussi un sommet du premier sous-cube. Le sommet du premier sous-cube inclus à l'intérieur du deuxième sous-cube engendré est le sommet numéro 2, calculé par sélection du deuxième bit de poids fort provenant de chacun des éléments al, bl et cl et par concaténation de ceux-ci en une valeur binaire. Le sommet du deuxième sous-cube inclus avec le troisième sous-cube engendré est le sommet numéro 7, calculé par sélection du troisième bit de poids fort provenant de chacun des éléments a1, bl et cl et par concaténation de ceux-ci en une valeur binaire. Le sommet du troisième sous-cube inclus avec le quatrième sous-cube engendré est le sommet numéro 1, calculé par sélection du quatrième bit de poids fort provenant de chacun des éléments al, bl et cl et par concaténation de ceux-ci en une valeur binaire.
Les valeurs de sommets du premier sous-cube sont engendrées au moyen des valeurs de sommets auxquelles permet d'accéder l'utilisation des bits 10a d'ordre supérieur au, bu, cu des composantes de la valeur d'espace de couleurs d'entrée. Les valeurs de sommets du deuxième sous-cube sont engendrées en utilisant les valeurs de sommets engendrées pour le premier souscube. Les valeurs de sommets du troisième sous-cube sont engendrées en utilisant les valeurs de sommets engendrées pour le deuxième sous-cube. Finalement, les valeurs de sommets du quatrième sous-cube sont engendrées en utilisant les valeurs de sommets engendrées pour le troisième sous-cube. Dans une interpolation par sous-cubes, la valeur associée au sommet numéroté 0 du sous-cube final engendré est la valeur utilisée comme résultat de l'interpolation. Ce résultat est une composante de la valeur d'espace de couleurs de sortie. Cette procédure de génération de sous-cubes pourrait être appliquée avec un nombre arbitraire de bits utilisés pour spécifier chaque composante des bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée.
Divers procédés ont été employés précédemment pour la génération des valeurs de sous-cubes. Ces procédés incluent les procédés tétraédrique, pyramidal, prismatique et trilinéaire. Une génération radiale de sous-cubes est un nouveau procédé de génération de sous-cubes qui permet une réduction sensible de la complexité des calculs exigés pour engendrer les sous-cubes. I1 faut reconnaître que chaque procédé d'interpolation peut engendrer des résultats différents parce que le processus d'interpolation est une approximation de la conversion d'espace de couleurs. Selon l'emplacement, dans l'espace de couleurs, où la conversion est exécutée et les caractéristiques préférées du résultat, un procédé peut fournir des résultats plus souhaitables qu'un autre.
La Figure 5 est une représentation graphique du procédé de génération radiale de sous-cubes. Expliquer clairement le processus de génération radiale de souscubes exige une certaine définition notionnelle. Comme c'était le cas précédemment, a1, b1 et cl désignent les bits 10b d'ordre inférieur des composantes respectives a, b et c de la valeur d'espace de couleurs d'entrée. La valeur de la variable i est utilisée pour désigner la position de bit à l'intérieur des bits 10b d'ordre inférieur a1, b1, cl, comme représenté ci-dessous, dans le cas dans lequel quatre bits sont utilisés pour désigner chaque composante des bits 10b d'ordre inférieur. La valeur maximale de i, qui est une valeur de 3, correspond à la position de bit de poids fort des bits 10b d'ordre inférieur. La valeur minimale de i, qui est une valeur de 0, correspond à la position de bit de poids faible des bits 10b d'ordre inférieur. Comme le reconnaît l'homme de l'art, cette notation est facilement adaptée à un nombre différent de bits utilisés pour chaque composante des bits 10b d'ordre inférieur.
Lorsque n bits sont utilisés pour représenter des bits 10b d'ordre inférieur, la valeur de i va de n - 1 à 0.
3 3 2 1 0
a1: 1 0 1 0
b1: 1 1 1 0
C1: 0 0 1 1
Tableau 2
En utilisant cette notation, la valeur de i indique directement l'itération de la génération de sous-cube. Une valeur de i égale à 3 correspond à la génération du premier sous-cube. Le premier sous-cube inclut le sommet numéro 6 du cube, formé en accédant aux valeurs du treillis cubique 1 en utilisant les bits 10a d'ordre supérieur. Pour la valeur de i égale à 0, le quatrième sous-cube est engendré. Ce quatrième sous-cube inclut le sommet numéro 1 provenant du troisième sous-cube engendré. Pour déterminer le numéro de sommet du cube utilisé pour engendrer le sous-cube qui est inclus à l'intérieur du sous-cube, l'équation suivante est utilisée
Eq la v(i) = 4 a1(i) + 2 b1 (i) + cl(i)
A l'équation la, v(i) représente le numéro de sommet du cube inclus à l'intérieur du sous-cube engendré. Chacun des éléments a1(i), b1(i) et cl (i) représente la valeur binaire associée à la "i-ième" position dans la composante respective des bits 10b d'ordre inférieur. Pour chaque valeur de i, l'équation la donne le numéro correct du cube utilisé pour engendrer le sous-cube qui sera inclus à l'intérieur du sous-cube souhaité. Les valeurs que i peut prendre incluent les entiers de n - 1 à 0 inclus, où n est le nombre de bits utilisés pour spécifier chacune des composantes des bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée. La valeur du sommet dont le numéro est v(i) est désignée par
P[v(i)]. L'équation la peut être généralisée pour une valeur 10 d'espace de couleurs d'entrée formée de d composantes. L'expression généralisée de v[i] est donnée ci-dessous.
Eq la v(i) = 2d-l x lb1(i) + 2d-2 x lb2 (i)
+ 2d-3 xlb3(i) + .+ 2d-d x lbd(i)
A l'équation lb, chacun des "lb" représente les bits 10b d'ordre inférieur de l'une des d composantes de la valeur 10 d'espace de couleurs d'entrée. Comme dans l'équation la, les valeurs de i incluent les entiers de n - 1 à 0 inclus.
Les valeurs associées aux huit sommets du souscube sont engendrées à partir du cube représenté au
Tableau 3. Ces valeurs de sommets désignées par
P'[numéro de sommet de sous-cube] représentent des valeurs de sommets de sous-cubes et les valeurs de sommets désignées par P[numéro de sommet du cube] représentent les valeurs des sommets du cube utilisés pour engendrer les valeurs de sommets de sous-cubes.
Une valeur donnée d'un sommet de sous-cube est engendrée en prenant la moyenne de la valeur correspondante de sommet du cube à partir duquel le sous-cube est engendré et de la valeur du sommet du cube utilisé pour engendrer le sous-cube inclus à l'intérieur du sous-cube (c'est la valeur désignée par
P[v(i)].
P' [7] = (P[7] + P[v(i)]) e 2
P' [6] = (P[6] + P[v(i)]) ~ 2
P' [5] = (P[5] + P[v(i)]) e 2
P' [4] = (P[4] + P[v(i)]) 2 2
P' [3] = (P[3] + P[v(i)]) e 2
P' [2] = (P[2] + P[v(i)]) e 2
P'[1] = (P[1] + P[v(i)]) ~ 2
P' [0] = (P[0] + P[v(i)]) e 2
Tableau 3
Les Figures 6a à 6e constituent une représentation graphique d'itérations multiples du processus de division en sous-cubes utilisé en interpolation radiale. Les valeurs utilisées pour les composantes des bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée de l'exemple de la Figure 6 sont les mêmes que celles qui sont représentées au tableau 2. Les valeurs des sommets du cube utilisées pour la génération du premier sous cube, valeurs auxquelles permet d'accéder l'utilisation des bits 10a d'ordre supérieur de la valeur d'espace de couleurs d'entrée, sont chargées à partir d'une table de couleurs entrée en mémoire.
Après l'itération finale de la division en sous-cubes, le numéro de sommet 0 du sous-cube final est utilisé comme résultat du processus d'interpolation. Pour empêcher l'accumulation d'erreurs d'arrondi pendant le calcul réel des valeurs de sommets de sous-cubes, la division par 2 nécessaire pour chaque itération de la génération de sous-cubes n'est effectuée que sur les valeurs des sommets du sous-cube final engendré.
Lorsque la division est exécutée de cette manière, le diviseur utilisé est 2n où n est le nombre de bits assignés à chaque composante des bits 10b d'ordre inférieur. Une division par 2n peut être exécutée facilement en exécutant une opération de décalage vers la droite. Pour le cas où n = 4, le diviseur est 16.
Lorsque l'opération de division n'est exécutée qu'après la fin de la génération des valeurs finales des sommets de sous-cubes, le processus de génération de sous-cubes se réduit à une série d'additions de valeurs sélectionnées de sommets des sous-cubes engendrés.
A la Figure 7 est représentée une mise en application par éléments matériels d'un interpolateur radial 100. De plus, la Figure 7 illustre la progression de l'interpolation radiale à travers l'interpolateur radial 100 en utilisant pour v[i] des valeurs qui correspondent aux bits 10b d'ordre inférieur du Tableau 2. Chacune des valeurs P[0] à P[7]) associées aux huit sommets sélectionnés en utilisant les bits 10a d'ordre supérieur est couplée à une entrée de multiplexeur d'un premier multiplexeur 101. La valeur de v[i] pour i égale 3 est couplée à l'entrée de commande du premier multiplexeur 101. La valeur de v[i], pour i égale 3, est utilisée pour sélectionner la valeur associée au sommet du cube sélectionné en utilisant les bits 10a d'ordre supérieur qui sera inclus dans le premier sous-cube engendré. La sortie du premier multiplexeur 101 est couplé à une première entrée de chaque additionneur d'un premier ensemble d'additionneurs 102 composé de huit additionneurs. La deuxième entrée de chaque additionneur du premier ensemble d'additionneurs 102 est couplée à l'une des valeurs sélectionnées en utilisant les bits 10a d'ordre supérieur. Le premier multiplexeur 101 et le premier ensemble d'additionneurs 102 forment un premier étage de l'interpolateur radial 100. Dans le cas de cette configuration du multiplexeur 101 et du premier ensemble d'additionneurs 102, on peut voir que les opérations de calcul de moyenne du Tableau 3 pour une itération unique d'interpolation radiale sont achevées, à l'exception de la division par deux qui est retardée comme mentionné précédemment jusqu'à ce que toutes les itérations de l'interpolation radiale soient achevées. Un deuxième, un troisième et un quatrième étages de l'interpolateur radial sont formés, respectivement, d'un deuxième multiplexeur 103 et d'un deuxième ensemble d'additionneurs 104, d'un troisième multiplexeur 105 et d'un troisième ensemble d'additionneurs 106 et d'un quatrième multiplexeur 107 et d'un quatrième ensemble d'additionneurs 108. Les entrées de commande des deuxième 103, troisième 105 et quatrième 107 entrées de multiplexeurs sont couplées, respectivement, à v[i = 2], v[i = 1] et v[i = O]. Les deuxième, troisième et quatrième étages de l'interpolateur radial exécutent des itérations successives d'interpolation radiale, chaque itération utilisant les relations du Tableau 3, en retardant ici aussi la division par deux jusqu'à l'achèvement de toutes les itérations.
A la Figure 8 est représenté un schéma logique de haut niveau d'un procédé d'exécution d'une itération unique d'interpolation radiale. En premier lieu, 2d des valeurs de données d'interpolation sont sélectionnées 200 en utilisant les bits 10a d'ordre supérieur. Pour le cas dans lequel l'interpolation radiale est utilisée pour une conversion d'espace de couleurs, les valeurs de données d'interpolation correspondent à des valeurs de sommets du cube sélectionné. De plus, pour une conversion d'espace de couleurs, d est typiquement égal à 3, le nombre de composantes de la valeur 10 d'espace de couleurs d'entrée. Quand les valeurs de sommets ont été sélectionnées 200, le numéro de sommet de la valeur de sommet nécessaire pour cette itération est calculé, 201. Pour d égale 3, l'équation la est utilisée pour calculer 201, le numéro de sommet nécessaire. Selon 1'itération d'interpolation radiale, la valeur de i utilisée pour calculer v[i] peut aller de i = 3 à i = O. Après le calcul 201 du numéro de sommet, l'une des 2d valeurs de données d'interpolation est sélectionnée 202 en utilisant le numéro calculé de sommet. Finalement, un ensemble de 2d moyennes est calculé 203 selon les relations du Tableau 3. Pour éviter des erreurs d'arrondi, les divisions par 2, nécessaires pour les calculs de moyennes, sont retardées jusqu'à ce que toutes les itérations d'interpolation aient été exécutées.
Il a été reconnu que le nombre de calculs nécessaires pour exécuter une interpolation radiale comme représenté à la Figure 7 pouvait être réduit sensiblement. Un examen du processus d'interpolation radiale de la Figure 7 révèle qu'une détermination du résultat d'interpolation n'exige pas d'utiliser la totalité des huit valeurs de sommets auxquelles permettent d'accéder les bits 10a d'ordre supérieur, et n'exige pas non plus d'utiliser tous les additionneurs représentés à la Figure 7. La Figure 9 est une représentation schématique d'une interpolation radiale élaguée. La Figure 9 peut être comprise en travaillant en sens inverse en partant du résultat d'interpolation représenté à la Figure 7 pour déterminer les valeurs des sommets, auxquels l'utilisation des bits 10a d'ordre supérieur ont permis d'accéder, qui sont nécessaires pour engendrer le résultat. Comme mentionné précédemment, la valeur (P[O]) du numéro de sommet 0 du sous-cube final engendré est utilisée comme résultat de l'interpolation. En utilisant les équations listées au
Tableau 3, à l'exception de la division par 2, les sommets du sous-cube précedant immédiatement le souscube final qui sont utilisés pour calculer la valeur du sommet numéro 0 du sous-cube final peuvent être déterminés. De même, les équations listées au tableau 3 peuvent être utilisées pour déterminer les sommets du sous-cube précédant le sous-cube qui précède luimême le sous-cube final, qui sont nécessaires pour calculer les sommets nécessaires du sous-cube qui précède immédiatement le sous-cube final.
Ce procédé de détermination des sommets de chacun des sous-cubes nécessaires pour calculer P[O] du souscube final est mis en oeuvre pour chaque valeur de i de O à 3 pour le cas où n = 4. Si ceci est réalisé, le résultat montre que les valeurs utilisées pour calculer P[O] du sous-cube final ne consistent qu'en quelques unes des valeurs correspondant aux sommets du cube auquel permettent d'accéder les bits 10a d'ordre supérieur de la valeur d'espace de couleurs d'entrée.
Donc, seuls 10 des 32 additionneurs de la Figure 7 sont utilisés pour calculer un résultat d'interpolation à partir d'une valeur donnée 10 d'espace de couleurs d'entrée. Pour les valeurs des bits 10b d'ordre inférieur représentées au Tableau 2, les numéros de sommets du cube auquel permettent d'accéder les bits 10a d'ordre supérieur auxquels correspondent les valeurs utilisées pour calculer P[0] du sous-cube final sont: 0, 6, 2, 7 et 1. Les valeurs des sommets du cube auquel permettent d'accéder les bits 10b d'ordre supérieur qui correspondent à ceci sont P[0] , P[6], P[2] , P[7] et P[1]. En général, les valeurs des sommets du cube auquel permettent d'accéder l'utilisation des bits 10a d'ordre supérieur qui sont utilisés pour calculer P[0] du sous-cube final sont P[O], P[v(i = 3)], P[v(i = 2)], P[v(i = 1)] et P[v(i = 0)]. L'expression générale qui peut être dérivée pour n = 4 est:
Eq 2 : P[0]sous-cube final
= ((8 x P[v(i = 3)]} + {4 x P[v(i = 2)]} +
2 x P[v(i = 1)]} + P[v(i = 0)]+ P[0]) 16
L'équation 2 est une expression destinée à calculer un résultat en utilisant une interpolation radiale élaguée pour n = 4. Une expression générale de l'interpolation radiale élaguée est
Eq 3 P[O]souscube final =
Figure img00320001
L'équation 3 peut être utilisée pour généraliser le calcul du résultat d'interpolation radiale élaguée.
Il faut noter, à l'équation 2 et à l'expression généralisée de l'équation 3, que la valeur associée au numéro de sommet O du cube sélectionné en utilisant des bits 10a d'ordre supérieur est toujours utilisée.
Si la valeur d'un numéro de sommet autre que le numéro de sommet 0 du sous-cube final engendré avait été utilisée comme résultat de l'interpolation, la valeur de ce numéro de sommet du cube sélectionné d'origine serait utilisée au lieu de P[0]
Les blocs fonctionnels d'éléments matériels nécessaires pour exécuter l'interpolation radiale élaguée incluent des additionneurs et des multiplexeurs. Pour D dimensions dans l'espace de couleurs de Sortie et n bits représentant chaque groupe de bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée, les exigences de la mise en application par éléments matériels de l'interpolation radiale élaguée peuvent être calculées comme
Eq 4 nombre d'additionneurs = D x (n + 1)
Eq 5 nombre de multiplexeurs = D x n
Il faut noter qu'un additionneur complémentaire spécifié dans l'équation 4 est utilisé dans le but d'effectuer un arrondi. Des opérations additionnelles qui doivent être exécutées par les éléments matériels incluent une multiplication, une division et une concaténation. Les opérations de multiplication et de division par une puissance de deux peuvent être effectuées en décalant des positions de bits. Dans les éléments matériels, ce décalage est accompli en connectant une ligne, qui correspond à un bit, à une position d'ordre supérieur pour la multiplication, ou une position d'ordre inférieur pour la division. Une concaténation par éléments matériels est accomplie en groupant entre elles des lignes qui correspondent à des positions de bits. Par conséquent, les opérations de multiplication, de division et de concaténation peuvent être exécutées sans exiger d'ajouter aucun élément matériel additionnel.
Pour engendrer la structure de niveau de porte nécessaire pour mettre en application l'interpolation radiale élaguée par éléments matériels, un langage de description d'éléments matériels utilisé communément, comme le VHDL, peut être utilisé. A la Figure 39 est incluse une liste du code VHDL qui peut engendrer une mise en application par éléments matériels de l'interpolation radiale élaguée. Les libellés des
Figures 38 à 47, liées à des logiciels, sont essentiellement données en langages spécifiques auxquels s'ajoutent certains termes anglo-saxons. Les
Figures ne sont donc pas traduites en français: des significations des termes anglo-saxons qui y sont inclus sont données; si des termes reviennent dans plusieurs Figures, leurs significations ne seront pas répétées. Les significations des termes de la FIG. 39A non définies par ailleurs en référence à la Figure 38, sont: Entity radial is port: entité radial est port;
Input pixel: pixel d'entrée; Input array: réseau d'entrée; Vertex points of cube from color table: points de sommets de cube à partir de table de couleurs; Point array: réseau de points; output array: réseau de sortie; end radial: finir radiale; architecture radialrtl of radial is: architecture radialrtl de radial est; signal vertex: sommet de signal; vertex array: réseau de sommet; signal point value: valeur ponctuelle de signal; point value array: réseau de valeurs ponctuelles; begin: commencer; compute selected vertices from slices across input: calculer sommets sélectionnés à partir de tranches transversales à entrée; vertices: sommet; process (input) : processus (entrée) ; for each slice across the input lower bits: pour chaque transversalement aux bits inférieurs d'entrée; for i in NUM~INTERP~BITS-1 downto 0 loop: pour i dans boucle entre NUM~ INTERP-
BITS-1 à 0; end loop: fin de boucle; end process: fin de processus; Select the values of vertices to be used by interpolation: sélectionner les valeurs de sommets à utiliser par interpolation; The last two vertices are always point (0) and the rounding constant: les deux derniers sommets sont toujours point (0) et la constante d'arrondi; MUX : multiplex; For each output dimension: pour chaque dimension de sortie; For d in O du NUM~OUTPUT~DIMEN-l loop: pour d dans boucle de 0 à NUN~OUTPUT~DIMEN-l; Initialize: initialiser; pointualue: valeur de point; others: autres; case vertex: sommet de cas; when: quand; end case = fin de cas; 7 down to zéro: de 7 à zéro. Les significations des termes de la Figure FIG. 39B sont: Rounding constant: constante d'arrondi; SUM adds the selected vertices values and truncates to eight bits: SOM additionne les valeurs sélectionnées de sommets et tronque à huit bits; The process is impîemented to minimize time by successive pairing and adding: le processus est mis en application par appariement et addition successifs pour minimiser temps; SUM: somme;
Variable temp: temp. variable; Variable bound: frontière variable; For each output dimension: pour chaque dimension de sortie; Initialize temp and bound: initialiser temp et frontière; Loop for: boucle pour; pair temp array elements and add: apparier éléments de réseau de temp et additionner; Step 1 : Move temp(even's) : Etape 1 déplacer temp (pairs; If: si; then: alors; else: sinon; end if: finir si; step 2: add temp (odd's): Etape 2 additionner temp (impairs);
Set bound for next iteration: placer frontière pour itération suivante; truncate output: tronquer sortie;
End radialrtl: fin de radialrtl.
A la Figure 10 est représenté une mise en application par éléments matériels d'un interpolateur radial élagué 300 pour n égale 4. Il faut noter que la mise en application par éléments matériels représentée à la Figure 10 peut être utilisée pour engendrer une composante unique de la valeur 11 d'espace de couleurs de sortie. Ces mêmes éléments matériels pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels, pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou bien, il pourrait exister (D - 1) répliques additionnelles de la mise en application par éléments matériels représentée à la
Figure 10, pour engendrer simultanément chacune des D composantes. L'interpolateur radial élagué 300 est une mise en application par éléments matériels de l'équation 2, sans la division par 16. La division par 16 pourrait être réalisée par un décalage de bits du résultat des additions. Une sélection de quatre des cinq valeurs des sommets, c'est-à-dire P[6], P[2],
P[7], et P[1], utilisés pour calculer le résultat d'interpolation exige quatre multiplexeurs 301 à 304.
Les quatre additions nécessaires sont effectuées en utilisant quatre additionneurs 305 à 308. La cinquième valeur de somment nécessaire pour le calcul du résultat d'interpolation, P[O] est câblée ou, en d'autres termes, raccordée de façon fixe dans les entrées de l'un des additionneurs. Il faut noter que la mise en application par éléments matériels de la
Figure 10 peut, en raison de la propriété associative de l'addition, être mise en application d'une manière telle que les additions sont exécutées dans un certain nombre d'ordres différents. L'ordre représenté à la
Figure 10 minimise le retard de propagation à travers les additionneurs. En outre, d'autres moyens d'addition peuvent être utilisés. Par exemple, un additionneur unique à nombre suffisant d'entrées pourrait être utilisé. Ou bien, un microprocesseur pourrait être utilisé pour effectuer les additions.
Les trois opérations 309 à 311 de multiplications correspondent à une multiplication par les coefficients 8, 4 et 2 des trois premiers termes du côté droit de l'équation 2. Il faut noter que les opérations de multiplication 309 à 311 sont effectuées par éléments matériels par un acheminement des lignes qui correspondent aux positions de bits sur chacune des sorties respectives des multiplexeurs. Par conséquent, ces multiplications sont mises en application sans coût additionnel en éléments matériels. Il est possible de mettre en application les multiplications par acheminement de lignes parce que tous les coefficients sont des puissances de 2.
L'homme de l'art reconnaît que la mise en application par éléments matériels représentée à la
Figure 10 est adaptable pour des valeurs de n supérieures à 4 ou inférieures à 4. Considérons la mise en application par éléments matériels d'un interpolateur radial élagué pour n égale 1. Cette mise en application par éléments matériels d'une interpolation radiale élaguée serait utile pour une interpolation qui exécute une itération unique d'une subdivision de cubes et qui sélectionne ensuite comme résultat d'interpolation l'une des valeurs de sommets du sous-cube engendré. Cette mise en application par éléments matériels d'une interpolation radiale élaguée n'exige qu'un multiplexeur unique et un additionneur unique (évidemment, l'arrondi final exige un additionneur complémentaire, mais cet additionneur complémentaire n'est pas représenté à la
Figure 10).
A la Figure 11 est représenté un schéma logique de haut niveau d'un procédé généralisé d'interpolation radiale élaguée pour des valeurs 10 d'espace de couleurs d'entrée à d composantes, chaque ensemble de bits 10b d'ordre inférieur étant de n bits. En premier lieu, n valeurs sont calculées 400 en utilisant l'équation lb. Puis, n + 1 valeurs de données d'interpolation, qui correspondent à des valeurs de sommets dans une conversion d'espace de couleurs, sont sélectionnées en utilisant les n valeurs calculées et les bits 10a d'ordre supérieur. Finalement, le résultat de l'interpolation est calculé 402 en multipliant et en additionnant les n + 1 valeurs sélectionnées de données d'interpolation selon l'équation 3.
Une mise en application par logiciel de l'interpolation radiale élaguée est très efficace du point de vue calcul. Pour d dimensions d'entrée, D dimensions de sortie et 2n valeurs entre sommets de treillis cubique 1, le nombre de calculs nécessaires pour engendrer un résultat d'interpolation peut être calculé comme:
Eq 6 Nombre d'opérations ALU = 2 x n x (d + D - 1) + D où ALU désigne une unité arithmétique et logique.
Le nombre d'accès en mémoire nécessaires pour engendrer le résultat d'interpolation peut être calculé comme:
Eq 7 Nombre d'accès de mémoire = D x (n + 1)
Il faut noter que, à la différence de nombreux autres procédés d'interpolation, tant le nombre des opérations d'unité arithmétique et logique que le nombre d'accès en mémoire sont linéaires en D, d et n, d'où résulte le rendement relatif de calcul d'une interpolation radiale élaguée.
A la Figure 12 est représenté un schéma logique de haut niveau d'un procédé mis en application par logiciel pour exécuter l'interpolation radiale élaguée. En premier lieu, il est déterminé 500 si l'une quelconque des composantes de la valeur 10 d'espace de couleurs d'entrée a, b, c, correspond à un emplacement sur une frontière extérieure du treillis cubique 1. C'est le cas si une ou plusieurs des composantes de la valeur d'espace de couleurs d'entrée est d'une valeur hexadécimale FF. Si tel est le cas, une valeur hexadécimale de 100 est assignée 501 aux composantes de la valeur 10 d'espace de couleurs d'entrée dont la valeur hexadécimale est de FF, de manière à engendrer l'index vers le treillis cubique 1 afin de restituer les valeurs de sommets nécessaires.
Assigner une valeur hexadécimale de 100 aux valeurs d'espace de couleurs d'entrée d'une valeur hexadécimale de FF est effectué pour traiter un cas particulier de l'interpolation. Pour illustrer ce cas spécial, considérons la représentation des valeurs 10 d'espace de couleurs d'entrée par huit bits pour chaque composante, chaque composante étant segmentée en quatre bits d'ordre supérieur et quatre bits d'ordre inférieur. Dans le cas de cette segmentation, les bits d'ordre supérieur peuvent former pour chaque composante les valeurs hexadécimales d'index 00, 10, 20, 30, ... F0. Les quatre bits d'ordre inférieur de chaque composante sont utilisés pour interpoler entre les valeurs 11 d'espace de couleurs de sortie auxquelles les valeurs d'index permettent d'accéder.
La différence entre la paire de valeurs 11 de l'espace de couleurs de sortie à laquelle permet d'accéder l'utilisation de valeurs successives d'index de 00 hexadécimal à F0 hexadécimal est répartie en 16 incréments égaux. Lorsque l'on passe de la valeur inférieure d'espace de couleurs de sortie à la valeur supérieure d'espace de couleurs de sortie, la valeur associée est accrue, pour chaque incrément successif, de 1/16 de la différence entre la paire de valeurs 11 d'espace de couleurs de sortie à laquelle s'effectue l'accès. Par exemple, après cinq incréments, la valeur associée est de 5/16 de la différence entre la paire de valeurs 11 d'espace de couleurs de sortie à laquelle s'effectue l'accès. En utilisant les quatre bits d'ordre inférieur, la valeur associée au nombre correspondant d'incréments est ajoutée à la valeur 11 d'espace de couleurs de sortie, sélectionnée en utilisant les bits d'ordre supérieur, pour engendrer le résultat d'interpolation. Mais il se pose un problème entre les valeurs d'index F0 à FF pour chaque composante de la valeur 10 d'espace de couleurs d'entrée, car la valeur d'index 100 n'existe pas dans cette table. Entre F0 et FF, il n'existe que 15 incréments et la valeur 11 d'espace de couleurs de sortie à laquelle FF permet d'accéder correspond à un frontière extérieure de l'espace de couleurs de sortie. Cependant, le processus d'interpolation est prévu pour intervenir sur 16 incréments entre les valeurs 11 de l'espace de couleurs de sortie auxquelles les valeurs d'index permettent d'accéder.
Pour traiter ce problème, les valeurs 11 d'espace de couleurs de sortie qui correspondent à la valeur d'index FF sont appliquées à un emplacement dont l'adresse hexadécimale est de 100. Cette application répartit effectivement en 16 incréments au lieu de 15 la différence des valeurs 11 d'espace de couleurs de sortie qui correspondent aux valeurs d'index hexadécimales F0 et FF. Pour cette raison, il existe de légères erreurs qui résultent de l'interpolation entre les valeurs F0 et FF d'index. Bien que ceci ne soit pas représenté dans les schémas fonctionnels d'éléments matériels, le traitement de ce cas spécial de l'interpolation est exécuté dans les mises en application par éléments matériels des différents modes de réalisation d'interpolateurs.
Après toute modification nécessaire d'assignation de la valeur 10 d'espace de couleurs, les index utilisés pour accéder aux valeurs qui correspondent aux sommets nécessaires du cube sélectionné du treillis cubique 1 sont calculées 502. Finalement, les valeurs de chaque composante de la valeur 11 d'espace de couleurs de sortie, x, y, z sont calculées 503. A la Figure 38 de la présente description est exposé le code d'une mise en application en C, pour n = 4, du procédé de haut niveau d'interpolation radiale élaguée représenté à la Figure 12.
Les libellés de cette figure, comme des autres
Figures 39 à 47 liées à des logiciels, sont essentiellement données en langages spécifiques; Les
Figures en sont donc pas traduites en français: seules des significations des termes anglo-saxons qui y sont incluses sont données; si des termes reviennent dans plusieurs Figures, leurs significations ne seront pas répétées.
Pour la Figure 38, les significations sont;
Define: définir; Table: table; Radial interpolation: interpolation radiale; Void: annuler; unsigned char input: entrée de car non signé, où car est une abréviation de caractères ; unsigned char table: tableau de car non signés; unsigned char output: sortie de car non signés; Register int: registre d'entiers; Origin: origine; Snap max value to last table value: transférer valeur max à dernière valeur de table; input: entrée; compute Indexes into table: calculer index et les entrer dans table; Compute: calculer.
Il faut reconnaître qu'il est possible d'exécuter un certain nombre d'optimisations possibles, spécifiques à un processeur, du logiciel d'exécution d'une interpolation radiale élaguée. Par exemple, en combinant en un mot unique toutes les composantes de chacune des valeurs 11 de l'espace de couleurs de sortie, le nombre des accès en mémoire nécessaires pour effectuer la conversion à la valeur 11 d'espace de couleurs de sortie peut être réduit. Une autre optimisation possible exploite la capacité de l'unité arithmétique et logique à exécuter des opérations à 32 bits. En assignant les bits de O à 7 d'un mot d'unité arithmétique et logique pour traiter le calcul de la composante y de la valeur d'espace de couleurs de sortie et les bits 16 à 23 pour traiter le calcul de la composante x de la valeur d'espace de couleurs de sortie, une séquence unique de décalages et d'additions peut être utilisée pour engendrer en parallèle les composantes x et y. Il est possible aussi de mettre en application par éléments matériels une interpolation radiale élaguée. Les rendements de calcul qui existent dans la mise en application d'une interpolation radiale élaguée par logiciel sont présents, en tant qu'exigences réduites pour les éléments matériels, dans la mise en application par éléments matériels.
Une interpolation tétraédrique segmente le cube, auquel permettent d'accéder les bits 10a d'ordre supérieur de la valeur d'espace de couleurs, en un certain nombre de tétraèdres utilisés pour engendrer le sous-cube qui contient le résultat de l'interpolation. Le sous-cube résultant est ensuite segmenté en tétraèdres. Deux de ces tétraèdres sont ensuite utilisés pour engendrer encore un autre souscube qui contient le résultat de l'interpolation. La division successive, en tétraèdres, des sous-cubes engendrés est exécutée n fois où n est le nombre de bits utilisés pour représenter chacune des composantes des bits 10b d'ordre inférieur de la valeur 10 d'espace de couleurs d'entrée.
La Figure 13 est une représentation des frontières extérieures d'un espace de couleurs CMY ou
RGB. Comme on peut le voir de la Figure 13, les sommets du cube 600 formés par les frontières extérieures de ces espaces de couleurs, incluent des valeurs qui correspondent aux couleurs constituantes de chacun des espaces de couleurs. Une caractéristique des espaces de couleurs CMY et RGB est que la diagonale qui connecte les sommets blanc 601 et noir 602 de l'espace de couleurs correspond à l'axe de luminance. Des points situés sur l'axe de luminance possèdent des valeurs qui correspondent à diverses nuances de gris. Comme mentionné précédemment, les bits 10a d'ordre supérieur de la valeur 10 d'espace de couleurs d'entrée sont utilisés pour accéder à huit valeurs associées qui forment un cube situé à l'intérieur du cube 600. Comme pour le cube 600 qui représente l'espace de couleurs CMY ou RGB, chacun des cubes sélectionnés peut être considéré comme une sorte d'espace de couleurs miniature, les valeurs qui correspondent à chacun des huit sommets possédant des couleurs qui sont pondérées vers les couleurs des sommets correspondants du cube 600. Par exemple, le sommet du cube sélectionné qui correspond spatialement au sommet jaune 603 est le sommet dont la valeur est la plus voisine de la valeur de la couleur jaune à l'intérieur du cube sélectionné. Les sept autres sommets du cube sélectionné peuvent être considérés de façon similaire. La diagonale qui connecte le sommet 0 au sommet 7 sert à définir une ligne de chrominance constante entre les couleurs associées aux sommets du cube sélectionné.
Certains parasites peuvent résulter de la reproduction des couleurs dans le processus d'impression. Ces parasites sont perceptibles visuellement comme couleurs qui s'écartent de celles qui sont spécifiées par la valeur d'espace de couleurs qui a été entrée au processus d'impression. Les parasites sont particulièrement notables pour des valeurs de l'espace de couleurs d'entrée qui sont proches de l'axe de luminance. Des valeurs de l'espace de couleurs d'entrée proches de l'axe de luminance correspondent à des nuances de gris à faibles quantités de couleurs. Des facteurs du processus de reproduction en couleurs qui peuvent écarter, plus loin de l'axe de luminance que prévu, la couleur résultante sont faciles à percevoir dans un champ gris. Les parasites apparaissent sous forme de couleurs dans des champs qui ne devraient inclure que des teintes différentes de gris le long de l'axe de luminance. Les parasites peuvent résulter, entre autres, des caractéristiques du processus utilisé pour l'impression, par exemple un processus par électrophotographie ou impression à jets d'encre, ou de caractéristiques des colorants utilisés dans le processus d'impression, comme le toner ou l'encre. Le résultat de la variabilité des paramètres du processus d'impression est une reproduction de couleurs, à l'écart de l'axe de luminance, lorsque le résultat aurait dû être gris.
Une interpolation tétraédrique réduit, dans certaines circonstances, la mesure dans laquelle ces types de parasites peuvent être perçus. La réduction des parasites d'impression se produit parce que la valeur de l'un des sommets du sous-cube engendré à partir du tétraèdre est calculée en utilisant les valeurs associées au numéro de sommet 0 et au numéro de sommet 7. Comme mentionné précédemment, la diagonale formée entre le numéro de sommet O et le nombre de sommet 7 définit pour le cube sélectionné une ligne à chrominance constante. Calculer un sommet du sous-cube le long de la ligne frontière de couleurs à mi-distance produit une pondération de l'interpolation qui tend à réduire le taux de variation de la valeur d'espaces de couleurs de sortie lorsque la valeur 10 d'espace de couleurs d'entrée s'écarte de la diagonale du cube sélectionnée par les bits 10a d'ordre supérieur. Ceci tend dès lors à compenser dans une certaine mesure le caractère variable des paramètres du processus d'impression qui produisent une sortie non grise pour des valeurs grises d'espace de couleurs d'entrée.
La Figure 14 est une représentation graphique de la génération d'un sous-cube 700 à partir d'un tétraèdre 701. Chaque valeur d'un sommet du tétraèdre 701 utilisée pour calculer la valeur d'un sommet du sous-cube 700 est elle aussi une valeur d'un sommet du cube 702 à partir duquel le tétraèdre 701 a été segmenté. Désignons par P[k] la valeur associée au sommet k d'un cube. Désignons par P' [k] la valeur associée au sommet k d'un sous-cube inclus à l'intérieur du cube ayant le sommet k. On peut montrer que la valeur P' [k] est calculée comme:
Eq 8 P'[k] = {P[k & v(i)] + P[k # v(i)]} ~ 2 " & " représente l'opération ET au niveau du bit "|"représente l'opération OU au niveau du bit "k" représente le numéro de sommet v(i) = 4 x a(i) + 2 x b(i) + c(i) i représente la position de bit dans les bits 10b d'ordre inférieur dans la valeur d'espace de couleurs d'entrée.
La génération de sous-cubes qui peut être réalisée en utilisant l'équation 8 fournit un procédé nouveau de calcul des valeurs de sommets pour une interpolation tétraédrique. En utilisant l'équation 8, les index utilisés pour accéder aux valeurs des sommet s utilisés pour calculer le sommet de sous-cubes peuvent être calculés. Ceci offre un avantage par rapport à des procédés d'interpolation qui exigent d'accéder à une table à consulter pour déterminer les index utilisés pour accéder aux valeurs des sommets.
L'utilisation d'une table à consulter exige davantage d'accès à la mémoire. Par conséquent, utiliser une table à consulter pour engendrer les index exige un nombre plus grand, de façon significative, de cycles de machines que ce qui serait nécessaire en utilisant le processeur pour calculer les index. Par conséquent, utiliser l'équation 8 pour calculer les index utilisés pour accéder aux valeurs de sommets offre un avantage sensible de vitesse de l'interpolation tétraédrique par rapport à des procédés antérieurs d'exécution d'interpolation tétraédrique. En outre, mettre en application l'équation 8 par éléments matériels pour calculer les entrées de commande du multiplexeur utilisées pour sélectionner les valeurs de sommets permet une mise en application plus simple d'une interpolation tétraédrique, par éléments matériels.
Comme c'était le cas pour une interpolation radiale élaguée, la valeur du numéro de sommet 0 du dernier cube engendré est le résultat de l'interpolation tétraédrique. Il a été reconnu que les valeurs des sommets de tous les sous-cubes engendrés ne sont pas toutes nécessaires pour engendrer le résultat de l'interpolation. Ceci a conduit au développement d'un autre perfectionnement d'interpolation tétraédrique appelé une interpolation tétraédrique élaguée. La Figure 15 est une représentation schématique d'une interpolation tétraédrique élaguée. A la Figure 15, l'indicateur prime associé au terme qui représente la valeur de chaque sommet, indique le niveau de génération de sous-cubes. Par exemple, des termes désignés par P'[] représentent des valeurs de sommets après la première itération de subdivision de cube, des termes désignés par P" [ ] représentent des valeurs de sommets après la deuxième itération de subdivision de cubes. Ce procédé de désignation de valeurs de sommets s'applique à la génération de sous-cubes successifs. La Figure 15 représente l'interpolation tétraédrique élaguée qui utilise quatre bits pour les bits 10b d'ordre inférieur des bits 10 d'espace de couleurs d'entrée.
Les termes représentés à la Figure 15 peuvent être engendrés en débutant par le résultat final de l'interpolation P""[O], et en déterminant, successivement, en utilisant l'équation 8, les valeurs des sommets du sous-cube précédent nécessaires pour engendrer les valeurs des sommets du sous-cube actuel jusqu'à ce que les valeurs nécessaires pour engendrer le sous-cube actuel soient obtenues en accédant aux valeurs des sommets du treillis cubique 1 en utilisant des bits 10a d'ordre supérieur. Comme c'était le cas pour l'interpolation radiale élaguée, l'opération de division par 2 n'est pas exécutée avant que la valeur du numéro de sommet 0 du sous-cube final ne soit obtenue, afin d'empêcher l'accumulation d'erreurs d'arrondi.
Une interpolation tétraédrique élaguée permet des économies sensibles de calcul par rapport à une interpolation tétraédrique. Pour d dimensions d'entrée, D dimensions de sortie, et n bits 10b d'ordre inférieur, le nombre d'équations nécessaires pour exécuter l'interpolation tétraédrique élaguée est calculé comme suit
Eq 9 Nombre d'opération d'ALU =
Figure img00470001
Eq 10 Nombre d'accès à la mémoire = D x [min (2d, 2n)]
Pour ces équations, il faut noter que les calculs varient de façon linéaire en fonction de d et D pour le nombre d'opérations d'unité arithmétique et logique, exponentiellement en fonction de d pour le nombre d'accès à la mémoire et exponentiellement en fonction de n pour le nombre d'accès à la mémoire.
Comme représenté à la Figure 15, une interpolation tétraédrique élaguée est mise en application d'une manière telle que 2n références de mémoires sont nécessaires. Il est cependant possible de mettre en application une interpolation tétraédrique élaguée d'une manière telle que le nombre de références de mémoire exigées soit au maximum de 2d, qui est le nombre de sommets contenus à l'intérieur du cube pour d = 3. On y parvient en reconnaissant qu'il existe une redondance dans les 2n accès en mémoire. En utilisant pour de multiples valeurs d'entrée exigées dans la
Figure 15 certaines des valeurs de sommets auxquelles l'accès a été effectué, le nombre d'accès en mémoire nécessaires est moindre. En comparant les équations 9 et 10 aux équations 4 et 5, on peut voir que, toutes choses égales d'ailleurs, une interpolation tétraédrique élaguée est plus onéreuse en calcul qu'une interpolation radiale.
A la Figure 16 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation tétraédrique. Pour ce procédé, les valeurs 10 d'espace de couleurs d'entrée sont formées de d composantes. Chacune des d composantes est segmentée en un ensemble de bits 10a d'ordre supérieur et de bits 10b d'ordre inférieur. Chacun des d ensembles de bits 10b d'ordre inférieur est formé de n bits. Les d ensembles de bits d'ordre inférieur sont désignés chacun par lb1, lb2, lb3, ..., lbd. La position de bit de chacun des bits d'ordre inférieur est désignée à partir du bit de poids fort jusqu'au bit de poids faible par une valeur de i allant de façon co niveau du bit. Puis, un ensemble de valeurs OU est calculé 802 selon v[i] I k, la valeur de k allant de 2d 1 à O et "" représentant l'opération OU au niveau du bit. Puis, 2d paires de valeurs de sommets sont sélectionnées 803 en utilisant l'ensemble de valeurs ET et l'ensemble de valeurs OU. Chacune des paires est sélectionnée en utilisant une valeur ET et une valeur OU calculées pour une valeur correspondante de k. Finalement, un ensemble de 2d sommes est calculé 804 en sommant chacune des 2d paires de valeurs de sommets.
Le procédé représenté à la Figure 16 concerne une itération unique d'interpolation tétraédrique.
Exécuter des itérations successives exigerait de calculer des valeurs additionnelles de v[i], de calculer des valeurs ET et OU additionnelles, de sélectionner des valeurs à partir de 2d sommes calculées dans l'itération précédente en utilisant les valeurs ET et OU calculées de façon additionnelle, et de calculer des ensembles additionnels de 2d sommes.
Après l'itération finale d'interpolation tétraédrique, chacune des 2d sommes finales est divisée par 2n, ce qui n'est pas représenté à la Figure 16, n étant le nombre d'itérations, et l'une des valeurs résultantes est sélectionnée comme le résultat de l'interpolation.
La division par 2n est effectuée après l'itération finale, au lieu de diviser par deux après chaque itération, pour empêcher des accumulations d'erreurs d'arrondi.
A la Figure 17 est représentée une mise en application par éléments matériels d'un interpolateur tétraédrique 900 destiné à convertir des valeurs 10 d'espace de couleurs d'entrée en une composante de valeurs 11 d'espace de couleurs de sortie. Ces mêmes éléments matériels pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D - 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la Figure 17, pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisés pour chacune des D répliques. L'interpolateur tétraédrique 900 représenté à la Figure 17 correspond à d = 3 et n = 4 pour la valeur 10 d'espace de couleurs d'entrée. La mise en application par éléments matériels représentée à la Figure 17 met en application l'équation 8 pour la génération des valeurs de sommets de sous-cubes. L'interpolateur tétraédrique 900 de la Figure 17 est formé d'un premier, d'un deuxième, d'un troisième et d'un quatrième étages 901 à 904. Chacun des quatre étages 901 à 904 inclut 23 additionneurs, dont l'un est désigné par 905. Chacun des quatre étages 901 à 904 inclut en outre 2 x 23 multiplexeurs, dont l'un est désigné par 906, agencés sous forme de 23 paires de multiplexeurs. Finalement, chacun des quatre étages 901 à 904 inclut 23 blocs OU au niveau du bit, dont l'un est désigné par 907, et 23 blocs ET au niveau du bit dont l'un est désigné par 908.
Chacun des étages 901 à 904 exécute une itération d'interpolation. Certaines des applications d'interpolation peuvent exiger que seule une itération unique d'interpolation soit exécutée. Pour une itération unique d'interpolation n = 1. Ceci correspond à une mise en application par éléments matériels de l'interpolateur tétraédrique 900 en n'utilisant que le premier étage 901. Un étage additionnel serait ajouté pour chaque itération additionnelle d'interpolation nécessaire pour l'application particulière.
Chacune des entrées des multiplexeurs du premier étage 901 est connectée aux huit valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur. Les deux sorties de chaque paire de multiplexeurs du premier étage 901 sont connectées à la première et à la deuxième entrées de l'additionneur correspondant. La sortie de chacun des additionneurs du premier étage 901 est la valeur de sommet du premier sous-cube. Comme mentionné précédemment, la division par deux pour chaque itération de génération de sous-cube est retardée jusqu'à ce que le dernier sous-cube soit engendré. Les valeurs de sommets du dernier sous-cube engendré sont divisées par 2n où n est le nombre de bits pour les bits d'ordre inférieur de la valeur d'espace de couleurs d'entrée et n correspond au nombre d'étage de l'interpolateur tétraédrique. Les entrées de chaque multiplexeur du deuxième, du troisième et du quatrième étages 902 à 904 sont couplées aux sorties des additionneurs de 1 'étage précédent.
L'entrée de commande de l'un des multiplexeurs de chaque paire de multiplexeurs est connectée à la sortie d'un bloc OU au niveau du bit. L'entrée de commande de l'autre multiplexeur de chaque paire est connectée à la sortie d'un bloc ET au niveau du bit.
Les multiplexeurs utilisés dans l'interpolateur tétraédrique 900 possèdent la capacité de sélectionner l'une des huit valeurs à huit bits en utilisant une entrée de commande à trois bits. Les blocs OU au niveau du bit et les blocs ET au niveau du bit exécutent chacun, respectivement, des opérations OU et des opérations ET bit par bit sur les valeurs qui y sont entrées. Pour cette mise en application, où d = 3, de 1'interpolateur tétraédrique 900, chacune des entrées aux blocs OU et aux blocs ET au niveau du bit est une quantité à 3 bits. La sortie, vers chacun des multiplexeurs, de chacun des blocs OU au niveau du bit et des blocs ET au niveau du bit est une quantité à 3 bits. Les additionneurs associés à chaque paire de multiplexeurs exécutent une addition de l'une des huit valeurs de bits sélectionnées provenant de chacun des multiplexeurs.
Comme indiqué par l'équation 8, le numéro de sommet qui correspond à la valeur de sommet engendrée est connectée à l'une des entrées pour chaque bloc OU au niveau du bit et chaque bloc ET au niveau du bit, correspondant. Puisque ces valeurs sont fixes, elles peuvent être câblées aux valeurs correctes. Les autres entrées de chaque paire correspondante de blocs ET au niveau du bit et de blocs OU au niveau du bit dans un étage sont connectées à la valeur de v[i] qui correspond à cet étage. Pour le premier étage 901, la valeur est v[3], pour le deuxième étage 902, la valeur est v[2] . Pour le troisième étage 903, la valeur est v[l]. Pour le quatrième étage 904, la valeur est v[0]
Une interpolation est exécutée en amenant les valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur aux entrées du multiplexeur du premier étage 901 et en amenant les valeurs appropriées de v[i] aux blocs OU au niveau du bit et aux blocs ET au niveau du bit de chaque étage.
L'interpolateur tétraédrique 900 calcule les valeurs de sommet s pour quatre itérations de génération de sous-cubes. Les valeurs P''''(7) à P"''(0) sont les valeurs des sommets du quatrième sous-cube engendré.
Dans ce mode de réalisation, P'''' (O) est sélectionné, divisé par 16, et utilisé comme résultat de l'interpolation. La division par 16 est mise en application en décalant des bits et n'est pas représentée à la Figure 17.
L'homme de l'art reconnaît que l'une des autres valeurs calculées P'"'(7) à P"" (1) peut être sélectionnée, divisée par 16, et utilisée comme résultat de l'interpolation. Utiliser des valeurs qui correspondent à des sommets différents du sous-cube final pour engendrer le résultat d'interpolation provoque dans le résultat de l'interpolation une erreur systématique différente. Ceci est à prendre en considération pour sélectionner la valeur de sommet du sous-cube final engendré qui sera divisée par 16 pour engendrer le résultat de l'interpolation.
A la Figure 18 est représentée une mise en application par éléments matériels d'un interpolateur tétraédrique élagué 1000 destiné à convertir des valeurs 10 d'espace de couleurs d'entrée en une composante de valeurs 11 d'espace de couleurs de sortie. Ces mêmes éléments matériels pourraient être utilisés de façon répétitive pour (D-1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la
Figure 18, pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisés pour chacune des D répliques.
L'interpolateur tétraédrique élagué 1000 représenté à la Figure 18 correspond à d = 3 et n = 4 pour la valeur 10 d'espace de couleurs d'entrée.
L'interpolateur tétraédrique élagué 1000 met en application la représentation schématique de l'interpolation tétraédrique élaguée représentée à la
Figure 15. La mise en application de l'interpolateur tétraédrique élagué 1000 exige beaucoup moins d'éléments matériels que la mise en application de l'interpolateur tétraédrique 900.
Pour d = 3, les blocs ET 1001 à 1001k au niveau du bit exécutent chacune une opération ET bit par bit sur des quantités d'entrées à trois bits pour engendrer des quantités de sorties à 3 bits. De même, pour d = 3, des blocs OU 1002a à 1002k au niveau du bit exécutent chacun une opération OU bit par bit, sur des quantités d'entrées à 3 bits pour engendrer des quantités de sortie à 3 bits. Chacune des sorties à 3 bits de blocs ET 1001a à 1001g au niveau du bit et des blocs OU 1002a à 1002g au niveau du bit est utilisée pour commander la sélection de l'une des huit quantités à 8 bits dans les multiplexeurs correspondants parmi les multiplexeurs 1003a à 1003n.
Les sorties de chacun des multiplexeurs 1003a à 10030 sont connectées aux entrées des additionneurs 1004a à 1004h.
Une opération d'interpolation est exécutée en utilisant l'interpolateur tétraédrique élagué 1000 en amenant aux entrées des multiplexeurs 1003a à 10030 les valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur, et en amenant les valeurs de v[i] aux entrées des blocs OU 1002a à 1002k au niveau du bit et des blocs ET 1001a à 1001k au niveau du bit comme représenté à la Figure 18. De plus, une valeur de sommet sélectionnée en utilisant des bits 10a d'ordre supérieur est amenée à l'entrée d'un additionneur 1004h. En utilisant la valeur calculée de v[i], les blocs ET 1001a à 1001k au niveau du bit et les blocs OU 1002a à 1002k au niveau du bit calculent les valeurs entrées aux entrées de commande des multiplexeurs 1003a à 1003n. Le multiplexeur 1003O utilise directement vE3]. Les valeurs sélectionnées par les multiplexeurs 1003a à 1003O sont les valeurs nécessaires pour calculer le résultat d'interpolation selon la représentation schématique de l'interpolation tétraédrique élaguée représentée à la Figure 15. Les valeurs de sommets sélectionnées par les multiplexeurs 1003a à 10030 sont envoyées aux entrées des additionnels 1004a à 1004h pour sommation. La sortie du dernier additionneur de la chaîne d'additions est divisée par 16 et utilisée comme résultat de l'interpolation. La division par 16 est accomplie par décalage de bits et n'est pas représentée à la Figure 18.
L'interpolateur tétraédrique élagué de la Figure 18 est mis en application pour d = 3 et n = 4. Pour certaines applications, un nombre d'itérations d'interpolation inférieur à 4 peut être suffisant.
D'autres applications peuvent exiger plus de quatre itérations d'interpolation. La mise en application par éléments matériels d'une interpolation tétraédrique élaguée pour d = 3 et n = 1 n'utiliserait qu'un additionneur unique et un multiplexeur unique pour engendrer P' [0], comme représenté à la Figure 18. Les mises en application d'éléments matériels pour n = 2 et n = 3 pour engendrer P''[0] et P''' [0] comme représenté à la Figure 18 exigent davantage de blocs
ET au niveau du bit et de blocs OU au niveau du bit, de multiplexeurs et d'additionneurs.
A la Figure 19 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'une interpolation tétraédrique élaguée. Pour ce procédé, les valeurs 10 d'espace de couleurs d'entrées sont formées de d composantes. Chacune des d composantes est segmentée en un ensemble de bits 10a d'ordre supérieur et de bits 10b d'ordre inférieur.
Chacun des d ensembles de bits 10b d'ordre inférieur est formé de n bits. Les d ensembles de bits d'ordre inférieur sont désignés chacun par lb1, lb2, lob3, . lbd. La position de bit de chacun des bits d'ordre inférieur est désignée à partir du bit de poids fort jusqu'au bit de poids faible par une valeur de i allant de façon correspondante de n - 1 à 0. En premier lieu, 2n - 2 valeurs sont calculées 1100 selon les types d'opérations ET au niveau du bit et OU au niveau du bit représentées à la Figure 15 pour v[i] = 2d-1 x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + .
+ 2d-d x lbd[i] pour i égale n - 1. Puis, le minimum de 2n et de 2d de valeurs de données d'interpolation sont sélectionnées 1101 en utilisant des valeurs spéciales parmi les 2n - 2 valeurs calculées à l'étape 1100, une valeur de v[n - 1] et des bits 10a d'ordre supérieur. Puis, la somme des valeurs de données d'interpolation sélectionnées à l'étape 1101 est calculée à l'étape 1102.
Le procédé représenté à la Figure 19 concerne n itérations d'interpolation tétraédrique élaguée. La somme calculée à l'étape 1102 est divisée par 2n pour engendrer le résultat. Cette division n'est pas représentée à la Figure 19.
A la Figure 20 est représenté un schéma logique de haut niveau d'un procédé mis en application en logiciel pour effectuer une interpolation tétraédrique élaguée. En premier lieu, il est déterminé 1200 si l'une quelconque des composantes de la valeur 10 d'espace de couleurs d'entrée a, b, c correspond à un emplacement sur une frontière extérieure du treillis cubique 1. C'est le cas si une ou plusieurs des composantes de la valeur d'espace de couleurs d'entrée est d'une valeur hexadécimale de FF. Si tel est le cas, afin d'engendrer l'indice vers le treillis cubique 1 pour restituer les valeurs de sommets nécessaires, une valeur hexadécimale de 100 est assignée aux composantes de la valeur 10 d'espace de couleurs d'entrée dont la valeur hexadécimale est de
FF.
Puis, les déports par rapport à l'origine du cube dans le treillis cubique 1 pour lequel l'accès est effectué en utilisant des bits 10a d'ordre supérieur et les sous-cubes engendrés pendant l'interpolation tétraédrique élaguée sont calculés 1202 en utilisant les relations indiquées dans la représentation schématique de l'interpolation tétraédrique élaguée de la Figure 15. Puis, les index utilisés pour accéder aux valeurs qui correspondent aux Sommet s nécessaires du cube sélectionné dans le treillis cubique dans une table à consulter sont calculées 1203. Finalement, les valeurs de chaque composante de la valeur 11 d'espace de couleurs de sortie, x, y, z sont calculées 1204. A la Figure 40 de la présente description est fourni le code d'une mise en application en C, pour n = 4, du procédé de haut niveau d'interpolation tétraédrique élaguée représentée à la Figure 20. Les significations de termes de la Figure 40A sont: Pruned tetrahedral interpolation: interpolation tétraédrique élaguée; generate index into table: engendrer index dans table;
Round: arrondir; Write back results : écrire résultats en retour.
Il est possible aussi de mettre en application par éléments matériels une interpolation tétraédrique élaguée. Les rendements de calcul qui existaient dans la mise en application de l'interpolation tétraédrique élaguée par logiciel sont présents dans la mise en application par éléments matériels en tant qu'exigences réduites en éléments matériels. Comme mentionné précédemment, des décalages et concaténations sont mis en application sans exiger d'éléments matériels additionnels. Les blocs fonctionnels des éléments matériels nécessaires pour exécuter l'interpolation tétraédrique élaguée incluent des additionneurs, des portes ET, des portes OU est des multiplexeurs. Pour D dimensions de l'espace de couleurs de sortie, d dimensions de l'espace de couleurs d'entrée et n bits représentant chaque groupe de bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée, les exigences de la mise en application des matériels de l'interpolation tétraédrique élaguée peuvent être calculés:
Eq 11 nombre d'additionneurs = D x 2n
Eq 12 Nombre de multiplexeurs = D x (2n - 1)
Eq 13 nombre de portes additionnelles ET/OU
Figure img00580001
Pour engendrer la structure de niveau de porte nécessaire pour la mise en application de l'interpolation radiale élaguée par éléments matériels, un langage de description d'éléments matériels utilisés communément, par exemple le VHDL, peut être utilisé. A la Figure 41 est incluse une liste du code VHDL qui peut engendrer une implantation par éléments matériels d'interpolation radiale élaguée. Les significations de termes de la Figure 41A sont: Nonsym radial interpolation: interpolation radiale dissymétrique; generate masks: engendrer masques.
Comme décrit précédemment, une interpolation radiale peut impliquer une impression de parasites dans des conversions entre les espaces de couleurs RGB et CMY pour certaines valeurs d'espace de couleurs d'entrée. En raison de ces parasites d'impression, l'interpolation tétraédrique peut donner des résultats plus souhaitables. Pour réduire la complexité, l'implantation tétraédrique peut être mise en application en utilisant une interpolation tétraédrique élaguée, bien que cette technique d'interpolation soit elle aussi plus intense en calculs que l'interpolation radiale.
Cependant, pour des conversions entre d'autres espaces de couleurs comme CieLab, LUV, ou YCbCr, l'interpolation radiale peut être préférable, parce qu'elle donne des résultats adéquats, et être très efficace du point de vue calculs. De plus, il est possible qu'une interpolation radiale puisse réellement produire des résultats plus plaisants qu'une interpolation tétraédrique dans certains cas.
Si les procédés d'interpolation sont mis en application en logiciel, il est facile d'utiliser des variantes de procédés en appelant des sous-programmes différents. En revanche, mettre en application des procédés différents d'interpolation par éléments matériels peut exiger une logique séparée. Puisque les mises en application séparées des deux techniques d'interpolation par éléments matériels sont sousutilisées, cette solution est onéreuse.
Une mise en application commune par éléments matériels offre la capacité d'effectuer comme variantes une interpolation radiale et une interpolation tétraédrique élaguée en utilisant moins d'éléments matériels qu'une mise en application séparée de ces techniques d'interpolation par éléments matériels. La Figure 21 est une représentation schématique d'une mise en application commune d'une interpolation radiale et d'une interpolation tétraédrique élaguée. Comme indiqué à la Figure 21, la technique d'interpolation exécutée est déterminée par les valeurs de sommets qui sont entrées dans les éléments matériels. Habituellement, le nombre de bits utilisés pour exprimer chaque terme v(i) est moindre que le nombre de bits utilisé pour exprimer chacun des termes P v(i)]. Pour cette raison, il est généralement moins complexe de multiplexer les termes v(i) avant l'accès en mémoire pour restituer les valeurs associées aux termes P[v(i)]
Il faut noter de la Figure 21 que deux des valeurs de sommets utilisées tant pour l'interpolation radiale que pour l'interpolation tétraédrique élaguée sont les mêmes pour toutes les valeurs de n. Par conséquent, une mise en application commune par éléments matériels d'une interpolation radiale et d'une interpolation tétraédrique élaguée exige que 2n - 2 multiplexeurs additionnels, chacun à d bits de commande, soient ajoutés à la mise en application par éléments matériels de l'interpolation tétraédrique élaguée. A la Figure 42 est inclus le code VHDL pour une mise en application commune par éléments matériels d'une interpolation radiale et d'une interpolation tétraédrique élaguée. Les significations de termes de la Figure 42A sont: Pruned tetrahedral interpolation: interpolation tétraédrique élaguée; tetrahedral: tétraédrique; (2 downto 0): en descendant de 2 à 0; initialize array: initialiser réseau; limait: limite; for each slice across the interpolate bits: pour chaque tranche transversale aux bits d'interpolation; load slice into limit location: charger tranche dans emplacement limite: select radial or tetrahedral: sélectionner radial ou tétraédrique; tetra~not~radial: tétra non radiale; assign multiplex selects: assigner sélections de multiplex: limit is: limite est. Les significations de termes de la Figure 42A Sont: for all values in temps: pour toutes valeurs dans templ;
Move into index array: déplacer pour entrer dans réseau d'index; Select the values of vertices to be used by the interpolation: sélectionner les valeurs des sommets à utiliser par interpolation; The last two vertices are always point (0) and the rounding constant: les deux derniers sommets sont toujours point (0) et la constante d'arrondi; The process is implemented to minimize prop delay by successive pairing and adding: le processus est mis en application par appariements et additions successifs pour minimiser retard de prop; End pruned-tetrtl: finir tétraédrique élagué.
A la Figure 22 est représentée une mise en application par éléments matériels d'un interpolateur commun, radial élagué et tétraédrique élagué 1300. La mise en application par éléments matériels de l'interpolation commune radiale élaguée et tétraédrique élaguée est semblable à celle de l'interpolation tétraédrique élaguée. La différence est l'addition de 14 multiplexeurs 1301a à 1301n utilisés pour sélectionner les données aux entrées de commande des multiplexeurs 1302a à 1302n. Un bit unique est utilisé pour commander la sélection des données aux entrées des multiplexeurs 1301a à 1301n.
Le bit unique commande les entrées de commande de multiplexeurs aux multiplexeurs 1302a à 1302n pour qu'elles concernent, soit une interpolation tétraédrique élaguée, soit une interpolation radiale élaguée. L'entrée de commande du multiplexeur pour les multiplexeurs 1302a à 1302n détermine celles des valeurs de données d'interpolation qui sont couplées aux additionneurs. Lorsque le bit est dans le premier de ses deux états, les éléments matériels de la Figure 22 interviennent comme interpolateur radial élagué.
Lorsque le bit est dans le deuxième de ses deux états, les éléments matériels de la Figure 22 interviennent comme interpolateur tétraédrique élagué.
Le bit de commande pour les multiplexeurs 1301a à 1301n est utilisé pour sélectionner entre des valeurs de v(i) et des valeurs calculées en utilisant des blocs OU 1300a à 1300k au niveau du bit et des blocs
ET 1304a à 1304k au niveau du bit. Les additionneurs 1305a à 13050 somment les sorties des multiplexeurs 1302a à 13020. Par décalage de bits, la somme résultante est divisée par 16, pour engendrer le résultat, ce qui n'est pas représenté à la
Figure 22.
Les éléments matériels de la Figure 22 pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la Figure 22 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur commun, radial élagué et tétraédrique élagué, 1300 représenté à la Figure 22 correspond à d = 3 et n = 4 pour la valeur 10 d'espace de couleurs d'entrée. L'interpolateur commun, radial élagué et tétraédrique élagué, 1300, met en application la représentation schématique d'une interpolation commune, radiale élaguée et tétraédrique élaguée, représentée à la Figure 21.
Dans le processus d'interpolation, les bits 10a d'ordre supérieur d'une valeur 10 d'espace de couleurs d'entrée forment un index utilisé pour accéder à des valeurs de données d'interpolation. L'interpolation est exécutée en utilisant les bits 10b d'ordre inférieur de la valeur d'espace de couleurs d'entrée.
Comme mentionné précédemment, les valeurs auxquelles s'effectue l'accès correspondent aux sommets d'un cube dans un treillis public 1. Selon les caractéristiques de l'espace de couleurs d'entrée, des valeurs associées aux sommets du cube auquel s'effectue l'accès peuvent varier à des allures qui dépendent de la dimension du treillis cubique 1 ou qui dépendent de la région du treillis cubique 1 dans laquelle le cube sélectionné est situé. En raison de cette possibilité, des résultats améliorés d'interpolation peuvent être produits en faisant varier la résolution d'interpolation entre des valeurs des sommets dans tout le treillis cubique 1 en correspondance avec les allures variables de modification entre des valeurs de sommets. Ajuster la résolution d'interpolation sur la base de l'emplacement du cube sélectionné à l'intérieur du treillis cubique 1 peut être mis en application en permettant que la segmentation de la valeur 10 d'espace de couleurs d'entrée en bits 10a d'ordre supérieur et bits 10b d'ordre inférieur varie.
Dans des régions de treillis cubique 1 dans lesquelles les allures de variation des valeurs des sommets sont hautement non linéaires, les différences entre les valeurs des sommets seraient relativement grandes en utilisant un nombre de bits inadapté aux caractéristiques d'espace de couleurs pour représenter chaque composante des bits 10a d'ordre supérieur. Afin de réduire les valeurs entre les sommets, un plus grand nombre de bits est utilisé pour représenter les composantes des bits 10a d'ordre supérieur. Par conséquent, un plus petit nombre de bits est utilisé pour représenter les bits 10b d'ordre inférieur dans ces régions. Pour des régions à treillis cubique 1 à allures de variation moindres ou à allures plus linéaires de variation des valeurs des sommets, les différences entre les valeurs des sommets en utilisant un nombre de bits inadapté aux caractéristiques de l'espace de couleurs pour représenter chaque composante de bits 10a d'ordre supérieur serait relativement faible ou relativement linéaire. Pour augmenter les valeurs entre les sommets, un plus petit nombre de bits est utilisé pour représenter les composantes des bits 10a d'ordre supérieur.
Pour mettre en application une technique d'interpolation qui peut prendre en charge une résolution variable d'interpolation sur l'espace de couleurs de sortie représenté par le treillis cubique 1, la technique d'interpolation doit s'adapter au nombre variable de bits utilisés pour représenter les composantes des bits 10b d'ordre inférieur. Pour y parvenir, une valeur, n, p, q est définie d'une manière telle que n bits sont utilisés pour interpoler entre des points du treillis dans la dimension "a", p bits sont utilisés pour interpoler entre des points du treillis dans la dimension b et q bits sont utilisés pour interpoler entre des points du treillis dans la dimension c. Il est possible de contraindre les valeurs de chacune des valeurs n, p et q à rester fixes sur la totalité du treillis cubique 1, ou de permett sous-cube occupant un huitième du sous-cube précédent en utilisant un bit tant de al que de bl et que de cl.
La quatrième itération de la subdivision de cube est aussi la sélection d'un sous-cube un huitième du souscube précédent en utilisant un bit tant de al que de bl et que de cl. Comme on peut le voir de ce qui précède, le nombre de bits des composantes des bits 10b d'ordre inférieur disponibles pour engendrer le sous-cube détermine la fraction du cube utilisée pour engendrer le sous-cube occupé par le sous-cube.
Au Tableau 4 et aux équations 14 à 19 sont représentées les relations nécessaires pour calculer les valeurs des sommets des sous-cubes pour chaque itération de génération de sous-cube radiale. Les équations 14 à 19 engendrent les valeurs utilisées dans les relations représentées au Tableau 4 de façon que les valeurs correctes de sommets de sous-cubes soient engendrées avec ou sans les bits correspondants de al, bl et cl présents pour cette itération de génération de sous-cube. Si un bit de l'un quelconque ou de plusieurs des éléments al, bl ou cl n'est pas présent, pour une itération donnée de génération de sous-cube, l'équation 19 engendre le numéro du sommet du cube utilisé pour engendrer une valeur de sommet du sous-cube pour compenser l'absence du bit ou des bits.
Eq 14 Maska = (2n - 1)
Eq 15 Maskb = (2P - 1)
Eq 16 Maskc = (2q - 1)
Eq 17 m[i] = (4 Maska[i]) + (2 Maskb[i]) + Maskc[i]
Eq 18 v[i] = m[i] & {(4 x a[i]) + (2 x b[i]) +
Eq 19 f(N, i) = (v[i] # (N & # m[i])
P' [7] = {P[7] + P[f(7, i)]} ~ 2
P'[6] = {P[6] + P[f(6, i)]} ~ 2
P'[5] = {P[5] + P[f(5, i)]} ~ 2
P'[4] = {P[4] + P[f(4, i)]} ~ 2
P'[3] = {P[3] + P[f(3, i)]} ~ 2
P'[2] = (P[2] + P[f(3, i)l) 2 2
P' [1] = (P[1] + P[f(l, i)] j 2 2
P' [O] = (P[O] + P[f(O, i)]} + 2
Tableau 4
La Figure 24 est une représentation graphique de la génération d'un sous-cube 1400 à partir d'un cube 1401 en utilisant une génération radiale dissymétrique de sous-cube. Sur l'itération particulière de la génération de sous-cube représentée à la Figure 15, le bit qui correspond à l'itération pour les composantes bl et cl n'est pas présent. Par conséquent, les relations du Tableau 4, pour f(N, i) calculées pour les bits bl et cl correspondant à l'itération non présents, dictent que les valeurs de sommets P' [7],
P' [6], P' [5] et P' [4] sont calculées comme la moyenne des valeurs des deux sommets alignés verticalement avec chacune des valeurs de P' [7], P'[6], P' [5] et
P'[4]. Le calcul des valeurs des sommets pour d'autres combinaisons dans lesquelles chacune des valeurs de al, bl ou cl est présente ou non présente est traitée de façon analogue par l'équation 19.
La Figure 25 est une représentation schématique du calcul d'interpolation radiale élaguée dissymétrique. Le nombre de calculs nécessaires pour exécuter l'interpolation radiale élaguée dissymétrique est calculé comme égal à:
Eq 20: Nombre d'opérations d'ALU
Figure img00660001
+ [D x (2n + 1)]
A la Figure 25, 2n références de mémoire sont représentées. Mais un cube sélectionné possède un maximum de 2d valeurs de sommets, où d est le nombre de dimensions de la valeur 10 d'espace de couleurs d'entrée. Par conséquent, certaines des 2n valeurs, par exemple 16 valeurs pour n = 4, représentées aux entrées du schéma de la Figure 25 sont redondantes. Il s'en suit que pour 2n supérieur à 2d, le nombre d'accès en mémoire exécutés peut être limité au nombre de sommets du cube pour chaque dimension de l'espace de couleurs de sortie. Le nombre d'accès en mémoire nécessaires pour D dimensions dans l'espace de couleurs de sorte est donc
Eq 21 nombre d'accès en mémoire = D x min (2d, 2n)
A la Figure 26 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'interpolation radiale élaguée dissymétrique. Pour ce procédé, les valeurs 10 d'espace de couleurs d'entrée sont formées de d composantes. Chacune des d composantes est segmentée en un ensemble de bits 10a d'ordre supérieur et de bits 10b d'ordre inférieur.
Les d ensembles de bits 10b d'ordre inférieur sont désignés chacun par lbl, lb2, lb3, ..., lbd. Chacun des d ensembles de bits 10b d'ordre inférieur est formé, respectivement, de nl, n2, n3, ... nd bits. La position de bit de chacun des d ensembles de bits d'ordre inférieur est désignée à partir du bit de poids fort vers le bit de poids faible par des valeurs correspondantes de il, i2, i3, id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2 - 1 à 0, de n3 - 1 à 0, ... de nd - 1 à 0. En premier lieu, un ensemble de 2n - n - 1 valeurs est calculé 1500 en utilisant f(N, i) = v[i] # (N & #m[i]), où m[i] = 2d-l x Mask1[i] + 2d-2 x Mask2[i] + 2d-3 x Mask3[i] + ... + 2d-d + Maskd[i]. Pour ce calcul, les valeurs de
Maskj = 2k - 1 sont calculées chacune pour une valeur de k sélectionnée parmi n1, n2, n3, nd et pour la valeur de j correspondant à la valeur de l'indice du n1, n2, n3. . nd sélectionné. Les valeurs de j vont de 1 à d. Les valeurs de v[i] sont calculées comme m[i] & (2d-1 x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + ... + 2d-d x lbd[i]) pour des valeurs de i allant de n - 1 à 0, où n est le plus grand des n1, n2, n3, ... nd. La valeur de N correspond aux numéros de sommets qui vont de 1 à 2d Puis un nombre de valeurs de données d'interpolation, égal au minimum de 2n et 2d, est sélectionné 1501 en utilisant les valeurs spéciales de l'ensemble de 2n - n - 1 valeurs, des valeurs de v[i] pour i allant de n - 1 à 0 et les d ensembles de bits d'ordre supérieur. Finalement, les valeurs de données d'interpolation sélectionnées sont additionnées 1502 pour engendrer une somme. Pour éviter une erreur d'arrondi, la somme engendrée est divisée par 2n. Cette étape n'est pas représentée à la
Figure 26.
A la Figure 27 est représenté un schéma logique de haut niveau d'un procédé mis en application en logiciel pour effectuer une interpolation radiale dissymétrique. En premier lieu, les valeurs de masques sont engendrées 1600 pour chaque composante de la valeur 10 d'espace de couleurs d'entrée. Puis, il est déterminé 1601 si l'une quelconque des composantes de la valeur 10 d'espace de couleurs d'entrée a, b, c correspond à un emplacement d'une frontière extérieure du treillis cubique 1. C'est le cas si une ou plusieurs des composantes de la valeur d'espace de couleurs d'entrée est d'une valeur hexadécimale de FF.
Si tel est le cas, afin d'engendrer les index pour restituer les valeurs de sommets nécessaires, une valeur hexadécimale de 100 est assignée 1602 aux composantes de la valeur 10 d'espace de couleurs d'entrée dont la valeur hexadécimale est de FF. Puis, les valeurs de chaque m[i] et v[i] sont calculées 1603. Puis, les index utilisés pour l'accès à chacune des valeurs de sommets utilisées pour l'interpolation sont calculés 1604. Finalement, chacune des composantes de la valeur d'espace de couleurs de sortie est calculée 1605 en utilisant les valeurs auxquelles les index calculés à l'étape 1604 ont accédé.
A la Figure 43 est incluse une liste en C du code pour une mise en application par logiciel d'une interpolation radiale dissymétrique. Les significations de termes de la Figure 43 sont: Vertex points of cube from color table: points de sommets de cube à partir de tables de couleurs.
Pour l'interpolation radiale dissymétrique, les index calculés correspondent à des déports par rapport à l'origine du cube selon une sélection effectuée par les bits 10a d'ordre supérieur. En raison de la résolution variable utilisée dans tout l'espace de couleurs de sortie, les valeurs de sommets pour trois cubes, c'est-à-dire un cube pour chaque dimension de l'espace de couleurs de sortie, sélectionnés par les bits 10a d'ordre supérieur est envoyée dans le sousprogramme de la Figure 43 chaque fois qu'une conversion d'espace de couleurs est effectuée sur une valeur 10 d'espace de couleurs d'entrée. Ceci est différent du code de l'interpolation radiale élaguée et tétraédrique élaguée dans lequel la table de couleurs est envoyée sous forme de réseau dans le sous-programme et des index pour entrer dans cette tables sont calculés dans le sous-programme.
Il est possible aussi de mettre une application par éléments matériels une interpolation radiale dissymétrique. Comme mentionné précédemment, des décalages et des concaténations sont mis en application sans exiger d'éléments matériels additionnels. Les blocs fonctionnels d'éléments matériels nécessaires pour exécuter l'interpolation radiale dissymétrique incluent des additionneurs, des portes ET, des portes OU et des multiplexeurs. Pour D dimensions dans l'espace de couleurs de sortie, d dimensions dans l'espace de couleurs d'entrée et n bits représentant le nombre maximal de bits utilisés pour représenter l'une des composantes de la valeur d'espace de couleurs d'entrée, les exigences de la mise en application par éléments matériels de l'interpolation radiale dissymétrique peuvent être calculées de la manière suivante:
Eq 22 nombre d'additionneurs = D x [(2n -1) + 1]
Eq 23 Nombre de multiplexeurs = D x (2n - 1)
Eq 24 nombre de portes additionnelles ET/OU
Figure img00700001
Pour engendrer la structure de niveau de portes nécessaire pour mettre en application par éléments matériels l'interpolation radiale élaguée dissymétrique, un langage de description d'éléments matériels communément utilisé, comme VHDL, peut être utilisé. A la Figure 44 est incluse une liste du code
VHDL qui peut engendrer une mise en application par éléments matériels d'une interpolation radiale élaguée dissymétrique. Les significations de termes de la
Figure 44 sont: pour la Figure 44A: lattice resolution: résolution de treillis; variable top: haut variable; for each component; pour chaque composante: top: haut; convert bit~vector to integer: convertir bit~vecteur à entier; generate mask: engendrer masque; initialize arrays: initialiser réseaux; pour la Figure 44B: Move into index array: déplacer pour entrer dans réseau d'index.
* A la Figure 28 est représentée une mise en application d'un interpolateur radial élagué dissymétrique 1700 par éléments matériels. Des blocs de calcul 1701a à 1701k d'entrées de commande calculent les valeurs utilisées par les entrées de commande des multiplexeurs 1702a à 1702o qui sont couplés aux blocs de calculs 1701a à 1701k d'entrées de commande. Chacun des blocs de calcul 1701a à 1701k d'entrées de commande exécute les calculs des équations 14 à 19 sur l'entrée à ce bloc de calcul d'entrée de commande. Comme représenté à la Figure 28, certaines des entrées de commande des multiplexeurs 1702a à 17020 utilisent des valeurs de v[i] . Des additionneurs 1703a à 1703O somment les sorties de multiplexeurs 1702a à 17020. Pour engendrer le résultat d'interpolation, cette somme est divisée par 2n par décalage de bits, ce qui n'est pas représenté à la Figure 28.
Les éléments matériels de la Figure 28 pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la Figure 28 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur radial élagué dissymétrique 1700 représenté à la Figure 28 correspond à d = 3 et la plus grande des valeurs n1, n2, n3, nd égale à 4 pour la valeur 10 d'espace de couleurs d'entrée. L'interpolateur radial élagué dissymétrique 1700 met en application la représentation schématique d'une interpolation radiale élaguée dissymétrique représentée à la Figure 25.
A la Figure 29 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'interpolation radiale dissymétrique en utilisant les équations du tableau 4. En premier lieu, un premier ensemble de 2d valeurs est calculé 1800 en utilisant f (N, i) = v[i] j (N & m[i]) . Puis, 2d paires de valeurs de données d'interpolation sont sélectionnées 1801, chaque paire étant formée à partir de la valeur de données d'interpolation sélectionnée en utilisant l'une des valeurs du premier ensemble de 2d valeurs et la valeur de données d'interpolation correspondant au sommet désigné par la valeur de N. Finalement, 2d sommes sont calculées 1802 à partir des 2d paires sélectionnées de valeurs de données d'interpolation.
Le procédé représenté à la Figure 29 concerne une itération unique d'interpolation radiale dissymétrique. Il faut reconnaître que des itérations additionnelles seraient exécutées en répétant les étapes de la Figure 29 pour les ensembles successifs de 2d valeurs calculées en utilisant f(N, i) pour des valeurs de v[i] et m[i] correspondant aux valeurs successivement décrémentées de i, en sélectionnant des ensembles successifs de 2d paires de valeurs à partir de l'ensemble précédemment calculé de 2d sommes, et en calculant des ensembles successifs de 2d sommes à partir des ensembles successifs de 2d paires de valeurs. Après avoir exécuté n itérations, où n est égal à la plus grande des valeurs n1, n2, n3, ... nd, une des 2d sommes du dernier ensemble calculé est divisé par 2n pour engendrer le résultat. La division par deux qui pourrait être exécutée après chaque itération est retardée jusqu'à la fin de la dernière itération pour éviter une erreur d'arrondi.
A la Figure 30 est représentée une mise en application par éléments matériels d'un interpolateur radial dissymétrique 1900 pour convertir des valeurs 10 d'espace de couleurs d'entrée en une composante de valeurs li d'espace de couleurs de sortie. Ces mêmes éléments matériels pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D - 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la Figure 30 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur radial dissymétrique 1900 représenté à la Figure 30 correspond à d = 3 et n = 4 où n est égal à la plus grande des valeurs n1, n2, n3, ... nd pour la valeur 10 d'espace de couleurs d'entrée. La mise en application par éléments matériels représentée à la
Figure 30 met en application les équations 14 à 19 et les équations du tableau 4 pour la génération des valeurs de sommets de sous-cubes. L'interpolateur radial dissymétrique 1900 de la Figure 30 est formé d'un premier, d'un deuxième, d'un troisième et d'un quatrième étages 1901 à 1904. Chacun des quatre étages 1901 à 1904 inclut 23 additionneurs , dont l'un est désigné par 1905. Chacun des quatre étages 1901 à 1904 inclut en outre 2 x 23 multiplexeurs, dont l'un est désigné par 1906, agencés sous forme de 23 paires de multiplexeurs. Finalement, chacun des quatre étages 1901 à 1904 inclut 23 blocs de calcul d'entrées de commande pour exécuter les calculs des équations 14 à 19 avec les entrées indiquées. L'un de ces blocs de calcul d'entrées de commande est désigné par 1907.
Chacun des étages 1901 à 1904 exécute une itération d'interpolation. Certaines des applications d'interpolation peuvent exiger que seule une itération unique d'interpolation soit exécutée. Pour une itération unique d'interpolation, n = 1. Ceci correspond à une mise en application par éléments matériels de l'interpolateur radial dissymétrique 1900 en n'utilisant que le premier étage 1901. Un étage additionnel serait ajouté pour chaque itération additionnelle d'interpolation nécessaire pour l'application particulière.
Chacune des entrées des multiplexeurs du premier étage 1901 est connectée aux huit valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur. Les sorties de chaque multiplexeur du premier étage 1901 sont connectées à la première entrée de l'additionneur correspondant. La deuxième entrée de l'additionneur est connectée à la valeur qui correspond au numéro du sommet égal à l'une des entrées des blocs de calcul d'entrées de commande correspondants. La sortie de chacun des additionneurs du premier étage 1901 est une valeur de sommet du premier sous-cube. Comme mentionné précédemment, la division par deux pour chaque itération de génération de sous-cube est retardée jusqu'à ce que le dernier sous-cube soit engendré. Les valeurs de sommets du dernier sous-cube engendré sont divisées par 2n où n correspond au nombre des étages de l'interpolateur radial dissymétrique. Les entrées de chaque multiplexeur du deuxième, du troisième et du quatrième étages 1902 à 1904 sont couplées aux sorties des additionneurs de l'étage précédent.
L'entrée de commande de chaque multiplexeur est connectée à la sortie du bloc correspondant de calcul d'entrées de commande. Les multiplexeurs utilisés dans l'interpolateur radial dissymétrique 1900 possèdent la capacité de sélectionner l'une des huit valeurs à huit bits en utilisant une entrée de commande à trois bits.
Pour cette mise en application, où d = 3, n= 4, de l'interpolateur radial dissymétrique 1900, chacune des entrées aux blocs de calcul d'entrées de commande est une quantité à 3 bits. La sortie, vers chacun des multiplexeurs, de chacun des blocs de calcul d'entrées de commande est une quantité à 3 bits. Les additionneurs associés à chaque multiplexeur exécutent une addition de l'une des huit valeurs de bits sélectionnées provenant de chacun des multiplexeurs.
Une interpolation est exécutée en amenant les valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur aux entrées du multiplexeur du premier étage 1901. Les entrées des blocs de calcul d'entrées de commande sont câblées. L'interpolateur radial dissymétrique 1900 calcule les valeurs de sommets pour quatre itérations de génération de souscubes. Les valeurs P"''(7) à P'"'(0) sont les valeurs des sommets du quatrième sous-cube engendré.
Dans ce mode de réalisation, P''''(O) est sélectionné, divisé par 16, et utilisé comme résultat de l'interpolation. La division par 16 est mise en application en décalant des bits et n'est pas représentée à la Figure 30.
L'homme de l'art reconnaît que l'une des autres valeurs calculées P'"'(7) à P''''(1) peut être sélectionnée, divisée par 16, et utilisée comme résultat de l'interpolation. Utiliser des valeurs qui correspondent à des sommets différents du sous-cube final pour engendrer le résultat d'interpolation provoque dans le résultat de l'interpolation une erreur systématique différente. Ceci est à prendre en considération pour sélectionner la valeur de sommet du sous-cube final engendré qui sera divisée par 16 pour engendrer le résultat de l'interpolation.
Une interpolation tétraédrique élaguée peut être adaptée pour une mise en application dans un espace de couleurs représenté par un treillis cubique dissymétrique. Comme c'était le cas pour l'interpolation tétraédrique élaguée, les sommets du sous-cube engendré sont calculés en utilisant les sommets d'un tétraèdre segmenté à partir du cube utilisé pour engendrer le sous-cube. Mais, pour certaines itérations de génération de sous-cube, les bits correspondants de chacune des composantes al, bl et cl peuvent ne pas être présents. Pour ces cas, les calculs des sommets des sous-cubes peuvent être modifiés pour compenser les bits manquants correspondants dans une ou plusieurs des composantes al, bl et cl.
Au Tableau 5 et aux équations 25 et 26 sont représentées les relations nécessaires pour calculer les valeurs des sommets des sous-cubes pour une de génération de sous-cube tétraédrique élaguée dissymétrique. Les équations 25 et 26, accompagnées des équations 14 à 18 sont utilisées pour engendrer les valeurs appropriées pour que, dans les relations représentées au Tableau 5, les valeurs correctes de sommets de sous-cubes soient engendrées avec ou sans les bits correspondants de al, bl et cl correspondant à cette itération de génération de sous-cube. Si un bit de l'un quelconque ou de plusieurs des éléments al, bl ou cl n'est pas présent, pour une itération donnée de génération de sous-cube, l'équation 25 et l'équation 25 engendrent le numéro du sommet du cube utilisé pour engendrer une valeur de sommet du souscube pour compenser l'absence du bit ou des bits.
Eq 25 g(N, i) = (v[i] j # m[i] & N)
Eq 26 h(N, i) = (v[i] j N)
P'[7] = {P[g(7, i)] + P[h(7, i)]} ~ 2
P' [6] = {P[g(6, i)] + P[h(6, i)]} ~ 2
P'[5] = {P[g(5, i)] + P[h(5, i)]} ~ 2
P' [4] = (P[g(4, i)] + P[h(4, i)]} 2
P' [3] = {P[g(3, i)] + P[h(3, i)]} ~ 2
P' [2] = {P[g(2, i)] + P[h(3, i)]} ~ 2
P' [1] = {P[g(1, i)] + P[h(l, i)]} ~ 2
P'[0] = {P[g(0, i)] + P[h(0, i)]} ~ 2
Tableau 5
Bien que la Figure 24 soit une représentation graphique de la génération d'un sous-cube 1400 à partir d'un cube 1401 en utilisant une génération radiale dissymétrique de sous-cube; la Figure 24 peut aussi être une représentation graphique d'une génération tétraédrique élaguée dissymétrique de souscube. Sur l'itération particulière de la génération de sous-cube représentée à la Figure 24, le bit qui correspond à l'itération pour les composantes bl et cl n'est pas présent. Par conséquent, les relations du
Tableau 5, pour g(N, i) et h(N, i) calculées pour les bits b1 et cl correspondant à l'itération non présents, dictent que les valeurs de sommets P' [7],
P' [6], P' [5] et P' [4] sont calculées comme la moyenne des valeurs des deux sommets alignés verticalement avec chacune des valeurs de P' [7], P' [6], P' [5] et
P' [4]. Le calcul des valeurs des sommets pour d'autres combinaisons dans lesquelles chacune des valeurs de a1, bl ou c1 est présente ou non présente est traitée de façon analogue par l'équation 19.
La Figure 31 est une représentation schématique du calcul d'interpolation tétraédrique élaguée dissymétrique. Le nombre de calculs nécessaires pour exécuter l'interpolation tétraédrique élaguée dissymétrique est calculé comme égal à:
Eq 27: Nombre d'opérations d'ALU
Figure img00770001
Eq 28 nombre d'accès en mémoire = D x min (2d, 2n)
A la Figure 32 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'interpolation tétraédrique élaguée dissymétrique.
Pour ce procédé, les valeurs 10 d'espace de couleurs d'entrée sont formées de d composantes. Chacune des d composantes est segmentée en un ensemble de bits 10a d'ordre supérieur et de bits 10b d'ordre inférieur.
Les d ensembles de bits 10b d'ordre inférieur sont désignés chacun par lb1, lb2, lb3, ..., lbd. Chacun des d ensembles de bits 10b d'ordre inférieur est formé, respectivement, de n1, n2, n3, ... nd bits. La position de bit de chacun des d ensembles de bits d'ordre inférieur est désignée à partir du bit de poids fort vers le bit de poids faible par des valeurs correspondantes de i1, i2, i3, ... id qui vont chacune, de façon correspondante, de n1 - 1 à O, de n2 - 1 à 0, de n3 - 1 à 0,... de nd - 1 à 0.
En premier lieu, un ensemble de 2n - 2 valeurs est calculé 2000 en utilisant g(N, i) = (v[i] # #m[i] & N) et h(N, i) = (v[i] # N), où m[i] = 2d- 1 x Maskl [i] + 2d-2 x Mask2[i] + 2d-3 x Mask3 [i] + ... + 2d-d + Maskd[i]. Pour ce calcul, les valeurs de
Maskj = 2k - 1 sont calculées chacune pour une valeur de k sélectionnée parmi n1, n2, n3, ... nd et pour la valeur de j correspondant à la valeur de l'indice du n1, n2, n3, ... nd sélectionné. Les valeurs de j vont de 1 à d. Les valeurs de v[i] sont calculées comme m[i] & (2d-l x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + ... + 2d-d x lbd[i]) pour des valeurs de i allant de n - 1 à 0, où n est le plus grand des n1, n2, n3,
.. nd. La valeur de N correspond aux numéros de sommets qui vont de 1 à 2d. Puis un nombre de valeurs de données d'interpolation, égal au minimum de 2n et 2d, est sélectionné 2001 en utilisant les valeurs spéciales de l'ensemble de 2n - 2 valeurs, une valeur de v[i] pour i allant de n - 1 à O et les d ensembles de bits d'ordre supérieur. Finalement, les valeurs de données d'interpolation sélectionnées sont additionnées 2002 pour engendrer une somme. Pour éviter une erreur d'arrondi, la somme engendrée est divisée par 2n. Cette étape n'est pas représentée à la
Figure 26.
A la Figure 33 est représenté un schéma logique de haut niveau d'un procédé mis en application en logiciel pour effectuer une interpolation tétraédrique dissymétrique. En premier lieu, les valeurs de masques sont engendrées 2100 pour chaque composante de la valeur 10 d'espace de couleurs d'entrée. Puis, il est déterminé 2101 si l'une quelconque des composantes de la valeur 10 d'espace de couleurs d'entrée a, b, c correspond à un emplacement d'une frontière extérieure du treillis cubique 1. C'est le cas si une ou plusieurs des composantes de la valeur d'espace de couleurs d'entrée est d'une valeur hexadécimale de FF.
Si tel est le cas, afin d'engendrer les index dans le treillis cubique 1 pour restituer les valeurs de sommets nécessaires, une valeur hexadécimale de 100 est assignée 2102 aux composantes de la valeur 10 d'espace de couleurs d'entrée dont la valeur hexadécimale est de FF. Puis, les valeurs de chaque m[i] et v[i] sont calculées 2103. Puis, les index utilisés pour l'accès à chacune des valeurs de sommets utilisées pour l'interpolation sont calculés 2104.
Finalement, chacune des composantes de la valeur d'espace de couleurs de sortie est calculée 2105 en utilisant les valeurs auxquelles les index calculés à l'étape 2104 ont accédé.
A la Figure 43 est incluse une liste en C du code pour une mise en application par logiciel d'une interpolation tétraédrique dissymétrique. Pour 1'interpolation tétraédrique dissymétrique, les index calculés correspondent à des déports par rapport à l'origine du cube selon une sélection effectuée par les bits 10a d'ordre supérieur. En raison de la cubes, c'est-à-dire un cube pour chaque dimension de l'espace de couleurs de sortie, sélectionnés par les bits 10a d'ordre supérieur est envoyée dans le sousprogramme de la Figure 45 chaque fois qu'une conversion d'espace de couleurs est effectuée sur une valeur 10 d'espace de couleurs d'entrée. Ceci est différent du code de l'interpolation radiale élaguée et tétraédrique élaguée dans lequel la table de couleurs est envoyée sous forme de réseau dans le sous-programme et des index pour entrer dans cette tables sont calculés dans le sous-programme. Les significations de termes de la Figure 45 sont: Nonsympruned~tetrahedral = tétraédrique élaguée dissymétrique; compute slices across masks and input component: calculer tranches transversalement à masques et composante d'entrée; Compute offset from origin: calculer déport par rapport à origine.
Il est possible aussi de mettre une application par éléments matériels une interpolation tétraédrique dissymétrique. Comme mentionné précédemment, des décalages et des concaténations sont mis en application sans exiger d'éléments matériels additionnels. Les blocs fonctionnels d'éléments matériels nécessaires pour exécuter l'interpolation radiale dissymétrique incluent des additionneurs, des portes ET, des portes OU et des multiplexeurs. Pour D dimensions dans l'espace de couleurs de sortie, d dimensions dans l'espace de couleurs d'entrée et n bits représentant le nombre maximal de bits utilisés pour représenter l'une des composantes de la valeur d'espace de couleurs d'entrée, les exigences de la mise en application par éléments matériels de l'interpolation radiale dissymétrique peuvent être calculées de la manière suivante:
Eq 22 nombre d'additionneurs = D x 2n
Eq 23 Nombre de multiplexeurs = D x (2n - 1)
Eq 24 nombre de portes additionnelles ET/OU
Figure img00810001
Pour engendrer la structure de niveau de portes nécessaire pour mettre en application par éléments matériels l'interpolation tétraédrique élaguée dissymétrique, un langage de description d'éléments matériels communément utilisé, comme VHDL, peut être utilisé. A la Figure 46 est incluse une liste du code
VHDL qui peut engendrer une mise en application par éléments matériels d'une interpolation tétraédrique élaguée dissymétrique. Les significations de termes de la Figure 46 sont: Non-symmetric pruned tetrahedral interpolation: interpolation tétraédrique élaguée dissymétrique.
A la Figure 34 est représentée une mise en application d'un interpolateur tétraédrique élagué dissymétrique 2200 par éléments matériels. Des blocs de calcul 2201a à 2201v d'entrées de commande calculent les valeurs utilisées par les entrées de commande des multiplexeurs 2202a à 22020 qui sont couplés aux blocs de calculs 2201a à 2201v d'entrées de commande. Les blocs de calcul 2201a à 2201v d'entrées de commande appliquent les fonctions des équations 25 et 26, comme indiqué à la Figure. 34 pour calculer les entrées de commande des multiplexeurs 2202a à 2202n. Comme représenté à la Figure 34, le multiplexeur 2202O utilise une valeur de v[i] pour son entrée de commande. Chacun des multiplexeurs 2202a à 22020 sélectionne parmi huit valeurs de données d'interpolation en utilisant des bits 10a d'ordre supérieur. Des additionneurs 2203a à 22030 somment les sorties de multiplexeurs 2202a à 22020. Pour engendrer le résultat d'interpolation, cette somme est divisée par 2n par décalage de bits, ce qui n'est pas représenté à la Figure 28.
Les éléments matériels de la Figure 28 pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la Figure 28 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur tétraédrique élagué dissymétrique 2200 représenté à la Figure 34 correspond à d = 3 et la plus grande des valeurs n1, n2, n3, nd égale à 4 pour la valeur 10 d'espace de couleurs d'entrée. L'interpolateur tétraédrique élagué dissymétrique 2200 met en application la représentation schématique d'une interpolation tétraédrique élaguée dissymétrique représentée à la
Figure 31. A la Figure 35 est représenté un schéma logique de haut niveau d'un procédé généralisé d'exécution d'un interpolation tétraédrique dissymétrique. En premier lieu, un premier ensemble de 2d valeurs est calculé 2300 en utilisant g(N, i) et h(N, i). Puis, 2d paires de valeurs de données d'interpolation sont sélectionnées 2301, en utilisant le premier et le deuxième ensemble de valeurs.
Finalement, un ensemble de 2d sommes est calculé 2302 en utilisant les 2d paires de valeurs de données d'interpolation.
Le procédé représenté à la Figure 35 concerne une itération unique d'interpolation tétraédrique dissymétrique. Il faut reconnaître que des itérations additionnelles seraient exécutées en répétant les étapes de la Figure 35 pour les ensembles successifs de 2d valeurs calculées en utilisant g(N, i) et h(N, i) pour des valeurs de v[i] et m[i] correspondant aux valeurs successivement décrémentées de i, en sélectionnant des ensembles successifs de 2d paires de valeurs à partir de l'ensemble précédemment calculé de 2d sommes, et en calculant des ensembles successifs de 2d sommes à partir des ensembles successifs de 2d paires de valeurs. Après avoir exécuté n itérations, où n est égal à la plus grande des valeurs n1, n2, n3, ... nd, une des 2d sommes du dernier ensemble calculé est divisé par 2n pour engendrer le résultat, ce qui n'est pas représenté à la Figure 35. La division par deux qui pourrait être exécutée après chaque itération est retardée jusqu'à la fin de la dernière itération pour éviter une erreur d'arrondi.
A la Figure 36 est représentée une mise en application par éléments matériels d'un interpolateur tétraédrique dissymétrique 2400 pour convertir des valeurs 10 d'espace de couleurs d'entrée en une composante de valeurs 11 d'espace de couleurs de sortie. Ces mêmes éléments matériels pourraient être utilisés de façon répétitive pour (D - 1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles d'une partie de la mise en application par éléments matériels représentée à la
Figure 36 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur tétraédrique dissymétrique 2400 représenté à la Figure 30 correspond à d = 3 et n = 4 où n est égal à la plus grande des valeurs n1, n2, n3, . nd pour la valeur 10 d'espace de couleurs d'entrée. La mise en application par éléments matériels représentée à la Figure 30 met en application les équations 25 et 26 et les équations du tableau 5 pour la génération des valeurs de sommets de sous-cubes. L'interpolateur tétraédrique dissymétrique 2400 de la Figure 36 est formé d'un premier, d'un deuxième, d'un troisième et d'un quatrième étages 2401 à 2404. Chacun des quatre étages 2401 à 2404 inclut 23 additionneurs dont l'un est désigné par 2405.
Chacun des quatre étages 2401 à 2404 inclut en outre 2 x 23 multiplexeurs, dont l'un est désigné par 2406.
Les multiplexeurs de chaque étage sont agencés sous forme de 23 paires de multiplexeurs. Finalement, chacun des quatre étages 2401 à 2404 inclut 23 blocs de calcul d'entrées de commande pour calculer g(N, i) et 23 blocs de calcul d'entrées de commande pour calculer h(N, i). L'un des blocs de calcul d'entrées de commande destiné à calculer g(N, i) est désigné par 2407 et l'un des blocs de calcul d'entrées de commande destiné à calculer h(N, i) est désigné par 2408.
Chacun des étages 2401 à 2404 exécute une itération d'interpolation. Certaines des applications d'interpolation peuvent exiger que seule une itération unique d'interpolation soit exécutée. Pour une itération unique d'interpolation, n = 1. Ceci correspond à une mise en application par éléments matériels de l'interpolateur tétraédrique dissymétrique 2400 en n'utilisant que le premier étage 2401. Un étage additionnel serait ajouté pour chaque itération additionnelle d'interpolation nécessaire pour l'application particulière.
Chacune des entrées des multiplexeurs du premier étage 2401 est connectée aux huit valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur. Les sorties de chaque paire de multiplexeurs des étages 2401 à 1204 sont connectées, respectivement à la première et la deuxième entrées de l'additionneur correspondant. La sortie de chacun des additionneurs du premier étage 2401 est une valeur de sommet du premier sous-cube. Comme mentionné précédemment, la division par 2 pour chaque itération de génération de sous-cube est retardée jusqu'à ce que le dernier sous-cube soit engendré. Les valeurs de sommets du dernier sous-cube engendré sont divisées par 2n, ce qui n'est pas représenté à la Figure 36, où n correspond au nombre des étages de l'interpolateur tétraédrique dissymétrique. Les entrées de chaque multiplexeur du deuxième, du troisième et du quatrième étages 2402 à 2404 sont couplées aux sorties des additionneurs de l'étage précédent.
L'entrée de commande de chaque multiplexeur est connectée à la sortie du bloc correspondant de calcul d'entrées de commande. Les multiplexeurs utilisés dans l'interpolateur tétraédrique dissymétrique 2400 possèdent la capacité de sélectionner l'une des huit valeurs à huit bits en utilisant une entrée de commande à trois bits. Pour cette mise en application, où d = 3, de l'interpolateur tétraédrique dissymétrique 2400, chacune des entrées aux blocs de calcul d'entrées de commande est une quantité à 3 bits. La sortie de chacun des blocs de calcul d'entrées de commande est une quantité à 3 bits. Les additionneurs associés à chaque multiplexeur exécutent une addition de l'une des huit valeurs de bits sélectionnées provenant de chacun des multiplexeurs.
Une interpolation est exécutée en amenant les valeurs de sommets sélectionnées en utilisant des bits 10a d'ordre supérieur aux entrées du multiplexeur du premier étage 2401. Les entrées des blocs de calcul d'entrées de commande sont câblées. L'interpolateur tétraédrique dissymétrique 2400 calcule les valeurs de sommets pour quatre itérations de génération de souscubes. Les valeurs P"" (7) à P"''(0) sont les valeurs des sommets du quatrième sous-cube engendré.
Dans ce mode de réalisation, P''" (0) est sélectionné, divisé par 16, et utilisé comme résultat de l'interpolation. La division par 16 est mise en application en décalant des bits et n'est pas représentée à la Figure 3-.
L'homme de l'art reconnaît que l'une des autres valeurs calculées p' '' ' (7) à P' ' ' ' (1) peut être sélectionnée, divisée par 16, et utilisée comme résultat de l'interpolation. Utiliser des valeurs qui correspondent à des sommets différents du sous-cube final pour engendrer le résultat d'interpolation provoque dans le résultat de l'interpolation une erreur systématique différente. Ceci est à prendre en considération pour sélectionner la valeur de sommet du sous-cube final engendré qui sera divisée par 16 pour engendrer le résultat de l'interpolation.
Une mise en application commune par éléments matériels d'une interpolation radiale dissymétrique et d'une interpolation tétraédrique élaguée dissymétrique est possible. Comme on peut le voir des représentations schématiques de l'interpolation radiale dissymétrique et de l'interpolation tétraédrique élaguée dissymétrique à la Figure 25 et à la Figure 31, respectivement, une mise en application commune par éléments matériels pourrait être réalisée en multiplexant les index utilisés pour accéder aux valeurs de sommets d'entrée. A la Figure 47 est incluse une liste du code VHDL qui peut engendrer une mise en application commune par éléments matériels d'une interpolation radiale dissymétrique et d'une interpolation tétraédrique élaguée dissymétrique.
A la Figure 37 est représentée une mise en application par éléments matériels d'un interpolateur commun, radial élagué dissymétrique et tétraédrique élagué dissymétrique 2500. La mise en application par éléments matériels de l'interpolation commune radiale élaguée dissymétrique et tétraédrique élaguée dissymétrique incorpore les bloc de calcul d' entrées de commande des interpolateurs radial élagué dissymétrique 1700 et tétraédrique élagué dissymétrique 2200. Des multiplexeurs 2501a à 2501n sont utilisés pour sélectionner les données aux entrées de commande des multiplexeurs 2502a à 2502n.
Un bit unique est utilisé pour commander la sélection des données aux entrées des multiplexeurs 2501a à 2501n. Le bit unique commande les entrées de commande de multiplexeurs aux multiplexeurs 2502a à 2502n pour qu'elles concernent, soit une interpolation tétraédrique élaguée dissymétrique, soit une interpolation radiale élaguée dissymétrique. L'entrée de commande de multiplexeur pour les multiplexeurs 2502a à 2502n détermine celles des valeurs de données d'interpolation qui sont couplées aux additionneurs.
Lorsque le bit est dans le premier de ses deux états, les éléments matériels de la Figure 37 interviennent comme interpolateur radial élagué dissymétrique.
Lorsque le bit est dans le deuxième de ses deux états, les éléments matériels de la Figure 37 interviennent comme interpolateur tétraédrique élagué dissymétrique.
Les additionneurs 2503a à 2503n somment les sorties des multiplexeurs 2502a à 2502O. Par décalage de bits, la somme résultante est divisée par 16, pour engendrer le résultat, ce qui n'est pas représenté à la Figure 37. Les blocs de calcul de 2504a à 2504k mettent en application les équations 14 à 19 et les blocs de calcul de 2505a à 2505v mettent en application les équations 25 et 26.
Les éléments matériels de la Figure 37 pourraient être utilisés de façon répétitive pour < D - 1) passages additionnels pour engendrer les D 1 composantes restantes de la valeur 11 d'espace de couleurs de sortie. Ou il serait possible de réaliser (D - 1) répliques additionnelles dune partie de la mise en application par éléments matériels représentée à la Figure 37 pour engendrer simultanément chacune des D composantes. Les éléments matériels utilisés pour engendrer des entrées de commande de multiplexeurs pourraient être utilisées pour chacune des D répliques. L'interpolateur commun, radial élagué dissymétrique et tétraédrique élagué dissymétrique, 2500 représenté à la Figure 37 correspond à d = 3 et n = 4 pour la valeur 10 d'espace de couleurs d'entrée.
I1 faut reconnaître que des calculs sont nécessaires pour produire les entrées de commande des multiplexeurs pour chacun des modes de réalisation, décrits ici, d'interpolateur par éléments matériels.
Ces calculs peuvent être mis en application dans des éléments matériels spécialisés ou être exécutés en utilisant un microprocesseur sous commande d'un logiciel. Utiliser un microprocesseur pour calculer les entrées de commande de multiplexeurs permet des économies d'éléments matériels aux dépens d'une augmentation du temps nécessaire pour exécuter les calculs d'entrées de commande des multiplexeurs.
Bien que plusieurs modes de réalisation de l'invention aient été illustrés, et que leurs formes aient été décrites, il ressort directement à l'homme de l'art que diverses modifications peuvent y être apportées sans s'écarter de l'esprit de l'invention ou du cadre des revendications annexées.

Claims (10)

REVENDICATIONS
1. Interpolateur radial élagué dissymétrique (1700) pour interpoler entre des valeurs de données d'interpolation en utilisant des valeurs de données (10) d'entrée incluant chacune d composantes pour engendrer des valeurs de données (11) de sortie, lesdites d composantes étant représentées, de façon correspondante, par d ensembles de bits segmentés chacun de façon à former d ensembles de bits (10b) d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits,
caractérisé en ce qu'il comprend:
un premier ensemble de 2n - 1 multiplexeurs (1702a à 17020) où n est égal à la plus grande desdites valeurs n1, n2, n3 ..., nd, chacun desdits multiplexeurs (1702a à 17020) étant configuré pour recevoir l'une des entrées d'un ensemble d'entrées de commande et présentant une sortie de multiplexeur, ledit premier ensemble de 2n - 1 multiplexeurs (1702a à 17020) étant destiné à sélectionner parmi lesdites valeurs de données d'interpolation en réponse audit ensemble d'entrées de commande;
un deuxième ensemble de 2n - n - 1 blocs de calcul (1701a à 1701k) d'entrées de commande, chacun desdits blocs de calcul (1701a à 17010) d'entrée de commande étant couplé à l'un desdits multiplexeurs (1702a à 17020), ledit deuxième ensemble de 2n - n - 1 blocs de calculs (1701a à 1701k) d'entrée de commande étant destiné à fournir 2n - n - 1 entrées dudit ensemble d'entrées de commande, une détermination desdites 2n - n - 1 entrées dudit ensemble d'entrées de commande incluant d'utiliser une première fonction; et
un moyen d'addition (1703a à 1703O) configuré pour recevoir ladite sortie du multiplexeur dudit premier ensemble.
2. Interpolateur (1700) selon la revendication 1, caractérisé en ce que
chacun desdits multiplexeurs dudit premier ensemble (1702a à 17020) inclut une configuration pour recevoir 2d desdites valeurs de données d'interpolation pour sélectionner l'une desdites 2d valeurs desdites valeurs de données d'interpolation;
lb1, lb2, lb3, ... lbd désignent lesdits d ensembles de bits (lOb) d'ordre inférieur, une position de bit de chaque bit desdits d ensembles de bits (lOb) d'ordre inférieur étant désignée à partir d'un bit de poids fort parmi lesdits bits (lOb) d'ordre inférieur jusqu'à un bit de poids faible desdits bits (lOb) d'ordre inférieur par des valeurs correspondantes de i1, i2, i3 ... id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2 - 1 à 0, de n3 - 1 à 0, ... de nd - 1 à 0,
un calcul desdites 2n - n - 1 entrées dudit ensemble d'entrées de commande inclut d'utiliser f (N, i) = v[i] # (N & #m[i]) pour ladite première fonction, où m[i] = 2d-l x Mask1 [i] + 2d-2 x Mask2[i] + 2d-3 x Mask3 [i] + + 2d-d + Maskd[i], chacun des éléments Maskj = 2k - 1 pour une valeur de k sélectionnée parmi lesdits n1, n2, n3, ... nd et pour j allant de 1 à d, v[i] = m[i] & (2d-1 x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + .. + + 2d-d x lbd[i]) pour des valeurs de i allant de n - 1 à O et où N inclut des valeurs allant de 1 à 2d; et
un calcul de n entrées dudit ensemble d'entrées de commande inclut d'utiliser v[i] pour chacune desdites valeurs de i qui vont de n - 1 à 0.
3. Interpolateur (1700) selon la revendication 2, caractérisé en ce que
ledit moyen d'addition (1703a à 17030) inclut 2n-1 additionneurs (1703a à 1703o) qui présentent chacun une première entrée, une deuxième entrée, et une sortie;
ladite première entrée et ladite deuxième entrée de 2n-1 - 1 desdits additionneurs (1703a à 17030) sont couplées à l'une desdites sorties de multiplexeurs desdits multiplexeurs (1702a à 17020);
ladite première entrée de l'un des additionneurs (1703a à 17030) inclut une configuration pour recevoir l'une desdites 2d valeurs de données d'interpolation sélectionnées en utilisant d ensembles de bits (10a) d'ordre supérieur segmentés à partir desdits d ensembles de bits et ladite deuxième entrée est couplée à l'une desdites sorties de multiplexeur dudit premier ensemble (1702a à 17020);
ladite première entrée et ladite deuxième entrée de 2n - (2n-l - 1) desdits additionneurs (1703a à 17030) sont couplées à ladite sortie d'un autre desdits additionneurs (1703a à 17030);
chacune desdites valeurs de données d'interpolation inclut D composantes de valeur de données d'interpolation ; et
chacune desdites D composantes de valeur de données d'interpolation correspond à une dimension d'un espace de couleurs de sortie et chacun desdites d composantes desdites valeurs de données d'entrée correspond à une dimension d'un espace de couleurs d'entrée.
4. Interpolateur (1700) selon la revendication 3, caractérisé en ce que
un dispositif d'impression inclut ledit interpolateur radial élagué dissymétrique (1700) pour exécuter une conversion d'espace de couleurs.
5. Interpolateur (1700) selon la revendication 4, caractérisé en ce que
D est égal à 3, d est égal à 3 et n est égal à 4, ledit espace de couleurs de sortie inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un XYZ, un HSV, un Luv, un HLS et un CMY et ledit espace de couleurs d'entrée inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un XYZ, un HSV, un
Luv, un HLS et un CMY.
6. Interpolateur (1700) selon la revendication 4, caractérisé en ce que
D est égal à 4, d est égal à 3 et n est égal à 4, ledit espace de couleurs de sortie inclut un espace
CMYK et ledit espace de couleurs d'entrée inclut un espace sélectionné dans le groupe constitué par un espace de couleurs RGB, un Lab, un XYZ, un HSV, un
Luv, un HLS et un CMY.
7. Interpolateur radial dissymétrique (1790) pour interpoler entre des valeurs de données d'interpolation en utilisant des valeurs de données (10) d'entrée incluant chacune d composantes pour engendrer des valeurs de données (11) de sortie, lesdites d composantes étant représentées, de façon correspondante, par d ensembles de bits segmentés chacun de façon à former d ensembles de bits (lob) d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits,
caractérisé en ce qu'il comprend:
un premier ensemble de 2d multiplexeurs (1906), chacun desdits multiplexeurs (1906) comportant une sortie de multiplexeur et étant configuré pour recevoir une entrée de commande et lesdites valeurs de données d'interpolation;
un deuxième ensemble de 2d additionneurs (1905), chacun desdits additionneurs présentant une première entrée, une deuxième entrée, et une sortie, chacune desdites premières entrées desdits additionneurs (1905) dudit deuxième ensemble de 2d additionneurs (1905) étant agencée pour recevoir l'une desdites valeurs de données d'interpolation et chacune desdites deuxièmes entrées de ces additionneurs étant couplée à l'une desdites sorties de multiplexeur; et
un troisième ensemble de 2d blocs de calcul (1907) d'entrée de commande, chacun desdits blocs de calcul (1907) d'entrée de commande étant couplé à l'un desdits multiplexeurs (1906) pour appliquer ladite entrée de commande.
8. Procédé d'interpolation radiale élaguée dissymétrique intervenant pour une sélection sur des valeurs de données d'interpolation en utilisant des valeurs de données (10) d'entrée incluant chacune d composantes pour engendrer des valeurs de données (11) de sortie, lesdites d composantes étant représentées par d ensembles de bits segmentés chacun de façon à former d ensembles de bits (lOb) d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits, lesdits dans ensembles de bits (10b) d'ordre inférieur étant désignés lb1, lb2, lb3, lbd, la position de bit de chaque bit desdits d ensembles de bits (lOb) d'ordre inférieur étant désignée à partir du bit de poids fort parmi lesdits bits (lOb) d'ordre inférieur jusqu'au bit de poids faible desdits bits (lOb) d'ordre inférieur par des valeurs correspondantes de i1, i2, i3 ... id qui vont chacune, de façon correspondante, de n1 - 1 à 0, de n2-1 à 0, de n3 - 1 à 0, ... de nd - 1 à 0,
caractérisé en ce qu'il comprend les étapes consistant à:
calculer un premier ensemble de 2n - n - 1 valeurs en utilisant f(N, i) = v[i] j (N & #m[i], où m[i] = 2d-l x Mask1[i] + 2d-2 x Mask2[i] + 2d-3 x Mask3[i] + + 2d-d + Maskd[i], chacun des éléments Maskj = 2k ~ 1 pour une valeur de k sélectionnée parmi lesdits n1, n2, n3, .. nd et pour j allant de 1 à d, v[i] = m[i] & (2d-l x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + + + 2d-d x lbdEi]) pour des valeurs de i allant de n - 1 à 0, n étant le plus grand desdits n1, n2, n3, ... nd, et où N inclut des valeurs allant de 1 à 2d ;
sélectionner au moins le minimum de 2n et 2d desdites valeurs de données d'interpolation en utilisant certaines valeurs dudit premier ensemble de 2n-1 1 1 valeurs, v[i] pour ladite valeur de i allant de n - 1 à 0, et lesdits d ensembles de bits d'ordre supérieur; et
ajouter un deuxième ensemble desdites valeurs de données d'interpolation formées à partir desdites valeurs de données d'interpolation provenant de ladite étape de sélection, pour engendrer une somme.
9. Procédé selon la revendication 8, caractérisé en ce qu'il comprend en outre l'étape consistant à:
diviser ladite somme par 2n.
10. Procédé d'interpolation radiale dissymétrique intervenant pour une sélection sur des valeurs de données d'interpolation, en utilisant des valeurs de données (10) d'entrée incluant chacune d composantes pour engendrer des valeurs de données (11) de sortie, lesdites d composantes étant représentées par d ensembles de bits segmentés chacun de façon à former d ensembles de bits (lOb) d'ordre inférieur incluant chacun, respectivement, n1, n2, n3 ... nd desdits bits, lesdits dans ensembles de bits (lob) d'ordre inférieur étant désignés lb1, lb2, lb3, . . . lbd, la position de bit de chaque bit desdits d ensembles de bits (10b) d'ordre inférieur étant désignée à partir du bit de poids fort parmi lesdits bits (lOb) d'ordre inférieur jusqu'au bit de poids faible desdits bits (10b) d'ordre inférieur par des valeurs correspondantes de i1, i2, i3 ... id qui vont chacune, de façon correspondante, de n1 - 1 à O, de n2 - 1 à
O, de n3 - 1 à 0, . . de nd - 1 à 0,
caractérisé en ce qu'il comprend les étapes consistant à:
calculer un premier ensemble de 2n - n - 1 valeurs en utilisant f(N, i) = v[i] # (N & #m[i], où m[i] = 2d-1 x Maskl[i] + 2d-2 x Mask2 [i] + 2d-3 x Mask3[i] + ... + 2d-d + Maskd[i], chacun des éléments Maskj = 2k ~ 1 pour une valeur de k sélectionnée parmi lesdits n1, n2, n3, ... nd et pour j allant de 1 à d, v[i] = m[i] & (2d-l x lb1 [i] + 2d-2 x lb2 [i] + 2d-3 x lb3 [i] + .. + 2d-d x lbd[i]) pour i égal à n - 1 n étant le plus grand desdits n1, n2, n3, ... nd, et où N inclut des valeurs allant de 1 à 2d;
sélectionner un premier ensemble de 2d paires desdites valeurs de données d'interpolation en utilisant chacune des valeurs dudit premier ensemble de 2d valeurs et une valeur correspondante de N; et
calculer un premier ensemble de 2d sommes à partir dudit premier ensemble de 2d paires.
FR9812078A 1997-12-12 1998-09-28 Interpolation radiale dissymetrique et radiale elaguee dissymetrique Expired - Fee Related FR2772492B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/989,962 US5966474A (en) 1997-12-12 1997-12-12 Non-symmetric radial and non-symmetric pruned radial interpolation

Publications (2)

Publication Number Publication Date
FR2772492A1 true FR2772492A1 (fr) 1999-06-18
FR2772492B1 FR2772492B1 (fr) 2005-09-02

Family

ID=25535615

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9812078A Expired - Fee Related FR2772492B1 (fr) 1997-12-12 1998-09-28 Interpolation radiale dissymetrique et radiale elaguee dissymetrique

Country Status (3)

Country Link
US (1) US5966474A (fr)
FR (1) FR2772492B1 (fr)
GB (1) GB2333921B (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1039742A1 (fr) 1999-03-19 2000-09-27 Hewlett-Packard Company Procédé d'interpolation
JP2002152534A (ja) * 2000-11-14 2002-05-24 Matsushita Electric Ind Co Ltd 三次元信号変換方法及び装置
US7072084B2 (en) * 2001-02-08 2006-07-04 Ricoh Company, Ltd. Color converting device emphasizing a contrast of output color data corresponding to a black character
US8054518B2 (en) * 2003-05-30 2011-11-08 Hewlett-Packard Development Company, L.P. Color imaging devices, color imaging methods, and color separation methods
US7304769B2 (en) * 2003-05-30 2007-12-04 Hewlett-Packard Development Company, L.P. Color imaging devices, color image forming methods, and color image data processing methods
US7154636B2 (en) * 2004-09-28 2006-12-26 Canon Kabushiki Kaisha Color appearance space to CMYK mapping using relative purity
US8391647B1 (en) 2010-02-17 2013-03-05 Hewlett-Packard Development Company, L.P. Pixel replacement

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4511989A (en) * 1981-06-18 1985-04-16 Dainippon Screen Seizo Kabushiki Kaisha Linear interpolating method and color conversion apparatus using this method
WO1992001260A1 (fr) * 1990-07-09 1992-01-23 Eastman Kodak Company Circuit associant de maniere selective les signaux de coefficient de puissance de deux
EP0517095A1 (fr) * 1991-05-30 1992-12-09 Sony Corporation Circuit d'interpolation de signal d'image
US5390035A (en) * 1992-12-23 1995-02-14 International Business Machines Corporation Method and means for tetrahedron/octahedron packing and tetrahedron extraction for function approximation
US5475510A (en) * 1991-10-17 1995-12-12 Fuji Xerox Co., Ltd. Method for transforming color signals and apparatus for the method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893166A (en) * 1972-01-05 1975-07-01 Crosfield Electronics Ltd Colour correcting image reproducing methods and apparatus
US4275413A (en) * 1978-03-30 1981-06-23 Takashi Sakamoto Linear interpolator for color correction
US4477833A (en) * 1981-08-12 1984-10-16 R. R. Donnelley & Sons Company Method of color conversion with improved interpolation
JPH087553B2 (ja) * 1988-10-27 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 色画像量子化方法及び装置
US5121196A (en) * 1988-11-18 1992-06-09 Konica Corporation Color processing method and apparatus with a color patch
US5208875A (en) * 1989-03-07 1993-05-04 Sony Corporation Digital picture signal processing apparatus
US5208872A (en) * 1990-03-30 1993-05-04 The United States Of America As Represented By The United States National Aeronautics And Space Administration Programmable remapper with single flow architecture
JP2903808B2 (ja) * 1991-10-17 1999-06-14 富士ゼロックス株式会社 色信号変換方法および装置
US5345541A (en) * 1991-12-20 1994-09-06 Apple Computer, Inc. Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering device
US5337166A (en) * 1992-02-14 1994-08-09 Fuji Xerox Co., Ltd. Color signal transforming apparatus
EP0601241B1 (fr) * 1992-12-02 1996-09-04 Eastman Kodak Company Procédé de transformation de couleurs
US5504821A (en) * 1993-03-31 1996-04-02 Matsushita Electric Industrial Co., Ltd. Color converting apparatus for performing a three-dimensional color conversion of a colored picture in a color space with a small capacity of memory
US5732162A (en) * 1993-10-28 1998-03-24 Xerox Corporation Two dimensional linearity and registration error correction in a hyperacuity printer
US5684981A (en) * 1995-01-18 1997-11-04 Hewlett-Packard Company Memory organization and method for multiple variable digital data transformation
AU5957496A (en) * 1995-06-06 1996-12-24 Apple Computer, Inc. A caching system for interpolation processing
US5774386A (en) * 1995-09-08 1998-06-30 Eastman Kodak Company Method and apparatus for performing function evaluation using a cache

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4511989A (en) * 1981-06-18 1985-04-16 Dainippon Screen Seizo Kabushiki Kaisha Linear interpolating method and color conversion apparatus using this method
WO1992001260A1 (fr) * 1990-07-09 1992-01-23 Eastman Kodak Company Circuit associant de maniere selective les signaux de coefficient de puissance de deux
EP0517095A1 (fr) * 1991-05-30 1992-12-09 Sony Corporation Circuit d'interpolation de signal d'image
US5475510A (en) * 1991-10-17 1995-12-12 Fuji Xerox Co., Ltd. Method for transforming color signals and apparatus for the method
US5390035A (en) * 1992-12-23 1995-02-14 International Business Machines Corporation Method and means for tetrahedron/octahedron packing and tetrahedron extraction for function approximation

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HUNG P-C: "COLOR RENDITION USING THREE-DIMENSIONAL INTERPOLATION", PROCEEDINGS OF THE SPIE, SPIE, BELLINGHAM, VA, US, vol. 900, 12 January 1988 (1988-01-12), pages 111 - 115, XP000567338, ISSN: 0277-786X *
KANAMORI E A: "FAST COLOR PROCESSOR WITH PROGRAMMABLE INTERPOLATION BY SMALL MEMORY (PRISM)", JOURNAL OF ELECTRONIC IMAGING, SPIE + IS&T, US, vol. 2, no. 3, 1 July 1993 (1993-07-01), pages 213 - 224, XP000394880, ISSN: 1017-9909 *
KASSON J M ET AL: "AN ANALYSIS OF SELECTED COMPUTER INTERCHANGE COLOR SPACES", ACM TRANSACTIONS ON GRAPHICS, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, US, vol. 11, no. 4, 1 October 1992 (1992-10-01), pages 373 - 405, XP000335146, ISSN: 0730-0301 *
KASSON J M ET AL: "PERFORMING COLOR SPACE CONVERSIONS WITH THREE-DIMENSIONAL LINEAR INTERPOLATION", JOURNAL OF ELECTRONIC IMAGING, SPIE + IS&T, US, vol. 4, no. 3, 1 July 1995 (1995-07-01), pages 226 - 249, XP000517861, ISSN: 1017-9909 *

Also Published As

Publication number Publication date
US5966474A (en) 1999-10-12
GB9826984D0 (en) 1999-02-03
FR2772492B1 (fr) 2005-09-02
GB2333921B (en) 2002-04-10
GB2333921A (en) 1999-08-04

Similar Documents

Publication Publication Date Title
Pitas Digital image processing algorithms and applications
JP3976849B2 (ja) 補間器入力データを生成する装置
AU2011202173A1 (en) Screen printing techniques
EP1221812B1 (fr) Interpolation rapide des grande tables de consultation couleurs
US6049400A (en) Non-symmetric tetrahedral and non-symmetric pruned tetrahedral interpolation
FR2772492A1 (fr) Interpolation radiale dissymetrique et radiale elaguee dissymetrique
US5786907A (en) High speed color compensation system
WO2007071882A2 (fr) Procede pour fournir des donnees a un moyen de traitement numerique
WO2019170420A1 (fr) Procede de reconstruction d&#39;une image couleur acquise par un capteur recouvert d&#39;une mosaïque de filtres couleurs
US6031642A (en) Tetrahedral and pruned tetrahedral interpolation
EP0923048B9 (fr) Appareil pour l&#39;interpolation tetraedrique et tetraedrique-réduite
US6040925A (en) Radial and pruned radial interpolation
Patin An introduction to digital image processing
EP0923037B1 (fr) Mise en oeuvre simplifiée sous forme matérielle d&#39; une interpolation tétraédrique et radiale
JP2658089B2 (ja) カラー画像処理方法
JP2658086B2 (ja) カラー画像処理方法
JP3430673B2 (ja) 色変換装置
Tschumperlé et al. Reconstruction of Smooth 3D Color Functions from Keypoints: Application to Lossy Compression and Exemplar-Based Generation of Color LUTs
CN113222814A (zh) 图像的分辨率处理方法、装置、设备及存储介质
JPH0322116B2 (fr)
JP4266004B2 (ja) 画像処理方法、画像処理装置、画像形成装置、画像処理プログラムおよび画像処理プログラムを記録した記録媒体
JP2007174392A (ja) データ変換装置、データ変換装置の制御方法およびプログラム
JP2658087B2 (ja) カラー画像処理方法
JP2001157072A (ja) 画像処理方法及び画像処理装置並びにそれを備えた画像形成装置
EP1594305A1 (fr) Procédé et dispositif de conversion d&#39;espace de couleur par interpolation tridimensionnelle

Legal Events

Date Code Title Description
TP Transmission of property
ST Notification of lapse

Effective date: 20090529