Maintenant que nous avons vu la taille en pixel de l'image, passons à ses couleurs.
La question à laquelle il a fallu répondre au moment d'utiliser des images numériques a été (en plus des questions de tailles) comment représenter numériquement parlant les couleurs ?
Car n'oublions pas, le numérique c'est une suite de 0 et de 1, les bits. Qui regroupés par 8 donnent un octet (exemple : 01101100 est un octet).
Comment diable avec une suite de 0 et de 1 représenter des couleurs ? Du mauve pale ? Du vert foncé ? Du bleu turquoise ?
La première idée c'est de dire que chaque pixel correspond à 1 bit. Si il est à 0 c'est du noir. Si il est a 1 c'est du blanc.
Vous le voyez, difficile d'y voir quelque chose ... néanmoins en répartissant mieux les points noirs et blancs le résultat peut être meilleur :
Chaque pixel prends donc ici 1 seul bit. Sur un octet, on enregistre donc les couleurs de 8 pixels.
Ce format d'image n'est quasiment pas utilisé, sauf sur des écrans en noir et blanc (ceux des téléphones mobiles par exemple).
|
La palette
|
Bon, mais on ne peut pas vraiment appeler ça de la couleur...
Du coup est venu une autre idée, celle de la palette de couleurs.
De quoi s'agit-il ? C'est en fait tout simplement un tableau de couleurs. Et les pixels ne vont pas afficher une couleur désignée, mais un numéro correspondant à la couleur dans la palette.
Exemple, dans la palette l'élément numéro 2 correspond à du bleu.
Tous les pixels de l'image qui auront le numéro 2 afficheront alors du bleu ! On n'aura pas besoin de mettre "bleu" dans chaques pixel. "2" suffit !
Un petit dessin vaut mieux qu'un long discours :
Quel est l'avantage ? Les pixels n'ont qu'un petit numéro à avoir, ce qui ne prends donc pas beaucoup de place. Et ils peuvent afficher toutes les couleurs de la palette (qui est partie intégrante de l'image numérique). Les couleurs de la palette étant définissables comme on veut !
L'inconvénient est que les pixels ne peuvent justement afficher QUE l'une des couleurs de la palette. Comme cette dernière est forcément limitée, le nombre de couleurs qui peuvent être affichées dans l'image simultanément s'en trouve restreint.
Sur l'exemple au dessus, si on veut mettre du noir sur un des pixels on ne peut pas ! la couleur n'étant pas présente dans la palette ... si on veut mettre du noir, il faut donc abandonner une autre couleur, le bleu, le violet, le rouge ... mais si vous changez le rouge en noir dans la palette l'image donne ca :
Tous les points rouges se sont transformés en noir. Vous ne pouvez mettre sur une même image que le nombre de couleurs définis dans la palette (après bien sûr, vous pouvez définir une palette différente pour chaque image, ces dernières étant liées).
Comment sont enregistrées les couleurs dans la palette ?
Bon OK on a un numéro pour les pixels (c'est facile d'enregistrer un numéro). Mais comment sont représentées numériquement parlant les couleurs de la palette elle-même ?
On va en fait utiliser 3 octets pour représenter une couleur. Comme tout le monde le sait, un octet correspond à un chiffre décimal entre 0 et 255 (si vous n'êtes pas sûr, croyez-moi sur parole !)
Le premier octet correspond au rouge, le deuxième au vert, le troisième au bleu.
Ce codage est appelle le codage RVB (pour Rouge Vert Bleu), ou RGB en anglais (en fait c'est comme ça que marche la télé ! le numérique en moins ...)
Donc le rouge, le vert et le bleu sont représentés par des nombres de 0 à 255.
Le 0 c'est quand il n'y a pas de cette couleur. Le 255 c'est quand cette couleur est la plus forte.
A partir de ces 3 octets, et comme les compositions de rouge, de vert et de bleu peuvent reproduire l'ensemble des couleurs possibles, on peut récréer toutes les couleurs !
Plus précisément on a 256*256*256 couleurs disponibles. Soit tout de même 16 777 216. Normalement l'oeil humain ne peut en différentier autant !
Voici des exemples de numéro couleurs en RVB :
|
La palette de 16 couleurs
|
Un classique de l'utilisation de la palette (bien que de moins en moins utilisé) est la palette de 16 couleurs différentes. Pourquoi 16 ? Parce que pour coder un chiffre qui va de 0 a 16 il faut 4 bits, soit une moitié d'octet (les informaticiens aime bien quand le nombre de bits ou d'octets tombe juste, ça leur simplifie beaucoup la tâche !)
Voici la même image que toute à l'heure, mais cette fois-ci en 16 couleurs. Bien sûr, il y a du coup de la couleur ! mais on voit de nombreux défauts ...
Voici la palette utilisée pour cette image :
Et oui, aucune autre couleur ne la compose !
Donc ici chaque pixel correspond à un demi-octet. On peut donc mettre 2 pixels sur un octet.
Ce format est trop limité pour des photos. Il peut néanmoins être utilisé pour des logos ou des icônes.
|
La palette de 256 couleurs
|
Nous venons maintenant à l'un des 2 formats les plus utilisés. La très célèbre palette de 256 couleurs !
On peut voir sur l'image que l'ensemble est de bien meilleure qualité. On peut quand même discerner des sauts de couleurs sur le jaune et le bleu des ballons, sur le vert de la table, et derrière sur le mur. C'est ce qu'on appelle des effets d'escalier. Et oui, 256 c'est quand même pas une infinité ! Du coup les dégradés de couleur (le passage continu entre une couleur et une autre) sont forcément résumés en quelques sauts ...
Voici la palette utilisée pour cette image :
La palette de 256 couleurs est le format le plus utilisé avec les images GIF (voir plus loin), très populaire. La qualité de l'image est bonne, mais ne suffit pas à des photos... sauf peut-être des photos dont les teintes ne sont pas très variées.
On a ici un pixel qui correspond à 1 octet, tout simplement !
|
Le "true color" ou vrai couleur ou 16 millions de couleurs
|
Les ordinateurs personnels sont longtemps restés incapables d'afficher un grand nombre de couleurs. Ce n'est que depuis quelques années et la montée en puissance des cartes graphiques, de la RAM, et des écrans, que la puissance de nos chers PC permit de dépasser les notions de palette ... tout simplement en la faisant disparaître !
Le true color c'est l'absence de palette, et tous les pixels sont codés en RVB sur 3 octets (comme l'était les couleurs dans les palettes).
Ils ont chacun une couleur différente, indépendante les unes des autres.
Sur cette image on ne voit plus du tout d'effet d'escalier, ni sur les ballons, ni sur la table, ni sur le mur du fond. On voit néanmoins des imperfections, mais elles sont dues à la compression de l'image (voir plus loin). A noter que votre écran et votre carte graphique doivent être suffisamment bien configurés pour voir toutes ces couleurs. Si ce n'est pas le cas, cette image vous apparaîtra avec beaucoup de défauts.
(NOTE : Il semblerait que le browser Netscape n'affiche pas correctement les images en 16 millions de couleurs. Si vous l'utilisez, vous verez alors des defauts qui n'apparaissent pas avec d'autres logiciels).
Le true color est utilisé par le célèbre format JPEG (là aussi, je le détaillerai plus tard).
Chaque pixel prends donc 3 octets. C'est tout de même 3 fois plus que le format précédent !
|
les dégradés de gris ou grey scale
|
Un autre format de "couleur" qui peut être utile, le dégradé de gris.
Il y a ici non plus pas de palette (ou une palette de 256 couleurs, mais elle n'est pas vraiment utile). Chaque pixel correspond à 1 octet, qui correspond à un nombre de 0 à 255. 0 c'est noir, 255 c'est blanc, et les chiffes intermédiaires donnent du gris de plus en plus clair.
Ce format peut être intéressant si on a à faire à des photos noir et blanc bien sûr (inutile alors de garder 16 millions de couleurs, alors que 256 gris suffisent ! ) et si on n'a pas besoin de la couleur.
Ce peut être particulièrement utile pour du texte : en effet ici la couleur n'est pas nécessaire, mais mettre du texte en noir et blanc seul le rend souvent assez illisible. Garder des dégradés de gris rajoute des nuances qui donnent une meilleure compréhension du texte.
Exemple :
Un texte en dégradé de gris (coupé), et ci-dessous l'équivalent en noir et blanc seul :
Même si ça reste à peu près lisible, on a perdu beaucoup avec les nuances ...
C'est aussi la même chose pour les schémas en noir et blanc !
|
|