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
Ce cours de sciences numériques et technologie (SNT) en seconde sur « Image numérique et codage » suit le programme officiel de sciences numériques et technologie (SNT) de seconde. Il présente les définitions, les propriétés et les méthodes essentielles, accompagnées d'exemples résolus pour bien comprendre. Au programme : L'essentiel, Pixels, définition et résolution, Coder une couleur : RVB, gris, binaire, Poids d'une image, compression et formats. Chaque notion est expliquée pas à pas, puis mise en pratique grâce à des exercices interactifs, un QCM et une évaluation corrigée. Idéal pour réviser à son rythme, combler ses lacunes et progresser, en autonomie ou avec un professeur. Cours rédigé par un professeur particulier à Marseille pour aider les élèves de seconde à réussir en sciences numériques et technologie (SNT).
1
L'essentiel
Image matricielle. Une image numérique « matricielle » (ou bitmap) est un tableau rectangulaire de pixels (de l'anglais picture element). Chaque pixel a une seule couleur, codée par des nombres.
Définition. Nombre total de pixels : largeur × hauteur (en pixels). On l'exprime souvent en mégapixels : 1 Mpx = 1 000 000 pixels.
Résolution. Nombre de pixels par unité de longueur, en ppp (pixels par pouce, ppi ou dpi en anglais), avec 1 pouce = 2,54 cm.
Codage RVB. La couleur d'un pixel est un triplet (r, v, b) : intensités du Rouge, du Vert et du Bleu, chacune entière de 0 à 255, donc codée sur 1 octet (8 bits). Un pixel RVB occupe 3 octets = 24 bits.
Poids d'une image non compressée. Poids = nombre de pixels × taille d'un pixel. On compte 1 ko = 1 000 octets et 1 Mo = 1 000 000 octets.
Ce chapitre traite de l'image une fois codée. La fabrication de l'image (capteur, photosites, métadonnées EXIF) relève du chapitre « Photographie numérique » : un photosite n'est pas un pixel.
2
Pixels, définition et résolution
Repérer un pixel. Dans la plupart des logiciels et bibliothèques (dont Pillow en Python), l'origine (0, 0) est le pixel en haut à gauche ; x augmente vers la droite, y vers le bas. Pour une image de largeur L et de hauteur H : 0 ≤ x ≤ L − 1 et 0 ≤ y ≤ H − 1.
Exemple. Un écran « Full HD » affiche 1920 × 1080 = 2 073 600 pixels, soit environ 2,1 Mpx. Le pixel en bas à droite a pour coordonnées (1919, 1079).
Taille, définition et résolution. Pour une dimension donnée :
taille (en pouces) = nombre de pixels ÷ résolution (en ppp)
résolution (en ppp) = nombre de pixels ÷ taille (en pouces).
taille (en pouces) = nombre de pixels ÷ résolution (en ppp)
résolution (en ppp) = nombre de pixels ÷ taille (en pouces).
Exemple. Imprimée à 150 ppp, l'image de 1920 pixels de large mesure 1920 ÷ 150 = 12,8 pouces, soit 12,8 × 2,54 ≈ 32,5 cm.
| Usage | Résolution courante |
|---|---|
| Tirage photo de qualité | 300 ppp |
| Affiche vue de loin | 100 à 150 ppp |
| Écran d'ordinateur ou de téléphone | environ 100 à 500 ppp |
À définition fixée, plus on imprime grand, plus la résolution baisse et plus les pixels deviennent visibles.
Vocabulaire du programme. Le programme officiel de SNT écrit que « la résolution de l'image se compte en mégapixels » : il emploie alors « résolution » au sens de nombre de pixels. Dans ce cours, « définition » désigne le nombre de pixels et « résolution » le nombre de pixels par pouce ; dans un énoncé, l'unité (Mpx ou ppp) indique de quoi il s'agit.
3
Coder une couleur : RVB, gris, binaire
Synthèse additive. L'écran mélange des lumières rouge, verte et bleue. Rouge + vert = jaune ; rouge + bleu = magenta ; vert + bleu = cyan ; les trois au maximum = blanc ; aucune lumière = noir.
| Couleur | Triplet (r, v, b) |
|---|---|
| Noir | (0, 0, 0) |
| Blanc | (255, 255, 255) |
| Rouge | (255, 0, 0) |
| Jaune | (255, 255, 0) |
| Cyan | (0, 255, 255) |
| Gris moyen | (128, 128, 128) |
Nombre de couleurs. Un octet prend valeurs (de 0 à 255). En RVB 24 bits : 256 × 256 × 256 = 16 777 216 couleurs.
Profondeur de couleur. Nombre de bits utilisés pour coder la couleur d'un pixel. Pour l'image finale d'un appareil photo, elle est en général de 8 bits par composante, soit 3 × 8 = 24 bits par pixel ; une image en niveaux de gris a 8 bits par pixel, une image en noir et blanc 1 bit. Avec n bits par pixel, on code couleurs différentes.
Niveaux de gris. Un pixel est gris lorsque r = v = b. Une seule valeur suffit : 1 octet par pixel, 256 niveaux de gris. Noir et blanc pur : 2 couleurs, donc 1 bit par pixel.
Écriture binaire. Un octet s'écrit avec 8 bits de poids 128, 64, 32, 16, 8, 4, 2, 1. De 00000000 (0) à 11111111 (255).
Écriture hexadécimale (web). Une couleur s'écrit #RRVVBB, chaque composante étant écrite en base 16 avec deux chiffres (0 à 9 puis A = 10, …, F = 15). Exemple : #FF8000 = (255, 128, 0), un orange.
Un autre modèle : TSL. Une couleur peut aussi se décrire par sa teinte (position sur un cercle chromatique : rouge à 0°, vert à 120°, bleu à 240°), sa saturation (intensité de la coloration, nulle pour un gris) et sa luminosité (du noir au blanc). Des formules permettent de passer du RVB au TSL et inversement. Mettre la saturation à zéro puis revenir en RVB donne un gris : c'est une autre façon de convertir une image en niveaux de gris. Les fichiers, eux, enregistrent le plus souvent les composantes RVB.
4
Poids d'une image, compression et formats
Poids non compressé. Poids (en octets) = définition × nombre d'octets par pixel. Pour 1920 × 1080 pixels : 6 220 800 octets en RVB (≈ 6,22 Mo), 2 073 600 octets en gris (≈ 2,07 Mo), 259 200 octets en noir et blanc (≈ 0,26 Mo).
Compression. Un algorithme réduit la taille du fichier. Sans perte : l'image décompressée est identique pixel à pixel. Avec perte : on supprime des détails peu visibles, l'image n'est plus exactement la même. Taux de compression = poids non compressé ÷ poids compressé.
| Format | Compression | Usage typique |
|---|---|---|
| BMP | aucune | fichier brut, lourd |
| PNG | sans perte | logos, schémas, captures d'écran, transparence |
| JPEG | avec perte, qualité réglable | photographies |
| GIF | sans perte, 256 couleurs au plus | petites animations, icônes |
| TIFF | aucune ou sans perte (le plus souvent) | édition, impression, numérisation |
| RAW | données brutes du capteur, avant traitement | retouche photo (voir « Photographie numérique ») |
Une image vectorielle (SVG) n'est pas faite de pixels mais de formes décrites mathématiquement : elle s'agrandit sans pixellisation.
5
Transformer une image par programme
Principe. On parcourt tous les pixels avec deux boucles imbriquées ; pour chacun, on lit (r, v, b), on calcule un nouveau triplet, on l'écrit. En Python, la bibliothèque Pillow fournit
getpixel et putpixel.| Transformation | Nouveau pixel |
|---|---|
| Négatif | (255 − r, 255 − v, 255 − b) |
| Niveaux de gris (moyenne) | g = (r + v + b) // 3, puis (g, g, g) |
| Gris pondéré (plus fidèle à l'œil) | g ≈ 0,299 r + 0,587 v + 0,114 b |
| Seuillage (noir et blanc) | (0, 0, 0) si g < seuil, sinon (255, 255, 255) |
| Filtre rouge | (r, 0, 0) |
| Éclaircir de k | (min(r + k, 255), min(v + k, 255), min(b + k, 255)) |
| Symétrie gauche-droite | le pixel (x, y) va en (L − 1 − x, y), dans une nouvelle image |
| Extraction de contours (seuil s) | on compare le gris g du pixel à celui g' de son voisin de droite : (0, 0, 0) si l'écart entre g et g' dépasse s, sinon (255, 255, 255), dans une nouvelle image |
from PIL import Image
img = Image.open('paysage.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('paysage_gris.png')Exemple. Le pixel (123, 45, 78) donne g = 246 // 3 = 82, donc (82, 82, 82).
6
Méthodes
Méthode 1 — Calculer le poids d'une image non compressée
- Calculer la définition : largeur × hauteur.
- Identifier la taille d'un pixel : 3 octets (RVB), 1 octet (gris), 1 bit (noir et blanc).
- Multiplier ; si le résultat est en bits, diviser par 8 pour obtenir des octets.
- Convertir en ko ou Mo (÷ 1 000 ou ÷ 1 000 000).
Exemple rédigé. Photo de 4000 × 3000 pixels : définition 12 000 000 pixels = 12 Mpx. En RVB : 12 000 000 × 3 = 36 000 000 octets, soit 36 Mo. En noir et blanc : 12 000 000 bits ÷ 8 = 1 500 000 octets, soit 1,5 Mo.
Méthode 2 — Relier définition, résolution et taille d'impression
- Écrire la relation : taille (pouces) = pixels ÷ résolution (ppp).
- Calculer pour la largeur, puis pour la hauteur.
- Convertir : 1 pouce = 2,54 cm (et taille en cm ÷ 2,54 pour revenir aux pouces).
Exemple rédigé. Image de 2400 × 1800 pixels imprimée à 300 ppp : 2400 ÷ 300 = 8 pouces et 1800 ÷ 300 = 6 pouces, soit 8 × 2,54 = 20,32 cm sur 6 × 2,54 = 15,24 cm. Format du tirage : 20,32 cm × 15,24 cm.
Méthode 3 — Convertir une composante (décimal, binaire, hexadécimal)
- Décimal → binaire : retirer successivement les puissances 128, 64, 32, 16, 8, 4, 2, 1 possibles ; chaque puissance utilisée donne un bit 1.
- Binaire → décimal : additionner les poids des bits égaux à 1.
- Décimal → hexadécimal : quotient et reste de la division par 16, écrits avec 0-9 et A-F.
Exemple rédigé. 200 = 128 + 64 + 8, donc 200 s'écrit 11001000 en binaire. De plus 200 = 12 × 16 + 8, et 12 s'écrit C : 200 s'écrit C8 en hexadécimal.
Méthode 4 — Écrire un programme de transformation
- Ouvrir l'image en RVB et récupérer ses dimensions.
- Parcourir tous les pixels avec deux boucles
for. - Lire (r, v, b), appliquer la formule, vérifier que chaque valeur reste entre 0 et 255.
- Écrire le pixel, puis enregistrer l'image sous un nouveau nom.
Exemple rédigé. Négatif :
from PIL import Image
img = Image.open('chat.png').convert('RGB')
L, H = img.size
for x in range(L):
for y in range(H):
r, v, b = img.getpixel((x, y))
img.putpixel((x, y), (255 - r, 255 - v, 255 - b))
img.save('chat_negatif.png')Le pixel (30, 200, 90) devient (225, 55, 165) ; toutes les valeurs restent entre 0 et 255.7
Pièges et erreurs classiques
Définition ≠ résolution. La définition est un nombre de pixels ; la résolution est un nombre de pixels par pouce. Une image n'a une résolution que rapportée à une taille d'affichage ou d'impression.
Changer les ppp ne change pas les pixels. Modifier la valeur de résolution dans un logiciel, sans rééchantillonner, ne modifie que la taille d'impression prévue : l'image garde exactement les mêmes pixels.
Agrandir n'ajoute pas de détails. Passer à une définition plus grande crée des pixels calculés à partir des voisins (interpolation) : le fichier est plus lourd mais pas plus précis.
Bits et octets. 1 octet = 8 bits. En noir et blanc, 1 bit par pixel : il faut diviser par 8 pour obtenir des octets. Autre confusion : 1 kio = 1 024 octets, alors que 1 ko = 1 000 octets.
Dépassement de 255. Ajouter k à une composante peut dépasser 255 (ou passer sous 0 en retirant) : il faut écrêter avec
min et max. Cette opération fait perdre de l'information.JPEG réenregistré. Chaque nouvel enregistrement en JPEG refait une compression avec perte : la qualité se dégrade. Pour retoucher, on travaille sur un format sans perte.
Pixel ≠ photosite. Le photosite est un élément du capteur ; le pixel est un élément de l'image codée.
En bref
- Une image matricielle est un tableau de pixels ; définition = largeur × hauteur (en pixels).
- Résolution = pixels par pouce (ppp) ; taille (pouces) = pixels ÷ résolution ; 1 pouce = 2,54 cm.
- RVB : trois composantes de 0 à 255 (1 octet chacune), 3 octets par pixel, 16 777 216 couleurs.
- Gris : r = v = b, 1 octet par pixel ; noir et blanc : 1 bit par pixel.
- Poids non compressé = définition × taille d'un pixel ; PNG compresse sans perte, JPEG avec perte.
- Transformer une image = parcourir tous les pixels et recalculer (r, v, b) : négatif, gris, seuillage, luminosité (avec écrêtage).
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