PROCEDE DE COLORISATION D UE IMAGE
OU D UNE MATRICE D' IMAGES
SUR UN ECRAN CONNECTE A UN SYSTEME INTER-RESEAUX
DESCRIPTION
Domaine de l' invention
L'invention concerne un procédé pour coloriser une image ou une matrice d'images sur un écran d'ordinateur connecté à un système inter-réseaux, tel qu' internet.
Ce procédé trouve des applications dans tous les domaines utilisant un réseau de communication du type internet pour représenter un objet « en volume », c'est-à-dire un objet sous plusieurs angles de vue .
Etat de la technique
Il est courant, dans de nombreux domaines techniques, d'utiliser un système inter-réseaux, tel que le réseau internet, pour faire découvrir aux utilisateurs de ce réseau, des objets, ou des lieux (on parlera par la suite, simplement, d'objets) en utilisant une image panoramique ou plusieurs images (ou vues photographiques) montrant ces objets sous des angles différents, leur donnant ainsi une impression de volume . II serait intéressant, dans certaines applications, de pouvoir modifier aussi la couleur de
ces objets « en volume » pour offrir, à l'utilisateur, une meilleure visualisation de ces objets. Cependant, aucun procédé ne permet, actuellement, de modifier la couleur de ces objets présentés sur un réseau de communication et, en particulier, sur internet.
Il existe, par ailleurs, des procédés de colorisation d'objets représentés en images sur des écrans d'ordinateurs. Deux de ces procédés sont mis en œuvre par la Société ADOBE. Cette société propose, en effet, deux procédés permettant de modifier les composantes colorimétriques d'une série de pixels, de façon empirique, sur un ordinateur local. Cependant, ces procédés demandent beaucoup de ressources aussi bien du point de vue de la mémoire que de la puissance de l'ordinateur. Ces procédés ne sont donc applicables que localement, sur des ordinateurs fixes. Il n'est nullement envisageable d'adapter de tels procédés à une utilisation sur un inter-réseau où chaque utilisateur doit pouvoir utiliser le procédé quelle que soit la puissance de son ordinateur et la mémoire disponible.
Exposé de l'invention
L'invention a justement pour but de remédier à ces inconvénients. A cette fin, elle propose un procédé interactif permettant de coloriser rapidement un objet « en volume » sur un écran connecté au réseau internet, en respectant l'aspect de l'objet, ses ombres et ses reflets. De façon plus précise, l'invention concerne un procédé de modification des couleurs d'une image ou
d' une matrice d' images sur un écran d' ordinateur connecté à un système inter-réseaux, consistant à : a) déterminer des éléments de transformation pour transformer une première couleur en une seconde couleur et transmettre ces éléments au système inter-réseaux ; b) déterminer des masques de colorisation de l'image pour différencier, sur ladite image, des zones de couleurs différentes et transmettre ces masques de colorisation au système inter-réseaux ; et à chaque demande de modification des couleurs, à : c) décomposer, pixel par pixel, l'objet à coloriser ainsi que les masques de colorisation ; et d) appliquer, à chaque pixel de l'objet, le masque de colorisation correspondant et les éléments de transformation .
Selon un mode de réalisation de l'invention, les éléments de transformation sont des courbes représentant une composante rouge, une composante verte et une composante bleue, chaque courbe étant discrétisée en 256 valeurs.
Selon un autre mode de réalisation de l'invention, les éléments de transformation sont des déplacements entre une couleur de référence et une couleur choisie, représentant la teinte, la luminosité et la saturation.
De préférence, le masque de colorisation est une image en niveaux de gris de l'objet, de taille identique à l'image, chaque niveau de gris correspondant à un degré de colorisation.
Avantageusement, le système inter-réseaux est le système internet.
Dans certaines applications, l'image à coloriser peut être une photographie ; elle peut aussi être une image panoramique.
Dans d'autres applications, la matrice d'images peut représenter un objet selon plusieurs angles de vues, donnant l'impression que l'objet est en mouvement .
Description détaillée de modes de réalisation de l'invention
L' invention concerne un procédé applicable sur internet ou sur tout autre système inter-réseaux et destiné à coloriser, c'est-à-dire à modifier les couleurs d'une image ou d'un objet représenté par un ensemble d' images affichées successivement sur un écran d'ordinateur pour donner une impression de volume à l'objet.
Pour des raisons de simplification, le procédé de l'invention sera décrit dans son application à une matrice d'images représentatives d'un objet, étant entendu qu'il peut aussi s'appliquer à une image unique, telle qu'une image panoramique.
Le procédé de l'invention permet de coloriser un objet, représenté par une matrice d'images, dans une couleur choisie, tout en tenant compte de l'aspect général de l'objet, de ses ombres et de ses reflets qui évoluent au fur et à mesure que les images de l'objets se succèdent.
D'une façon générale, le procédé de l'invention propose de précalculer une partie des informations relatives aux couleurs à appliquer, et de ranger ces informations sous une forme compacte afin de permettre une transmission rapide par l' inter-réseau et donc un allégement de la charge processeur de l'ordinateur, à partir duquel l'utilisateur souhaite effectuer les modifications de couleurs.
Le procédé de l'invention consiste, tout d'abord, à déterminer un certain nombre de couleurs possibles pour coloriser l'objet. La couleur choisie par l'utilisateur dans cette gamme de couleurs possibles sera appelée, par la suite « couleur choisie ». On a représenté, sur la figure 1, le diagramme fonctionnel du procédé de l'invention. Ce procédé consiste, tout d'abord, en une étape 10 de précalculs. Cette étape 10 consiste à déterminer des éléments de transformation des couleurs qui permettent, à partir de trois composantes, de retrouver toutes les couleurs choisies. Ces éléments de transformation peuvent être déterminés soit dans une base RVB, dont les composantes sont les couleurs rouge, verte et bleue, soit dans une base HLS, dont les composantes sont la teinte, la luminosité et la saturation. Ces deux bases seront décrites en détail ultérieurement.
Cette étape est prédéterminée de façon à obtenir un traitement plus rapide lors de la mise en œuvre du procédé . Le procédé consiste ensuite en une étape 12 de détermination des masques de colorisation de l'objet
dont le rôle est de permettre de différencier, sur l'objet, des zones de couleurs différentes. Le masque est une image en niveaux de gris, de la même taille que les vues photographiques de l'objet, auquel il se rapporte. Chaque pixel du masque correspond donc à un pixel de l'image.
Le masque de colorisation est utilisé pour faire ressortir le degré ou l'absence de colorisation à apporter à une zone de pixels ou à un pixel de l'image ; il est aussi utiliser pour permettre d'associer des couleurs différentes, c'est-à-dire des teintes différentes à des zones distinctes de l'objet, comme cela sera expliqué ultérieurement.
Le masque de colorisation, utilisé dans le procédé de l'invention, n'est pas binaire. Il n'exprime pas une absence ou une présence de colorisation, mais un degré de colorisation. Pour cela, le niveau de gris de chaque pixel est ramené à une échelle entre, par exemple, 0 et 100, qui représente le degré de colorisation du pixel correspondant de l'image.
La détermination des masques de colorisation est importante, dans le sens, où lorsque le procédé est appliqué sur des objets photographiés, il est important que seules certaines zones d'images soient colorisées, afin de respecter l'aspect général de l'objet, avec ses ombres et ses reflets.
Dans le procédé de l'invention, le masque de colorisation est décomposé en 256 niveaux de gris. Le procédé de l'invention propose donc de diviser ces 256 niveaux de gris en autant de plages qu'il y a de zones de colorisation distinctes.
Par exemple, dans le cas de la photo d'un mannequin ayant une jupe et un chemisier, auxquels on veut affecter des couleurs différentes, on considère qu'il y a deux zones de colorisation. Il y a alors deux plages de niveaux de gris, la première entre 0 et 127 et la seconde entre 128 et 255. Ainsi, un masque à 0 ou à 128 indique un pixel à ne pas coloriser, tandis qu'un masque dont le niveau est 127 ou 255 indique que le pixel est à coloriser intégralement avec, respectivement, la première couleur et la seconde couleur. Au contraire, un pixel dont le niveau de gris est 64 indique que le pixel est à coloriser à 50 % avec la première couleur.
Les étapes 10 et 12 qui viennent d'être décrites sont des étapes de prédétermination des informations qui vont être utilisées, ultérieurement, par l'utilisateur sur son ordinateur. Ces informations sont en attente sur le système inter-réseaux. Lorsqu'un utilisateur se connecte à l'application, ces informations sont transmises localement, c'est-à-dire sur l'ordinateur de l'utilisateur.
A partir de ce moment, le procédé de l'invention vérifie, dans une étape de tests 14, si une colorisation a été demandée. Si ce n'est pas le cas, le procédé reprend au début du test 14. Si une colorisation est demandée, alors le procédé de l'invention consiste à décomposer l'image à coloriser pixel par pixel et à traiter chaque pixel séparément. Pour cela, chaque pixel est colorisé (étape 20) en tenant compte du pixel qui lui correspond dans le masque de colorisation. Autrement dit, on applique à
chaque pixel, la transformation de couleur déterminée à l'étape 10 en fonction du niveau de gris du pixel qui lui correspond dans le masque de colorisation (étape 22) . L'application de la transformation de la couleur à travers le masque permet de respecter 1' anti-aliasing, c'est-à-dire l'atténuation du crénelage qui peut apparaître dans l'image, après colorisation. Autrement dit, ce sont les degrés de colorisation intermédiaire, c'est-à-dire entre 0 % et 100 %, qui permettent de lisser les transitions colorimétriques de l'objet que l'on cherche à coloriser, en fonction des mouvements de cet objet. Il permet aussi de gérer des colorisations progressives, comme par exemple des effets de transparence.
Plus précisément, si on appelle pourc le degré de colorisation (compris entre 0 et 1) et Ent(x) la fonction renvoyant la partie entière de x, le degré de colorisation est déterminé par :
Rf=Ent (Rs*pourc+Re* (1-pourc) ) Vf=Ent (Vs*pourc+Ve* (1-pourc) ) Bf=Ent (Bs*pourc+Be* (1-pourc) ) ,
où Rs, Vs et Bs sont les composantes calculées dans la base RVB après transformation de la base HLS, Re, Ve et Be sont les composantes du pixel original et Rf, Vf et Bf sont les composantes finales du pixel colorisé.
Le procédé est ainsi appliqué, pour tous les pixels de l'ensemble d'images. Lorsque tous les pixels ont été traités, le procédé propose une nouvelle colorisation, à l'étape 14.
L'étape 10 de détermination des éléments de transformation des couleurs peut être mise en œuvre selon deux méthodes différentes.
La première méthode est basée sur la transformation des couleurs dans une base RVB, dont les composantes sont les couleurs rouge, verte et bleue. Selon cette méthode, on applique à chaque pixel, une courbe de transformation de chacune de ces composantes rouge, verte et bleue. Plus précisément, cette méthode consiste à déterminer, pour chaque composante, c'est-à-dire pour chaque couleur verte, rouge et bleue, trois courbes de transformation.
Selon cette méthode, on détermine, par une succession de modifications, trois courbes de transformation qui correspondent chacune à l'ensemble des nuances pour une des trois composantes rouge, verte et bleue. A titre d'exemple, on a représenté sur la figure 2, ces trois courbes A, B et C. La courbe A est la courbe de transformation pour la couleur rouge ; la courbe B est la courbe de transformation pour la couleur verte et la courbe C est la courbe de transformation pour la couleur bleue. Ces courbes sont toutes trois continues. Mais pour les transmettre sur le réseau, il est plus aisé et plus économique de les discrétiser en 256 valeurs, chacune échelonnées entre 0 et 255. Ainsi, chaque courbe de transformation est
discrétisée en un tableau de 256 valeurs. Une correspondance de couleurs est donc notée sur 256 valeurs, pour chaque composante rouge, verte ou bleue. Le tableau obtenu pour chacune de ces composantes rouge, verte et bleue, est représenté sur la figure 3, à titre d'exemple. Autrement dit, le tableau A montre la correspondance entre RE et RS, où RE est la composante rouge de départ et RS est la composante rouge transformée. Les tableaux B et C montrent, de façon similaire, les correspondances de couleurs, respectivement, pour la composante verte et pour la composante bleue.
Selon l'invention, ces tableaux de valeurs discrétisées sont prédéterminés (étape 10) , de façon à accélérer, par la suite, le temps de traitement des pixels lors de l'application elle-même.
Avec cette méthode de transformation des couleurs, l'étape 20 de colorisation consiste à appliquer, à chaque pixel les trois courbes de transformation. Cette application se fait en cherchant simplement, dans les tableaux de 256 valeurs, la valeur en ordonnée correspondant à la valeur de départ, en abscisse.
Dans le cas où l'on choisit comme base de transformation, la base RVB, alors le traitement de chaque pixel est celui représenté sur la figure 4. Dans ce cas, après le test 18, qui consiste à vérifier s'il y a des pixels à traiter, le procédé consiste à séparer la couleur en composante RVB (étape 19), puis, à récupérer les valeurs RVB correspondantes dans les tableaux de 256 valeurs (étape 21) et enfin à générer
le nouveau pixel, dont les composantes sont RI, VI et Bl (étape 23) .
La seconde méthode de détermination des éléments de transformation des couleurs consiste à utiliser la base HLS, dont les composantes sont la teinte, la luminosité, et la saturation. En effet, ce que l'on appelle abusivement « couleur » est en fait la teinte. Il est donc possible de modifier la teinte d'une couleur, tout en gardant les rapports de luminosité et de saturation entre les différents pixels. On garde ainsi les effets d'ombre et de lumière qui donnent à l'objet toute son authenticité.
Dans ce modèle teinte, luminosité, saturation, la base HLS est généralement représentée sous la forme d'un double cône, comme on l'a montré sur la figure 5. L'axe vertical de ce cône est la luminosité. A l'extrémité inférieure du cône, la luminosité L est de 0 %, c'est-à-dire qu'il s'agit du noir. A l'extrémité supérieure du cône, la luminosité L est à 100 %, c'est-à-dire qu'il s'agit du blanc. L'angle horizontal H, sous lequel est vu un point, représente la teinte. L'angle de 0° représente la couleur rouge. La hauteur d'un point permet de définir un disque horizontal délimité par le cône dans lequel ce point est inclus. Le rapport du rayon sous lequel est vu ce point, dans le disque, par le rayon du disque, exprime la saturation S.
Ainsi, une couleur C2 a une luminosité 12 avec une saturation s2 et une teinte h2. Une variante du procédé de l'invention est donc de déterminer les éléments permettant de
transformer une couleur dans une autre couleur en passant par cette base HLS qui est la base la plus naturelle.
Pour cela, l'invention propose de transformer la couleur d'origine (appelée aussi couleur de référence) donnée dans la base RVB en une couleur de composantes HLS.
On considère, comme on l'a expliqué précédemment, que la teinte est réaffectée. Il n'est donc pas utile de la calculer. Le procédé de l'invention propose donc de calculer uniquement la luminosité et la saturation en fonction des composantes RVB d'origine.
Dans le procédé de l'invention, les valeurs de luminosité et de saturation de l'image ou des images de référence sont calculées une fois pour toute et stockées dans un tableau. Le procédé de l'invention propose donc de mémoriser dans un tableau, l'ensemble des composantes de luminosité et de saturation, associées aux pixels à coloriser, et uniquement à ces pixels .
La transformation des composantes RVB dans la base HLS étant connue, elle ne sera donc pas décrite en détail. On rappellera simplement que la transformation d'un pixel ReVeBe en des composantes LSSS est donnée par les opérations suivantes :
Calcul du Maxrvb = Maximum (ReVeBe)
Calcul de MinrVb = Minimum (ReVeBe) Calcul de AmplituderVb - Maxrvb-MinrVb
Calcul de L
s=Max
rvb/255
Calcul de S. =
Si l'on considère que la couleur de destination a les composantes Hd, Ld et Sd, la transformation RVB en LS va affecter une nouvelle teinte à chacun des pixels. Cette transformation va aussi effectuer une translation des valeurs de luminosité et de saturation. Il s'agit d'une translation et non d'une affectation car le procédé de l'invention garde les différences entre les pixels, afin de respecter les ombres et les reflets. Pour calculer cette valeur de translation, il faut connaître la couleur de référence de la zone à coloriser. Cette couleur de référence est notée Href, Lref et Sref. Pour un pixel donné, de composante HeLeSe, on obtient la couleur transformée HSLSSS, par l'intermédiaire des calculs suivants :
Calcul de dS Sref Se Calcul de dL Sref — Se
Calcul de Ls Ld + dL
Calcul de Ss Sd + dS
Calcul de Hs Hd
Ensuite, chaque composante HLS trouvée est transposée dans la base RVB, pour permettre la colorisation de l'objet. Cette transposition se fait de la façon suivante, dans laquelle Ent (x) est la fonction
donnant la partie entier de x et Frac(x) est la fonction donnant la partie fractionnelle de x :
Calcul=ll=Le*255 Si S=0 calcul Rε=Vs=Bs=Ent (11) calcul terminé Sinon calcul sextant=Ent (He*6) calcul fract=(l-Se*Frac(He*6) )
Selon la valeur de sextant Si sextant = 0
Rs=Ent (11)
V
s=Ent (11* (2-fract-Se) )
calcul terminé Si sextant=l
Rs=Ent (ll*fract) Vs=Ent (11) Bs=Ent (ll*(l-Se) ) calcul terminé Si sextant = 2
R
s=Ent(ll*(l-S
e) ) V
s=Ent(ll) B
s=Ent (ll*(2-fract-S
e) ) calcul terminé Si sextant = 3
V
s=Ent (ll*fract)
B
s=Ent ( l l ) calcul terminé Si sextant = 4
Rs=Ent ( 11* ( 2- fract-Se ) ) Vs ≈Ent ( l l* ( 2-Se) )
Bs=Ent ( 11 ) calcul terminé Si sextant = 5
Rs=Ent ( 11 ) Vs=Ent ( ll* ( l-Se) )
Bs=Ent (llfract) calcul terminé
Dans le cas où les couleurs sont exprimées dans la base HLS (cas de la figure 6), le procédé comporte, avant l'étape de test des pixels 18, une étape 17 de calcul des distances dH, dS et dL qui sont les distances à parcourir entre les composantes de la couleur d'origine et les composantes de la couleur de destination. Après le test 18, s'il y a des pixels à traiter, alors la couleur d'origine en base RVB est décomposée en composantes HLS (étape 25) . Ensuite, une étape 27 consiste à déterminer les nouvelles valeurs hs = he + dH, ls = le + dL, Ss = Se + dS ; une étape 29 consiste ensuite à convertir ces valeurs hs ls Ss vers le nouveau pixel de base RVχBι .
Le procédé de l'invention permet un traitement relativement aisé du fait qu'une partie importante des informations sont précalculées, à savoir les informations de colorisation. Ces informations sont
envoyées sous la forme d'images, avec un format compressé de 256 niveaux et directement lisible par les utilisateurs internet, sans procédure particulière. Dans le cas où la base de données est la base HLS, le procédé de l'invention nécessite de fournir pour chaque couleur choisie les trois composantes teinte, luminosité et saturation. Ainsi, ces trois composantes sont transposées chacune sur un intervalle compris entre 0 et 255. On a ainsi trois valeurs qui définissent une couleur dans la base rvb. En construisant ainsi un pixel pour chaque couleur possible, on obtient une image « légère » contenant l'ensemble des valeurs à fournir. Le procédé va ensuite reconstruire l'information en faisant l'opération inverse, lors de la phase de précalcul.
Dans le cas où les couleurs sont exprimées dans la base RVB, les informations à fournir sont sous la forme de trois tableaux de 256 valeurs. Ces valeurs sont entières et comprises entre 0 et 255. Pour transmettre ces informations, on réunit les trois tableaux de façon à obtenir un seul tableau de composantes RVB. On construit alors une ligne de 256 pixels. Il y a autant de lignes que de couleurs ; on construit une image avec ces lignes. C'est cette image qui est transmise.