A la demande de Lynx-Eyes, je fais un topic qui présente rapidement les principes de l'imagerie numérique, plus précisement, les images bitmap, ainsi que certaine de leurs utilisations.
Aux origines de l'informatique, nous utilisions des écrans monochrome qui étaient capable d'afficher un total de 2 couleurs, le plus souvent le noir et le blanc ou le noir et le vert.
C'est ce qu'on appelait le MDA, monochrome display adapter.
Le principe du MDA était très simple, la couleur de chaque pixel était définie par un bit (un bit ne peut prendre que deux valeurs, 1 ou 0), il n'était alors possible que de définir 2 valeurs pour ce pixel, comme le montre l'image suivante :
Click to enlargeAinsi, pour une image de 320pixels de largeur et 200pixels de hauteur, (notée 320x200) qui contenait donc un total de 64000 pixels, on avait la même quantité de bits, soit 64000bits, ou 8000octets, ou encore 8ko.
Puis les temps ont évolués, et le CGA (Color Graphic Adapter) est arrivé, ce mode graphique permettait un total de 4 couleurs par pixel, ainsi, chaque pixel était définit par 2bits, en effet, 2 bits peuvent prendre au total, 4 valeurs différentes :
00 >noir
01 >violet
10 >vert
11 >gris
(les couleurs associées aux valeurs des bits ne sont pas toujours les même, j'ai mis ici ce qui revient à ma mémoire.)
On obtient alors ce type d'image :
Click to enlargeEt, de la même façon que pour le mode MDA, il est possible de calculer la taille occupée par une image en 4 bits par pixels, il suffit de connaître le nombre de pixel qui forment l'image. Dans une image en 320x200 (taille des images à l'époque du CGA) on a toujours un total de 64000 pixels pour l'image ainsi que 2bits par pixels soit 128000 bits pour définir cette image, ou encore 16000 octets soit 16ko.
En 1985 arrive alors le mode EGA, la frime totale, il était possible d'avoir 16 couleurs à l'écran, en même temps, ainsi qu'un nombre de pixels beaucoup plus grand : 640x350 !
On obtenait donc une qualité d'image beaucoup plus fine que par le passé!
En mode EGA, la couleur de chaque pixel était définit par 4 bits. Et avec 4 bits il est possible d'avoir 16 valeurs différentes !
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Soit :
Click to enlargeet
Click to enlargeToujours et encore de la même façon, nous pouvons remarquer l'évolution de la taille des images en octet : 640x350 = 224000 x 4bits/pixel = 896000 bits. soit 112000 octets ou encore 112ko.
Puis les temps ont évolués, et le VGA (Video Graphic Array) fait son apparition, il code chaque pixel sur 8bits, ce qui permet un total de 256 couleurs par pixels. c'est du photoréalisme
!
Le hic c'est que l'on ne peut plus passer en 640x350 pour avoir 256 couleurs, il est necessaire de rester en 320x200.
On obtient malgrès cela un choix de couleurs interressant :
Click to enlargeClick to enlargeDe la même façon, on peut facilement calculer la taille occupée en bits, par une image en en 320x200 avec 8bits/pixels : 64000 x 8 = 512000bits soit 64000 octets ou encore, 64ko.
Est enfin arrivé le mode SVGA (Super Video Graphic Array) qui permet l'utilisation de 256 couleurs sur des résolutions telle que le 640x480, ou encore, en 16 couleurs sur des résolutions encore jamais atteinte, le 800x600 ou le 1024x768.
De nombreux modes ont vu le jour après le SVGA, tel que le SXGA, l'UXGA, le WSXGA, le WSXGA+, le QSXGA... bref, autant d'acronymes aussi ridicules qu'inutiles. C'est pourquoi nous sommes aujourd'hui revenu à l'acronyme qui définit le plus simplement et précisement le système utilisé : le VGA.
Il y a environ 14années, le VGA est passé à 65 536 couleurs possible par pixel, soit 16bits/pixels, ceci dans des résolutions pouvant monter jusqu'à 1024x768.
Click to enlargePuis vint l'apogée, le système que l'on connait aujourd'hui et qui n'a pas bougé depuis de nombreuses années, le True Color, le 24bits.
Et c'est uniquement à partir de maintenant que le topic aborde son sujet :
Tout dabord, et comme nous l'avons appris dans le sujet
Question pour un gros con, une image est créée à partir de trois composantes, le rouge, le vert et le bleu :
C'est ce qu'on appelle le codage RGB ; avec différentes quantités de rouge, de vert et de bleu, il va être possible de réaliser différentes couleurs.
Comme précisé plus haut, nous utilisons à présent, 24bits/pixels, soit 8 bits par composante R,G et B.
chacune de ces composantes est dirigée par un octet (8bits) et le total des 3 définit UNE couleur parmi 16 777 216 couleurs, (l'oeil humain ne pouvant en différencier plus de 2 000 000, il n'est pas necessaire d'atteindre des valeurs supérieures).
Ainsi, une image en 1280x1024 True Colors (24bits/pixel), donc composée de 1 310 720 pixels, est contenue dans 31 457 280 bits,
soit 3 932 160 octets, ou 3 932ko ou encore : 3,9Mo.
Comme vous l'avez sûrement compris à présent, une image n'est qu'une suite de pixels sur plusieurs lignes et chacun de ces pixels est définit par, le plus souvent, 24bits.
On peut ainsi mettre n'importe quelle couleur dans n'importe quelle image.
Mais alors, le 32bits ? quésako ?
C'est très simple, les 24premiers bits, servent, comme toujours, à définir la couleur du pixel, il reste alors 8bits, que l'on nomme, le Canal Alpha, ou Alpha Channel, ils peuvent avoir l'utilité que l'on désire:
on peut y stocker les informations que l'on désire, même des informations n'ayant aucun rapport avec l'image, mais dont le destinataire de l'image connait l'existence (c'est un type d'encodage d'informations "secrète").
Mais ce n'est bien sûr par pour ce type d'utilisation que le mode 32bits existe.
Son utilisation principale est d'informer l'application qui va utiliser l'image, de l'opacité ou de la transparence de chacun des pixels.
imaginons un pixel codé sur 32bits. Ce pixel est rouge vif :
R: 1111 1111 < max rouge
G: 0000 0000 < pas de vert
B: 0000 0000 < pas de bleu
A: 1111 1111 < opaque (256)
ainsi, ce pixel sera complétement opaque et rouge vif :
Si l'on change la valeur de l'Alpha Channel :
R: 1111 1111 < max rouge
G: 0000 0000 < pas de vert
B: 0000 0000 < pas de bleu
A: 0000 0000 < totalement transparent (0)
Le pixel devient complétement transparent et donc de la même couleur que l'élément sur lequel il repose. (ici, le fond du forum).
Ainsi, en faisant varier les valeurs de l'alpha channel, il on fait varier la transparence du pixel, totale ou partielle.
On utilise ce type de système lorsque l'on fait des montage graphique sur internet ou encore, dans des applications 3D (une fenêtre sale par exemple, la valeur de l'alpha channel correspondant aux pixels de crasse sera plus opaque que les pixels devant être plus transparent).
Il est possible que prochainement j'explique l'utilisation de l'alpha channel dans des applications 3D telle que le Displacement Mapping ou le Bump Mapping en général.
Si vous avez des questions.