Codage RVB

Codage RVB sur 8 bits

Une couleur est souvent représentée par la superposition de trois rayons lumineux: un rouge, un vert, un bleu (couleurs primaires de la synthèse additive). Chaque rayon est représenté par un nombre codé sur 8 bits (il faut alors 24 bits pour les trois rayons)

Un octet vaut 8 bits, donc une couleur particulière sera codée par 3 octets

On désigne par modèle RVB cette représentation. D'autres sont possibles comme CMJN(Cyan,Magenta,Jaune,Noir, utilisé pour l'impression synthèse soustractive) ou TSV(Teinte, Saturation,Valeur) dont nous parlerons un peu plus loin.

Questions

  1. Avec 1 bit on peut composer deux nombres :0 et 1

    Avec 2 bits on peut composer quatre nombres:

    1. 00 qui représente 0
    2. 01 qui représente 1
    3. 10 qui représente 2
    4. 11 qui représente 3

    Quels sont les nombres de 3 bits et combien y en a-t-il ?

    Compléter dans votre document le tableau suivant

    Nombre de bitsNombre de nombres
    12
    24
    3
    4
    5
    6
    7
    8
  2. A chaque octet on associe un entier de la manière suivante:

    $a_7a_6a_5a_4a_3a_2a_1a_0 = a_7\times2^7+...+a_1\times2^1+a_0\times2^0$

    Par exemple $11000011 = 1\times 128+1\times 64+1\times 2+1 = 195$

    On dit que 11000011 et 195 sont deux écritures du même nombre

    11000011 est l'écriture binaire de ce nombre

    195 est l'écriture décimale de ce nombre

    Donner l'écriture décimale du nombre représenté par l'octet 01010101

    Donner l'écriture binaire du nombre représenté par 138

    Donner les écritures décimale et binaire du plus grand nombre représentable

  3. Ouvrir le logiciel Gimp 2.8 (menu démarrer). L'écran devrait comporter trois fenêtres dont une partie est représentée ci-dessus.

    Cliquer sur la couleur du texte ou couleur de premier plan (noir normalement). Une nouvelle fenêtre devrait s'ouvrir qui permet de modifier cette couleur.

    Elle comporte différentes zones dont : les six réglettes TSV et RVB, la notation HTML, la couleur actuelle (en cours de définition), la couleur précédente (ancienne couleur du texte, noir normalement) et un nuancier cliquable (en haut à gauche) au choix parmi cinq types de nuanciers (présentés par cinq onglets).

    Sélectionner le quatrième onglet, celui du cercle TSV. Nous allons à présent en utilisant les réglettes RVB ou leur équivalent numérique à droite, compléter le tableau ci-dessous. Par exemple, la couleur noire est représentée par les trois coordonnées RVB (0;0;0).

    Dans quel intervalle varie chacune des coordonnées RVB ?
    CouleurRougeVertBleu
    Noir000
    128128128
    12800
    25500
    01280
    02550
    00128
    00255
  4. Dans quel intervalle varie chacune des coordonnées RVB
  5. Que se passe-t-il lorsqu'on augmente progressivement la coordonnée rouge les autres restant nulles ?La coordonnée verte ? La coordonnée bleue ?
  6. Que se passe-t-il lorsqu'on augmente les trois coordonnées simultanément ? (On peut le faire avec la réglette Valeur de TSV)
  7. Compéter le tableau suivant:
    CouleurRougeVertBleu
    2552550
    0255255
    2550255
    Violet
    Orange
    Rose
    Que remarquez vous à propos des trois premières lignes? Renommez plus précisément ces trois couleurs

Utilisation de fonctions Python

Le langage de programmation Python fournit des fonctions qui permettent de convertir un nombre écrit en base 10 en base 2 et vice-versa

Il est possible d'utiliser Python avec Gimp en sélectionnant dans la barre des menus Filtres puis Scripts puis Python-fu

On va lancer Python avec IDLE

Pour convertir un nombre en base 10 en base 2 utiliser la fonction bin() ainsi par exemple

bin(4) va donner '0b100'

0b100 est une chaîne de caractères. Pour simplifier un caractère est n'importe quel symbole que l'on peut taper sur un clavier d'ordinateur, par exemple a ou encore $ ou 9

Une chaîne de caractères est tout simplement un assemblage de tels symboles par exemple a$9

Pour convertir un nombre de la base 2 vers la base 10 on utilise la fonction int() (int pour integer qui signifie entier en anglais ainsi

int('100',2) va retourner l'entier 4 ou int('0b100',0) va retourner 4

Questions

  1. Vérifier la réponse à la question 2 à l'aide de ces fonctions

  2. Convertir en binaire les puissances de 2 jusqu'à 128
  3. On s'intéresse aux nombres en base 2 écrits uniquement avec des 1, comme 1, 11 ou 1111

    Exprimer l'écriture décimale de ces nombres en fonction d'une puissance de 2