Je réserve ici
Sciences numériques et technologie (SNT) 2ⁿᵈᵉ

Ressources · 2ⁿᵈᵉ · Sciences numériques et technologie (SNT)

Image numérique et codage

Pixels, définition et résolution, codage RVB, formats et poids, transformer une image par programme (SNT de 2nde)

À propos de cette page
Ces exercices corrigés sur « Image numérique et codage » en seconde permettent de s'entraîner et de vérifier ses acquis en sciences numériques et technologie (SNT). Ils suivent le programme officiel de seconde et sont classés par difficulté (facile, moyen, difficile). Au programme : L'essentiel, Pixels, définition et résolution, Coder une couleur : RVB, gris, binaire, Poids d'une image, compression et formats. Chaque exercice est suivi d'une correction rédigée, à déplier une fois la recherche faite au brouillon. Cet entraînement aide à mémoriser les méthodes, repérer ses erreurs et gagner en confiance avant un contrôle. Exercices gratuits proposés par un professeur particulier à Marseille pour réviser sciences numériques et technologie (SNT) en seconde.

Exercices corrigés, classés du plus simple au plus complexe. Cherche d'abord seul au brouillon, puis déplie la correction détaillée pour vérifier ta méthode et tes raisonnements.

Exercice 1 — Repérer les pixels d'une image

Facile

Une image numérique mesure 640 pixels de large et 480 pixels de haut. Dans le logiciel utilisé, le pixel de coordonnées (0, 0) est en haut à gauche, x augmente vers la droite et y vers le bas.

  1. a) Calculer la définition de cette image, puis l'exprimer en mégapixels, arrondie au centième.
  2. b) Donner les coordonnées du pixel situé en bas à droite de l'image.
  3. c) Combien de pixels compte une ligne de l'image ? une colonne ?
  4. d) Montrer que le rapport largeur/hauteur de l'image vaut 4/3.

a) La définition est le nombre total de pixels : 640 × 480 = 307 200 pixels. Comme 1 Mpx = 1 000 000 pixels, 307 200 ÷ 1 000 000 = 0,3072, soit 307 200 pixels ≈ 0,31 Mpx.

b) Les abscisses vont de 0 à 640 − 1 = 639 et les ordonnées de 0 à 480 − 1 = 479 (on commence à compter à 0). Le pixel en bas à droite est donc (639, 479).

c) Une ligne s'étend sur toute la largeur : 640 pixels. Une colonne s'étend sur toute la hauteur : 480 pixels.

d) 640 ÷ 480 : on divise numérateur et dénominateur par 160, ce qui donne 4 ÷ 3. Le rapport largeur/hauteur vaut bien 4/3 (format dit « 4:3 »).

Exercice 2 — Lire des couleurs RVB

Facile
  1. a) Nommer la couleur codée par chacun des triplets RVB suivants : (255, 0, 0) ; (0, 0, 255) ; (255, 255, 0) ; (0, 0, 0) ; (255, 0, 255).
  2. b) Donner le triplet RVB du cyan et celui du blanc.
  3. c) Combien de valeurs différentes peut prendre une composante codée sur un octet ? En déduire le nombre de couleurs codables en RVB 24 bits.
  4. d) Le triplet (70, 70, 70) code-t-il un gris ? Justifier et préciser s'il est clair ou foncé.

a) En synthèse additive : (255, 0, 0) est le rouge ; (0, 0, 255) le bleu ; (255, 255, 0) le jaune (rouge + vert) ; (0, 0, 0) le noir (aucune lumière) ; (255, 0, 255) le magenta (rouge + bleu).

b) Le cyan est le mélange du vert et du bleu : (0, 255, 255). Le blanc correspond aux trois lumières au maximum : (255, 255, 255).

c) Un octet compte 8 bits, donc 28=256 valeurs possibles (de 0 à 255). Chaque composante est choisie indépendamment des deux autres, d'où 256 × 256 × 256 = 16 777 216 couleurs.

d) Les trois composantes sont égales (r = v = b = 70) : c'est donc un gris. 70 est bien inférieur à 128 (milieu de l'échelle 0-255) : c'est un gris foncé.

Exercice 3 — Binaire et octets

Facile
  1. a) Convertir en décimal l'octet 01101101.
  2. b) Écrire 173 en binaire sur 8 bits.
  3. c) Expliquer pourquoi la valeur maximale d'une composante codée sur un octet est 255 et non 256.
  4. d) Écrire 173 en hexadécimal.

a) Les poids des bits sont, de gauche à droite, 128, 64, 32, 16, 8, 4, 2, 1. Les bits à 1 sont ceux de poids 64, 32, 8, 4 et 1 : 64 + 32 + 8 + 4 + 1 = 109.

b) On retire les puissances de 2 possibles : 173 − 128 = 45 ; 45 − 32 = 13 ; 13 − 8 = 5 ; 5 − 4 = 1 ; 1 − 1 = 0. Les poids utilisés sont 128, 32, 8, 4, 1, donc 173 s'écrit 10101101.

c) Un octet peut prendre 28=256 valeurs différentes. Comme la première valeur est 0 (00000000), la dernière est 256 − 1 = 255 (11111111 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1). Il y a bien 256 valeurs, mais la plus grande est 255.

d) 173 = 10 × 16 + 13. En hexadécimal, 10 s'écrit A et 13 s'écrit D : 173 s'écrit AD.

Exercice 4 — Poids d'une photo non compressée

Moyen

Un téléphone produit des photos de 3264 × 2448 pixels.

  1. a) Calculer la définition de ces photos et l'exprimer en mégapixels (arrondi au dixième).
  2. b) Calculer le poids d'une photo non compressée codée en RVB 24 bits, en Mo.
  3. c) Calculer le poids de la même photo convertie en niveaux de gris (1 octet par pixel).
  4. d) Calculer son poids en noir et blanc pur (1 bit par pixel), en octets puis en Mo.
  5. e) Montrer que le passage du RVB au noir et blanc divise le poids par 24.

a) 3264 × 2448 = 7 990 272 pixels, soit 7 990 272 ÷ 1 000 000 ≈ 8,0 Mpx.

b) En RVB 24 bits, un pixel occupe 3 octets : 7 990 272 × 3 = 23 970 816 octets, soit environ 24,0 Mo.

c) En niveaux de gris, 1 octet par pixel : 7 990 272 octets, soit environ 8,0 Mo.

d) 1 bit par pixel : 7 990 272 bits. Comme 1 octet = 8 bits : 7 990 272 ÷ 8 = 998 784 octets ≈ 1,0 Mo.

e) 23 970 816 ÷ 998 784 = 24. Ce n'est pas un hasard : un pixel passe de 24 bits (3 × 8) à 1 bit, pour le même nombre de pixels. Le poids est donc bien divisé par 24.

Exercice 5 — Résolution et taille d'impression

Moyen

Une image mesure 3600 × 2700 pixels. On rappelle que 1 pouce = 2,54 cm.

  1. a) Calculer les dimensions en centimètres d'un tirage à 360 ppp.
  2. b) On veut imprimer une affiche de 60 cm de large. Calculer la résolution obtenue.
  3. c) Pour un tirage de qualité, on exige au moins 300 ppp. Calculer la largeur maximale du tirage, en cm.
  4. d) Un élève affirme : « En passant la résolution de 360 à 72 ppp dans mon logiciel, sans rééchantillonner, j'ai rendu mon image moins détaillée. » Expliquer son erreur et préciser ce qui a réellement changé.

a) Taille (pouces) = pixels ÷ résolution. Largeur : 3600 ÷ 360 = 10 pouces, soit 10 × 2,54 = 25,4 cm. Hauteur : 2700 ÷ 360 = 7,5 pouces, soit 7,5 × 2,54 = 19,05 cm. Tirage de 25,4 cm × 19,05 cm.

b) 60 cm = 60 ÷ 2,54 ≈ 23,62 pouces. Résolution = 3600 ÷ 23,62 ≈ 152 ppp (plus précisément 3600 × 2,54 ÷ 60 = 152,4 ppp).

c) À 300 ppp : 3600 ÷ 300 = 12 pouces, soit 12 × 2,54 = 30,48 cm de large au maximum. L'affiche de 60 cm du b) est donc en dessous de la qualité « tirage photo », ce qui reste acceptable pour une affiche vue de loin.

d) Sans rééchantillonnage, le nombre de pixels ne change pas : l'image garde ses 3600 × 2700 pixels et exactement les mêmes couleurs, donc aucun détail n'est perdu. Seule la taille d'impression prévue change : 3600 ÷ 72 = 50 pouces, soit 127 cm de large. L'image serait imprimée plus grande, avec des pixels plus visibles, mais le fichier est identique en information.

Exercice 6 — Couleurs en hexadécimal

Moyen

En HTML et CSS, une couleur s'écrit #RRVVBB : chaque composante (rouge, vert, bleu) est écrite en hexadécimal avec deux chiffres.

  1. a) Convertir le code #1E90FF en triplet RVB décimal et décrire la couleur.
  2. b) Écrire en hexadécimal la couleur (255, 165, 0).
  3. c) Quel triplet correspond au code #808080 ? Quelle couleur est-ce ?
  4. d) Montrer que tout code dont les trois paires de chiffres sont identiques (par exemple #3A3A3A) représente un gris.

a) On convertit chaque paire : 1E = 1 × 16 + 14 = 30 ; 90 = 9 × 16 + 0 = 144 ; FF = 15 × 16 + 15 = 255. Triplet (30, 144, 255) : le bleu est au maximum, avec une part de vert et très peu de rouge, c'est un bleu vif tirant vers le bleu ciel.

b) 255 = 15 × 16 + 15 → FF ; 165 = 10 × 16 + 5 → A5 ; 0 → 00. Code #FFA500 (un orange).

c) 80 = 8 × 16 + 0 = 128 pour chaque composante : (128, 128, 128), un gris moyen (r = v = b, à mi-échelle).

d) Si les trois paires sont identiques, elles représentent le même nombre, donc r = v = b. Or une couleur RVB dont les trois composantes sont égales est un gris (les trois lumières sont en même proportion). Par exemple #3A3A3A = (58, 58, 58), un gris foncé. Tout code de cette forme est donc un gris.

Exercice 7 — Prévoir l'effet d'un programme

Moyen

On considère le programme Python suivant (bibliothèque Pillow).

from PIL import Image
img = Image.open('fleur.png').convert('RGB')
L, H = img.size
for x in range(L):
    for y in range(H):
        r, v, b = img.getpixel((x, y))
        g = (r + v + b) // 3
        img.putpixel((x, y), (g, g, g))
img.save('fleur_2.png')

  1. a) Décrire la transformation réalisée par ce programme.
  2. b) Que devient un pixel de couleur (210, 84, 36) ?
  3. c) Un élève veut obtenir le négatif et remplace la dernière ligne de la boucle par img.putpixel((x, y), (255 - r, 255 - v, b)). Expliquer son erreur, corriger la ligne et donner le négatif du pixel (210, 84, 36).
  4. d) Calculer le gris pondéré 0,299 r + 0,587 v + 0,114 b pour le pixel (210, 84, 36) et le comparer au résultat du b).

a) Le programme parcourt tous les pixels (deux boucles sur x et y). Pour chacun, il calcule la moyenne entière g des trois composantes et remplace le pixel par (g, g, g), qui est un gris puisque ses trois composantes sont égales. Il convertit donc l'image en niveaux de gris et l'enregistre sous un nouveau nom.

b) g = (210 + 84 + 36) // 3 = 330 // 3 = 110. Le pixel devient (110, 110, 110).

c) Le négatif remplace chaque composante c par 255 − c. Ici, la composante bleue b est recopiée sans changement : le bleu n'est pas inversé et le résultat n'est pas le négatif. Ligne corrigée : img.putpixel((x, y), (255 - r, 255 - v, 255 - b)). Pour (210, 84, 36) : 255 − 210 = 45 ; 255 − 84 = 171 ; 255 − 36 = 219, d'où (45, 171, 219).

d) 0,299 × 210 + 0,587 × 84 + 0,114 × 36 = 62,79 + 49,308 + 4,104 = 116,202, soit environ 116. Le gris pondéré est un peu plus clair que la moyenne (110) : la formule donne plus de poids au vert, auquel l'œil est le plus sensible, et le vert (84) compte ici davantage que dans une moyenne simple.

Exercice 8 — Choisir un format pour publier une photo

Difficile

Document 1. Une même photographie de 1600 × 1200 pixels, en couleurs RVB 24 bits, est enregistrée dans quatre formats.

FormatCompressionPoids du fichier
BMPaucune5,76 Mo
PNGsans perte3,15 Mo
JPEG qualité 90avec perte640 ko
JPEG qualité 50avec perte180 ko

Document 2. Observations à l'écran, avec un zoom de 400 % : les fichiers BMP et PNG sont identiques pixel à pixel ; le JPEG qualité 90 ne présente aucune différence visible à l'œil nu ; le JPEG qualité 50 montre des blocs carrés dans le ciel et des halos autour des branches.

  1. 1. Montrer que le poids du fichier BMP correspond à l'image non compressée.
  2. 2. Calculer le taux de compression de chacun des trois autres fichiers (poids du BMP ÷ poids du fichier).
  3. 3. Le PNG reste beaucoup plus lourd que les JPEG. Expliquer pourquoi en utilisant les deux documents.
  4. 4. La photo est téléchargée avec une connexion de 10 Mbit/s. Calculer la durée de téléchargement du fichier BMP, puis du fichier JPEG qualité 50.
  5. 5. Quel fichier conseiller pour publier cette photo sur un blog ? Justifier par un raisonnement qui s'appuie sur les documents et les calculs.

1. Définition : 1600 × 1200 = 1 920 000 pixels. En RVB 24 bits, 3 octets par pixel : 1 920 000 × 3 = 5 760 000 octets = 5,76 Mo. C'est exactement le poids du BMP (l'en-tête du fichier, de quelques dizaines d'octets, est négligeable) : le BMP stocke l'image sans compression.

2. PNG : 5,76 ÷ 3,15 ≈ 1,8. JPEG qualité 90 : 640 ko = 0,64 Mo, 5,76 ÷ 0,64 = 9. JPEG qualité 50 : 180 ko = 0,18 Mo, 5,76 ÷ 0,18 = 32.

3. D'après le document 2, le PNG est identique pixel à pixel à l'image d'origine : c'est une compression sans perte, qui doit permettre de retrouver chaque couleur exactement. Or une photographie contient d'innombrables nuances qui varient d'un pixel à l'autre : il y a peu de répétitions à exploiter, d'où un gain modeste (taux 1,8). Le JPEG, lui, supprime des détails peu visibles (compression avec perte) : il gagne beaucoup plus de place, au prix de petites différences, voire d'artefacts à forte compression. Le PNG est plus lourd parce qu'il ne sacrifie aucune information.

4. Il faut convertir les octets en bits (1 octet = 8 bits). BMP : 5,76 Mo = 5,76 × 8 = 46,08 Mbit, d'où 46,08 ÷ 10 ≈ 4,6 s. JPEG qualité 50 : 0,18 Mo = 1,44 Mbit, d'où 1,44 ÷ 10 ≈ 0,14 s.

5. Le BMP et le PNG sont trop lourds pour le web. Le JPEG qualité 50 est le plus léger, mais le document 2 signale des défauts visibles (blocs, halos). Le JPEG qualité 90 est 9 fois plus léger que le BMP, se télécharge en 0,64 × 8 ÷ 10 ≈ 0,51 s et ne présente aucune différence visible. On conseille donc le JPEG qualité 90, meilleur compromis entre poids et qualité pour une photographie.

Exercice 9 — Luminosité, écrêtage et seuillage

Difficile

Document 1. Une petite image en niveaux de gris de 3 × 3 pixels ; chaque case donne la valeur g du pixel (0 = noir, 255 = blanc).

1275140
198230101
47210169

Document 2. Deux fonctions Python appliquées à chaque pixel.

def eclaircir(g, k):
    return min(g + k, 255)

def assombrir(g, k):
    return max(g - k, 0)

  1. 1. Appliquer eclaircir avec k = 60 à chaque pixel du document 1 et donner le tableau obtenu.
  2. 2. Expliquer le rôle de min dans la fonction eclaircir.
  3. 3. On applique ensuite assombrir avec k = 60 à l'image obtenue au 1. Donner le tableau et montrer que l'on ne retrouve pas l'image de départ.
  4. 4. Expliquer pourquoi on parle de perte d'information.
  5. 5. On réalise un seuillage à 128 de l'image du document 1 : un pixel devient 0 si g < 128 et 255 sinon. Donner le tableau obtenu et le nombre minimal de bits nécessaires pour coder cette nouvelle image.

1. On calcule g + 60 et on remplace tout résultat supérieur à 255 par 255 : 12 → 72 ; 75 → 135 ; 140 → 200 ; 198 → 258, écrêté à 255 ; 230 → 290, écrêté à 255 ; 101 → 161 ; 47 → 107 ; 210 → 270, écrêté à 255 ; 169 → 229.

72135200
255255161
107255229

2. Une valeur de gris doit rester entre 0 et 255 (un octet). min(g + k, 255) renvoie g + k si ce nombre ne dépasse pas 255, et 255 sinon : il empêche le dépassement en ramenant les valeurs trop grandes au blanc (écrêtage).

3. On retire 60 à chaque valeur (aucune ne passe sous 0) : 72 → 12 ; 135 → 75 ; 200 → 140 ; 255 → 195 (trois fois) ; 161 → 101 ; 107 → 47 ; 229 → 169.

1275140
195195101
47195169

Les pixels qui valaient 198, 230 et 210 valent maintenant tous 195 : l'image obtenue diffère de l'image de départ sur ces trois pixels.

4. Lors de l'éclaircissement, trois valeurs différentes (198, 230, 210) sont toutes devenues 255. Après cette étape, rien dans l'image ne permet de savoir quelle était la valeur d'origine de ces pixels : l'opération n'est pas réversible. Des nuances claires ont disparu, c'est une perte d'information (les zones concernées sont « brûlées » en blanc).

5. Valeurs inférieures à 128 → 0 : 12, 75, 101, 47. Valeurs supérieures ou égales à 128 → 255 : 140, 198, 230, 210, 169.

00255
2552550
0255255

L'image ne contient plus que deux couleurs (noir et blanc) : 1 bit par pixel suffit, soit 9 bits pour les 9 pixels (au lieu de 9 octets = 72 bits en niveaux de gris).

Exercice 10 — Images à palette de couleurs

Difficile

Document 1. Principe d'une image à palette (formats GIF ou PNG à palette). Le fichier contient une palette, c'est-à-dire une liste de couleurs codées chacune en RVB sur 3 octets, puis, pour chaque pixel, le numéro (indice) de sa couleur dans la palette.

Document 2. Deux images de 800 × 600 pixels. L'image A, photographie d'un coucher de soleil, contient 61 350 couleurs différentes ; réduite à une palette de 256 couleurs, elle montre des bandes de couleur nettes dans le ciel, là où le dégradé était continu. L'image B, un logo, ne contient que 5 couleurs ; réduite à une palette de 16 couleurs, elle est identique à l'original.

  1. 1. Montrer que, pour une palette de 256 couleurs, l'indice d'un pixel se code sur un octet.
  2. 2. Calculer le poids non compressé de l'image A en RVB 24 bits, puis avec une palette de 256 couleurs (palette comprise). Comparer.
  3. 3. Pour l'image B, avec une palette de 16 couleurs, combien de bits faut-il par indice ? Calculer le poids de l'image, palette comprise.
  4. 4. Expliquer, à l'aide du document 2, pourquoi la réduction de couleurs dégrade l'image A mais pas l'image B.
  5. 5. Un élève affirme : « Une palette de 256 couleurs ne permet de coder que des images en niveaux de gris. » Expliquer son erreur.

1. Il faut 256 indices différents (de 0 à 255). Avec n bits on code 2n valeurs ; or 28=256, et 7 bits ne donneraient que 128 valeurs. Il faut donc 8 bits, soit exactement un octet par indice.

2. Définition : 800 × 600 = 480 000 pixels. En RVB 24 bits : 480 000 × 3 = 1 440 000 octets = 1,44 Mo. Avec palette : 480 000 octets pour les indices, plus 256 × 3 = 768 octets pour la palette, soit 480 768 octets ≈ 481 ko. Comme 1 440 000 ÷ 480 768 ≈ 3,0, l'image à palette est environ 3 fois plus légère.

3. 16 = 24 : il faut 4 bits par indice. Indices : 480 000 × 4 = 1 920 000 bits = 1 920 000 ÷ 8 = 240 000 octets. Palette : 16 × 3 = 48 octets. Total : 240 048 octets ≈ 240 ko.

4. L'image A compte 61 350 couleurs, bien plus que les 256 places de la palette : chaque couleur absente est remplacée par la couleur la plus proche de la palette. Des nuances voisines du dégradé deviennent une seule et même couleur, d'où des paliers visibles (effet de « postérisation »). L'image B ne compte que 5 couleurs, moins que les 16 places : chacune a sa place exacte dans la palette, aucune couleur n'est modifiée, donc aucune perte.

5. Chaque case de la palette contient un triplet RVB quelconque sur 3 octets, choisi parmi les 16 777 216 couleurs possibles. La limite porte sur le nombre de couleurs utilisées simultanément (256), pas sur leur nature : on peut choisir 256 rouges, verts, bleus… Une palette de 256 couleurs peut donc coder une image en couleurs ; les niveaux de gris ne sont qu'un cas particulier (256 gris).

Bloqué sur ce chapitre ?

Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.

Soutien scolaire à Marseille · Cours particuliers au lycée · Aide aux devoirs