# Codage des images
# Table des matières
# Questions de compréhension
# Question 1
Puisque les couleurs sont codées sur 12 bits, la palette de couleurs contient au maximum couleurs différentes.
# Question 2
Les images vectorielles présentent les avantages suivants sur les images matricielles :
Elles prennent souvent moins de place à stocker
Elles peuvent être agrandies sans perte de qualité
Elles sont plus flexibles que les images matricielles et sont de ce fait souvent utilisées pour les logos d'entreprise ou les icônes des sites Web.
# Question 3
Pour représenter couleurs, il faut utiliser 24 bits. En effet, .
# Question 4
La réponse se trouve déjà sur le site.
# Question 5
La réponse se trouve déjà sur le site.
# Exercice 1
On peut utiliser le programme Python suivant pour déterminer la valeur décimale
des nombres binaires. On utilise pour cela la fonction int(chaine_binaire, base) qui prend en paramètre une chaîne binaire sous la forme 0bxxxxxx où les
x sont des 0 ou des 1.
Note
De manière générale, la fonction int(texte, base) convertit la chaîne de
caractères exprimée dans la base base en un nombre décimal. Il est donc également possible pour convertir un nombre hexadécimal en nombre décimal. Il suffit pour cela de régler le paramètre base sur 16 et de saisir la chaine de caractères avec le préfixe 0x qui désigne les nombres écrits en hexadécimal.
Pour convertir le nombre exadécimal en décimal, il suffit donc de faire
print int('0x3d5', 16)
Le résultat est 981.
La couleur est donc donnée par les composantes RGB (121, 213, 98). La couleur en question contient surtout du vert avec un peu de rouge et de bleu. C'est donc plutôt du vert. Puisque la quantité de rouge et de bleu sont très faibles, la couleur résultante sera une sorte de vert.
Il y a deux solutions pour déterminer la couleur résultant de trois composantes données.
Utiliser un outil en ligne qui fait le travail comme https://www.rapidtables.com/web/color/RGB_Color.html
Écrire un programme qui dessine dans le couleur en question. Il est possible de régler précisément la couleur du crayon dans un programme tortue en fournissant les composantes RGB au lieu de fournir le nom de la couleur:
Ce programme dessine un carré dans la couleur définie par les bits. On utilise la fonction
makeColor(r, g, b)qui fabrique une nouvelle couleur à partir des composantes RGB au lieu d'utiliser le nom d'une couleur prédéfinie danssetPenColor().
On pourrait même faire une version encore plus élégante de ce programme en
définissant une commande affiche_couleur qui prend en paramètre les chaînes
binaires et fait le dessin.
# Exercice 3
Conversion du binaire en hexadécimal
On se rappelle qu'il est très facile de convertir un nombre binaire en hexadécimal. Il suffit de regrouper les chiffres binaires par paquets de 4 et de coder chaque paquet de 4 en chiffre exadécimal. La composante rouge (01111001) va donc donner
car et . Il suffit de faire de même pour chacune des composantes couleur.
La réponse est donc
01111001 11010101 01100010
0111 1001 1101 0101 0110 0010
7 9 D 5 6 2
2
3
Le nombre hexadécimal correspondant sera donc 0x79d562. Là encore, on peut
écrire un programme qui fait la conversion pour nous.
Il ne faut pas tenir compte du préfixe 0x qui est juste là pour signifier qu'il s'agit d'un nombre écrit en hexadécimal.
# Exercice 3
On peut effectuer la conversion à la main. Pour cela, on regroupe les chiffres
hexadécimaux par paquets de 2 FF 66 C4. On convertit ensuite chaque composante individuellement
On peut également demander à Python de faire la conversion pour nous:
Pour estimer la couleur codée, il faut voir que c'est surtout du rouge et du bleu. La couleur va donc être une sorte de magenta qui vire un peu au vert.
# Exercice 4
Chaque pixel occupe 3 octets et il y a pixels dans l'image. La taille du fichier image vaut donc