FR 2897973 A1 20070831 FR 0601754 A 20060228 Procédé de filtrage de texture et dispositif pour mettre en oeuvre le procédé Domaine technique de l'invention La présente invention concerne le traitement d'image et plus spécifiquement un procédé de filtrage de texture pour un circuit graphique. Etat de la technique 15 Les applications graphiques rencontrent un succès considérable avec le développement de l'informatique et tout spécialement et l'essor des jeux et des applications ludiques dont sont friands une large catégorie de consommateurs. Après s'être immiscés dans tous les ordinateurs de bureau et les stations de 20 travail de type PC, dotés de puissants microprocesseurs soutenus par de performantes cartes graphiques, les techniques graphiques de type 3D ont à présent vocation à s'infiltrer dans tous les dispositifs électroniques portables, tels que les ordinateurs portables, les assistants personnels de type PDA (Portable Document Assistant) , voire les téléphones mobiles de dernière génération. 25 Pour autant , le traitement numérique particulièrement complexe qui est mis en oeuvre dans la synthèse d'image 3D reste peu compatible avec les ressources limitées de ces dispositifs portables, dont les performances sont limitées autant par la miniaturisation à l'extrême de leur composants que par les contraintes 30 d'alimentation électrique qui, comme on le sait, doit rester minimale. Les techniques de filtrage de texture, qui sont au coeur de la synthèse 3D, sont grandes consommatrices de puissance de calcul. ST05-GR2-336 i0 -2- Comme on le sait, une texture est classiquement une surface, à savoir une image en 2 dimensions (2D) (laquelle peut également être dérivée d'une fonction mathématique que l'on désigne alors sous l'appellation texture procédurale) qui sert à habiller et construire des objets que composent une image 3D, tels que par exemple des triangles élémentaires. En raison des nombreuses transformations que ces triangles peuvent subir (notamment par rotation, agrandissement, réduction ou toute déformation etc...), io un filtrage doit être prévu pour limiter la perte de qualité de la texture lors de la transformation, notamment en lissant les variations de couleurs et en éviter autant que possible les effets de pixelisation de l'image. On a représenté dans la figure 1 illustre une image 3D û référencée 100 û en 15 construction montrant en perspective un couloir composé d'une première cloison 110 et d'une seconde cloison 120 se faisant chacune vis-à-vis, perpendiculaires à une cloison 130 dans laquelle on a représenté une porte ou une ouverture 140. Pour les besoins de la démonstration, on considérera que la cloison 110 20 comporte sur sa surface un habillage composé d'un triangle formé de trois point (1, 2, 3), habillée par une texture 10 dérivée d'une image 1024x1024. Comme on le voit, le système d'affichage reconstitue cet objet au sein de l'image 100 au moyen de la texture 10 (dans laquelle on retrouve les trois points 1, 2 et 3,) après une transformationdéformation pour tenir compte de l'effet de la perspective au sein de 25 l'image 3D 100. On a classiquement recours à des techniques de filtrage de textures pour limiter la perte de qualité résultant de cette transformation et améliorer la qualité visuelle de la texture, lors de son intégration au sein de l'image 3D. Différentes méthodes de filtrage connues permettre de limiter la perte de qualité lors de l'affichage de la texture déformée. Un premier filtrage classique est un filtrage dit bilinéaire qui consiste à utiliser 35 une interpolation linéaire de deux groupes de deux pixels pour en déterminer un ST05-GR2-336 30 -3- 2897973 cinquième. Ainsi, lorsqu'il s'agit de déterminer les composantes RVB d'un pixel de l'image 100, on procède à la transformation inverse pour déterminer le pixel correspondant au sein de la texture 10 qui, en règle général, ne correspond nullement à un pixel exactement défini au sein de cette texture. On détermine alors 5 les composantes de couleurs de ce pixel par interpolation linéaires en tenant compte des composantes de couleur des quatre pixels les plus proches... Tel est le principe général du filtrage bilinéaire. Ce filtrage présente un avantage économique significatif du fait qu'un pixel au sein de l'image 3D 100 ne io nécessite que quatre calculs élémentaires au sein de la texture 10 puisqu'il suffit de calculer une valeur pondérée à partir de quatre échantillons (haut-gauche, bas-gauche, à haut-droite et à bas-droite). Pour cette raison, c'est un filtrage que l'on rencontre classiquement dans les systèmes dont les ressources sont limitées, comme c'est le cas pour l'électronique nomade. 15 Si le filtrage bilinéaire apparaît comme une technique économique pour sa mise en oeuvre, on constate cependant que cette technique reste limitée du point de vue de la qualité, et ce notamment lorsqu'il s'agit de calculer les composantes de couleurs des pixels correspondant à un effet de zoom importants tel que ceux 20 représentés û au sein de l'image 3D 100 û proche de la porte 140... On observe que dans cette zone proche de la porte 140, deux pixels adjacents dans l'image 100 correspondent à des pixels particulièrement éloignés au sein de la texture 10, qui peuvent être séparés par plusieurs pixels intermédiaires. Si l'on reconstitue les composantes de couleur de chacun de ces deux pixels au moyen de la technique 25 du filtrage bilinéaire, sans tenir compte de l'information présente dans les pixels intermédiaires, on obtient alors de effets visuels particulièrement gênants et une perte de qualité significative de la texture. Le filtrage dit trilinéaire permet de remédier à ce problème. Suivant cette technique de filtrage trilinéaire, on organise plusieurs versions pré-filtrées d'une même texture présentant facteurs de zoom différents. Ainsi, comme on le voit dans la figure 1, on vient rajouter à la texture originale 10 de taille ST05-GR2-336 30 i0 20 25 30 -4 1024x1024 (par exemple), une texture 20 de taille 512x512 zoomée d'un facteur 2, puis une texture 30 de taille 256x256 zoomée d'un facteur 4, etc... L'ensemble de toutes ces versions de la même texture est désignée sous 5 l'appellation anglo-saxonne MIP Mapping . Le principe du filtrage dit trilinéaire consiste à combiner deux interpolations linéaires correspondant à deux filtrages bilinéaires, les deux filtrages bilinéaires étant réalisés dans deux textures consécutives du MIP MAPPING... On réalise ainsi un filtrage à partir de trois coordonnées X, Y et Z, les coordonnées X et Y correspondant aux coordonnées du pixel à calculer au sein de l'image 100, et la dernière coordonnée Z correspondant à un facteur représentatif de l'effet de zoom. 15 Chaque pixel au sein d'une image 3D est calculé à partir de deux textures consécutives de manière à intégrer l'effet de zoom... Cela revient ainsi à effectuer huit calculs élémentaires ce qui augmente de manière significative le coût du filtrage... Pour cette raison, on ne peut en général recourir à la technique du filtrage tri linéaire dans les systèmes présentant une puissance de calcul limitée, comme c'est le cas pour les systèmes de l'électronique nomade, et notamment les téléphones mobiles. La présente invention a pour but de remédier à cette situation. Exposé de l'invention La présente invention a pour but de proposer une technique de filtrage de texture alternative aux techniques connues qui permettent une mise en oeuvre d'un ST05-GR2-336 - 5 2897973 filtrage efficace même dans des systèmes présentant une puissance de calcul limitée. Un autre but de la présente invention consiste à proposer un circuit 5 d'affichage graphique adapté aux dispositifs portables alimentés par batterie. L'invention réalise ces buts au moyen d'un procédé de filtrage de texture pour un circuit graphique, la dite texture existant en plusieurs versions (MIP MAP) de tailles différentes pour permettre, par interpolation, le calcul des composantes de io couleur d'un pixel affiché dans une image 3D. Le procédé étant caractérisé en ce qu'il comporte les étapes suivantes : - détermination pour chaque pixel à construire d'un jeu de trois coordonnées (x, y , 15 z), les coordonnées x, y étant représentatives de la position du pixel considéré et z étant un facteur de zoom ; -comparaison du facteur de zoom par rapport à une séquence de seuils prédéfinis ; - en fonction de la dite comparaison, interpolation en utilisant quatre points 20 appartenant à une même version de ladite texture ou, dans le cas contraire, huit points appartenant à deux versions consécutives de ladite texture. Dans un mode de réalisation particulier, le facteur de zoom z est une fonction des dérivées partielles dU/dx, dU/dy , dV/dx, dV/dy , dans laquelle (U,V) 25 correspondant aux coordonnées d'un pixel dans la texture tandis que (x,y) correspond aux coordonnées du pixel dans l'image 3D à construire. De préférence, on compare le facteur de zoom à la séquence de seuils : 30 3/8, 5/8, 1+3/8, 1+5/8 , 2+3/8, 2+5/8 , 3 + 3/8 , 3+ 5/8 etc... Le procédé est particulièrement adapté à la réalisation de circuits graphiques de type DIRECT 3D ou OPEN GL. ST05-GR2-336 30 -6 De préférence, l'interpolation en fonction du facteur de zoom suit une fonction continue consistant en une alternance de plans horizontaux et de plans inclinés. L'invention permet également la réalisation d'un circuit graphique réalisant un filtrage de textures, les textures existant en plusieurs versions (MIP MAP) de tailles différentes pour permettre, par interpolation, le calcul des composantes de couleur d'un pixel affiché dans une image 3D. io L'invention est particulièrement adaptée à la réalisation d'un circuit d'affichage pour un ordinateur portable, un assistant personnel ou même un téléphone mobile. 15 Description des dessins D'autres caractéristiques, but et avantages de l'invention apparaîtront à la lecture de la description et des dessins ci-après, donnés uniquement à titre 20 d'exemples non limitatifs. Sur les dessins annexés : La figure 1 illustre le principe d'un filtrage d'une texture permettant la construction d'une image 3D. 25 La figure 2 représente un premier mode de réalisation de l'invention introduisant un traitement non linéaire. La figure 3 illustre un mode de réalisation d'un procédé conforme à la présente invention. La figure 4 représente un second mode de réalisation de l'invention qui préserve la linéarité du procédé. ST05-GR2-336 25 30 7 2897973 Description d'un mode de réalisation préféré On illustrera à présent un mode de réalisation préféré de l'invention 5 permettant un filtrage de texture efficace même dans un système peu puissant. Typiquement, on considérera un ordinateur portable comportant un circuit graphique présentant une capacité limité et, par suite, ne permettant pas de réaliser huit calculs par pixel . Clairement, un homme du métier pourra appliquer le procédé io de l'invention à tout système d'information, nomade ou non, destiné à permettre l'affichage d'image graphique de type 3D. On pensera naturellement aux assistants personnels de type PDA , pocket PC , mais également les téléphoniques mobiles, les lecteurs mp3 dotés de circuits graphiques etc... 15 Le procédé selon l'invention utilise une interpolation qui est basée sur trois composantes (x, y, z) dans laquelle (x, y) correspond aux coordonnées dans l'image 3D, et z correspond à une variable représentative d'un effet de zoom, ou encore un facteur de MIP MAP permettant de déterminer une version particulière du jeu de textures. 20 Dans un mode de réalisation particulier, la troisième ordonnée Z est choisie comme étant le logarithme d'une fonction f des dérivées partielles des coordonnées du pixel dans la texture (U, V) par rapport aux coordonnées du même pixel dans l'image 3D, à savoir une fonction F telle que : Z = F (dU/dx, dU/dy , dV/dx, dV/dy ) dans laquelle (U,V) correspondant aux coordonnées d'un pixel dans la texture tandis que (x,y) correspond aux coordonnées du pixel dans l'image 3D à construire. On constate ainsi que, comme pour le procédé de filtrage trilinéaire bien connu, le procédé selon l'invention utilise trois composantes pour effectuer le calcul ST05-GR2-336 d'interpolation nécessaires au calcul des composantes RVB d'un pixel de l'écran 100. En revanche, et c'est là qu'il se distingue fondamentalement du traitement trilinéaire connu, le procédé utilise la valeur du facteur de zoom Z pour déterminer s'il convient d'appliquer un vrai traitement trilinéaire, ou une approximation au moyen d'un simple calcul bilinéaire en utilisant la texture MMO (texture originelle 1024x1024 pixels), MM1 (texture 512x512 pixels), MM2 (texture 256x256 pixels) .... lo La figure 2 illustre un premier mode de réalisation de l'invention qui introduit une non linéairité dans le procédé de discrimination qui est utilisée. On a représenté en abscisse le facteur de zoom et, en ordonnée les différentes textures MMO, MM1, MM2 , MM3 etc... 15 Un traitement trilinéaire classique est représenté par une ligne en pointillé référencé 200. Dans le procédé selon l'invention, on discrimine le traitement en fonction de la valeur du facteur Z. 20 Pour les valeurs de Z inférieures à un premier seuil û part exemple 3/8 dans un mode de réalisation particulier - on approxime le traitement par une interpolation bilinéaire classique basée sur le calculs de quatre pixels appartenant à la texture MMO. On met ainsi en évidence un plateau horizontal 211, représentatif d'un 25 traitement basé sur la seule texture MMO qui permet une qualité suffisante puisque l'effet de zoom est relativement faible, tout en limitant la puissance de calcul requise pour le calcul d'interpolation puisque, comme pour le filtrage bilinéaire, il ne faut que quatre multiplications. 30 Pour les valeurs de Z supérieures au premier seuil et inférieures à un second seuil û par exemple 5/8 dans le mode de réalisation particulier, le procédé utilise à présent un traitement trilinéaire véritable basée sur les deux textures MMO et MM1... On met ainsi en évidence une zone 212 qui est une partie de la droite 200 caractéristique du traitement trilinéaire. Dans ce traitement, on assure une qualité ST05-GR2-336 -9 maximale ù qui est celle dérivée du traitement trilinéaire ù mais à un coût non négligeable puisqu'il est nécessaire d'effectuer huit multiplications par pixel . Pour les valeurs de Z supérieure au second seuil et inférieures à un troisième seuill (égal à 1 + 3/8), le procédé utilise à présent une interpolation basée sur la seule texture MM1 On met ainsi en évidence un nouveau plateau horizontal 213, représentatif d'un traitement basé sur la seule texture MM1 qui assure une qualité satisfaisante puisque l'on se situe à des valeurs proche du facteur de zoom de io cette même texture, tout en divisant par 2 la puissance de calcul nécessaire pour effectuer l'interpolation. Pour les valeurs de Z supérieure au troisième seuil et inférieures à un quatrième seuil (égal à 1+5/8 dans le mode de réalisation préféré), le procédé 15 utilise à nouveau un traitement trilinéaire basé sur les deux textures consécutives MM1 et MM2. On met ainsi en évidence une zone 214 qui est une partie de la droite 200 caractéristique du traitement trilinéaire. Comme pour la portion 212, on assure une qualité maximale ù propre à celle du traitement trilinéaire mais à un coût non négligeable puisqu'il est nécessaire d'effectuer huit multiplications par pixel . 20 Pour les valeurs de Z supérieures au quatrième seuil et inférieure à un cinquième seuil (égal à 2+3/8 dans un mode de réalisation particulier), le procédé utilise à présent une interpolation basée sur la seule texture MM2 . On met ainsi en évidence un nouveau plateau horizontal 215, représentatif d'un traitement basé sur 25 cette seule texture MM2, permettant ainsi de diviser par 2 la puissance de calcul nécessaires pour effectuer l'interpolation. Pour les valeurs de Z supérieures au cinquième seuil et inférieures à un sixième seuil ù (égal à 2 + 5/8 dans le mode de réalisation préféré), le procédé 30 utilise à nouveau un traitement trilinéaire basé sur les deux textures consécutives MM2 et MM3. On met ainsi en évidence une zone 216 partie de la droite 200 caractéristique du traitement trilinéaire. On procède ainsi de suite pour toutes les textures M4 et suivantes. ST05-GR2-336 -Io- 2897973 On alterne ainsi entre un traitement trilinéaire (segments 212, 214, 216) et un traitement bilinéaire (plateau horizontaux 211, 213, 215 etc..) , en fonction de la valeur du coefficient de zoom Z par rapport à la séquence de seuils : 5 3/8, 5/8, 1+3/8, 1+5/8 , 2+3/8, 2+5/8 , 3 + 3/8 , 3+ 5/8 etc... D'autres variantes seront basées sur les séquences suivantes : io 5/16, 11/16, 1 +5/16, 1+11/16, 2+5/16, 2+ 11/16 etc... ou encore la séquence ci-après : 15 7/16, 9 /16, 1 +7/16, 1+9/16, 2+7/16, 2+ 9/16 etc... La figure 3 illustre un mode de réalisation très simple d'un procédé qui permet de réaliser cette alternance avec la séquence de seuils indiquée 20 précédemment. Dans une étape 300, le procédé procède à la détermination des coordonnées (x,y,z) identifiant le pixel dont il convient de calculer les composantes de couleurs. 25 Dans une étape 301, le procédé calcule la valeur absolue de z moins sa partie entière : ABS (Z û INT(z)) . Dans une étape 302, le procédé effectue un test sur le résultat précédent pour déterminer si ce résultat est inférieur à 3/8, auquel cas le procédé va à l'étape 30 304 dans laquelle il effectue un filtrage bilinéaire simple sur la texture MM la plus proche en fonction de la valeur de z identifiée. Dans le cas contraire, le procédé va à une étape 303 où un nouveau test est effectué pour déterminer si ABS (z û INT(z)) est supérieur à 5/8. ST05-GR2-336 25 Si ABS (z ù INT (z)) est supérieur à 5/8 alors le procédé va à une étape 305 lors de laquelle, comme dans l'étape 304, on effectue un filtrage bilinéaire basé sur la texture MM la plus proche considérée. Dans le cas contraire, lorsque 3/8 Comme on le voit, le procédé selon l'invention emprunte à la fois au 15 traitement bilinéaire ù dans 75% (0..3/8 + 5/8..1 = 6/8 = 75%) pour cent des cas pour les valeurs du facteur de zoom relativement proche d'une texture MMO, MM1, MM2 etc... - et au traitement trilinéaire classique pour 25% pour cent des cas pour améliorer la définition de la construction du pixel lorsque celui-ci se situe entre deux texture donnée. 20 De ce fait, moyennant un accroissement de puissance qui reste limité à 25% seulement par rapport à la puissance requise pour un traitement bilinéaire classique, on obtient un accroissement significatif de la qualité de la texture affichée. On observe, en particulier, que l'on peut ainsi éviter les effets gênants tels que la disparition de lignes appartenant à une texture, effets que l'on rencontre couramment avec le filtrage bilinéaire. 30 Le premier mode de réalisation qui vient d'être décrit, et qui est illustré dans la figure 2, introduit une non linéarité qui peut présenter certains défauts gênants. On a constaté que, de façon surprenante, on obtient une amélioration sensible de l'effet visuel obtenu en supprimant cette non linéarité en modifiant la pente des ST05-GR2-336 -12- 2897973 plans inclinés 212, 214 et 216 (etc ... ) pour rétablir une continuité au sein de la fonction. Une telle fonction est illustrée dans la figure 4 où l'on constate que 5 l'interpolation en fonction du facteur de zoom suit une fonction continue consistant en une alternance de plans horizontaux (211, 213 et 215) et de plans inclinés (212', 214', 216') On obtient ainsi des effets visuels de meilleure qualité. Si le procédé selon l'invention s'avère particulièrement adapté pour permettre l'intégration de techniques 3D dans les circuits graphiques des dispositifs portables présentant une capacité limitée, on notera qu'on peut l'appliquer néanmoins tout à fait opportunément dans toutes les cartes graphiques des ordinateurs de bureau. 15 De manière générale, le procédé est également applicable quelle que soit la valeur particulière utilisée pour le facteur de zoom Z... En particulier, le procédé s'applique directement à la norme DIRECT3D qui est une norme mise au point par MICROSOFT pour son système d'exploitation WINDOWS, mais également à la 20 norme OPEN GL bien connue dans le domaine des téléphones. 25 ST05-GR2-336 - 13 - Revendications 1. Procédé de filtrage de texture pour un circuit graphique, la dite texture existant en plusieurs versions (MIP MAP) de taille différentes pour permettre, par interpolation, le calcul des composantes de couleur d'un pixel affiché dans une image 3D, ledit procédé étant caractérisé en ce qu'il comporte les étapes suivantes : - détermination (300) d'un jeu de trois coordonnées (x, y , z) de chaque pixel de l'image à construire , les dites coordonnées x, y étant représentatives de la position dudit pixel au sein de l'image et la coordonnée z étant représentative d'un facteur de zoom; - comparaison du facteur de zoom par rapport à des seuils prédéfinis ; - en fonction de la dite comparaison, interpolation en utilisant quatre points appartenant à une même version de ladite texture ou, dans le cas contraire, huit points appartenant à deux versions consécutives de ladite texture. 2. Procédé selon la revendication 1 caractérisé en ce que le facteur de zoom est 20 une fonction des dérivées partielles dU/dx, dU/dy , dV/dx, dV/dy , dans laquelle (U,V) correspondant aux coordonnées d'un pixel dans la texture tandis que (x,y) correspond aux coordonnées du pixel dans l'image 3D à construire. 3. Procédé selon la revendication 2 caractérisé en ce que lesdits seuils sont 25 3/8, 5/8, 1+3/8, 1+5/8 , 2+3/8, 2+5/8 , 3 + 3/8 , 3+ 5/8 etc... 4. Procédé selon l'une des revendications précédentes caractérisé en ce que l'interpolation l'interpolation en fonction du facteur de zoom suit une fonction continue consistant en une alternance de plans horizontaux (211, 213 et 215) et de 30 plans inclinés (212', 214', 216') . 5 Procédé selon la revendication 3 caractérisé en ce qu'il est appliqué dans un circuit graphique de type DIRECT2D ou OPEN GL pour un téléphone mobile. ST05-GR2-336 - 14 - 2897973 6. Circuit graphique pour le filtrage d'une texture, la dite texture existant en plusieurs versions (MIP MAP) de taille différentes pour permettre, par interpolation, le calcul des composantes de couleur d'un pixel affiché dans une image 3D, ledit circuit étant caractérisé en ce qu'il comporte : s - des moyens d'identification de trois coordonnées (x, y , z) pour chaque pixel de l'image à construire , les dites coordonnées x, y étant représentatives de la position dudit pixel au sein de l'image et la coordonnée z étant représentative d'un facteur de zoom; - des moyens pour comparer ledit facteur de zoom par rapport à des valeurs de 10 seuils prédéfinis ; - des moyens pour mettre en oeuvre, selon le résultat de ladite comparaison, une interpolation basée sur quatre points appartenant à une même version de ladite texture ou, dans le cas contraire, huit points appartenant à deux versions consécutives de ladite texture. 15 7. Circuit graphique selon la revendication 6 caractérisé en ce que le facteur de zoom est une fonction des dérivées partielles dU/dx, dU/dy , dV/dx, dV/dy , dans laquelle (U,V) correspondant aux coordonnées d'un pixel dans la texture tandis que (x,y) correspond aux coordonnées du pixel dans l'image 3D à construire. 8. Circuit graphique selon la revendication 7 caractérisé en ce que lesdits seuils prédéfinis sont : 3/8, 5/8, 1+3/8, 1+5/8 , 2+3/8, 2+5/8 , 3 + 3/8 , 3+ 5/8 etc... 25 9. Circuit graphique conforme à l'une des revendication 6 à 8 conforme à la norme DIRECT3D ou OPEN GL. 10 . Téléphone mobile comportant un circuit graphique pour le filtrage d'une texture, la dite texture existant en plusieurs versions (MIP MAP) de taille différentes 30 pour permettre, par interpolation, le calcul des composantes de couleur d'un pixel affiché dans une image 3D, ledit circuit étant caractérisé en ce qu'il comporte : - des moyens d'identification de trois coordonnées (x, y , z) pour chaque pixel de l'image à construire , les dites coordonnées x, y étant représentatives de la position ST05-GR2-336 -15- 2897973 dudit pixel au sein de l'image et la coordonnée z étant représentative d'un facteur de zoom; - des moyens pour comparer ledit facteur de zoom par rapport à des valeurs de seuils prédéfinis ; 5 - des moyens pour mettre en oeuvre, selon le résultat de ladite comparaison, une interpolation basée sur quatre points appartenant à une même version de ladite texture ou, dans le cas contraire, huit points appartenant à deux versions consécutives de ladite texture. i0 ST05-GR2-336