Les ordinateurs enregistrent et transmettent les images selon différents modes. Une des possibilités est la suivante: une matrice carrée est posée sur l’image. Le système détermine ensuite pour chaque petit carré la couleur prédominante de cette partie de l’image. Dans un message codé, chaque carré partiel est représenté en tant que point coloré, nommé pixel. C’est pourquoi de telles images codées s’appellent images matricielles (voir Wikipedia http://fr.wikipedia.org/wiki/Image_matricielle). A titre d’exemple, nous allons prendre l’image du robot bit avec des matrices de différentes tailles:
Pour le codage des couleurs, il faut comme toujours disposer d’un tableau de codage. Celui-ci attribue un code binaire à chacune des couleurs. Le tableau des codes dans le téléphone portable des trois robots n’est pas très grand, car celui-ci peut seulement afficher des images avec huit couleurs au maximum.
blanc | 0000 |
noir | 0001 |
rouge | 0010 |
vert | 0011 |
jaune | 0100 |
brun | 0101 |
orange | 0110 |
bleu | 0111 |
Ainsi, quatre bits du message codé correspondent à un pixel dans l’image décodée.
Le codage d’images peut nécessiter beaucoup d’espace, si la matrice est très grande et qu’un grand nombre de pixels doivent être codés. Ici, il serait très pratique s’il était possible de comprimer l’image. Le procédé de compression du téléphone portable des trois robots utilise les caractéristiques de nombreuses images, à savoir qu’elles contiennent souvent de grandes surfaces d’une même couleur. Le codage de telles surfaces est donc relativement monochrome: un pixel de couleur x et suivi d’un autre de même couleur. Si une personne devait transmettre une telle image, elle ne dirait certainement pas « vert, vert, vert, vert, vert… », mais probablement « maintenant, il y a cinq pixels verts, ensuite 20 jaunes, puis… ".
Le téléphone portable des trois robots maîtrise également ce truc. Si plusieurs pixels de même couleur se suivent dans une image, il est possible d’établir le code en conséquence. En plus des codes pour les huit couleurs, le tableau de codage contient également huit codes de répétition:
blanc | 0000 | 2 Pixel | 1000 |
noir | 0001 | 3 Pixel | 1001 |
rouge | 0010 | 4 Pixel | 1010 |
vert | 0010 | 5 Pixel | 1011 |
jaune | 0100 | 6 Pixel | 1100 |
brun | 0101 | 7 Pixel | 1101 |
orange | 0110 | 8 Pixel | 1110 |
bleu | 0111 | 9 Pixel | 1111 |
Il est possible de coder huit pixels jaune en gagnant de la place comme suit:
1110 | 0100 |
Sur la base d’un exemple, nous allons présenter comment des images comprimées peuvent être décodées. L’image comprimée se présente ainsi:
111000101001001010000000100100101001001010000000100100 100010110000000010001011000000001010010010100000001001 001010010010100000001001001011100010 |
Comme l’image est comprimée, il n’est pas tout de suite possible de connaître sa taille. La première étape consiste donc à décomprimer le message:
1110 | 0010 | 8 pixels rouge |
1001 | 0010 | 3 pixels rouge |
1000 | 0000 | 2 pixels blanc |
1001 | 0010 | 3 pixels rouge |
1001 | 0010 | 3 pixels rouge |
1000 | 0000 | 2 pixels blanc |
1001 | 0010 | 3 pixels rouge |
0010 | 1 pixel rouge | |
1100 | 0000 | 6 pixels blanc |
0010 | 1 pixel rouge | |
0010 | 1 pixel rouge | |
1100 | 0000 | 6 pixels blanc |
0010 | 1 pixel rouge | |
1001 | 0010 | 3 pixels rouge |
1000 | 0000 | 2 pixels blanc |
1001 | 0010 | 3 pixels rouge |
1001 | 0010 | 3 pixels rouge |
1000 | 0000 | 2 pixels blanc |
1001 | 0010 | 3 pixels rouge |
1110 | 0010 | 8 pixels rouge |
L’image se compose donc de 64 pixels. Etant donné que l’image doit être carrée, l’image est représentée dans une matrice de 8x8 pixels.