Brevet FR2716061A1 — publié le 19950811

- 2716061 PROCEDE DE GENERATION D'IMAGES TEXTUREES ET D'EFFETS SPECIAUX EN VIDEO ET DISPOSITIF POUR LA MISE EN OEUVRE DU PROCEDE La présente invention concerne un procédé de génération d'images texturées en vidéo, plus particulièrement un procédé permettant de générer des textures en temps réel vidéo en vue d'effectuer des effets spéciaux dans des séquences d'images vidéo. La présente invention concerne aussi un dispositif pour la mise en oeuvre dudit procédé. Les effets spéciaux et notamment la synthèse d'images sont bien connus dans le domaine du cinéma. Toutefois, dans le domaine de la télévision, les effets spéciaux sont plus particulièrement limités aux incrustations, aux déformations d'images ou aux enchaînements évolués. Or, I'on rencontre aussi dans le domaine de la télévison, la nécessité de devoir créer un certain nombre d'images (ou séquences) de synthèse et notamment des images texturées. Toutefois, dans les matériels vidéo professionnels, la synthèse de texture n'apparaît pour l'instant que sous la forme de motifs grossiers et répétitifs. Elle n'est utilisée que pour générer des fonds d'image sur lesquels on effectue des incrustations. La présente invention a donc pour but de proposer un nouveau procédé de génération d'images texturées en vidéo qui permet de générer un ensemble relativement vaste de textures qui puissent être incrustées dans une image vidéo ou utilisées comme clé de mélange d'un enchaînement en vue de générer des séquences à des fins artistiques ou publicitaires... La présente invention a aussi pour but de proposer un nouveau procédé de génération d'images texturées en vidéo qui permet de générer des textures, telles que des textures de tissus, de marbre, d'effets atmosphériques (nuage, brouillard), d'habillage de scènes ou de studios en utilisant un même procédé de génération de textures. La présente invention a encore pour but de proposer un procédé de génération d'images texturées en vidéo qui soit complètement paramétrable de manière à pouvoir modifier l'aspect ou le grossissement des textures afin de générer des séquences animées. La présente invention a surtout pour but de proposer un nouveau procédé de génération d'images texturées en vidéo qui puisse synthétiser une texture en temps réel vidéo, c'est-à-dire aux fréquences de 25 images/s, images/s ou autres. En conséquence, la présente invention a pour objet un procédé de génération d'images texturées en vidéo, caractérisé en ce qu'il comporte une étape de génération d'une texture microscopique à partir de paramètres- utilisateur avec une fonction d'interpolation de type fractale générant un signal de type fBm "fractional Brownian motion'. Selon un mode de réalisation préférentiel, la fonction fractale est définie par: N F(x,y)= E r- kH Spln (rkx, rky) k=O dans laquelle r > 1, r désignant la lacunarité ou facteur d'irrégularité, H= (3 - D) o D est la dimension fractale désirée, N est un paramètre fixé pour avoir une définition au pixel ou point- image près, et Spln(x,y) est l'interpolation par B-spline au point de coordonnées réelles (x,y) d'un maillage de points générés aux coordonnées entières. La présente invention a aussi pour objet un procédé, caractérisé en ce qu'il comporte de plus une étape de génération d'un motif recevant en entrée l'image de la fonction fractale et des paramètres-utilisateur saisis sur une interface utilisateur à partir d'un écran informatique ou d'un pupitre spécialisé et donnant en sortie une texture macroscopique. Cette étape est particulièrement utile pour générer des textures de type tissu ou marbre par exemple. Cette étape permet d'obtenir en sortie l'image d'une texture à plat, c'est-à-dire non plaquée sur une surface. En sortie de cette étape, on peut soit obtenir le dessin du motif macroscopique de la texture, soit dupliquer le motif macroscopique de la texture. Il est encore possible d'introduire la fonction fractale comme bruit de phase sur le motif ou d'introduire la fonction fractale comme bruit additif sur l'image. Cette étape permet aussi de réaliser, par exemple, un tissage de deux motifs de fils et la génération de couleurs. Selon un mode de réalisation préférentiel, cette étape est réalisée en utilisant les fonctions: M1 (x, y) = Splnl (rxx + dpxF(x,y), ryy + dpyF(xy)) M2(x, y) = Spln2 (rxx + dpxF(x,y), ryy + dpyF(xy)) avec rx et ry: coefficients de duplication des motifs en x et y respectivement; dPx et dpy: coefficients de déphasage des motifs en x et y respectivement; F(x,y): valeur de la fonction fractale au point (x,y); Ml (x,y) est la valeur au point (x,y) du motif P1 dupliqué rx fois en x ry fois en y et déphasé de dpxxF(x,y) en xet de dpyxF(x,y) en y et M2(x,y) est la valeur au point (x,y) du motif P2 dupliqué rx fois en x ry fois en y et déphasé de dpxxF(x,y) en x et dpyxF(x,y) en y. Selon encore une autre caractéristique de la présente invention, le procédé comporte de plus une étape de rééchantillonnage permettant de réaliser un placage ou "mapping" de l'image texturée sur une surface. Selon un mode de réalisation préférentiel, le rééchantillonnage est réalisé en utilisant la méthode 'output to input". Selon encore une autre caractéristique de la présente invention, on ajoute dans l'image un effet de profondeur en atténuant la luminosité du point de la surface en fonction de sa distance par rapport au point de visualisation. La présente invention a aussi pour objet un dispositif pour la mise en oeuvre du procédé, tel que décrit ci-dessus, caractérisé en ce qu'il comporte un circuit spécifique de calcul de la fonction SplnO. Selon un mode de réalisation particulier, le circuit de calcul de la fonction SplnO permet de réaliser un premier calcul matriciel suivant: rXo] [POOPO1 P02P031 X Ixil = - R0 LP10 Pl 1 P12 P13J 1 X21 LRlJ LX3J et un second calcul, la multiplication de rRoil LR1J par [YO YI] 4 2716061 D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description d'au moins un mode de réalisation préférentiel faite ci-après avec référence aux dessins ciannexés dans lesquels: - la figure 1 est un schéma expliquant les méthodes fractales; - la figure 2 représente le découpage d'un écran, tel qu'un écran de télévision pour la mise en oeuvre d'une fonction fractale; - la figue 3 représente schématiquement l'étape de génération d'un motif à partir de deux primitives, conformément à la présente invention; - les figures 4A à 4C sont des schémas expliquant l'étape de placage d'une texture sur une surface conformément à la présente invention; - les figures 5A à 5B sont des schémas expliquant la mise en relief de textures, tels que des nuages; - la figures 6 est un schéma du circuit réalisant la fonction Spin; - la figure 7 est une représentation schématique de l'étage générant la fonction fractale; - les figures 8 et 9 représentent les circuits séquenceur et pondérateur de la figure 7; - la figure 10 est une représentation schématique de l'étage de génération du motif; - les figures 11 et 12 représentent les circuits séquenceur et pondérateur de la figure 10; - la figure 13 est une représentation schématique de l'étage de rééchantillonnage; - les figures 14 et 15 représentent les circuits "Projection" et "Atténuation sur la profondeur" de la figure 13, et - les figures 16 et 17 représentent les circuits "Calcul de paramètres de mise en relief' et "Bloc de calcul de l'intégrale" de la figure 13. Le procédé de génération d'images texturées en vidéo, conforme à la présente invention, comporte une première étape de génération d'une texture microcospique à partir de paramètres-utilisateur. En effet, l'image d'une scène donne deux types d'informations, à savoir les contours délimitant des zones de l'image et la nature de la surface contenue dans 2716061 chaque zone. Ce dernier type d'informations est appelé texture et renseigne sur les relations liant les différentes zones de l'image. D'autre part, l'ensemble des textures est communément séparé en deux classes: les textures macroscopiques et les textures microscopiques. Les textures macroscopiques se caractérisent par des primitives locales ou motifs de base qui s'organisent spatialement selon des règles connues tandis que les textures microscopiques se caractérisent par une structure stochastique qui régit le placement et la couleur des pixels selon des lois probabilistes. Il existe de nombreux algorithmes permettant de synthétiser des textures microscopiques. Toutefois, ces algorithmes connus de l'homme de l'art permettent en général de ne réaliser que certains types de texture. Ainsi, les textures présentant de fortes orientations ou régularités telles que des textures à rayures, des textures simulant du papier ou des textiles peuvent se modéliser par des champs de Markov. L'inconvénient de cette méthode réside dans sa complexité due à sa structure itérative. Certaines autres textures simulant par exemple du sable ou du gazon peuvent être obtenues à l'aide de modèles auto-régressifs. Ces méthodes présentent l'inconvénient de ne pas être toujours stables. Pour générer des textures d'objets naturels tels que des nuages ou du brouillard, il est connu d'utiliser les méthodes fractales. Une fractale est une structure qui présente des similitudes à tous les niveaux d'échelle. De ce fait, si l'on fait un grossissement de la structure, on retrouve le même motif au niveau d'échelles inférieures. Une fractale est caractérisée par sa dimension fractale que l'on peut comparer à la dimension topologique. Ainsi, une droite a une dimension topologique de 1 et un plan une dimension de 2. En comparaison, une structure fractale à un paramètre aura une dimension fractale entre 1 et 2 selon qu'elle remplit plus ou moins le plan. Ceci est représenté, par exemple, à la figure 1 qui donne une construction de structure fractale: si l'on coupe le segment référencé 1 en trois segments de longueur 1/3 et que l'on remplace le segment du milieu par deux autres segments de longueur 1/3, l'on obtient la structure référencée 2. Si maintenant on répète ce processus, pour chaque nouveau segment et ceci à tous les niveaux d'échelle, on obtient la structure référencée 3. Cette structure présente, de par sa construction, des similitudes à tous les niveaux d'échelle et une dimension de 1,2. 6 2716061 Le procédé de génération d'images texturées en vidéo, conforme à la présente invention, utilise une fonction d'interpolation fractale spécifique qui permet de générer une texture microscopique en temps réel tout en respectant la qualité de l'image, notamment d'une image haute définition. Cette fonction fractale doit aussi pouvoir réaliser plusieurs types de texture de base tels que des textures naturelles de type brouillard, nuage ou similaire, des textures du type tissu, marbrure ou similaire et des textures constituées par des motifs géométriques se répétant à tous les niveaux d'échelle. En conséquence, la fonction d'interpolation fractale utilisée est une fonction Fbm (Fractional Brownian motion) et elle est définie plus particulièrement par la formule suivante: N F(x,y) = r-kHSpln(rkx,rky) (1) k=O avec r > 1: lacunarité ou facteur d'irrégularité, H= (3 - D) o D est la dimension fractale désirée, N paramètre fixé pour avoir une définition au pixel ou point-image près, et Spln(x,y): I'interpolation par B-spline au point de coordonnées réelles (x,y) d'un maillage de points générés aux coordonnées entières. Les valeurs de ces points de maillage seront de type aléatoire ou déterministe suivant la fractale recherchée. Conformément à la présente invention, la fonction F0 doit être définie de façon à pouvoir générer des images de taille Wx L, Wétant le nombre de points par ligne, et L le nombre de lignes actives. Dans le cadre de la présente invention qui consiste à générer des images en vidéo, l'image pourra avoir une taille de 720 x 576 jusqu'à la haute définition 1920 x 1250. Pour obtenir ce domaine de définition, on découpe l'écran en Nbc = Bl x Bh blocs de taille dl x dh pixels, Bl représentant les blocs en largeur et Bh des blocs en hauteur comme représenté sur la figure 2. Dans ce cas, les coins des blocs forment alors Npt = (Bl + 1) x (Bh + 1) points de coordonnées entières de (0,0) à (BL, Bh) comme représenté sur la figure 2. Ainsi, pour un point (xb, y) de l'écran avec xi appartenant à l'espace [0, W - 1], yi appartenant à [0, L - 1], on calcule Fx,y) avec: 7 2716061 x. x. Yi Yi x=Bl. w= dl et y = Bh. LI d (2) -WdlC L dh On peut donc définir la fonction SpinO en connaissant les valeurs aux Npt points de coordonnées entières ((0,0O) à (Bl, Bh)). D'après la formule (1), on doit calculer Spln (rkx, rky) avec r > 1 et k > 0. De ce fait, on dépasse le domaine de définition de SplnO qui est [0, B] x [0, Bh]. Pour ce faire, on prolonge le domaine de définition de SplnO en la rendant périodique en x et en y, et en conséquence: Spln (Bl, i = Spln (O, i pour tout i E [0, Bh Spln (0, B) = Spln (, O) pour toutj E [0, B] et: Spln (x, y) = Spln (x + k*Bl, y + 1 * Bh) V k et 1 e N Pour le calcul de Spln (rkx, rky), il suffit de rapporter les valeurs du couple (rkx, rky) dans l'ensemble [0, B/ x [o, Bh]. D'autre part, pour obtenir des textures microscopiques les plus uniformes possible, notamment lorsqu'il s'agit de brouillard et de nuage, la fonction SpInO choisie est une fonction SplnO cubique. Dans ce cas, on utilise une fonction d'interpolation sur 16 points de manière à éviter toute cassure dans l'image. Ainsi, le calcul de la valeur en un point Pxy se définit par: rPOO P 10 P20 P301 Spln(Pxy)=XTMTBIPO1 Pll P21 P311 MBY(3) I P02 P12 P22 P321 LP03 P13 P23 P33J avec r-il rill Ixll lyll X=l xa et Y= 1 y21 Lx3J Ly3J et MB, la matrice permettant le calcul des coefficients du polynôme bi-cubique. De préférence, MB peut être donnée par: 8 2716061 rl-3 3-11 14 0 -6 31 MB= Il1 3 0 1l LO 0 0 1J Si l'on prend les notations suivantes: [POO Pl O P20 P301 P= IP01 Pll P21 P311 1 P02 P1 2 P22 P321 LP03 P13 P23 P33J U = MPBX et V = MBY Alors (3) s'écrit: Spln (Px,y) = UTPV o l'opérateur T signifie transposé. En effectuant un maillage de l'écran en Npt points, l'on obtient un ensemble de Nbc matrices P, qui sont stockables dans un tableau PF] de dimension Nbc. Dans ce cas, l'indice I dans le tableau P[ ] de la matrice à sélectionner pour un point (xi, y) de l'écran se calcule de la façon suivante I = (xi div dl} + Bl x (yi div dh) o l'opérateur 'div" signifie division entière. Définie comme ci-dessus, la distance entre Pl1 et P21 est de dl pixels et celle entre Pl 1 et Pl 2 est de dh pixels. Le vecteur X ne peut donc prendre que dl valeurs et le vecteur Y que dh valeurs. Il est alors possible de pré-calculer les dl vecteurs U ainsi que les dh vecteurs V de façon à ce que le calcul de SplnO en un point ne nécessite que la prémultiplication de la matrice P par le vecteur U et la multiplication du résultat par le vecteur V. 9 2716061 Concernant les paramètres Net r de la fonction (1), N+1 définit le nombre de calculs de SplnO que l'on peut effectuer en parallèle et la lacunarité r détermine la progression géométrique dans l'espace des fréquences. Or, dans les plus hautes fréquences, les échantillons de SplnO ne peuvent être de taille inférieure à Bl x Bh pixels pour éviter les effets de repliement, car SplnO est une interpolation par B-spline d'un maillage de Bl x Bh points. D'autre part, Nest directement lié à r. En effet, d'après les relations (1) et (2), un échantillon de SplnO de largeur Bl se spécifie de la façon suivante: rNx= pour xi=1 rNI =1 =rN dl = 1 5 d'o N - logdl logr Ainsi, plus r sera faible et plus N sera élevé. Or, il est intéressant d'avoir un r faible, de manière à garantir une progression plus lente dans l'espace des fréquences, et un N faible afin d'obtenir un minimum d'opérations à effectuer en parallèle. Dans le cadre d'une génération d'images texturées vidéo 4/3, on peut prendre: N = 5 et r= 2. On décrira maintenant avec référence à la figure 3, I'étape de génération d'un motif. Dans cette étape, on reçoit en entrée la fonction fractale F0 générée lors de l'étape de génération de texture microscopique et on obtient en sortie l'image d'une texture 'à plat", c'est-à-dire d'une image non plaquée sur une surface. Cette étape permet de dessiner le motif macroscopique de la texture, de dupliquer le motif microscopique de la texture, d'introduire la fonction fractale comme bruit de phase sur le motif, d'introduire la fonction fractale comme bruit additif sur l'image, de réaliser le tissage de deux motifs de fils et aussi de gérer la couleur. Comme mentionné ci-dessus, une texture peut être considérée sous une forme macroscopique et microscopique. Pour générer une texture macroscopique, on utilise en général une primitive. L'étape ci-dessus permet I'agencement de deux primitives appelées Pl et P2 qui pourront être par 2716061 exemple celles d'une peau de reptile ou les deux fils d'un tissu. Pour obtenir une texture de type macroscopique, ces primitives peuvent être dupliquées dans l'image en x et en y. La structure microscopique de la texture ainsi que les variations d'aspect des primitives sont obtenues en introduisant la fonction fractale F0 issue de l'étape précédente sous forme de bruit corrélé sur le phasage des primitives ou sous forme de bruit corrélé sur l'image. Les deux primitives P1 et P2 peuvent avoir des valeurs identiques dans le cas de l'utilisation d'une seule primitive ou avoir des valeurs neutres si l'on souhaite faire prédominer l'aspect fractal. Dans le procédé de la présente invention, on utilise la fonction spline décrite ci-dessus pour calculer les primitives Pl et P2. Comme représenté sur la figure 3, chaque primitive est caractérisée par Npt que l'on interpole en fonction des duplicats par la fonction B-spline. Ainsi, le schéma A de la figure 3 représente les Npt points caractérisant Pl, le schéma B les Npt points caractérisant P2 et le schéma C la structure macroscopique obtenue par duplication des motifs Pl et P2. De manière plus générale, on utilise les fonctions ci-après pour réaliser une texture macroscopique. Soit Spln10 la fonction SplnO avec le tableau de points Pl et Spln20 la fonction SplnO avec le tableau de points P2. Alors, on définit les fonctions Ml et M2: Ml (x,y) = Splnl (rxx + dpxF(x,y), ryy + dpyF(x,y)) M2 (x,y) = Spln2 (rxx + dpxF(x,y), ryy + dpyF(x,y)) avec rx et ry: coefficients de duplication des motifs en x et y respectivement; dpx et dpy: coefficients de déphasage des motifs en x et y respectivement; F(x,y) : valeur de la fonction fractale au point (x,y). M1 (x,y) est la valeur au point (x,y) du motif Pl dupliqué rx fois en x, ry en y et déphasé de dpxxF(x,y) en x et dpyxF(x,y) en y. De même, M2(x,y) est la valeur au point (x,y) du motif P2 dupliqué rx fois en x ry en y et déphasé de dpxxF(x,y) en xet dpyxF(x,y) en y. A partir de cette étape de génération de motifs, on peut réaliser un placage ou "mapping" de la texture microscopique ou macroscopique obtenue sur une surface. Ce placage est obtenue en réalisant une étape de 1 1 2716061 ré-échantillonnage. Le ré-échantillonnage est réalisé en utilisant de préférence une méthode connue appelée méthode 'output to input. Cette méthode permet d'éviter les défauts de filtrage lorsque l'on calcule la transformation entres les pixels de deux images. La méthode utilisée, dans le présent cas, pour réaliser le placage d'une texture sur une surface plane telle qu'un sol, un plafond, un mur, ....etc, sera expliquée avec référence aux figures 4A à 4C. Dans le cas présent, il a été choisi d'effectuer une projection perspective de la surface texturée dans l'espace à trois dimensions (O,XY,Z) vers le plan de l'écran. De ce fait, il est nécessaire d'effectuer les opérations suivantes: À positionner la surface plane texturée dans l'espace; positionner l'écran de visualisation dans l'espace; positionner le point de visualisation qui servira de point de convergence dans l'espace. A titre d'exemple et avec référence aux figures 4A à 4C, on détaillera les calculs des coordonnées du point de visualisation et de la transformation pour un placage d'une texture sur un plafond. Cette technique de positionnement des objets de projection perspective par rapport au point de visualisation est dérivée de la méthode bien connue en synthèse d'image appelé lancé de rayons. Les autres plans pourront être obtenus par des calculs similaires ou par rotation par rapport au centre du plan écran. Comme représenté sur la figure 4A, on adopte les notations suivantes: (Oi, Xi, Y) est le plan de la surface texturée initiale. Celle-ci a les dimensions d'une image et elle provient de l'étape de génération du motif, c'est-à-dire que dans ce repère le point Co a les coordonnées (0,0), C1 (O,L-I), C2 (W-I,L-1) et C3 (W-1,O). (Oe, Xe, Ye) est le plan de l'écran. (Xpv, Ypv) est la projection normale au plan (0e, Xe, Ye) du point de visualisation. d est la distance entre le point de visualisation et le point (Xpv, Ypv). C1' (Xl', Yl ') est la projection perspective de C1 (Xl, Yl) sur le plan écran relativement au point de visualisation et CO' Cl' C2' C3' les projections respectives de C0, C1, C2, C3. Les images texturées et écran sont positionnés tels que le plan de 12 2716061 l'écran coïncide avec la face avant du volume symbolisant le studio, par exemple, alors: CO' = CO C3'= C3 Cl' et C2' sont symétriques par rapport à l'axe qui coupe verticalement l'écran en son milieu. Le point (Xpv, Ypv) est situé sur l'axe qui coupe verticalement l'écran en son milieu, I'observateur se trouvant sur un axe perpendiculaire à l'axe qui coupe verticalement l'écran en son milieu. Il faut alors obtenir Ypv, d et la relation qui lit les points projetés sur (Oe, Xe, Ye) et ceux du plan (Oi, Xi, Yi. A partir de la vue de dessus représentée sur la figure 4B, on peut déduire les relations sur les angles suivantes: Xpv-, 1 - XI1 d Y] d= Yd(Xpv-X1) X1 De même à partir de la vue de côté représentée sur la figure 4C, on peut déduire la relation suivante: YPv-Y', Y', d Y, dY' y = + Y, Pv y i De plus, pour un point (X', Y') de l'écran compris dans le trapèze (C0', C1l', C2', C3), on calcule les coordonnées du point source (X,Y) du plan texturé grâce au système suivant: 13 2716061 Y pv - Y d XpV- X _pv-X d+Y d x= Ypv(X'-Xpv)X (4) Y y pv -Y, dY' y=y Y y, (5) Ypv - Y, En plus de la réalisation du plaquage de l'image texturée sur une surface, il est aussi possible d'ajouter un effet de profondeur. Cet effet est obtenu par atténuation de la luminosité du point de la surface en fonction de sa distance par rapport au point de visualisation. Il est connu que l'intensité de réflexion diffuse est donnée par: I = Ii. kdcos T avec: Ii= intensité lumineuse incidente kd = coefficient de réflextivité de la surface et cos X est égal au produit scalaire entre le vecteur rayon incident Iet n la normale à la surface au point P. De ce fait, l'intensité de la lumière diffuse décroît de façon inversement proportionnelle au carré de la distance Spv entre la surface et le point de visualisation. Cette distance s'exprime comme suit: distsp = (d +y)2 + y2 +(Xv-X)2 sPv pv v Pour mieux faire percevoir l'effet de profondeur, il est préférable de faire prédominer l'atténuation de la luminosité sur la profondeur de la surface, à savoir les termes en Y par rapport à l'atténuation latérale de la luminosité. Pour cela, on peut négliger les termes en X par rapport aux termes en Y. En exprimant Xen fonction de Ytel que définit ci-dessus dans la fonction distSpV et avec la simplification précédente, on obtient la 14 2716061 formule d'atténuation en fonction des Y ci-après: C. (yp- y')2 atténuation (Y') = (YPV Y) Y2 (d2 +(Ypv- ')2) avec C: constante de normalisation. Selon une caractéristique supplémentaire de la présente invention, on peut réaliser à l'aide des éléments obtenus en sortie de l'étape de ré-échantillonnage, la mise en relief des nuages, I'étapes de rééchantillonnage donnant une image de synthèse représentant, par exemple, un plafond nuageux avec prise en compte de l'absorption de la lumière. Au niveau du ré-échantillonnage, on prend en entrée une image obtenue en sortie de l'étape de génération de motifs qui a les caractéristiques d'une surface fractale. A chaque pixel de cette image, on associe une épaisseur proportionnelle à la valeur du pixel. L'image fractale provenant de l'étape de génération de motifs va servir à générer un volume dont la surface sera fractale. Ce volume est alors positionné dans l'espace (0, X, Y, Z) comme le plafond décrit ci-dessus. Dans ce cas aussi, la technique de calcul est dérivée du lancé de rayon comme décrit pour le plaquage d'une image texturée sur une surface. Cette étape est représentée en particulier aux figures 5A et 5B. Sur la figure 5A, le niveau de gris noté ng est en fait proportionnel à l'absorption de la lumière à travers le nuage et peut être donné par la formule ci-après: ng est proportionnel à (a. dl (s) + p. d2(s))ds o avec a et I: constantes de normalisation Une manière de résoudre l'expression ci-dessus consiste à discrétiser l'intégrale pour la transformer en une somme que l'on évalue au fur et à mesure du balayage des pixels, comme représenté sur la figure 5B. On travaille alors colonne par colonne en commençant par les points de la ligne d'horizon vers les points du haut de l'écran. Pour chaque pixel C' de l'écran, on calcule les coordonnées de son point source C sur le plan texturé comme décrit ci-dessus. La valeur de l'image fractale en C donne alors l'épaisseur du nuage h On calcule ensuite la projection de la hauteur h sur 2716061 l'écran he afin de connaître le nombre de pixels de l'écran qui seront affectés par l'absorption de la lumière pénètrant à la verticale de C. h.(Yp -Y ') e y pv Considérons le segment de l'écran [(X', Y'), (X', Y' - heM. Alors pour chaque point C" (X', Y") (avec Y" e [Y, Y he]) du segment on calcule le terme: Ang = exp(a. dl (Y, Y', + .d2(Y, Y',h Le terme obtenu est alors additionné à la valeur du pixel C". Ainsi, au fur et à mesure que l'on monte de la ligne d'horizon vers le haut de l'écran, plusieurs termes Ang sont calculés en C" et se mettent à la valeur du pixel. On obtient de cette façon une approximation de la fonction exponentielle dont le résultat visuel est tout à fait satisfaisant. Le terme Ang calculé en C" reste cependant complexe car il fait appel à la fonction (exp) et au calcul de ca.dl + f.d2 donné par l'expression ciaprès: a. d1 (Y',Y',h) + .d2 (Y,Y',h) = y P(Y' -Y',)!2 h± yv, [a l+(Y _Y) 2 1P] Pour pouvoir implémenter matériellement la fonction (exp), on crée un tableau (expf]) dont la taille peut être pré-définie. Pour simplifier, nous avons limité ce tableau à 1024 valeurs sans observer d'altération. Dans ce cas, a. dl + 5. d2 devient alors l'indice du tableau e.pt] avec des coefficients normalisateurs a et J3 permettant un échelonnement des valeurs de ac dl + P d2 sur la plage entière [0-1023]. En plus des opérations ci-dessus, qui fournissent des images en luminance codées sur 10 bits ou 12 bits, il est possible en sortie de l'étape de génération de motifs d'utiliser un bit supplémentaire de données par pixel pour préciser si le pixel reçoit la couleur du motif P1 ou celle du motif P2. Dans ce cas, pour chaque pixel, un bit sélectionne la LUT (Look Up Table) de couleurs et les 10 bits restant sont l'indice de la couleur. On décrira maintenant l'application des différentes étapes décrites 16 2716061 ci-dessus à la génération d'une image TV de 720 x 576 ou 4:2:2. Pour une image TV de format 720 x 576, I'on a: L = 576 et W= 720. Ceci amène à choisir: Bl = 12, Bh= 9 DI= 60, Dh= 64 Npt = 130, Nbc= 108. Pour ce qui concerne les valeurs de r et de N, on choisit de manière préférentielle le couple r= 2 et N= 5. r = 2 est la valeur optimale de r pour mieux percevoir la fonction Spin se reproduire aux différents essais. r2k: puissance de 2, les multiplications par les r2k se calculent par décalage sur les bits lors d'une implémentation dans un circuit. r = 2 => N = 5. Dans ce cas, six calculs de SplnO sont nécessaires pour obtenir F0 en chaque pixel, ce qui reste raisonnable pour une implémentation dans un circuit intégré. Pour chaque paramètre H, on peut précalculer rapidement les six termes multiplicatifs rkH que l'on peut stocker dans un tableau appelé Q]. Basé sur les données ci-dessus, on trouvera ci-après les différents algorithmes pour le calcul de F0, pour la génération du motif, puis pour le ré-échantillonnage du motif sans ou avec mise en relief au format TV. 17 2716061 Algorithme du calcul de F( (cas d'une image 4:2:2): - On considère le tableau P[] stocké et les U[], V[] et C[] pré-calculés. POUR yi VARIANT de 0 à 575, FAIRE POUR xi VARIANT de 0 à 719, FAIRE F=O; POUR k VARIANT de 0 à 5 FAIRE X = xi * 2k; y = yi * 2; indice u = x mod 60; indicev = y mod 64; indice _p =[(x div 60) mod 12] + 12 * [(y div 64) mod 9]; Spin = U[indiceu] * P[indicepj] * Vlindice vl; F = F + C[k] * Spln; findeFAIRE afficher F; fin de FAIRE finde FAIRE fin. o mod est l'opérateur Modulo et div la division entière. 18 2716061 Algorithme de Génération du Motif (cas d'une image 4:2:2): POUR yi VARIANT de 0 à 575, FAIRE POUR xi VARIANT de 0 à 719, FAIRE X = rx*xi + dpx*F(xi, yi); Y = ry*yi + dpy*F(xi, yi); M1 = Splnl(X,Y); M2 = Spln2(X,Y); SI ((Ml > Seuil) et (M2 > Seuil)) alors SI (Duplicatlmpaire(X, Y)) alors R = MI, Couleur = Couleur(l); SINON R = M2, Couleur = Couleur(2) ; FindeSISINON SINON SI (MI> M2) alors R = M1, Couleur = Couleur(l); SINON R = M2, Couleur = Couleur(2); FindeSISINON Fin _deSISINON R = R + a * F(xi, yi); afficher R au pixel (xi, yi); findeFAIRE findeFAIRE fin. o: a est le coefficient de bruit corrélé additif, Couleur() est une fonction renvoyant la couleur du motif I ou du motif 2, Duplicat_lmpaire() est fonction de test pour le tissage des échantillons 19 2716061 Algorithme du calcul du Réchantillonnage (cas d'une image 4:2:2): * On considère les tableaux Y[l et Y2[] pré-calculés ainsi que les valeurs Ypv et d. POUR Y' VARIANT de 0 à 575, FAIRE POUR X' VARIANT de 0 à 719, FAIRE SI (Y' 0)) alors Chercher sur le plan texturé le pixel (X,Y) et l'afficher sur l'ecran en (X',Y' ); SINON afficherfond(X',Y'); /* (X',Y') est à droite ou à gauche du trapèze (Co',C1',C2',C3') *1 finde SI SINON SINON afficherfond(X',Y'); /* (X',Y) est en dessous du trapèze (Co',C1, C2',C3') * fin deSISINON fin de FAIRE fin de FAIRE fin. afficherfond(X',Y') affichera au pixel (X',Y') une valeur de fond. 2716061 Algorithme du calcul du Réchantillonnage (cas d'une image 4:2:2): * On considère les tableaux YJ[], Y2[J, Y3[J], attenuationfl et d3j[J précalculés ainsi que Ypv et d. POUR X' VARIANT de 0 à 719, FAIRE POUR Y' VARIANT de 575 à 0, FAIRE SI (Y' 0)) alors h = valeurpixel(image texturée, X, Y); SI (Mise enrelief) alors he = h * Y3[Y'l; adresse(expo[J) = adresse(exp[J) +ph; POUR rY" VARIANTde Y' à Y'-he, FAIRE Ang = expo[d3[Y', Y"i]]; I* calcul de Ang *1 ng =valeurpixel(plan_écran, X, Y"); ng = ng + Ang; /* discrétisation de l'intégrale */ afficher(plan_écran, X', Y", ng); fin_de_FAIRE SINON afficher( plan_écran, X, Y', h*attenuation[Y']); /* sans mise en relief * fin de SISINON SINON afficher(plan_écran, X', Y', valeurfond); /* (X',Y') est d droite ou à gauche du trapèze (Co',Cl',C2', C3') *1 fin de SI SINON SINON afficher(plan_écran, X', Y',valeurjfond); /* (X' ,Y') est en dessous du trapèze (CO',C',C2',C3') *1 finde SI SINON fin deFAIRE findeFAIRE fin. afficher(buffer, X,Y',val) affichera au pixel (X',Y') du plan "buffer" la valeur 'val'. valeurjpixel(buffer, X, Y) renvoie la valeur au point (X, Y) du plan "buffer". 21 2716061 On décrira maintenant, plus particulièrement avec référence aux figures 6 à 17, un mode de réalisation du dispositif pour la mise en oeuvre du procédé décrit ci-dessus dans le cas o r= 2 et N = 5. Dans ce cas, la fonction fractale F(x,y) est telle que F(x, y) = [rO Spln (x,y) + rH Spln (r x, r y)] + (6) [r-2H Spln (r2x, r2y) + r3H Spln (r3x, r3y)] + [r-4HSpln (r4x, r4y) + r5H Spln (r5x, r5y)]. Ainsi, pour le calcul de Spln (rkx, rky), il suffit de rapporter les valeurs du couple (rkx, rky) dans l'ensemble [0,B] x[O,BhB. Sur la figure 6, on a représenté l'association de circuits spécifiques référencés ci-après FirMat permettant de réaliser notamment la fonction Spin(). Un premier circuit permet de réaliser un premier calcul matriciel, à savoir la multiplication de la matrice: [Po0O PO 1 P02 P03] 1 5 [PlO Pl 1 P12 P13] par le vecteur [Xo] [X1] [X21 [X31 Pour ce faire, les coefficients P0( Po 1 P02 P03 et Pl( Pl 1 P12 P13 sont stockés dans une mémoire RAM tandis que les valeurs des vecteurs X0 X1 X2 X3 peuvent être envoyées en entrée du circuit lui- même ou éventuellement stockées dans une autre mémoire RAM. La valeur XQ est tout d'abord multipliée dans un multiplicateur par P0 et le résultat est stocké dans un registre ro, de même X1 est multiplié par P01 et le résultat est stocké dans un registre rl, X2 est multiplié par P02 et le résultat est stocké dans un registre r2 et X3 est multiplié par P03 et le résulat est stocké dans un registre r3. De même, X0 est multiplié par Po10 le résultat étant stocké en r'o, X1 est multiplié par P1 1 le résultat étant stocké en r'l, X2 est multiplié par P12 le résultat étant stocké en r'2, X3 est multiplié par P13 le résultat étant stocké en r'3. Ensuite, les valeurs stockées dans ro et rl sont additionnées et 22 2716061 stockées en r" 1 tandis que les valeurs stockées dans r2 et r3 sont additionnées et stockées en r"0. L'ensemble des deux valeurs issues de r"o et r" 1 sont additionnées et stockées pour donner Ro. De môme, les valeurs stockées en r'o et r'1 sont additionnées et stockées dans le registre r"3 tandis que les valeurs stockées dans r'2 et r'3 sont additionnées pour donner une valeur stockée en r"2. Les valeurs stockées dans r"2 et r"3 sont alors additionnées pour donner la valeur R1. Les valeurs Ro et Ri ainsi obtenues sont ensuite soumises à une multiplication. Dans ce cas R0 est multiplié par le coefficient Y0, la valeur obtenue étant stockée dans un registre so et R1 est multiplié par le coefficient Y 1, la valeur obtenue étant stockée dans un registre s 1 puis les valeurs stockées dans so et s 1 sont additionnées pour donner la valeur S. Pour réaliser la fonction SpinO donnée en (3), on utilise donc deux circuits agencés comme représenté sur la figure 6. Dans ce cas, le circuit FirMat 1 sort des valeurs R0, R 1 et Set reç,oit en entrée la valeur R2 x U2 + R3 x U3 issue du circuit FirMat 2. Le circuit FirMat 2 sort aussi les valeurs R3 et R2. Les deux circuits FirMat 1 et FirMat 2 recçoivent en entrée les adresses et coefficients V0, V1, V2,V3.issus notamment du processeur- utilisateur. Ainsi, les deux circuits FirMat cascadés comme représenté sur la figure 6 permettent de réaliser le calcul matriciel en décomposant l'équation (3) comme suit: [vo0] [P00 P0 1 P02 P03] [Vl S = [Uo U1] x [PlO P11 P12 P13]X IV2] + [U2 U3] [IV3] [Vo0] x [P20 P21 P22P23] x [V1]l [P30 P3 1 P32 P33] [V2] IV3] Maintenant, on décrira en se référant plus particulièrement aux figures 7, 8, 9 et 10, un circuit de génération de la fonction fractale. La fonction fractale est générée en utilisant une partie circuitrie ou "Hardware" en langue anglaise référencée Carte sur la figure 7 et des données issues d'un processeur 1 dans la partie référencée Hors Carte sur la figure 7. De manière simplifiée, le circuit de génération de fonction fractale comporte un bloc de calcul 2 permettant de réaliser la fonction F(X Y) donnée par la 23 2716061 relation 4. Ce bloc de calcul est composé de six circuits FirMat comme représenté sur la figure. Dans le générateur représenté à la figure 7, pour chaque pixel, chaque couple de circuits FirMat, à savoir FirMat 1 et FirMat 2; FirMat 3 et FirMat 4; FirMat 5 et FirMat 6 calculent deux termes SpinO. Les trois sorties de ces couples, issues respectivement de FirMat 2, FirMat 4 et FirMat 6, sont envoyées en entrée d'un pondérateur 3 qui sera décrit de manière plus détaillée ci-après. D'autre part, la partie Hardware' du générateur comporte un séquenceur 4 décrit lui aussi de manière plus détaillée ci- après. Les données envoyées en entrée du séquenceur, du pondérateur ainsi que du bloc de calcul de SpinO sont issues notamment d'un processeur 1 ainsi que de moyens externes comme déjà décrits ci-dessus. Comme représenté sur la figure 7, en sortie du pondérateur 3, l'on obtient la fonction fractale F. On décrira maintenant, de manière succinte, avec référence à la figure 8, un mode de réalisation du séquenceur 4. Le séquenceur 4 distribue à chaque couple de circuits FirMat dans le bloc de calcul 2, les paramètres u, v et p en fonction du pixel de l'image. Le séquenceur de la figure 8 est adapté au traitement d'une image TV de format 720 x 576 telle que définie ci-dessus dans laquelle la valeur du paramètre r a été fixé à 2. En conséquence, les multiplications par les rk s'effectuent par décalage à gauche sur les bits. Le séquenceur de la figure 8 comporte donc un compteur de points 10 comptant à la fréquence d'horloge H pixel et un compteur de lignes 11. La sortie du compteur de points 10 est envoyée en entrée de trois circuits de structure identique. Ainsi, chaque circuit est constitué de deux registres à décalage en parallèle 12, 13; 12', 13'; 12", 13". Le registre 12 reçoit la valeur issue du compteur de points 10 tandis que le registre 13 reçoit cette valeur décalée à gauche d'un bit; le registre 12' reçoit cette valeur décalée à gauche de deux bits; le registre 13' la valeur décalée à gauche de trois bits; le registre 12" la valeur décalée à gauche de quatre bits; le registre 13" la valeur décalée à gauche de cinq bits. Les valeurs stockées dans les registres 12 et 13 sont envoyées sur un multiplexeur 14. De même, les valeurs issues des registres 12' et 13' sont envoyées sur un multiplexeur 14'.et les valeurs issues des registres 12" et 13" sont envoyées sur un multiplexeur 14". Les multiplexeurs fonctionnent à la fréquence 2H. Les valeurs issues des multiplexeurs 14, 14' et 14" sont envoyées sur des diviseurs 15, 15' et 15" qui réalisent une division par 720. D'autre part, le 24 2716061 reste de cette division est envoyée sur des diviseurs 16, 16' et 16" qui réalisent une division par 60. Le quotient de la division par 60 issu des diviseurs 16, 16', 16" est envoyé dans un registre 17, 17', 17' pour former une partie de l'indice p tandis que le reste des diviseurs 16, 16', 16" est envoyé respectivement sur les registres 17, 17', 17' pour former l'indice u. Une fois tous les points d'une ligne comptés, le compteur de points incrémente le compteur de lignes. Les sorties du compteur de lignes 11 sont envoyées sur trois circuits de structure identique, à savoir la sortie est envoyée respectivement sur un premier ensemble de deux registres 18, 19, la sortie sur un second ensemble de deux registres 18', 19', et sur un troisième ensemble de deux registres 18", 19". Ces registres sont des registres à décalage fonctionnant comme les registres 12, 13, 12', 13', 12', 13". De manière similaire, la sortie des deux registres à décalage 18 et 19 est envoyée sur un multiplexeur 20 fonctionnant à la fréquence 2H, la sorties des registres à décalage 18', 19' est envoyée en entrée d'un multiplexeur 20', et la sortie des registres 18", 19" en entrée d'un multiplexeur 20'. La sortie des multiplexeurs 20, 20' et 20" est envoyée respectivement en entrée d'un diviseur 21, 21', 21" réalisant une division par 576. La sortie reste des diviseurs 21, 21', 21" est envoyée en entrée de diviseurs 22, 22', 22" réalisant la division par 64. Le quotient des diviseurs 22, 22', 22' est envoyé respectivement dans les registres 17, 17', 17" comme partie de l'indice p tandis que la sortie reste des diviseurs 22, 22' et 22' est envoyée respectivement dans les registres 17, 17' et 17" comme indice v. En fait, les termes u, v et p sont concatènés en adresse de 22 bits destinés aux couples de circuits FirMat du bloc de calcul 2 de la figure 7. Maintenant on décrira avec référence plus particulièrement à la figure 2, un mode de réalisation du pondérateur 3 de la figure 7. Le pondérateur comporte des registres 30, 30', 31, 31', 32, 32' contenant respectivement les coefficients Co, , Cl C2, C3, C4, C5 qui doivent être appliqués aux SpinO issus du bloc de calcul 2. De manière plus spécifique, les registres 30 et 30' sont connectés à un multiplexeur 33 fonctionnant à la fréquence 2H et la sortie du multiplexeur 33 est envoyée sur un multiplicateur 33' qui reçoit sur son autre entrée le terme Spline issu des circuits FirMat 1 et FirMat 2. De même, les registres 31 et 31' sont connectés à un multiplexeur 34 dont la sortie est envoyée sur un multiplicateur 34' qui reçoit le terme SpinO issu des circuits FirMat 3 et 2 5 2716061 FirMat 4. Les registres 32 et 32' sont connectés en entrée d'un multiplexeur dont la sortie est connectée sur un multiplicateur 35' qui reçoit sur son autre entrée le terme SpinO issu des circuits FirMat 5 et FirMat 6. Les résultats issus des multiplicateurs 33' et 34' sont additionnés dans un additionneur 36 dont la sortie est additionnée à la sortie du multiplicateur 35' dans un additionneur 37. Les résultats en sortie de l'additionneur 37 sont stockés dans un premier registre 38 pour un premier train de trois termes SpinO tandis que la sortie de l'addtionneur 37 est stockée dans un second registre 39 pour le second train de trois termes SpinO. Ces registres 38 et 39 fonctionnent à une fréquence de 27MHz. La sortie des registres 38 et 39 est envoyée sur un additionneur 40 dont la sortie est stockée dans un registre 41 fonctionnant à une fréquence de 13,5 MHz et donnant en sortie le résultat F à savoir la fonction fractale souhaitée. On décrira maintenant avec référence aux figures 10, 11 et 12, un dispositif permettant de générer le motif en utilisant le procédé décrit ci- dessus. Ce dispositif comporte une partie circuit ou "Hardware" référencée "Carte" sur la figure 10, et une partie permettant d'obtenir un certain nombre de données à partir du processeur 1, cette partie étant référencée "Hors Carte" sur la figure 10. La partie circuit comporte, comme représenté sur la figure 10, un séquenceur 50, un bloc de calcul 60 et un pondérateur 70. Le séquenceur 50 reçoit en entrée des paramètres provenant du processeur 1, les coordonnées d'un point provenant de compteurs de lignes et de points et la valeur de la fonction fractale F en ce point issu du circuit de génération de fonction Fractale. Le séquenceur 50 génère en sortie une adresse sur 22 bits destinée au bloc de calcul 60 qui génère les fonctions M1 et M2 telles que définies précédemment. Les valeurs de ces deux fonctions sont transmises simultanément en entrée du pondérateur 70 dont la sortie est envoyée vers un circuit de rééchantillonnage. Le bloc de calcul 60 représenté sur la figure 10 est constitué par quatre circuits FirMat référencés FirMat 7, FirMat 8, FirMat 9, FirMat 10 agencés deux par deux comme décrit avec référence à la figure 6. Ces quatre circuits FirMat permettent de réaliser les fonctions M1 et M2: telles que M 1 (x, y) = Spin 1 (rxx + dpxF(X, y), ryy+ dpyF (x, y)) M2(x, y) = Spln2(rxx + dpxF(x, y), ryy+ dpyF (x, y)) On décrira maintenant avec référence plus particulièrement à la figure 11, d'un mode de réalisation particulier du séquenceur 50. Le séquenceur 50 dans la figure 10 doit calculer l'adresse envoyée aux circuits FirMat afin d'évaluer les deux termes Spinl et SpnI2. Pour cela, il considère les paramètres rx, ry pour la duplication des motifs et dpx, dpy pour le déphasage des motifs. Le séquenceur 50 comporte des registres 500 et 500' comportant respectivement les coefficients rx. Il comporte aussi des registres 501 et 501' stockant les valeurs dpy et dpx. Il comporte de plus des multiplicateurs 502, 502', 503, 503'. Le multiplicateur 502 effectue la multiplication de la valeur issue du compteur de lignes par la valeur ry, et le multiplicateur 502' effectue la multiplication de la valeur rx par la valeur issue du compteur de points. Le multiplicateur 503 effectue la multiplication de la valeur dp: par la fonction fractale F (x,y) et le multiplicateur 503' effectue la multiplication de dpx par la fonction fractale F(x,y). D'autre part, les sorties des multiplicateurs 502 et 503 sont envoyées sur un additionneur 504 tandis que les sorties des multiplicateurs 502' et 503' sont envoyées sur un additionneur 504'. La sortie de l'additionneur 504 est envoyée sur un additioneur 505 qui reçoit sur son autre entrée une valeur Mvty stockée dans un registre 506 qui constitue un vecteur mouvement permettant le déplacement de la texture image par image. De manière identique, la valeur issue de l'additionneur 504' est additionnée dans un additionneur 505' à la valeur Mvtx stockée dans un registre 506'. La valeur obtenue en sortie de l'additionneur 505 est envoyée sur un diviseur 507 réalisant une division par 64 tandis que la valeur issue de l'additionneur 505' est envoyée dans un diviseur 507' réalisant une division par 60. Le reste de la division par 64 donne l'indice v tandis que le reste de la division par 60 donne l'indice u. D'autre part, le quotient obtenu en sortie du diviseur 507 est envoyé sur un diviseur 508 réalisant une division par 9 tandis que le quotient en sortie du diviseur 507' est envoyé sur un diviseur 508' réalisant une division par 12. Le reste de la division par 9 forme une première partie de l'indice p tandis que le reste de la division par 12 forme la seconde partie de l'indice p. L'adresse constituée par les indices p, v, u est envoyée vers les circuits FirMat 7 et 8 et FirMat 9 et 10. D'autre part, le quotient de la division par 9 et le quotient de la division par 12 sont stockés dans un registre 510 et sont envoyés sur des registres programmés permettant de donner la valeur Booléenne duplicat impaire envoyée vers le circuit pondérateur 70. On utilise dans ce cas une L.U.T. (look uptable) à 4 entrées programmée en fonction du type de maillage, les entrées sont les valeurs 00, 01, 10, 11 et les sorties sont 27 2716061 fonction du maillage. On décrira maintenant avec référence à la figure 13, un mode de réalisation du pondérateur 70. Ce pondérateur définit la texture en fonction des choix de l'utilisateur, à savoir choix du seuil, choix des motifs P1 et P2 décrit dans la description du procédé, choix éventuellement du mode de tissage. Comme représenté sur la figure 12, le pondérateur 70 comporte trois comparateurs 700, 701, 702. Le comparateur 700 compare la valeur M1 issue du bloc de calcul 60 à un seuil. Le comparateur 701 compare la valeur M2 issue du bloc de calcul 60 à un seuil. Le comparateur 702 compare les valeurs Ml et M2. De manière plus spécifique, la valeur M1 est rentrée sur l'entrée A du comparateur 700 tandis que le seuil est rentré sur l'entrée B, la valeur M2 est rentrée sur l'entrée A du comparateur 701 tandis que le seuil est rentrée sur l'entrée B et la valeur Ml est rentrée sur le seuil du comparateur 702 tandis que la valeur M2 est rentrée sur l'entrée B du comparateur 702, les trois comparateurs réalisant la comparaison A > B. Les sorties des comparateurs 700 et 701 sont envoyées sur un circuit ET 703. La sortie du comparateur 702 est envoyée sur une entrée d'un multiplexeur 704 qui reçoit sur son autre entrée l'information duplicat-lmpaire() obtenue en sortie du séquenceur 50 comme décrit ci-dessus. Le multiplexeur 704 effectue l'aiguillage à une fréquence donnée par 703. La sortie du multiplexeur 704 est envoyée comme horloge sur un multiplexeur 705 qui reçoit en entrée les valeurs M1 et M2. D'autre part, la fonction fractale F(x,y) est multipliée dans un multiplicateur 706 par un coefficient a, la sortie du multiplicateur 706 est envoyée en entrée d'un additionneur 707 qui reçoit sur son autre entrée la sortie du multiplexeur 705. Le résultat de l'additionneur 707 est stocké dans un registre 708. Il sera envoyé vers le circuit de rééchantillonnage à une fréquence de 13,5MHz. Le registre 708 comporte de plus un bit supplémentaire destiné à prendre soit la couleur de P1, soit la couleur de P2. On décrira maintenant avec référence aux figures 13 à 17, un mode de réalisation de l'étage de rééchantillonnage. Comme mentionné ci- dessus, l'étage de rééchantillonnage est destinée à plaquer la texture issue du module de génération de motifs sur un plan en perspective. La méthode utilisée est une méthode connue dite méthode output to input'. D'autre part, on remarquera que dans le système donnant les relations (4) et (5), Y est indépendant de X". Il est donc possible de précalculer dans un processeur, 28 2716061 Ypv valeurs pour Y' variant de 0 à (Ypv- 1) et de les stocker dans un tableau Y1 [ I. De même, on peut précalculer dans un second tableau Y2[], les YpV valeurs, Ypv/Ypv-Y' possibles de façon à ce que la recherche du point source (X,Y) d'un pixel (X', Y') du trapèze (Co', C1', C2', C3') reviennent aux calculs suivants: X = Y2[Y' . (X' Xpv) + Xpv Y=Yl [Y] En fonction des paramètre saisies en entrée par l'utilisateur, les tableaux Y1 [] Y2[] ainsi que d'autres tableaux Y3[] et d3[] utilisés lors de l'étape de rééchantillonnage sont précalculés sur le processeur et chargés dans des mémoires RAM durant la supression de trame. Dans l'étage de rééchantillonnage, à partir donc des coordonnées du point de l'image résultat (X', Y'), on calcule les coordonnées du point dans l'image source (Y,X). De ce fait, I'étage de rééchantillonnage représenté à la figure 13 comporte donc les compteurs de points et de lignes référencés 80 recevant en entrée une fréquence horloge H et donnant en sortie les coordonnées X' Y' du point de l'image résultat. Ces coordonnées sont entrées sur un circuit projection 90 qui sera décrit de manière plus détaillée ci-après, qui donne en sortie les coordonnées X,Y du point dans l'image source, cette image source étant stockée dans le circuit 100. Comme représenté sur la figure 13, la valeur du pixel (x,y) de l'image source peut être utilisée de deux façons. Ceci est obtenu en envoyant les données h issues du circuit 100 à travers un multiplexeur 101 qui est commandé par une impulsion de mise en relief et dont les deux sorties sont envoyées respectivement vers un circuit d'atténuation sur la profondeur 110 ou vers un circuit de calcul de paramètres de mise en relief 120. Ces circuits seront décrits de manière plus détaillée ci-après. Si l'on souhaite effectuer une mise en relief par exemple pour un nuage, la valeur du pixel devient l'épaisseur du nuage au point (X,Y). Le calcul de l'intégrale est alors réalisé en décomposant la boucle de discrétisation et en parallèlisant les opérations. Ceci est rendu possible en limitant la hauteur projetée he de h sur l'écran à une valeur de 10. Ainsi, comme représenté sur la figure 13, on utilise 10 blocs de calcul de l'intégrale 130. Si l'on ne souhaite pas réaliser une mise en relief, la valeur 29 2716061 du pixel (X,Y) issue de l'image source est envoyée sur le circuit d'atténuation de la profondeur 110. La sortie du circuit d'atténuation 110 est envoyée en entrée du multiplexeur 102 de même que la sortie des dix blocs de calcul d'intégrale 130, ce multiplexeur 102 est actionné par l'impulsion de mise en relief. La sortie du multiplexeur 102 est envoyée sur deux circuits de stockage d'images 103, 104. En effet, deux plans image résultat sont nécessaires, I'un étant calculé pendant que le second est affiché. Les valeurs des points du plan sont alors passées au travers d'une table 105 qui stocke les couleurs. Cette table 105 détermine donc les couleurs ainsi que la clé de découpe de la texture finale. Dans la présente invention, la clef est calculée par seuillage sur la luminance des pixels. Si la luminance d'un pixel est inférieure à une valeur seuil fixée par l'utilisateur, la clef du pixel sera égale à 64, au-dessus elle sera égale à 939. On décrira maintenant de manière plus détaillée, un mode de réalisation du circuit projection 90. Comme représenté sur la figure 14, le circuit projection 90 comporte donc deux mémoires RAM 91 et 92 stockant respectivement les tableaux YI et Y2 qui ont été précalculés comme mentionné ci-dessus. Les deux mémoires reçoivent comme adresse la valeur Y' du point. La mémoire 91 donne en sortie la valeur Y du pixel de l'image source tandis que la sortie de la mémoire 92 est envoyée en entrée d'un multiplicateur 94 qui reçoit sur son autre entrée la sortie d'un soustracteur 93. Le soustracteur 93 reçoit en entrée la valeur X' au point de l'image résultat ainsi que la valeur Xvp telle que donnée ci- dessus lors de l'explication de la méthode de rééchantillonnage. D'autre part, la sortie du multiplicateur 94 est envoyée en entrée d'un additionneur 95 qui l'additionne à la valeur Xvp et qui donne en sortie la coordonnée X du pixel de l'image source. Comme mentionné ci-dessus, les valeurs Y' et X' proviennent d'un compteur de lignes et d'un compteur de points fonctionnant à la fréquence pixel H et de ce fait X et Y sont calculés à la fréquence pixel H. On décrira maintenant, avec référence à la figure 15, un mode de réalisation possible pour le circuit d'atténuation sur la profondeur. Ce circuit comporte essentiellement une mémoire RAM 111. Dans la mémoire RAM 111, on stocke les YpV valeurs possibles pour la fonction atténuation. Pour chaque ligne Y', on sort de la mémoire RAM 111, la valeur atténuation souhaitée et on la multiplie dans le multiplicateur 112 à la valeur des pixels. 2716061 issue de l'image source et référencée h, ce qui donne une valeur de pixels atténuée référencée h atténuée, envoyée vers le multiplexeur 102, puis vers l'image résultat. On décrira maintenant, avec référence à la figure 16, un bloc 120 de calcul des paramètres de mise en relief destiné à permettre la parallèlisation des opérations de discrétisation de l'intégrale telle qu'expliqué dans la méthode ci-desus. Les données he, PHT et YT sont communes à chaque bloc et sont transmises à la fréquence pixel H. En fait chaque bloc en parallèle calcule le paramètre ng pour un Y' situé entre Y' et Y' - he. Ce calcul ne s'effectue plus directement sur l'image résultat mais dans des registres tampons notés Y sur la figure 17. Le compteur par 10 est destiné à informer chaque bloc de la distance entre son point Y et le point Y'. Lorsque cette distance notée Evoiei, la valeur du registre, est envoyée dans la mémoire résultat, car ce registre contient alors la valeur ng au point (X', Y'). Lorsque cette distance Evoiei, est supérieure à he, cela signifie que Y est inférieure à Y'-he et donc que la sommation ne peut plus être effectuée. Une valeur extrême est alors transmise en adresse de mémoireRAM d3 devant donner en sortie de la mémoire RAM expo 136 sur la figure 17, une valeur nulle. D'une manière plus spécifique, le circuit 120 comporte donc une mémoire RAM 121 stockant le tableau des valeurs Y3 recevant comme adresse la valeur Y' et donnant en sortie la valeur Y3 correspondante envoyée en entrée d'un multiplicateur 122 qui reçoit sur son autre entrée les coordonnées h du pixel de l'image et qui donne en sortie la valeur atténuée he. D'autre part, la valeur référencée h est envoyée sur un multiplicateur 123 qui reçoit sur son autre entrée un paramètre 5 et qui donne en sortie la valeur Ph qui est stockée dans une ligne à retard 124 qui donne en sortie la valeur retardée ChT. D'autre part, la valeur Y' est envoyée sur une ligne à retard 125 qui donne en sortie la valeur retardée Y . De plus, le circuit 120 comporte un compteur par 10 (126) dont la sortie est connectée à des registres 127.1, 127.2, 127.3, ... 12710 monté en série. La sortie de chaque registre donne une valeur cvoieCi, i variant de 0 à 9. Cette valeur correspond à la distance entre le point courant Y" et le point courant Y' comme mentionné ci-dessus. On décrira maintenant, avec référence à la figure 17, un mode de réalisation d'un circuit 130 référencé bloc de calcul de l'intégrale. Ce circuit comporte donc un comparateur 131 réalisant la comparaison A > B et 31 2716061 recevant sur son entrée A la valeur he issue du circuit de calcul de paramètre de mise en relief 120. Sur son entrée B, il reçoit la valeur EVoiei issue du même circuit 120. D'autre part, le circuit 130 comporte un registre 132 à 14 bits qui reçoit sur les 4 bits de poids forts, la valeur Evoiei issue du circuit 120 et la valeur Y'T sur les 10 bits de poids faibles issue aussi du circuit 120. La valeur issue du registre 132 ainsi que la valeur 214 sont envoyées en entrée d'un multiplexeur 133 qui est actionné par la valeur issue du comparateur 131. La valeur en sortie du multiplexeur 133 est envoyée en adresse de la mémoire RAM d3 134 dont les valeurs ont été pré-calculées. La sortie de la mémoire RAM 134 ainsi que la valeur Oh: issue du circuit sont envoyées en entrée d'un additionneur 135. La sortie de l'additionneur est envoyée comme adresse sur une mémoire RAM expo 136. La sortie de la mémoire 136 est envoyée sur un additionneur 137 qui reçoit sur son autre entrée la sortie d'un registre tampon l 138. L'entrée du registre 138 est alimentée par la sortie de l'additionneur 137. La sortie du registre tampon 138 est aussi envoyée sur un registre 139 dont la sortie est actionnée de manière à envoyer la valeur obtenue vers l'image résultat lorsque -voiei est égale à 0. Les circuits décrits ci-dessus sont des exemples de réalisation permettant une mise en oeuvre facile du procédé conforme à la présente invention. Ils peuvent être modifiés de nombreuses façons comme cela est évident pour l'homme de l'art. 32 2716061 REVENDICATIONS 1. Procédé de génération d'images texturées en vidéo, caractérisé en ce qu'il comporte une étape de génération d'une texture microscopique à partir de paramètres-utilisateur avec une fonction d'interpolation fractale générant un signal de type fBm "fractional Brownian motion". 2. Procédé selon la revendication 1, caractérisé en ce que les paramètresutilisateur sont aléatoires ou déterministes. 3. Procédé selon les revendications 1 et 2, caractérisé en ce que la fonction fractale est définie par: N F(x,y) = Y, r- kH SpIn (rkx, rky) k=O dans laquelle r > 1, r désignant la lacunarité ou facteur d'irrégularité, H= (3 - D) o D est la dimension fractale désirée, N est un paramètre fixé pour avoir une définition au pixel ou point- image près, et Spln(x,y) est l'interpolation par B-spline au point de coordonnées réelles (x,y) d'un maillage de points générés aux coordonnées entières. 4. Procédé selon la revendication 3, caractérisé en ce que pour générer des images de taille Lx W, Wétant le nombre de points par ligne et L le nombre de lignes actives dans l'écran, on découpe l'image en Nbc = Bl x Bh blocs de taille dl x dh pixels, BI représentant le nombre de blocs en largeur et Bh le nombre de blocs en hauteur, le domaine de définition de SplnO étant alors [0, B/ x [0, Bh]. 5. Procédé selon l'une quelconque des revendications 3 et 4, caractérisé en ce que Spln (rkx, rky) est calculé en rapportant les valeurs du couple (rkx, rky) dans l'ensemble [0, B/ x [0, Bht]. 6. Procédé selon l'une quelconque des revendications 4 et 5, caractérisé en ce que les images ont une taille de 720 x 576 jusqu'à 1920 x 1250. 7. Procédé selon l'une quelconque des revendications 4 à 5, caractérisé en ce que la fonction B-spline est une fonction B-spline cubique. 8. Procédé selon la revendication 7, caractérisé en ce que le 33 2716061 calcul de SplnO en un point Pxy se définit par: rPOo P 10 P20 P301 Spln (Pxy)= XTMTB IPO Pl 1 P21P311 MBY P02 P12 P22 P231 LP03 P13 P23 P33J ri i ri 1 Ixll yll X=l x 21 et Y= I y21 Lx3J Ly3J et MB, la matrice permettant le calcul des coefficients du polynôme bi-cubique. 9. Procédé selon l'une quelconque des revendications 3 à 8, caractérisé en ce que: N - logd logr 10. Procédé seon la revendication 9, caractérisé en ce que N = 5. 11. Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce qu'il comporte de plus une étape de génération d'un motif recevant en entrée l'image de la fonction fractale et des paramètres- utilisateur et donnant en sortie une texture macroscopique. 12. Procédé selon la revendication 11, caractérisé en ce qu'il utilise deux primitives caractérisées chacune par Npt points que l'on interpolera par B-spline. 13. Procédé selon l'une quelconque des revendications 11 et 12, caractérisé en ce que l'on utilise les fonctions: M (x, y) = Spln 1 (rxx + dpxF(x,y), ryy + dpyF(x,y)) M2(x, y) = Spln2 (rxx + dpxF(x,y), ryy + dpyF(xy)) avec rx et ry: coefficients de duplication des motifs en x et y respectivement dPx et dpy: coefficients de déphasage des motifs en x et y respectivement F(x,y): valeur de la fonction fractale au point (x,y) 34 2716061 Ml (x,y) est la valeur au point (x,y) du motif Pl dupliqué rx fois en x ry fois en y et déphasé de dpxxF(x,y) en x et de dpyxF(xy) en y et M2(x,y) est la valeur au point (x,y) du motif P2 dupliqué rx fois en x, ry fois en y et déphasé de dpxxF(x,y) en xet dpyxF(x,y) en y. 14. Procédé selon l'une quelconque des revendications 1 à 13, caractérisé en ce qu'il comporte de plus une étape de rééchantillonnage permettant de réaliser un placage ou wmapping de l'image texturée sur une surface. 15. Procédé selon la revendication 14, caractérisé en ce que le rééchantillonnage est réalisé en utilisant la méthode 'output to input'. 16. Procédé selon l'une quelconque des revendications 14 et 15, caractérisé en ce qu'on ajoute dans l'image un effet de profondeur en atténuant la luminosité du point de la surface en fonction de sa distance par rapport au point de visualisation. 17. Dispositif pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 16, caractérisé en ce qu'il comporte un circuit spécifique de calcul de la fonction SplrnO 18. Dispositif selon la revendication 17, caractérisé en ce que le circuit de calcul de la fonction SplnO permet de réaliser le premier calcul matriciel suivant: rxol rPOO PO1 PO2 PO31 x IxlI = rRoi LPO Pl 1 P12 P13J I X21 LRIJ Lx3J et le second calcul, la multiplication de rROI LRlJ par [YO Yl]